From b434a475a318756cf9810aa1b0a716b7121ac7fe Mon Sep 17 00:00:00 2001 From: mathiasdm Date: Thu, 18 Nov 2010 20:38:21 +0000 Subject: [PATCH 001/463] Thrown away additional libraries and code, started something simpler to build on. --- apps/desktopgui/TODO | 8 + apps/desktopgui/build.xml | 150 +--- .../desktopgui/resources/howto/howto.html | 261 ------ apps/desktopgui/lib/appframework.jar | Bin 264341 -> 0 bytes apps/desktopgui/lib/swing-worker.jar | Bin 11103 -> 0 bytes apps/desktopgui/manifest.mf | 3 - apps/desktopgui/nbproject/build-impl.xml | 642 -------------- apps/desktopgui/nbproject/genfiles.properties | 8 - apps/desktopgui/nbproject/project.properties | 81 -- apps/desktopgui/nbproject/project.xml | 19 - .../logo => resources/images}/logo.jpg | Bin .../logo => resources/images}/logo_green.jpg | Bin .../logo => resources/images}/logo_orange.jpg | Bin .../logo => resources/images}/logo_red.jpg | Bin .../org.jdesktop.application.Application | 1 - .../src/net/i2p/desktopgui/Main.java | 79 ++ .../src/net/i2p/desktopgui/TrayManager.java | 148 +++ .../i2p/desktopgui/desktopgui/GUIVersion.java | 14 - .../net/i2p/desktopgui/desktopgui/Main.java | 109 --- .../desktopgui/resources/Main.properties | 11 - .../resources/Main_nl_BE.properties | 11 - .../desktopgui/gui/ClientTunnelWindow.form | 396 --------- .../desktopgui/gui/ClientTunnelWindow.java | 434 --------- .../desktopgui/gui/GeneralConfiguration.form | 645 -------------- .../desktopgui/gui/GeneralConfiguration.java | 839 ------------------ .../i2p/desktopgui/gui/JPopupTrayIcon.java | 185 ---- .../src/net/i2p/desktopgui/gui/LogViewer.form | 103 --- .../src/net/i2p/desktopgui/gui/LogViewer.java | 164 ---- .../desktopgui/gui/ServerTunnelWindow.form | 40 - .../desktopgui/gui/ServerTunnelWindow.java | 60 -- .../net/i2p/desktopgui/gui/SpeedSelector.form | 179 ---- .../net/i2p/desktopgui/gui/SpeedSelector.java | 194 ---- .../i2p/desktopgui/gui/SpeedSelector2.form | 118 --- .../i2p/desktopgui/gui/SpeedSelector2.java | 159 ---- .../i2p/desktopgui/gui/SpeedSelector3.form | 338 ------- .../i2p/desktopgui/gui/SpeedSelector3.java | 439 --------- .../gui/SpeedSelectorConstants.java | 25 - .../src/net/i2p/desktopgui/gui/Tray.java | 228 ----- .../src/net/i2p/desktopgui/gui/Version.form | 102 --- .../src/net/i2p/desktopgui/gui/Version.java | 123 --- .../resources/ClientTunnelWindow.properties | 26 - .../resources/GeneralConfiguration.properties | 37 - .../gui/resources/LogViewer.properties | 4 - .../resources/ServerTunnelWindow.properties | 1 - .../gui/resources/SpeedSelector.properties | 6 - .../gui/resources/SpeedSelector2.properties | 9 - .../gui/resources/SpeedSelector3.properties | 17 - .../gui/resources/Version.properties | 6 - .../persistence/PropertyManager.java | 72 -- .../i2p/desktopgui/router/RouterHandler.java | 38 - .../i2p/desktopgui/router/RouterHelper.java | 22 - .../i2p/desktopgui/router/RouterManager.java | 23 + .../router/configuration/PeerHelper.java | 165 ---- .../router/configuration/SpeedHandler.java | 34 - .../router/configuration/SpeedHelper.java | 43 - .../router/configuration/UpdateHandler.java | 19 - .../router/configuration/UpdateHelper.java | 65 -- .../i2p/desktopgui/util/IntegerVerifier.java | 32 - build.xml | 37 +- 59 files changed, 303 insertions(+), 6669 deletions(-) create mode 100644 apps/desktopgui/TODO delete mode 100644 apps/desktopgui/desktopgui/resources/howto/howto.html delete mode 100644 apps/desktopgui/lib/appframework.jar delete mode 100644 apps/desktopgui/lib/swing-worker.jar delete mode 100644 apps/desktopgui/manifest.mf delete mode 100644 apps/desktopgui/nbproject/build-impl.xml delete mode 100644 apps/desktopgui/nbproject/genfiles.properties delete mode 100644 apps/desktopgui/nbproject/project.properties delete mode 100644 apps/desktopgui/nbproject/project.xml rename apps/desktopgui/{desktopgui/resources/logo => resources/images}/logo.jpg (100%) rename apps/desktopgui/{desktopgui/resources/logo => resources/images}/logo_green.jpg (100%) rename apps/desktopgui/{desktopgui/resources/logo => resources/images}/logo_orange.jpg (100%) rename apps/desktopgui/{desktopgui/resources/logo => resources/images}/logo_red.jpg (100%) delete mode 100644 apps/desktopgui/src/META-INF/services/org.jdesktop.application.Application create mode 100644 apps/desktopgui/src/net/i2p/desktopgui/Main.java create mode 100644 apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/desktopgui/GUIVersion.java delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/desktopgui/Main.java delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/desktopgui/resources/Main.properties delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/desktopgui/resources/Main_nl_BE.properties delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/ClientTunnelWindow.form delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/ClientTunnelWindow.java delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/GeneralConfiguration.form delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/GeneralConfiguration.java delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/JPopupTrayIcon.java delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/LogViewer.form delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/LogViewer.java delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/ServerTunnelWindow.form delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/ServerTunnelWindow.java delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector.form delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector.java delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector2.form delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector2.java delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector3.form delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector3.java delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelectorConstants.java delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/Tray.java delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/Version.form delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/Version.java delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/resources/ClientTunnelWindow.properties delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/resources/GeneralConfiguration.properties delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/resources/LogViewer.properties delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/resources/ServerTunnelWindow.properties delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/resources/SpeedSelector.properties delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/resources/SpeedSelector2.properties delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/resources/SpeedSelector3.properties delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/resources/Version.properties delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/persistence/PropertyManager.java delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/router/RouterHandler.java delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/router/RouterHelper.java create mode 100644 apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/router/configuration/PeerHelper.java delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/router/configuration/SpeedHandler.java delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/router/configuration/SpeedHelper.java delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/router/configuration/UpdateHandler.java delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/router/configuration/UpdateHelper.java delete mode 100644 apps/desktopgui/src/net/i2p/desktopgui/util/IntegerVerifier.java diff --git a/apps/desktopgui/TODO b/apps/desktopgui/TODO new file mode 100644 index 000000000..d47410b65 --- /dev/null +++ b/apps/desktopgui/TODO @@ -0,0 +1,8 @@ +- API to allow applications to add themselves to the menu? + * registerApplication(); -- should return a positive number on success, -1 on failure + * unregisterApplication(int); -- should return nothing (or bool for success?), and the parameter should be the number given when registering the application +- Internationalisation +- Fetch I2P localhost from the core I2P application? +- Correct logging system +- Use I2PAppContext::appDir (something like that) for desktopgui data. +- Check core/java/src/net/i2p/util/FileUtil.java for dynamic jar loading diff --git a/apps/desktopgui/build.xml b/apps/desktopgui/build.xml index 8138f14c5..0d38f0f5d 100644 --- a/apps/desktopgui/build.xml +++ b/apps/desktopgui/build.xml @@ -1,119 +1,49 @@ - - - - - - - - - - Builds, tests, and runs the project desktopgui. - - + + + + + + + + - For list of available properties check the imported - nbproject/build-impl.xml file. - - - Another way to customize the build is by overriding existing main targets. - The targets of interest are: - - -init-macrodef-javac: defines macro for javac compilation - -init-macrodef-junit: defines macro for junit execution - -init-macrodef-debug: defines macro for class debugging - -init-macrodef-java: defines macro for class execution - -do-jar-with-manifest: JAR building (if you are using a manifest) - -do-jar-without-manifest: JAR building (if you are not using a manifest) - run: execution of project - -javadoc-build: Javadoc generation - test-report: JUnit report generation - - An example of overriding the target for project execution could look like this: - - - - - - - - Notice that the overridden target depends on the jar target and not only on - the compile target as the regular run target does. Again, for a list of available - properties which you can use, check the target you are overriding in the - nbproject/build-impl.xml file. - - --> - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + diff --git a/apps/desktopgui/desktopgui/resources/howto/howto.html b/apps/desktopgui/desktopgui/resources/howto/howto.html deleted file mode 100644 index ea1b025c7..000000000 --- a/apps/desktopgui/desktopgui/resources/howto/howto.html +++ /dev/null @@ -1,261 +0,0 @@ - - - Small Guide to I2P - - -

Small Guide to I2P

- -

So, what's this all about?

- -

I2P builds up a new net inside the usual internet, connecting nodes together - via encrypted connections. - It is a JAVA prgram with its most used part (the encryption of the data) written - in handoptimized assembler code. - It will use your bandwith, your RAM and your CPU. It will use them all up if you - do not limit it. - I2P will route unknown traffic through your node, even stuff you dislike. - As that data is encrypted, nobody knows whats data went to or drom your node. -

- -

- First, ALWAYS use the latest stable release. - Development releases are called "mtn version" and are marked with a -, e.g. - 0.6.5-1. Those are usually useable by all but could do harm to your I2P - experience. - You can get the latest MTN builds from my eepsite echelon.i2p, but always - remember: I built them, you need to trust me not to changed the code! - After you get the right "i2pupdate.zip" file, put that file into the I2P - directory and hit restart on the router console http://127.0.0.1:7657. - Do NOT deflate the zip file! -

- -

- I2P is very dynamic - after startup it tries to get known to other I2P routers - and measures their speed - you need to wait some 10-120 minutes until your - I2P router knows enough other ones to obtain full power of I2P. -

- -

Filesharing

- -

- I2P is able to do anonymous filesharing. - But as there are NO gateways between real net and I2P, you can only share/ - download torrents from within I2P. Look e.g. postman.i2p or planet.i2p. - You CANNOT use azureus, utorrent or any other usual client. - You cannot download anonymous torrents from mininova, piratebay or else. - You need to use I2P internal torrents and I2P aware programs like - I2Psnark (builtin, suitable for 1-20 torrents) - I2PRufus (external, python, high CPU load, suitable >20 torrents) http://echelon.i2p/i2prufus - I2P-BT (external, python) - I2PsnarkXL (mod of I2Psnark made by fwd) -

- -

- There are also gnutella and edonkey clients: - i2phex for gnutella (http://echelon.i2p/i2phex) - imule for edonkey (http://echelon.i2p/imule) -

- -

- Remember, as I2P uses other routers to route your traffic via 1-6 other PCs, - your transferrates in P2P are slower than in usual internet. - But you are anonymous, no one can easily (within 2 months-2 years) get your IP! - torrents inside of I2P reaches up to 50 kb/sec, usual are 10-20 kb/sec per torrent - i2phex reaches up to 20 kb/sec, usually 5-10 kb/sec - imule in times reaches 10 kb/sec, usually 5-10 kb/sec -

- -

- In I2PHex and imule you can just tell "share file or directory", in torrent - you need to create a .torrent file and upload that (and ONLY that small .torrent) - file to the trackers like tracker.postman.i2p/ -

- -

- I2P is a smaller net (1000 users) which grows slowly. As of which amount of shared - data will slowly rise. -

- -

- I2P is anonymous and it does not censor - there is no administrator. - There IS unwanted stuff like kiddyporn, nazism, or else. - If you dislike all this, do not use I2P. - There is NO way to prohibite this stuff to appear in a anonymous net like I2P. - (as that stuff is available shows the anonymity and transfer function of I2P - is working well enough) - You can delete the destinations in question from your local hosts.txt file (or - deface them) which will partly prevent you to reach those bad sies by accident. -

- -

Internet (the websites)

- -

- Only one outproxy (gateway I2P - webpages in usual Internet) is working. - It is NOT official from I2P, I2P does work without. - If that outproxy is slow, offline, gone,.. I2P still works on and cannot do - anything to change that failure. - That outproxy translates usual internet webpages into the I2P net and you can - reach them via your Router. - The best way for usual webpages is TOR, not that outproxy. - Remember: the owner of the outproxy got ALL traffic from all I2P users - visiting Internet pages and will risk that into the police! -

- -

- This proxy is false.i2p. In newer I2P routers it is enabled, but not in - older ones. Go to http://127.0.0.1:7657/i2ptunnel/index.jsp tunnels page and - click on the eepProxy tunnel. Change the entry for the "Outproxies" to false.i2p - and save. On the tunnels page, stop the epproxy tunnel and start it again, - now your router will use the false.i2p outproxy. -

- -

- No other (known) gateways are setup and running. No one we know will run - the gateway for torrent or any other P2P data (and risk his life). -

- -

Bandwidth

- -

http://127.0.0.1:7657/config.jsp

- -

Setup your bandwith wisely. Know your linespeed!

- -

- E.g. most common terms are: - 1Mbit = roughly 100 kbyte/sec - 10 MBit = roughly 1100 kbyte/sec - 512 kbit = roughly 50 kbyte/sec - or in germany: - 16000er = roughly 1500 kbyte/sec - 6000er = roughly 600 kbyte/sec - 1000er = roughly 100 kb/sec -

- -

- Set your bandwith limits to 10% under your line speed and burst rate to - your line speed. - Set the bandwith share percentage to: - >80% if lowest bandwith setting is >50k - >50% if lowest bandwith setting is >30k - >20% if lowest bandwith setting is >16k -

- -

There is no shared bandwith under 16k.

- -

- Limit your participating tunnels (shared bandwith) on: - http://127.0.0.1:7657/configadvanced.jsp - with the line: - router.maxParticipatingTunnels=500 -

- -

- 2000 is for roughly 600 kb/sec - very high value with high CPU load - 1000 is for roughly 300 kb/sec - 600 is a good value for 150-200kb/sec - 300 is roughly 90 kb/sec - 150 roughly 50 kb/sec - Remember: even failed tunnel requests will result in a part tunnel on the hops in between! - Those said, there are far more part tunnels unused than used in the live net under load, which - results in slower bandwith per tunnel in the end. - It is wise to first limit the bandwith and afterwards the part tunnels, e.g. set some more part - tunnels and let I2P reach the bandwith limit instead of the part tunnels limit! -

- -

What is shared bandwidth?

- -

- I2P transports your date from the client to the server through 1-6 hops - (other I2P routers). Each of this hops sees the data from you as "participating - tunnel" - which is the shared bandwith of them. - With this in mind, I2P needs some amount of this shared bandwith at some - amount of routers. - Share as much as you are able of - others will thank you! -

- -

- With the "share percentage" set like above, you will obtain enough speed for - your own traffic and obtain some participating tunnels (if >16kb/sec) with some - noise traffic to hide your traffic in the stream. -

- -

- With release 0.6.5 there is some method to prefer your own traffic ahead - of shared traffic which will result in better experience to you! -

- -

Addressbook

- -

- I2P uses a local addressbook to link short DNS names with the internal used 512bit - hashes (which are destination IDs). - Those links are saved insside the hosts.txt and userhosts.txt files in the i2p - directory. - Hosts which are not in those files cannot be reached via the short DNS names - and a error message with "jumper links" will appear. Those links will ask - some hosts services and forward to the correct site (if the site is known to them). - Those hosts services just made a form to add new "hosts" and those results public - available. - You can subscribe to those hosts service and let your hosts.txt file be updated - automatic. Go to http://127.0.0.1:7657/susidns/subscriptions.jsp SusiDNS - and enter the hosts services into the textbox (and save afterwards): - http://www.i2p2.i2p/hosts.txt - http://stats.i2p/cgi-bin/newhosts.txt - http://tino.i2p/hosts.txt - http://i2host.i2p/cgi-bin/i2hostag - You can add one of them, two or all. - SusiDNS will now ask those hosts for new entries to the hosts.txt and those - will be added to your hosts.txt. The userhosts.txt will ONLY be updated by - yourself (the user) and not be published into the net! - Remember, names once set could not be changed! If you loose your key (destination - ID) to your eepsite, service,..., there is no way to change the linking - between the DNS name and the (lost) destination ID automatic! Only manual by each - user itself - great topic to discuss of need to renew DNS hostnames. - As this subscription will not update old entries, you can "deface" unwanted - eepsites with a false key and if you hit the bad name in browser by accident, - you will not see the bad stuff! -

- -

Out of Memory errors

- -

- If your router hits the Out of Memory error - check your logs! - Usual point for OOM are to much torrents in i2psnark - i2psnark is a real - memory hogg and >10 torrents it requiers hell a lot of memory! -

- -

- Maybe it is possible for you to increase the wrapper memory config. - This ONLY works if you start the I2P service restartable with console - (on Windows). - In I2P directory edit the wrapper.config file and change the values: - wrapper.java.maxmemory=256 (or even to 512, IF possible) - Afterwards shutdown I2P complete (the service) and restart it. -

- -

Blocklists

- -

- Sometimes attackers trying to flood the I2P net and try to do some harm. - And some folks setting localnet IPs as their internet reachable address. - To prevent those bad router to harm the local router, I2P implemented - a local blocklist system. It is NOT integrated automatic as it could - really harm your I2P experience if setup the wrong way. - The way to enable blocklists is: - Get the file http://zzz.i2p/files/blocklist.txt and copy this file into the - I2P directory. - On http://127.0.0.1:7657/configadvanced.jsp set the option - router.blocklist.enable=true - click on Apply and restart the router - with the restart link left on router console. - The blockfile.txt file follows a special order, youll get it if you read it. - The first entry is the reason to be shown on http://127.0.0.1:7657/profiles.jsp - at the bottom in the shitlist section. - The second entry is the IP or the dest ID of a router. - Right now there are only private subnets in the blocklist AND one chinese router - which floods the floodfill DB while restarting every few minutes with a different - router ID and far to less bandwith for being a floodfill router. -

- -

(By echelon -- echelon.i2p )

- - diff --git a/apps/desktopgui/lib/appframework.jar b/apps/desktopgui/lib/appframework.jar deleted file mode 100644 index 0b8ff0145f010a8e1e9bfe065704cb4ad675f761..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 264341 zcmeFa2Yg(`)joV?ccr^pUAL9nx?s86D(=`uHpa3ogKbGRmTV*XT3Xw}vR0_L&^w_+ zAOsr%fdotfp<6bX8d@rlLI_DnPu_oec}w2p%^SYwnYnlO?rL|fwMoAJ_xpVY-MjbR z>2v1HnKREhvu=$)5EA}-;r8eP{lmEwNkHmq8mlW;)vuiSkFSWVO9Xu$K^vZF9dsUo z@^2{q5<%;#>sPI;X=t2Lx3VtU-nu2$)m^zU*4fn>Z?7tyJ!95@P<6ZKO?5}Kd0VU$ z@9=Q}KQHf$MZ04ymCN=p{P8npoilq@<>py)OQ$vTw3pVkHh0Fm_H=c}c661lYHyw~ zeL!eHD79=(4fHL5YrJ#o%HSNfwK?AIO@{q+a^roYI{YI1TbV1F>djrpJ5dvCi&2%eO__x5gTJIy&N=-IHd|Xl{#kb$#U@&%KDmX3OLvDUb*+qe4`$;fO4 zP-3rYZ;y2@XDMP`N|x5LcN2Z*?T~)eh#4<#ZEx*fqNI7+u_kt;T29}nB(OZ*f)*K6 z+u9zh@7b|A*4Y@{+=e&)&YpH$r!i2dK@-KwR(=@bt;q~FB%;@}H@C&RTHCkQ#k#k} zTWpyi6Kx5}KwE-RWXm8Kiq<){#+fu*i6|MY`>qXiFmvtZ^J2~2O2Wxk>wDVUSpiEX zDOqxC86x2=t(~z{0#Pz?T7MdLa=-GHQV?q)YGsLU@L;x;2<~V&5VQ|}gJdwi4#BUf zc*d}iL1pC!M3q$>5MS9r@jr=IC@8K>M&y&YmVgPGNYfCBZ|$;Y5a${3^-3TaBc!vq z3!`K&k{*U|J{c|}a1U_g2$@kB?}|}O_GST|@h_EoJ^J2-n>V3g{9A#q{i=7?F`Yi5 zLuivBA(WzozlK^eEQG?1{!Vt2H8EcYZn;7%m!XJbhoy(cDIr@4r}ew z%ymU;S4XtFd0XQ)Osy@N#hm`H;&#QY?K|V!W3`ylJC%&^l8ehYG{N+H@LC{B{^L+Z zhhwZ2Qn4k3DHQ8R&Mo#i6YmX=ihUfT+34s*JaDLMGO8%k5ln9kUa_|CL> z!VRHhp_j}Wx;rr}7GINnqaW#HnZ-`XS}HI1H0gWake~K% z20S8%#58rxbF_`gZnljHGHl5l8-zd7mIyB+WE6klGFryiGFRr=GM4;!EG5DI4e*S@ zMz%?&AN;W}c79K^jl9s?_(qCZH2riLuX%!*&ru_c$sjm{naw#n&&Gh}Y(4}NzbZQ{ zz9vcl2iz%rI6e*3j3k19qreA7BRHA_S4N+VF{&9A1c5+#uM`-T!f1vwl_S3j1V#g9 ziQ;gfWRw#SrAp^A%84=sB_J~k>0By$#Y)d+4OnF@DvRF97AKe<=PblI8==vePMlKQ z*%(3Q(45Gpxhz zLJRH&XRLC(&4O0$V*BH@|qQAWgx zw}T;1@suJ{kack^UH2fMwSGf=2q-Toj96c(4wHfAl zNVjVi3)ZC=obAR7|fJr~@InaS>25r6?(|liYs)_%&}{ zjXd}_83B(_tTZBv8%+v3gJ zA$35ATE?H4QX86~Ay6_C^q#dsjnS^{lTsppLMrnNAE;kj59&P1p)x)*QLl(M_mFC1 zEhtexh7&az9NzzL4XZ*7sZ-XjI5JUZoI;O0R{B3q^}44#k1hve$r(Cj7zQv5DdU41 zV5DFehVY^|{RNdADIo@c;hPr)G0G+wyCsP4!@8Uk@i;tlq8fofBV&3Ve&rHC@N3|bmVj$aQTX^Y27N$XYAI$D#j>ZjE(LS`*u|IUen7 zSqYNsTDQD5ZG4|x1P*ds2o)HIF&@I)H6euJPUP!JAux<7L5la&DA`YzGK+G(pK|>) z%Jt(Nxqgl%bJ0-UvEAJ!cgm|d23j&4=-<)3DaoY)({qzkC&qErX65~klv6V>up>n+ zcvLcPIHlqBJZh5yY;^uSC6lstSYxs|EIHnm`Lcj<7TO?+5=&07A#$P4B~Xd(h_-`m z=)PRL3(FQu7TchPCAOR-OCb(ffYgtn2(1&<1 zywmBaKa=J7thxku`Qxe{r}VF2;KvXOmdC+CcSDrPISW)L)#OeDwB@W^WYaeSY3I1C zmC$+)Xhl7%xB6UjVRrV_x2%}*kZiKUp>=UYJXi6O>}J%f7=i0!yEdBXB2^l679Qxs zo{ko%M7)X4H7k@1Y3d0q!+SQ#fUeY{jn0}1Lx-Zx*lB>4eHPRJXXNUDl);{@0NLJ8 z-zc-RR77dWharSPq_wPu8FNKMr6>3=ew_fRi*F)E%X$z>*2Cg&!fGi1Ma%(L4a2<` zv(!3>nc)zkK8plK=>->)xfDDRY+2SIq7@E4BrCAYP)Gy|l{&l&)mOeE#d{@G`LY!6 zmw>7YAV6V71Oc?J7D4%Y0HfjUAsJ|v7|eKr76cC?4HIV9L0aTr1p@YOw53fMzX-`a(%cZz6rt%5?LN?RoP6qvCNbZuo{IHLYcNfb&(!*$< zvgF>7ERg#c{?q(*KQ9kh@)>4@*PoRKS^tMD+20>NS=bieiU}HIWMsr1=uT(y9kr>o z`Wptcg>5y%fp zBNZG4d(WyfJjR)3XtUl@PSguqnyuJryTPjx(i@77l2EsDpBE1A&fX&Hot<2EYK|pQ z#ty&~j%g!NLM5|vt*WvlF`WCDP+sodV-ia25*U?iW6t`zIi7UEyjM>5juzI*qY6GSdc9z z%PA0UlOL-)JEMCj7+UftCsWb^gm>&iBE#H=R zE%^@L;PshumM!necP)9}mhZ{;m6Y|rD{T3Je83!kXv>e}$F}@LzJ*m~_5{3Aqa{DJ zGd<}KoWZa6z9PkW1Y=Jk$~`1G`5EE zBjsd<%i|borpqA?bjEf9&xEi&=J>Ykah-gXoqSd1d= zYYXT1F=|ZkHKq3x+Q0QAEOTu7m5O9$(ht z=`<(?s9%_dom*d-Iw1b?H)Q~k9^rz6Quq?p4i;1n!6qmc4oJwX`qv@GaZp4P1r~tX zwFuhQ0a&4q0B~ar7VcA}5}E+WKTa-Vap&G>0n`VU*%)OK1|c>J1%No>1bqW)w^4CxWF=<#;(P0_h6e)}pRYssf8BrCAgd$e2jEsb;toLyk$nP`9ScywMNng$h+j*f`8-LQ&;_kfVRpze=|(r~LPsdd z98R6Kp-$Ak%tQ74Z%R2!S_`d9gsPWO^|*|NzNM_P1lz$Z)L3)_`r|kTPqvm(vz&`& zkD@f2p*(6viCWO$F*N%YY}IZzkyLQMS8CP3=SW3A&KfYHcB>T{)jM@-z z2Ndk>y3kD~x;ha>W=Fi9Ac%=1hzgfHCh@5py)n60rtEWQW~!!{XC%~A|3#EOgwNAn zmg!Yc9=#z0sX;1xS%zx`Q$eHv+uo6aUMVksP&S(0V{+)g!ia@Nsi+E;;YURzh$g8* z_^P5vQLkXPe1N`J7484S zU&ex0RveVMEPAiZdsdDI)uO2!ss$}LR6CuuH*JT(Q1~Xu|HJQ>MGAH7{U5%Q?9myz z&%TBXzYel}3#0OFjLLUFu-`y6z6n0?EsXwmL7d+~mEK1&Ap<+bybVv>(%pczpKpdx zvM|dMg;`(*RiJhyd-l@pQAQ>W1kj<)^$_m;Z?2%-%V74te(FT77U}~5QPavrPn8HR<+I|t2 z==gAo9EVCJWf9Msf1D@3(#c(=TcW^@x0H6rOWUG7?akXVEQu^xWn;Lku`z4bSyFFf zzFcR?sWxV{hLlx&O=oAkli;q#oXfvt_c+M$6y&VC?9rX!f5eEtdYT6kPI4n;j*|NREv5RY)JsVn+bnr3VnWmkwMN@oFTm<@__QpvXhC<-+1=9t zJkM&*8|oIS|W+Y-lyC4}0P#&Sl2H~kcWaAxXwaT{wkca6rR2%l-f z8sxTRK1f$j33!5_N_FgZZv-7v=`v!km1Suk(hzWG19FN zLdf%LF-59Ff_vqv#IJ%tdDLAZS!65tb<6Q0D( z^fXE{4l#VF_;}m{;L8&+xth6yms?XlN4Rzq(N%)*yKjdK$E8?3B@z(6< z=-yL9BcM~$cDbe&p~WI02o^9d0t}Itu{1NHZILAtKvTwMC@0b(b>Js>|MdP2`dr+9 zU`u>e`?6^B_N|@qo_46C5=%2Zf;Prmi7pCm!MN_)7Q=U=iO-_a2_@KhmquE7_l2sn zuZ@YZ^6n4mTs@?(pSi!2qHOLnKRI?o*eV3T#|BjtV+NNYHe|*@;2%fbsTet#`WoCT z)sibWMkw2~mmSjK>GveRpF1ssXdWj5B{GF?MP?}bm08&^xW=feJH=9;M3ljhY)l@LoG66Ua}nt&50Gce`3o%`&_fZQt8yvPTB#o4Q`SAW;+ZtbT2f$;sb!8^nvAq})hJXUkGok0`Y!kLp|~MJWw(PceS>) z9Vr}!V{SUOWH7eR@-9C5!&{p^>Bj{q48alPsA`HZ;|eX*Sd^Wi}K66*iPF zGe9pLZP9KDI5so`FdT(d!W@F&=Jc!cQ`!JPnzZLM?$lpCL*=Rq7swwIm4V1S>e|fv z6#41cOQ5y$^t~3F!7aS0*JSNR!(Y?D8=UlSu)Y;OJ)^d$8kFpqW zEa-II7fMoAe0>E!ml@BS$ZbL3jtn=aiI`R;`Yx7$?-D8UT`EI-m&tJ7H~dlZcc(y5PoTer{b64A>hwndDR@XU2UsC4U&0R1PvaZ6=q%z0hmjM>x%TxA45 zzFdzjOW15XOCG~o_`We7Z`;nvcnFx4V~dh_ml$lGkPscYz1E<;F6i7(?THZ!Kf+xL zGH~((!zap|e2r~@j#zBFQ~Y7xxYe5)^=rh;zygb~We(B=!X($I_b@7q2-7a_o{`xG&FJb}3TZU{>4;m3tfV zAgU1s#`mO9hGpBMctPN!DECg?l^VP+Z20xT_7iWRT!mtcLxtCd*&vC1$6Mbzm~=J9UIqq&gkfJ}M56st}dt-7RC zb;EGK2lMGp#G@H2Ma3z&lf48n2Tx9CFE{?@pbzI^jmW<;1nkdh@^lF5eL_jN#CwKsdM!Cf#-kq&S@JBkiibl0VZIQ83i_p>yd0EQLeO@g!DFEneQ{<((k$ivUjqC;a)-A|f0@Q0@LQDF4QS{2!+9tDyXv_umBN zx0d`a1S>5rn2Ri8{+Vun%wSA1t#tn$#xbp#T^V^Q>8*A|7lQre2UZTdCf4cTL*o{vj(T zd6yCzTY2;#(!`8;1lc;FAWe~Rj4ER8M4ZiX-d_6b+SgefQ-7f^>nwycL9zUcGR>UO&6^QkFX#{ z|M+9nDGdV9$xBa4=J!twPo+Y3c-Yv@r=~U-bG!Eq2E}|Dy7z~zr)Gg#o!>*rVw^`d ziD`kxph3(e&ywUaZXKT^YmLG}KOQ3_m_{0_91vb!D*8azw)if}Y^OioLB7mS6v*isX1HAzjj)D&AyRnss4SjZXe zvF;f?T`?nCvlX=CmOyuBPs~!&ZB?eqQ}Cb-F;u4&`tl^$Hyvzis|rvv=BT;-l%{Q(W7uk*I^I_EiLFjjOD$Dxt7YgowOp-$Vz9+Eh0naHX?Bx5yHU$}TH9J^u@PAw z?`dmkpW0mt9Ytv^@{O8&OKnx7R)T6uPb`Imq9)ktWVy;xr`T$hT5YK{wyITi$U5FN zgXYq;fEPn;6t+uGGHWo-XA$RY5GQ(BtPMhxRO51WhhwaTQ zXjuZK`n9-TJbQmwW+Pi;rJ73gb+YPVIKmkxEltvVG(^1P#& zwrm)WU515Mf~3GTx-bNryRngOt8UVM~nh&M|X^y0ZU3>YT2j`sGpidk^%a?5UWlt zl~;OKL~aQ@J#Jn(^A*T0*d2G9Cp$*M+El&1epUU+|5tz{C?i88aRzV-_B(5RQPJY= zcx`+aTy*M=3Td!P*QVBPAdsxsZpbeb;!H1lbd3L0ZDe*`b2dF?yvxgYaZD<6S*NN&TB{5M;NXn9$4M91ZjSzjd{61rM%7<6@D+A6k0ZcCg( zv*twTE{$t~8eQN(7g8W_X9e=c1YN!0&MVfQ17jcJF|7v+)er1dGlN zMBvH}1degBJ|2gqK|3fp-OgaO`w8un!i^FiQtcEHHbNW>n5nv<`Hyw7ap4(xJ30cK z$?*W?2$3^WLZT^A9>c|G|8SHr`@nc;8n;22OPD>@Q(FIvB^B;rE|Q=N?#6GQ^xzpQ zAp9PKuvl;5%LRBk3EN@{_tDrGD*&9n5YTq(0DOhPY92pB2V8Go7b1}H_H`2yxEbh) zTae|g(57Alt8kxAY$m>Nmu=8tfSriE7(j=NjzK;XFtF~2prby3-@Q)RE`h!pq8y^4 zM3A2X_%8CjLo#Te3~iSWN8m$UIX;X8Z2e^! zRRwOZ8V5<;s7E}cZ>^>-EVHBx?Q0R&Hg`t@q4V%CT07p-i4-o77*i`=!P#-@7GWh3G4R!WPAe3u?P~IrN2YmY9 z0OkV618a7NUQS0>bK_+~c!Tu2RIw{58(xCbYDGz7=BROIK79$ zTA6(eTl{JuwqyoLL=BcPYAD9_~W(m5DxW@->NvjPEt;`iV=AlD@_N!zkb20skN0Uf@yDgg72Ua5`*nyL!E$e+vh z$za}>@Bi@MX*BYCKGZCZ6ui1$ifJ_RYQ%bJ|A#L;iS*}UJ7N)xILcu?Q;WQ60Z8ZF zG|MvXYAK9H45E<2cD1@phN;WZz*op*b)}T6s{pjPMi#2;;1=g&aw6_a)eZ1#b0Z+a zH_0Y-Gf3^mM2!eTXT=N4FmhI=H$TRTdKlla8Z|AThM?IB5&kB?qF~nod8n@9S=uP? zmC^Wt`Qv3-U0+%LtgP|Dsv+>?{ttiJH|X@#ptU}jFNCWCW(T@Ou2M z-7lqe&bM_KZL`fgnCI|EqyYPB1pr{L1vq*dnr$0+q`6;-g2utTc)t>q$Gd69)fj7{ z-iF8IcVw#i2Ab_%RN_5ZtG+Mm)%$3w?@1KDThs@#P5n&T)XycZek2|0$8r&#FT?Yd zxZkLLfd;{H*)$JOo2EIzO-}Xq%KG#M{XKU0{(!KzXs@^A&h$!6dZwq7AeyZKW;AKB zd?ixs8;V%BWsTLCA=Yt-MJJ6PhffYO6D)A@8f|)HgObJkHTnfv{j6;Cq3bpo+!}|8 z9)P~767rE{-65YqWEPkd!ve#hZ(oY>&6NV*Jh_wK5$lt<522FEDS&r3wm6xU0Z}Z* zM6(ZbgvqAOLEp}MN&;`nl(Iu|+S7u))iJf2;qS!>ne6if zOfxm;Ly4IuktpWzJ_QBi-Jcj|l}Xs>0v)YTzqIy%&|zz_<6+dw2eTTAzoHW$1{rA@;Ol0IbG+dtnh6@+jC|`5;M+!d%O( zZvIQdT3gL8ZvH!7^KTCR`m;%6_Fno}>j3OxSzzy}c*@}(-J6M+)q15^Nku;Squ2WY zUp&iwBY@}Spg>BIBH0B08DJJ66CiSD0-+B<;uttmWpG+sex|l_=a~Rl@UOoxDW@&< zhDBdjehUc48dHP|_RMVu92J!DG;W$0lu1FE9Hd#)RGDVUba?W!qyj~AQS24jcS!p5 z3RVb-o#B}|cBA@6H);g9->WPMJIPC;#&gRZm$EV7m+Iag`&l|^0;E;am?bGN6xw$0d zDns0M-LAk8B3j>bP6q+;dTLR(AS4~onea`B%~|t!OmhLwms7(9m@y0Y z$#G%J{1_Gvnjdz!h(F*w4uXvDkZU8(q{Cn|qHco(`*93{PXZyhcQ7~&tb$B7oEMpm z_h15Vk$hnGoHIrP^~2P79LQ9%DpZ&Yx-^vjO)nijZ|@9P^Wtw7BJ`jArU9@3R=P|6 z9>SdbzeV`<4_-dR1p`B=pz;BOrTjq^;Hv^&FhSj=EM9`V6!8+`rMO7uC>zPC0el?D zUxWAyP@}ul5dI4DQW8`{85CfnyA@F7cc~FY@}vT^{4NJ>6q3`_n4lVK5oa_*jVqS3 zRH>!FJtwOPe3;0vlXw9e1&Hb{1=py({4&*2ura;Mq&uB&$}9yl(>balsNf~_E;S>l zW?E_%9mf4HE^2mA&Eb7+NX}97Lh5)mKd8XJ&ru75>V%-G;?G4vwK%9wu3u0! zT55x(Hd<sTYXN2Tjb!JeV#Yks|#gho#!#+E2y#rGvlV>F-?C8N&8hH{bOz*_~{nU3}cl?toS9U1|@1 zp>^k|3-}1b-MiFx1fspt>=rZVIZKEpRD;%%vf-ZiL$K&XQ2U(-sNjte73kLE^5({8A#ty$h!v*MgJHBG32 z-sg+9cW*SVSI4Ya)v&I%x(VOw>TBxO)~{NA&Z_zqHK&>218b|-pImd!s^x3z&5MLM z^=>|L3%&hi7hSy6;^}#ZIy`UEXu$DR_33<>v~S1@4SCig;|PG*g36_H}o`b zg9M~EmlCLi%-h6XPdnLs-hmpzP<}fD!%a9V#!ti9`#8C$sSTpi?TxFI??cD^bB*IB zw#JFXga9i2AP zcq1bk4yEreLbwguMX?l0sXJLfh=ZsRGVebq?y( z2wNq`JDFyhK@AAklcG}}4p&E7S*e|e08Zs3leu#}NhC|pR6JM*7c8m~srlQYslD3OrY(>1D{M(@cwE4*SLHPu`ak@7Og={?1JCPoMKbshwADU! zw~ZaQKWHbOwz>z&(ayzEpR(1x>OT78e1kJ+ywqibrR^wI3mv`yHa8jYEYGss5Ra`s zt?swg1L`wJr>bB>eAZSEDpdT}@*7)zhl_eh?YGs#iq%M;er)-YeA$-&BfkQtO@3Sk zvoj#bZ1s75=%Zn=;lk+~5P{RwEUuNcX5@xY9ZZd_9#M~iVrLj`IfE{`ZCKH~VXH5w z`z`gDtsYlTASXA#j&>Xx*WTJ}t0&b{80&S;Gg=;qMK=`92iu~1VlD3HRqZV?fc2hc zoa1zt(Fn0`5S>hkn@kiCvNq!f)K<@^17Hl*$yYjTqU1cc*H*piAdmqKJECoEtMCGC zr!%YN;Y)m>;|y`r@A8Cm-vJ?KfSgr`Fq=K?ow4Tl z)^;FZT1uCi@|Et;C-;_ixQAZZ*ku1tTYXW!ZmU=2>0H`%$86I(eR7<>W~tY0^@e)W zR$o$Iw$xXS_WUhdeU&bc>GW5@C$X)*uHJI3I(4slx-2_hhT?&(-d6BY{1Z3=R^L$H zwAHuNw=MOqt-hn))BcWa^<8<}mVc99+O(sy<&W|wTfMKoXUlKpSGM}T`T^*x0=Vu+ z)Cacup}G&0I=O4cPj&=+*Hm$1xC-ThnM*M_1#>(p227D{=d~;YlgcIk;uKe77qZ1Rtuj@B9 zv(JMB5bRjoS{>mKQ5P?kNrXx$At>$qv$r{NdHv0JoN}f{@$`}-Q}%tMMK|<-BlEfq z;F)^i0xikGopdl-Hk+y4iFecxS;E)M6rT&_?#|1N+B zT909VGbgd9L~{dq>Ph?G0n34=$)Q$wd`Sdd70yBl8N_pHlqg$tCu&fT3fH=rX#Lcb1zC$G@;J& zRu2M~rm{x&RKqZNy-#VJ+UXQh+YZ7l>Yh0CGI?|*%6Bk8~Vn((sNZp{4>|rp{4a$FS}6pT&ALoqDh1v z^<8D5wUhemwOgo#Jl)%j$?5fo8?7nU2^o6C40Mlm0$N0q2?U1>48g-hQXMHCaXUHn zG&DY~ZEJBRijm%&Qq#@h2l5y|&hVOZ7j`_k&pL|onf^tz5#JC?#5>mY`i`Z&zJK0% z#u8pXV^Oc~Sn%sR*7Ev}g}uH*2Y|be`Uic-u_*eElTmOVCC?$A!r3MaL*J3ld!Co$ z`32AOYHWNfY5;J38T-sTu-i;z=(_;28eisgXdd9Dz&NokYzkWkCHPXMc4CdEB0h0X zJXBTz40c)N0e}D_@ES6pEK&gQG<+-{kU{W5eE{H5_^X~)hWAg&5crWiASHY_C_@j( zFzkE}dlPO__&oe2<~WR(l1Skj@cNBZ+&ClnpyP~0oRM!LV?HBJIP#Q?Iw+&z*ql*E z@-hND??q)5l?P>v0ad+%>Rp4561aB`01#dzmtepDQec1I0;K9~eE9}El6(^$zrKy* z*WLwi=R5GB`yQaI-vyHDeR#b79#G3af@kU<1Ecv9VAp>NJQuK(SYccZrNs5nuiPSk z0DkU|=;}W~Z}Vq#)qkLQ|01sg+58nCn%@Gv>f7=Ul!2bKb<<-jKFFrBdoC z84LgA$ub)xaXr$BDNRXe7p)g2o8-%D7&jOvB>~UXTe*{_=*VKn3uH6YGhW zM;inU9*u3F5q}CW096G1C~@qs%NtIbNwC{9GB6p%z#MqY>6;mY4oVL?9_c|>lOa_H zZO4L`RA(R%PP1`>K8#8c)o>;%<*y@k`O%Nz3Op7(3x`(1uB9t{{~I!1d&)X2lbg!m zUS|p^)dZVLJnj(08&C#};WS>Rmxari2!56)n^rriSF5E!tpQxE79M!&WTdJ`v#f*b znp0&OENqWg4YEva00McVtWld}ooa$(lhaXNEMGHJ(19o>E4T%L-U5A@-mXHQv4X=< zn1HTepe$U$q5)9pDVl+QbfIY7C|VCd()6MOO_r0+iAaULAE^N7w$dj&gmA`QjKFdn zLr9oZeARlA{<83*hLwVWQ z06>2X2&KnmCRo=g0I}AoXJi9LWV<>99|+INh3a{^L%kq-)r-(vyduv*5%m)EP;aW& zSWR@u2H2|;D*PBy>wBevzwxutR5G1c{TvBFmF^^TE!a{K2E$q~ z(is40hc|$#H-ep(g*WM6b!Zc^+xiOH?7TR?z(2omSmCgO2V`s{FsyJ+l~ozB&=sfk zO4Acn!K(@tOb7r6#_B{E&p5SAe1O?J&-9 z;TBACu&Ah{7!iwjxUe=k@trPy;O0ZVGl6nHTSoZKk+HrgCX~%!o-H!Z7n2ixTV;iB zo2>JlC!2iRWs9#}&iBP-x9@y(2GopB>(`jp$V?x>+G<`md>_F4;DtZUU*)X&c>!{n06J&rcq>L2<_wU>*v%vj3 z$yj@(>rEU}fussShTXl=V^WBcpZ3a5hS>Eas<#KmCAY!Y&(Qo9$fW{Dl|J8<=!&ag zC2%zyRbC@geAmK^;bT(cyH4tS*Gm&D3C_gxW>^t);rkxnC*%s>opQ5ppWNoVOK$h= zm3_W@J@?1}8a z%y|Jt1(Mi+H(*hSx?Gs#b;jrdf`{(_Tx;Uo86QMU-?K8o_nb`iJ&*LU6XoP`K1hOa z@e`Q~B~vZb20;fGJ<8vvdE$mechr`fS@hA`GJd3O;Dm#6F@^CGdZ0}-*eDJo-&bXz z?`vqRchFGZkQu&j$xPq35f+<7?2M~ zACgPKG&*3j7^!0!N-8`bSQK{Na3DeFCdy)(H&HJB*#*%PQZW z5FT1}r##m?&9OdN9?0usA*lDtWwqs6lo;SN0{soLjVRQIK!h3FXr#A|rs2eq_Ls_J|9GkNPmq)SQ)RV(vaIn> zk#qgiQBZ8tI>lY(NM@76G{L!IuZ(o0urfysgZPD^jfDe>o+Mn&Z~Sv*uz#K$=U*U` z{3pm2-2HHpeE^e*1#0Q6d=ZAC;VY3ur5{q=RaJq&{DNTxmEbZ{oQagSY$t@T#-(yt z0m57ZIjkyhRRNgE`%atm%C%T~R276jR;Y<9Qh@0aD-f8katTsZcv!B(sZl87^+}$n zsmXtmg#AlpjK5k=!2Klua;f*Pkgfh2l44mC3KdQcOodq(&M@LV**D740nnuyqS ze9+@*W*LtwxQWkwWoiFfDeh2GElI=<@I(#q zAJL`yH~K8u^7_;!|9KMhZ1O0B<38vHxuZ2vCV z;@>Up{yoy;zd$baUntl3FP5AAm&hmlm&!f<%j9AI6#$n11*=@sV@a_BeovExsaq5N zw1P15bypvr(}wOs8y=FqPs_gaD4c=+hEDNe4Sg@}v~s!!Di^}pC*yt}zC4K)`BO_H zSe19m&j2rPgWI5OQ_`H8zrL#U#sYLH|BgpOSv7=x6t39x?WdtrBvag6woWtiECtGr zU4qm@4m@B9qm|3|Xj~~pqMX9`FK>&d$LAjY+t(qY@^1+e$gf6@M!2up(~1z(72}F< zDGk9iW4tzZ3c*ZuGA~o$6`F^50H6;C?m?dZ1hXezob#XHxgAzG9y_S~;oAx9?wlOD z|4bcj9QB!vph2~8y-?q?V{@#tkw?WqQS8EOmT!Y6WxSZ^s4O#W3L0G1^o-hDNQ*hHW?w-O6L%+ZG%aXvq?N zcoo&(2DP3z#%h6QD;_Z4qa{3SHYKSLIDq7qn>(EPV>y-oNdBmer}Etx4{VR^!Nv|8 zv1Hh40cr+%b?#z#^z4 zl?EFer2zwR=~T#N-78}4mE$A9m&K|os-PB$PXG7f6v(3TaHv;`_d~tS*HF&jbunLK zxmc_hbDuYpC(AY;W^Gh=7eE2Y(+r0|fmj9=;_=Y_oroED1=Mfrpny9AdX%kDg2eH? zM?M%Vs5_0BS@%qKX5M=HWGq7Y5N~+t-Q#VwEe{&Hb zuko5{YDSmX%VoPIZ9&;VEqQxT;z5CF(i}NID4j*eHlL|QHvh3NDp1b-t}@Ed%350$HUxtdvAW68B4xa@!( z(#Pa_80N|i{B|RM-Nehyyxd~RtuQl_+xYF{mfX&$*A>IE{|>(X1TS|M!_&ZB46v7v z`*^uKDEC7z7oasa_D948YJXh75)jqY;bjK)1SW>Oc|4MuhZuiHxu zBTG2t?w{9fhr98ptAsqTr+>4q17BF=VW4K$-1EZWdfBICuQdd>nX?*MAEWc){-UHZ z?BZuJL}7{=@#ajfm>}Ha84`VfR$bcXW!@cQMct|87>q!Q0L(WfRZ{Jp^c?(3_Acrp zIcfQCC_HQ@!54`($mJ9{y|2UCLZ=$(n8BdU*o@SWVy2!;Bx{6;r}PV_ZfjIJa6tz2 z+$fI&2x747CVOWuKkR*H=$9b%CxJbTdIxPOPS_}owgW>BcYW>6vG|r!=etgb2am4O zr-a%#R(q{JG}J|dYWnavR9?sPLu0bV##FVnpr` zRo==|+HE9ewHcm!WOCN*y(3D)+u0o7v@xT9+md&QmwwX5l>S{?-e)1chpiUL1@`m! zpmqB9$il9T-H9LAJOVkRw0zWpIIHr3ja>&|Z1eTqJPE@MZKG}f%)-jWQFxpzyPy#%CM~id9&(d4G1tSXIX^F%4QJGz z_8sw-)-A1Exw1XAlX|^AO0sYVO_Y3*LKH4%E^LdnZ>7IZ@UK-zvAFPqJ?pc=(pP6@ zdQI&t-9oh8ToG&5E`AL#5j7f{y4XpD&Y`(-!0HAdy(B|V+A(Pio*p|XNY-rFx}-&4 z>b&U?2WZk+=DO63=5(EiBwqz+q62K*=C*h<#Nc1{wYAQ9P#iI0lTsmxO5W|CSd*l# z>{Ft5Ci6%;?o^uW!?X^_8P<)Rl{aRn6~~(E`9E!;n`rQVsikrzbHP6TT#fV7BdpIe z+9qdO|pc++KjvdJrP}i)4V&P=$lCFY+V>Q0k0#;Fn zU#!wv6n>qYi%M-lrOrc@hF}Z0$*E9sU*Z`lGFu|d%II)5A}EBv3_(NbK~G0eNIn^Y zI>?A*s%In6*>VnAmn|A|RO`pH?$G%R0vfUw8#pE0nLZA?dqelipmOZ)4aGP3k==w1 zuia_yp|`EG;Kg&0)$T|%1o!UgXk+U@&@*p%2A$C$v!gPa_JrSa;ST*Kx7E$ zCbBve#KeOwe}(FerqA0k^_4Hq5BRymI4tmh?BRwY!2~5T79Mb4maztmbq2u$Q= zEshL0C{y*Os_t(=n{fUo7$%V9&U0$DTHsqDN6 zT!;dDw@K^WzLabhy~PGEt_ASDdK|oumc#$(EFd8k03cc;w}L2dL$`cfw!^jMW%3E= za&Exaz4&h*yd~a^70EqVO?(PkyL%za--j)&yMZ-$0L_b~kJG$k(7XgHJ>g%B2A)Cs z*`!i!7`1Ehi8W8=OellRKFi1o5@84P3>Kmvrc%>w!%u$U+jZtT7`daspUSO@8iw5_-81pH2XjU@8zW+N*4sK4sBBA>i##N{Z$H{tdD}f=i4`$8KR>42jW8h$qV^8M^nT>6|g*ZIJq|#t4-OE?(ar<2AU4_$#(`X* zm0W=P$@ua$0C2v(G?J>FZ0udOtrB`n{>?_jtWt(&x$kIrQgxH`R<%|>TLh;2ATJN` zvY(fSdHEbKMnxBtNBKY{9ew=ihsP}*VK~q{JZZ^OA&heU9VCjxsJ${4aZg(e*FOIAXTTq; z^*Hr?ZF?Jxy$5wBoISNib#cr3BOmLqD88fcOdKweOBUCwKqn+?jx|8Et)V;KiF|V& ziB;8~w#{v=9h>8DS)pXS=~G&Gw?w<6-JLjEW=pJd=5jX(NAj7dL5Uv7@^%8dcF?U{b<>o?z>1KPB>(dP!k(XT~>uHMRhMPX^VD&ZZq4a z=6AwNYQjgbMDi5Dkc78T`JK+q6-jdC=Zu1iT*g>wp;3S^jF!^gLd}O>T@U1QF+b5&j0`J{(9y~!^3CVSMWaD&3j5lQSh zIG{Husz#eZ?Prc`Bo4z6C$bxMx)57Br!B%wzr@ z2#u&GkK8QI6VP;(YLgR{x$ z-=l4vkXQGlhwIn&;84Bo*O@Bh8t*c)OLp5h#^qvOF2R`f><~J0mp%^BIbId#S)_(> z?7=PhFB?EoOf_cPvCSi`LNL;acBP1+mi)I3Jn7$TU_);`(wU~FJ+rem0L;4JqG)p* z$8(z9C(T_v+mPGk@8D6o9No!9fsK>Y|7c?=f2R%e&ObsX)gh>$w|Txgd>`A&r~I}G zr~+FRD$7zq8y1*|bhq4dB$`PKST8XB#9?S3!7*@Hv!E-Ea2OoQ zN{3xpJ)wFU%8&!f=wkjnJFd?1@1JItzecOM2S5cxMK=LzV9`)KHEQ+H20Vk$dY+-p zgT9!mBg`xMjwwUmF&F4N<~n_+W|iTnF6Et?Pu{7b;~i5U?#DrYjVTg2?7-94@B}E9 zTttOBO_|ee?fDL8866M{+VLQdl`5jr{IC@Bw@u^v!!nS+2f?f!zlZR*HmE-=L!nI{ zc0ijJ4?ip;n!+Ow3e0y$p-!~%8GcAcA8@VV+fj-o+S@%f>||80mirp zilfDVJuZcoy&7+pL5;Q?Ew=(QVh!}oE5YMWhK4MT-==0>&AQ)cm6?UnDmNnN`A|=r zpo^f5^Wht9YJ4zkJuG9J!p9wyaeAA;Z`7!atnFCPz7|?|2wHbI+IBWhjO)&jr!PIv z^RZFT166pAJWJg?ed&4bLY}bG!+}A=QPUxu+cM zS&)(p1!+P-PDeq`L_y9%LC!`&&Oy57ATf3v4l~kRfg39YZ_05vF>4-n8sOCdz8q@7 z=@vAF7vhvXGTXC!$Y@1Xoye6Cn6ZIVkaT~T<`qns* zUgIv5(y1OGBD znQuLC9G|xy)tthPy&kut9(SM~ccLDjL_O|8J@%p=`%sU&QIC62k58c<_n{u2Mm_FF zJ$PamBy^`9t?0=BTIa+>e=Kvx!0=~fxj9X61y2(kiz5PSXbd-^z8p=wvR6*tD+QHL z?Emn`Fw=LN*U;=kDAs-y>vK5A@AL4F@d%DSd~tZVb0o6f9O#5W%ZtDu$_j2czsg z4CVK+cXWS3y78Fut?8B8LsIv&)F)ZEkp*TUqX&?cPd<~}dwb#b=z_z&m%TR*%$R@k z5FqO!-I1ofzPkEY=1nWY<|___DHI$CQz9cmm@FcejIv~`1t$o}ld)!G*Og_+2SR#6 zvp+k>A}Lc;>bA1(0}P64rH04J_>moxr@((lX2>$D&EYs3^W=CNomXVTP-TLRX>^h$ zlWmy-ZyquuzorM_^v4`=tX89N#S_~J#Nte&%XI;o01oGqE0!I`$-IkSThSWDZXk?s z(iM^B13J#^#1MH$bs2Vw5Hf3)41zehaW)`^W`ddltfbHP)6u8}TH>|zVNz&aP3Jr) zu9!`PrxZ&fg%Re6o&)gBjE~C^(%2(0{B(>H%E|*U3RSPrqe;LyUz1U^ZzxDsRI2!K zI24DKF<=US>W2ao!Z1L;;f{Z)1Md7k1~+^SgN=WA54bt0``t3H2-FneWmE|D9?jj| zG2DMXj+b#E5}YLyKxDwZ!Vle~7N^6^##=%coanB^*>y)hLRaQFLQ{7bos#4nwgcd3 zy(PYDd0V^-`_P$A6WF8!xE7qKyK%<1vXxe#c@5erw%~L>8+{FR4k*e7nM}7~&&9L; zY`TrG;k#@WY+h|x49(4V7{g4q?=T*dHfBw2s#~HR-Q1J?|KgD4j@pJUIx=m?|9bEm zeMjn8cGQ1qbcz1MUPj{7bbZnTDBBt7upZ<{7u?ZF7;hZ8u5F>9_lzeJps5asA{x$f zn%ocsH4NZRbVC@U7g|QVTZu?aW`bb=82<%(^~xFCAb_XBP59sgFv&6#Ez>dU=1-ys zcflBMFJK>cgF68Jf|Q0~MawfRX{T9U6P=8~dNFD6-`O6QS;N3$rkDl>t zJ|@QFEq9hu=447oWm|qMoasaxs-%-_idZ(tY?uui8(~A`wiLAG_K+pjHvP8PP$Jb> zveJeE=@c7?pViQjYBr;>7mgQX8^E7h8%vRT8w$L2SnKUTFKcK^AH||Y!yvu!lAquL z775}%vLA&b+rs3{2_taY4{GaVD8hYvM>X)CvY6 zJOj&d;TnL4X{6(x@-l1IEG26`vSG!fQ|xL;edGwoMyq!~VIJI}Qsz6BE9& zbXxV{0w|Y&7oufZ()4ZyD7#Nhifrj1gR%!est0`38>6QB+@(*~y+{7aoSs=jmH z8TX;~{L6dVn3pzfOejK@B_W8fLqnXoEE$0{+(*KqKho7(;m%lR>lWbuav&S9qjL1J z-)I|jG}Z=*SX{LoXNg(DcBK8@g~{{L!=Sm#lxEym|N6pqg{6g;wpySw`lt1ZHMgaFmB9ScUY#7r9^?v$qw zHmk{V$}`w4cQCI`tfn=VA?-EBMRGBN@pjC*3z&R(brR273$L4{~FKRK& z9K=L7Oz`yp~wk_U?GcBoFLn617RGmX_c}XHei-4Cpej z#Yq6 z$}L*Hwr<_p`kMMiB)SO)2d~|PIjDNwy4qFCtIa_px%G}1t3`SaRD(ydPceo-N?7g> z#GMD&UxG1&9*~uXM7{WY=xOmi#s48Q1_Em_@2$~~kR}5K$wv#1g~>-)1qCeq_#`Gi z`pX#s4lxoE;1t}aLdA4E?(+c;Sb@7yR%i)UZA0#q4SiaT!AW!|o=WjY??6n6b~wY3 z(qymw4fg<+-@2xF4|oRumLWpc9?GEYo|GbY^w|*@RfJ-NL!8nrDY3w5+?770N?J~* zN-b&2!W_`jBNm0Uv)CEsI1Kja>!jCzA32AhGI6AhJ}gqQ_~;AAgTz1v6TJeSQS{fv zd%9v;u5=WK7Mxy7)zN3=GRwTU2MEw?-BF-KWkFpWB6+ChRRvN=l@1F*=+vH(u(8zy zF*SrR`d_M)IA`RwFWrGJ{9B6eM_>80=?ZGHVv;p>xp*<_B>uum33FE=HSr;8;-QAe zszJ|L32HPl`7u%yHPU7W$;R>#+eogW8a^363W`b@iOj6rmI|rlyhL5$F;Y_cxKB9) zay3^l;M2?jTPS;9`q!^Wu<#_JS+K%Y?Jy-!5xEpuAmiKga(T<2_ zKkGVUEyg8@`*vvJRIOxKFb^h`3}VbqJONmOV`nSF0f^TFwJuKgBFSwz_Ykw>#$ASB znllY{lSoD$?||UbBD(=}w0uXgR3XL)G@ApQUoLgOfmP#*Ft~4lmyf%C|xQ?tQx$PW`@P$$NBV_gw~m-;(czP=W9B;RhjsTmKLp z_VW>@mOtg=Pvx6@{23$vyqNy!dHFYse)h&N<{0@^P=3w(Zjb{5;$;!zjknZdCUPPJpsbc!!b??9orK<3OGBz!EeopUpf9x|q-xYkHuTAC@>49e zDg>0+pDneT&uc<*v#RB#j+go(xmT^_hjk&@uTJH!^}ICj(#XpOOKl9PO&}^He43@2 zEOiFPY#)t#ItT8brEf8O5=GnG1$5R;WFvQ33RWNKYk~jU4)e=84G#zZH(-fIp2OU& zArCa|a1NS}aDIsI=!mxiR*@ED`+8RoF%zm`Y%_+N_!_)ncm{yw95yop{<%Bi3oFtqR@?AD1Vx z85lhzU$j-LI?qx#;<`=kuoTX4k4vwuI@I}=>SW}nZPlf^E!AVIoobh@cC-8=lIk2o zMv3$6_oxd1=AL1z3suxs7paS#zzOn7?lIcx616KG{IIO2yPF5ck4~-a41<1hzvibR z0!rl}b*Zf`Q1Pa)isv7)&|n_3%0sWU7xQqY7TR{!B#h_ zo8U1ftqSqP2CQ}rX~Rdwb2b31=!09>sGgFUMzz(g>b7jVhs^0>8>ds8d+ru{?eE?ezY`)nXjQLlS=`INfX#wp~VPNPM48KQSAH90MVN-5T9 zmLg2*eyA9hgZq=dV(J0Mg7KtIv^=MtIUUEx0n?xg*+btIw-PZ1pI6_zUVW8wZHJWUD9C#g=-~R!=FA z_%rH&r9k%w)gfCwtDXZM&pSld$K&vR*dC*~8;qb>_rvOWTfLxOv=q{MS-oN@^y8}> zAqUlK$GB3=uT|z*>UCSaq29FBm(-VS^%V}_uddu(?H<~jJa^x|Pl;cc}$R(i(duCq!fgV=BssinSU z;~+Iq=erkHrjmYP%9lONLNHUrO2-|qzE;X_v_zHwb!Z2UMo>h?k$oA$~ zp<=TROWIbn=1@;T zjEJP`R*WDuEv?;AeQFN9*=*{Jb~JSFX^U-w3}pD(GSq)-XB;k`F~+>rg&*TM-Gb2p zi8oM*Co>a<#c{wp8MM6o3ZLzXx+PeQ*R8+HWD%C-OvAc*U^Za;9YonsvwUs+iUvUVO}g2F zlE#rm&F)w;g2dZb^tk+BfYBf zEvI>}a@blXe(7lzCzNSk*H3t2b~5w5BRV4|LN;BInx4W?3{Lm9h9e{+ZdL@D8FV0?Bzo;Q(lQm}2B z*6I7m1650F8%L#vOl^>oC!7a21HRiCLm#$Mje~%j;r9U}%q2k&s*U{FK{qFrZ<-RE ze)87W35cvcD}_XC4{$bz;{vzRqUsW2IpYINASV;!JUa+*J_Tco73Aa06qO=l zDwQ(Hl@cUML7i1z#%YvsIwlrpkPA^0pL&g#Qi8PAo2C2``t5{v8%+vNV8y}>ak6dw zv>9~>NA@Qbet2{_EbinuSXEO%n9MO2_V&lcx~&!sgOD_~8$xTIic9fqJXp@b)c-uL z!e~}%A3#^N3%eBCu4S}K?>6?B84HBPIK0VKeB`@d?3sIVuH9X9e?!dg#&U z?fU4UT!g5cQ9#fMJea80y&Ol}Nvl$PP9{<`!G5PaZY>eOAjVZ%Ub`pjZkpV71L5T! zGt+6$4246UnVZFjB6JaUYvvIJ`<#9F+0QklR6(%|mY|I{K#BmfigNM=%%jUN3%H!F zxB?a7mDtX_5bx@%aGC7@52KS8;2`c^z-yx8Was++V`dK3&J`{+FEa0tSt1-_u#7jg z0Dzjy?oVQzB0po3RLBQK_@K&H)0U5;e#1*n+bNkbTdd*_|LkP0gHidOv zx+>k2=DMsYt!c2lDUH7Lq+{mf9W4r?eTrPg1s%MiHMjDJIn_QqP2G07I%HK-`e7RD zW-bx6xj)Ej-@?e>%In_7>%JKM-<_!G@4{sKZUTe|;%)pQSLS!%a{X@eP6V|NvLJnl<)UtygHeMFfRE7gXKZTwv^n#Td5HV7 zKp#GPN86L;OdQ2EbLpIO?C0tuX3a_zz-xEZ)lE!~1r=o-@0QZLt#3;4(&skGmFhe@ znCBlc8;+R^b{sPo(&ZZ;Gn+IMno_yVN6baX%oZL#Us%w&twfe@%8+mSF>^6pmJwmN z1f*(4O|jW76;O1JFz^=v84XBst0vEm;#ASZFsyoa6Vk7HHLWKGNi>Ub&h`fO(Q zdZx#POpxdE{+H1M*8=d{2ki092vTlG^71lZkKaU)nFm0Yc|U>P{shSAj{(l>3kW#s zukrMjbli{8N0;4?;brdfO@g|(;%O7MYJFUJ1b6{GpzA~$u6i3k+H3u!?4+>p_$Z;zN4GYOrru(QUBJ{b#JB-< zn2GjnR@!&)!T4L$(ceSI{CAMv??W{I9>VuSh|rILh5rdF@TcZ#!apA{KLf($pXlm; zrd$7&4nh(Yb<#gfx{=)IW>y8R6eh?K zb5mPW`f>9j;^%2m-mEot%VE=5R?jR8z|4bw3hdp4Fq33A&VN#UN1C#-Y9g=qs`sk81qU1S6=6hGxvGp%>&*9 z^ImVFdDNR^KJHC6pN8Un$(w4vo3`T*FH>C!VX(qEH(RW5PbUZXq0qYs4Y*UJ#@7&1upzg2A|FMb_!zlDI*aYtLSscQd;_n~Trg`NF|TK6 zh+2K$67d49=dWYN^@7eZK*66mfkt2-WE;WNHiGM$Tlg5%h#P6dO*G;~G~yN-aVw2@ z35|FujkpsNRziP8J)t0(vOcQU_87VJi*Io*T`i;~LRgeG3C|Hhfh3Yb**;r%xB0ev z@mT=`>WF#EQS;VE%{|4ga;3LY^XI6`C*s%xTrYqNeLIY;jBNY4zLUj#7*hGZbDCJb z?w=xW>fgogf;EZz_loHHHY`>yOC@4w%Q!cD#Si!1&tlZyA`(`$XgaqSV7N=V@;8*) zF`3J<(318B_B}j(Cz+*LIOXLTa}sflv#`7?0<%(J^rvRbX}X>sm{l2bMwZt=4iTwMU2e zsCa>W2aaC_Tgjnf_9djp_WV@Ulta=9Te1$g?qo8kMoAx|G?9%$SrUmkYCo(el;h6a zvqVKc+SX*pN@wyA$HV53MLW|*<_pXP))ALeXyO%@^gCH>LN)3nLxI_3!}yh}FKrzv z8b98K{RoVr2hZ1ons7%OEt;kqlv+Sh$L-djHpft>^r-a^wm2siMuB>VpT2?F9C0dZ@UayiA&Xr)Ok5CF# zB1?>A9?a#Un&LS}>l`dD7*^>vgh1s)L=CecOR^i4sDW8z?^tGB(-3)99iL*qM9sC6 zG-@aDEJUOu_;YyZ#0>Jom;h0qLKgYsx{Q~xD=Onjum}FrW-%KwtV1f7<~+zj2fJ4R zN>V6*lD^W|qrYz4F;3-AqGV%Q;IJ`&g`b|sw%yKQ1Vu9^S69!~Q9a8X0#>*qM{J$Z zLN#<)j$?M@#&U+YSdM;6E@vH*IgS_K!ucG-im+9UhD)Ewk#H7X{`0WAT*^@g=@|Qq zt4-Y^7DFh66X5=eZFQU9cIZEL=27azemRLl{!ugKQPWhc*kuv2Mk_`7rmbkP`w8~9 zu3xSB!Y7bJ=uhlQRRWQOlpf?~vZR4szX>x-Gc_aQd;E4~hA)?0i+?khJtan%Sh%sK zI+EMai16jB?n8CG16Jpf6gd{8#Z|oZlU9J|Cgg09R=_>!LoD9g)qfBLL)Z0S-0aCm ziowWGFDdU-IOUSfXk4;mt9pUr%r;**IJiK`qYdA*pr>z%kd_0}f_H$xaPZz`7S+_b z^PJyGiI+i%*^hfaEDEjqr|Jt1g|3`@FPaMzaM896y8@l0Qo0*PIi1WtPwDA6x0ffj zUCRZ)<`dl5>`fiaI(|&2}YSNC2(iZt=toqB7ei5o7DS>a{uXIfU-iW{^4fhuy zwpw`3)KW5V-vwjWJ_aS#-x@O1Hj7s8?CCAWlZiFBWehO3<0*r^InZ=MHUQ6Hip8Xx z249q~9E+xa^qwRF!}#rtDU@X+*|5^5Bn9KeA{WEjz|hdKWz&DC5E3QxVY$;6BtfkP zui|K}1||di-cT+R5@pjuVGf%#RYkfAC3oxZh5R(0Z$7NVIIdb2k`n5l(4m@={w&%Z|KroI ze|rPP=}!mz+Lpz}ZG~b!Jpx#sna87SCF2a+cU8cZbC(-32eo=Zq@!EsdmJ2J;)w6WNMTNd${mVggZ3mu`n8qbvKk>2^ zyP(#6hq>weA2sGe1k^l`xTd+ItB06pg3{Y?QQ7R; zn}wwWlW>;7SEkvl49uxnP)<+Rq+8_>#3VXEq7ay~1M|EvUb8F?hp_ zGI+yq7FIs|VPIJ^23MF-23Hv1sRFY(Fu1`?RY^@|OUB>{lQLTavn@c3_ItqTjY8$x zZ57`RaxgYyNiMC33)GbCMt=@Zknh+p=BzM3Q3H=wK^G15lfac!X^|F7aw&^NVZ91W zl*?IhVP3{58^SnfxojK4V>-ECoKYJuJ+HhQ7&pW@P%}G2Q26s9F#J%cVoqm|*SxC>L^G@(4>l|3 z9%aC0)os6to=MJ%$Vh!@)HTVUl)a0NEp1LQlp+-PfvpCq<~n7e0799Nb~+hoiFk~1+2 zE&Jx!$>+l2wDjm$JX|CR=?w336pL4yP3WGIuYlKo^a{&)E%7W9 z%R7?B&U}a;T%R~bWG8*nSu6-1c`ji@B-2uO7RUS~S(xPL`PO&a$2EDGZEy;62KO(7 zomdS+GmGnXN@?bLNy;x}YaUqnl5bo`L-i+}%ZO-A8A~%?oCPQ*DM^*mX1YZnYW^eQ zF)TL4Z-LF2^LxZ*SOoS6)o(69O;ETI&5`7ORN?$v`K(d<#^rW~+P1HhJN!C&=@9!w zFRLK-C7_RWR&~^JO^Q7b<{EC3XQEtVc%qOkrB56@av=>XI>V6_hLv2ER&=5US~P`J zSXm(LcE?_!6X{=y6Z5R{6@1{jm%VN)G+Tcn0kw^egmh)gcZF6iYZ!$6K$0J@k4GEa z|3{nFi~*n^W!jXYJ!8h}x+G&J=;|O&0tXX?d2%E#ESJ~R$o$5_!;7{NVKH^_<_%ne zd6%r-c=3A5ZXW^?E6HldGROj&78ac&%v$x(UbKfkrvlS31Y&>12F9>UlPZ+uTo4kj z?QXIs^rdGfc$D?s1N(;nff`(U4btsU!bv7W$aW+p_)soKgDQ|R@{~wbYxT8bOioe@ zJ|;+*lCU&a+c~#)?gJq}o)$@|e7~z zZRKbjZ&HL1N5GxV1v`&Y!aniVC;#vHt?L7k%*c{bDI3u1K zvs(N|F2Hys^QdXCU$XEzd}*{_!nFM|s{WItt9!&WU<34sY23CW{fHU0?a^2)m#nUi z7OBEHa4EXZD+o?f@R4K7rPZIg{dpIDlaAHjIb^7fJ`rc6kAU}i@b9Cj_JbrSPawmP zxCSf_RNz^K#naav8JTf-=5hs$yCRFR-IW>h!mN&qf$7l0of*?f#5Ub>Qr?|41jK7l zG`x&KDs!6Imn9}rcVK!HBH}<`u9MoJSK^bt!1M=ZAY*RKn1c!%ag!CcoMv96d^ZQ? zmPY2zt&NI1mZf7}5=dTjd&b;>U2tIT6jQ4%gTWkQ?ozV519OkAF9T2B+?z2k&zM(a z%tiYBm4SIxpn#$NPRe}DweEhI`Xxcf+U99q3` z68fFn!HIiU!Q&?O)2Se!Nj@4v?pZKd8Ii8Ak#Mn{d+n?9y4B82B_g3wk`>6oaC^_i zTQ_1-kt7YJl%PA`zmzm|(}@VAe&ftx4GPKXGL?1ab%A+(h$-`Zf#Sfv$-Ftlru=@+ z-pE$E`U!Z_b(3`-Y~F3hd=B-cafznklH@cD%sWE!fO%(}V(>%_ zF|ww6orkh|GDoeW*6#$d1(2Cij$r9oe@sNJ_P^^5_ z51Tsn$t5bki|JHoN$rB5qCR36F@3J9+q(5wd6Tru&72z~4_jwG9OBGyUKG1vS}Yl? zApNsAAA$Kuh-vqu%K6dw?d?)dG=EHqm{wI~=0vk38nakVwz&u2Ok5ocnIqf^>(D=> zz|CP>(28TYR1a83tLFZm=177k!KO7r>hAAr?%65u99ZvCp|9kEpD>>s3P_=ZPZ>PH zBsZH-`SI}|d>rFe;rNq?%sak>>v4Qb49j5$!#;u=Mg-@4rc3#xf-LLA#bkl`6da0Y zelwEo2+iGYWTmT-Ey}IOGRMqPN^Lu1#9U#F>vOW=G)#~Cx{}jXED#U>BqNj0Ouw&OFa-3YIbcWrHD*OchPgw~;FG=H3DU$#X zDH^VK)IomLuGMj)E|52C1^}Q-G54W^oSarsN0RbXMzY|?SuSeTZ?4SpUnH)Mgs??f zc3iQ3tW|&kzmCoio=}2XwnxhyvcqxO7^_W}?*YHCJFy(s@J(KJ@Q)ILdU$U5kr5qY z+8j1?3c-=al#*d1y*ZW8maDxt(tb84KJ`9l(iXkXbVR+Q@O|Ji_G$UqP2M4G??ef8-HAt~J6-P~ z93BWG3L??@Jd+S+GG!2_Co1!b=>1NS3|Qq_-#JQ~_Aqkn8Hj~#*X8iQupK7HIrSQ{ z?PiIsG6lH}pu`+)y^zX=JyIoJCTqPP#2 zG=@+_QDc5iQyR$iik2Mhh#KQnzj!or5`s-39=nb3MQrB@D>Y$ zAGKPZM$_6K7mV#8lRIXX?`TgwZcdV0;K>i$7~ZF7j7r{VMa6fLTD^&GZR0d`6^>$y z%+-AA>fX@?`}Q8?9Y4xD;@k-&f0Oqa?0-H^K+I3^&QBnGf6|=pecG(^{tQQuKSu-j zS#vF@MSB4)DozGZ5t*XC=#B=6^TKn}xD|{?Pb=cdA^Pm=nq<4F8WYAG@4=#p23xAJ!ZOX@y(Eclx%>Q`L z8y9`4&KUjGZg8*_uBfAX&%XSYb!FncGqI$?GlAGF88a(mniX|)wlnx_fXK`f3@WkD z0z-(8z!07k2_W{0GD1N9*Csh&I{^2AISJYqi>(}EQ&m>h*wu}1b~gtLQD88DEi0Pb zz}=I`{;9i@?W{M#LRlIcMIBK1G=L1)OolOxVHYe`;I=q8;v4zHr7V3z*Dk>n)n8*_ zJ|u)fp5+j4gfvj-xsp;GpCKvMDS=rLLVr&Uk<1|1!g?cwe4i4b4Ge0o)Gw#A?R4jF zP+hX=sQD03Xv>y$5ZID$WpdT|_Jv(nMKCZ4<`sm+{2tr)rO-8r?cdu_*@M3*=A2Xj zeYOKvbo?KddEHobzz0tO`y^^tCDaHu)!L-|jESW0`X@n~qF-T>$G6j=p(5@xT5$LD zcGTs3WL>#BL|wVmwjK4k^tOU@Z8FK6YOWpfvxKFqpjob%T}bsL$642k3*%;r%Iv6X z|EOs=%Iw^c;;zx&rMbg#lxOwajnbV|kfV1f4*QtgSZN%`xqVu-xt(np7D>yQmZ#8k ziQIhThRbbRn5iiCmX%v2efs{z&41l&jQ(0lSd(zAlrVU&Z@{zp&$H&m=Bf0v(LX(U zS|6Vc%;z%ZFJy)Ed42y&ef(8mzK}6rl!1|b_@#^>o^KI4^DV-6zQcS)A79nS-&m06 zN#^T;`G!0Kp0YU4_*AN(ZwKZ(fsmbNnx|x=^j&>?Pal7$kMGM>>IZ@O`@sBAdWokp z<{xzZQAUW*3(QYMvwo^dscMQapMNI6=bxGH>)BU=2=n=50Y0Csa!)q@k`dtZ$>#fw z=HJZsGv?#tk zKw>sGd1FCh4m^y+`hZ~OHJ=xF=Ttojml2_)y-EOLbHW6rlz1i04g+sZL0MGQVzxF9 zxd6l*1WrE?I6oWcP@-$~L?FhoLRd!Q)gj!AXjhFB0M%py;wCGlpvYzRZM3U4>0>8Y?@ zPQV3hl$FKmm7FM|nl$!AWT_>R+~0y=HPzQ~JtH;@l2c;qOzrFGV2p;7hZjT@jp(=f zKvI_RqGuKr&z2UrP4df1iYhif9a^`QOjP(Trs^1rAC;WIDIl82kS2qiHcm@!z){N+ zJXriLgCD^IQAA==skAEcCV6^Zk|)Y^uM)++Bgf$}GQ4q_P>vF&SCy>DG_j)v3A=?v zp{6ZyUU3airho(s6-lTh795EPDWRlwJn}HCYiM3>UJ()w`A@gyuf;26P)m)_21`v3>hi_wE_k58PQn5KDp9O*JByp?M`h`DT=T zwmVwOA+Fh!ixAa{^R4(i1mFbd-0HD+O2}bl?+4oJtxZUZ*BtE6ukP*bI9Mu;aR|bW zpMAlmjqBZ!K$+Kt=8fh}RXFwkxS<(eOd5?D>1WeLNT6;6n>hhk zUh?LSOoCx9?MP;SM`v?SU-ONjchEc-f?E#X5IE4wKH-<&9D-iXvj#jRdY4?&gV&#T zYv|qPy*M_+c1NAa53#T~Ly&cN+au;N$|Kg=y4BlPhd__NSn3lx4!CjV4F=h726Vi{ z-Mx8TM}LR?;Z8)`8@qP)cJv-xn&^_|Z371m;Qh6f0`#{;n8+weYFssTb&CRRxJb3% zgau1oXA#j?NY+Jt&}_k58WYqJ1eA9uHPFf`1P9 z`LL?Q>Jhw32v%ik@7AFmtHK!7dIkl8T|@R-aMp)7wXWXT*WcSg2ngW#Ms8L&0)I&B zuv6PU=$sFRl6x!IN214KzST3QB$74leP<_VNn=-{H~TO63lWge8kW^KGd zqJ76-m01KtOqXSbEETNLfwAKNjs~zXC1%`J`J^a*0c?E&)ObV+mB#*_!cNF>2s1TK zMGm93Oz9vAmeXXU7hS$aFE)h1JdlqayW);1<=YDEsKaffmIC`(Vv|)H`sZ^Fi10@X zF5x(Y!74xP9;>%*-mn?#0%zoNoLa>gTXJv}RgM)Yz>_(M)bGo8?~!B_MipV8BEKc} zj!5fVSvxJP_HAAJ55&j75!v%Z)}3uNa_Es|Xql7y>P`iM(Mh(q2d=jl7I#-q(Y3!w zm8!bM$KvLsND`rIf6vCA8}hwtt#Y*l=f2L`re?%MgA~Ko7Q-^z64qWrjGR1C^{`w! zL!Kc;%h;rF`XIJ#^u5kb$KeZKPquvb_2jSMiV~}Rqhmvr!7n-HMg(r~IZ$NgH)915 zU?byX2lJErMg>yqwi4(!FAZMzH9e5$N~X6-4#MS0nvwSAcke?tvecCT#dcbHJ7%T7 zu_9oTd-fs=C;^j+2xqdIc$Z0ZT!FmSGYLBOm0POCIW#eNAJ+pX2HSEAl3S^XvpPa@ zm(#J1tFMEky>gbc&p9mG@0=I8W_6z8IuY^qn^Eq0g5)yS@l6WZ)2;jW1XK4h+_Ta3 z)`QLx?8s#-JWI9(4O;eN053jmM#--xf>=SHJjQ8j-$D@!tP=7x3OpGt@hOOk>6z$AfUeV-BdT65;S$nIFFD4E$5oUwq+LzRIGsjGms+Jcn74&S0P8Y3 z(iSU|1EX0_{pWHoMAH;sn(U8Iwi`6T`@ zCL5}R3FRehp@ip`l)zDXs1hbR=ODG;wc%n)xTK_n!{&Xi1aAfH!XMdu@|c;l12z8S z&7PDDQ?LwZ5~kzS9l}YSwhEKp>GzvSO{wu_#xXOKpHX=?rye!aE&S+giz_-u;Db{I z5jpp;$q9e-DFb9EUz_TmK!-8!DYH;8ugA;+3Rsw1bi^#i9AI${%{6+{Rwa4Nv_0Xi zs&C|BiOjJq%$%2i-zNSQD@!^$|jRxIhdODn>}>g$*w(F9&o2b;H@jvJ1bX7)l=R% zr_v`BGN^N!(us~et*QQDIwS7q)94I4r!y>0$}S9zkJXFQ%PE#wmW48k8b`BamNMmwb$g8H zhsmpDIDSfnq(-iBAEMJf42gW0&iV+(2#?^gCzNM|3{gFrj;iM%)B1S;^lok!VDV}Y zdNt}#n$*GGNCN&v67ZB^>9S*iJP-Vt;D{id}v*M_ROno>m);s_|{ z*%(`l2V{2&HY8^Ovb&a9ycvAhK92F%n{(Qz%g3)~xAc*KGP7mIbh z`x&w!SctOCjPBrw4|;R8O*MKOb5|TSS8fDHdQL51MyFA#)u^%}!xUKLt&MLY@D1Gg`Zwh-HHYE)DwjW2TcNtj#ku zin|UO%!w@FQ;x;Cd^FtlhB1fe*&+aKe$4EqA;6)=b7T)`hs@QgOxM^damV0^`vY)t`caCJ&Q90UuwHOwWv;Ju_OGvi+ z#mm^QW9iB69WCseJ<+q`q<02ar=wq8WyW}CVB&Ko21w7N_mG@LrGK3^%AxP(oG_I) zw&r>v6n#fb|E4z2k&J;S&Gr1>T(>e+w=!*a#80gZ>Q-hZW+n#jGVM+E6Ei2RYG`W6 z-EhR*c*r!QR;F1fd_QQv*QZvd?#OtDpZ)8J=|g7R#MB`Z9y2#-#l7fZX81_-fza{;Hhls#nRg0q`%OFh-ZCAv+JxV!lyt(Cwx%H^I z4gaA!n2aJ3b}Y?ucC0*I`57|#fYiQ}>l%u>iM{$IJn80oJJ&n7-idwGOs;p))$_UD z&GjCxFFR+dnZ)&8zHcEv|BCig0)w6TsW*26gd#AMp-m$;b?5i@ba!=bM}u5y8ev|Z zWxAiEDA9Na0KQVEFKY$AQfJod?p)oS7YKf(!E9)h^SDxP1ZY%OhrP1cYzYLrve?3| zWaO|^XD*ig6<$kg&85m~?_Qt+cIX2SrpwJ0EP-dA&6q12A&W1}n5(kv;vE^YQz)~Y z`q-t9d=|EdujAy(G)^u}djgAXv2Me*EgM(wSikP7O`F$mx@hx;wO4J}yl(vquDWnN z`hr~I&=Q@xP$F=Wwia7ac#wkbc^E^l22R7fyY|=syd@{g=)5zyE}bmL?~l5k7)yKe zy$VQ#u~sEl$hDG8G{(s<%pa7j%sw1bsM$sD0y@#1Cu2-n_qf6-*oAm1=8vOkDKK3j=9GIw zv(N0;U3UoQcmSA6s~MDm#8NlVl2IUcrpKeuZz}$}z!15$&-7a(w@A-c+KG`#+f*z4 zU)pyA>Yb$pA-3(F$j7H7P_29O$Z@A8EoIX{cP|RAJ>6Y55jK(#gPfF``wt$-H|yO7 z)Y|JqtSWB|p?f!laQQcfkOExuZVlyn$K=q#I)s?KlxY+9CetP`w}+6GJMq`qrsl6B z>>J=o2?dL~CDHcyb)aCCVjtCDIVnJ4H&YZoE}lDTitT5` zORqdL(G67k4dzT3vpOeF6}~9fcD~6+SMCGQ4xTLINm0B~K-`mkq1(;pvJahvRK_Ot zn&82NzV>+QCjV?0nAWiijv9YudScpt0Kw1LtKx6(FlQe#b%+E~Z3Hi|R_yg{6Vs`y zv1UIaWZ%rDiD{BF>}Z_`gPoOJ;BnI^Za!R@YWcL{`HX8Jo=@Av)QqEM^kH*8568HN zW86dh5KiXdIQMXzdziyH;g}hZK*H9Z1Ae!jBhN%?e9TOW1VMVe&DI`Nz=jKXsYSe2 z3;Sj(2aPs*WC?cmOWB8)AzxUI^x-7S8s|B7^kH~?6DR0<5LUe!X7_ElWE?f;z;Qr` zqaOV>d$~j~_q03(lL`_|`dudNKcv@%OPjK(?(7-Clo4(L z(}-G?N_?kR=;74Zg%6m~1cKoba2$bote?n%cKXU-V*UMQ{KVjX{oHnGZpJ%Idd5T4 z@a$XfsDn>@qwmB=dTYxF@?N8H{g{kQq>1;NiQ~n5SoRj&B~F6RScQmd4I-`!KsdgN ze%g)Y{6YAs7s1lsg8bRePr2i#o;hu7$2(0pZR}0&HuZOS- zpign5VOPePofIM;7dHVfqPui(Y;DQSMAk5?&P+c<)T&(b^rL3B{jTof!5pT7d*HZ7 zy^$+?AJcR{Z_~|N^ia6mW?bQCQLPGZlKf^a1!r2O6P`#VW?Ja~`Q=6Raz5yzo&B72 z1}I9NHx-In5Er$uP}HLGqHd(9gA{cWMZJhZ&ZZr{d0r_``ryEQdw&5tt-m47bP^I9l&B=@e%sEut_Tx0YROesHLM&_R@7doz~JQFW}$i%4xPrWucakWWg{= zw)E`l>O4roVC%)3w{O_A9$kOsEH0ceDd$xFef_??OrW;IJdh~0ea9Bcs%}W0?2eK> zJKn};6?-}H{>468An~G4Ic8G3CuDJwiCjKoq}K7urE>=x2gk*sb{s^)T%_%W)c6y7L95lZi75>kyb`1 zi{p6gl#s7ujlZ7kZ?MIX&}QvmoohQ-0lSjgh)}X_bNi>PsBj`o;JeK9_KE3}R@EaN zhO4%6^ZJMHNWy5bj$s7rtHxgNnxUDq?fiDJ<7 zDO>Fe;8V5Q$II&wr#ZXs85A3gV%qVp@!{NbDlhRFwJ!0*uIJuTZo;!dy0W*UR z^MP?V@eYIjRq4t>%X=iXRbAbatN!v^S=^3TyEoQhH$eg76%OlOT$>XYtxK*=mytz3 zveoGjLfz^tVuV&*o#GLkdh4@XKga6San3~-Xy&SQo6*7q^Y3BqVUziEtMM;c$sfoX&$^t-RjaX{-Ir(=EQZNudiiSn@uzQJF_)F7zw^j2g2{C*9wYsKl#4OpY+zrq z>RMcV!rcX3s@#u%lq)f7H%a@#RTkp8$%Qy!(YeWmX!HH{*5RjEGf$MQLkVZ9ufsn* z{&jfUe|_j5ni2EpZ-giDYOGV)ws?^=#&Z-sXKp5f>&U_^-~^ttNFBt)3lz7s!7R-f zJii;vawR@V?(V1P>k46ctjr?NJuOh|QbuCb0ZhOF{<}W!j=Pmuu);~bR$i>egZptY z-JbcqJ@1DcmCh8@$3$d+@Gxgt*hJ#Cgl4r_6GG16U54K;*N=cC4I$Viq?0A*d967G8b!8}e!zt7 zsgvNqP^$STAKU9rn#f71UYJ}N6p0O}F|#?0%tE9wqrjlz4!D+9P`SoBXfUC2sTwuM z8i|>2@%`I;{|>)=7tzS~3eCxojza*SYK}l%wE0YLb!Cr3iKkm)Y@pXn3Sd;WV+?;t zj%L33X13Mny2IIc^p+y+AR6@`vQf4T{h`ZZ5<=N% z&DJ1}8Ih2rN+i zNsy7K*x%Axe-@K-u^q>~*1fvpU+Zta^6?K`2sfd>i(n8&aA=5t{GAkjxJ5rXFaVjQ z%@~Pc$6C`9tOp85!Vzg%p5v2SZ8}(Yw6QjeB`+SrVNKM>B+qPk&Uz1iucVei-8)Ds zG=j-m^(<3SB6Mzd))%gEg3W0SUbV^bPfqgqE1QE4)BAG;0DTJ&coD|}H(2Vy(=stiH zLg3I&Bp@k-{w5=b@NH3BNhc9Ui;Pn1Bxpz@XsAcf5acpPKwigr@reA|FvJKYXc*-L z4T^uQl8QAx%o7YhaQ2jdK)=bm%|(_{qe}z~lsUR6U>IF0U{IM(zfmtQ(f5$GT zIb;GP7|2MQ$R@qN*%7e``97QhVt19{~a7-sCajSHa9{d8bh)78Js>lIr zVW7|wM4mgr=&1{OKi?u+hLMRadjNI z{muIPOt0kgQ*^Q!5i(U}rqV)*m5)=2C1rBxIOC0Ar-IES+#obXR9PfdL{2gArdl#* zz=m*c!KXnK(KOw&f5%5mE)vbnXdbTSSS0IRWjV@na@*EV6Ps;(rGIS-|r<gXKDc14Z@OjwNdkU(1{NkfgmW34`IAR;VJ0~=K=|a}K z{?~gymiBHE1u06+r5U!cFzVAo}7{MK-x^RhPpFWQnREWNUq_k^SGef3E&L#xQ2@W(Os7m8MqHTVJ zVk~f{Pee)04qMsGwz3qgU}NjGAq5knMR9$e&HS~>>Vg!^9_DiO;uU~yvNAQMy;h{k zv8;l(+%$M6v(|-w7N6Q=-KU*7XHRnO%+&zH(_q_*y>;?Q>CLQE{f&6FZv5ZX z8bxMHu2u&lsUNC@>-=3DEfNbBTbkoou!G0iF4#(sN5Gf=fh^b=ELidJC%RzguwZd; z@#Y`@f^Ay!-%ouS5}?0jBidfec;`3TVAk#C@+{^bR|HWg>y)`l(wVFEPIn&&X}HzIUtxA!F?#cHHG#mv^Cd$IrecKP-JVa z*R#3ldIK|2*Bi4OCAc0G5)ap#WPW&sDt}R6ZYK1Mxm9>Mw*}_KRriT9=9S%~(&QXg ziBgq0uBLAt!t|oDpG;t0GNcV!bp!k=_P~S!A4;NI)khD=5{#M#5%C0X5!r)PvfZ5A z8v*hc+ywh<&;{@zF0YQeJE$_a;@sepka{@LlSLdBbT{c5wsr04?&!BjKxdczeC9~1 zJe$Hwy|kWd{b8XCVg3@*vJzomjP)^C#)hCv(O0p<+t}5ecar+;3gVLBZ7X??BARoe zpxQi5Grjpe^sJDLmktsCXYi0o1}KnSXV_a3doS{19m#0WLuYpGQ;_hpYvq(viYp@f z&^tnqCAQQUp`^h^Bawxpa@}dwDFWlUn~R$p}+vgcBbJrW5lJ8-i$eo2*VK-!nckJ3F)o}!~CaF{;ak7bG z_%&^>R;*C+6!LvdN8e@(D8`N)UfEKh1I671uZ??Pojy{dLOgWR8 zN_V@$i_pF}B8YvqR#5w$7RzPvC8^mkfbB53b!bn~eRG#ZNwdaYq0DgPI`qZ>bNHrXd{(6i zPd1U?)xMG6*(0L#vq`TOON*<No+O(t~AO63}7lZ zqdoJa8MCPkc&f37OuFr15CkGDPqozH2lP|b09D-p3x6Y60SECDx|xo;w9q*Z(*XT@ z!`SR6&6pi^$IQ4L^`A63LaB~dDAfrHr83a=U2Tqh|3j)3W0c zv-qe%)6({+$rd}#sdjDyK=kDd%?oI+Z+2kXV?ab4#eroEfL}VmjNxRagU=Xn5_G^B z!#nH1GX{4l9gN1HPuGEG3{YQ!!5U*uP3d4X1`Uc1N@LKf2z+XcIfLipxSq-Pv$&pJ zu3>rNJum#>SiCv)w}gfaD}>wB(M?dw-qORM*PLbiU#a=@Dt){hA zVBR1PFPq}Nz`RlRTd&N5@&D#5KObrY7UC^gVeMzk+x3R;$e0IoeP<)+-0#-Mdjj)b zrF~Fo59_!0>GAvZ>;wAvpgtbb$A_}uX#a`oeK=!2lEpCL(ZGCEwS7#Pj|Ap19S?2& zM|JnOK0e+E#_uNr^GOx)DSbSlCr<(+n=yZ?+@HyqKhyI+&nP79HuJPTKC2=>*J%Di z&HM}V9)10M#{6Z*{FPqv3o7G_8S_G={ZgP{v};xKWJRQ1YrdROJlZ#zuV&2O==;Z& z>}%?Yuj>T;jg0wbV7{f>Z)ePRbp6{vp=cj5-wVv&Ns-&Lhtc2^mN?Jo8Td2A2-R;; z$S`J1ftG>7j!C2y*i7lkXhZ3*XAVAI49}daR2`CzKlZ^v?uI?#VNca5^Q(+N{o1X94oQ_Lv--CopzwMbad{8M7a1NB`4NOIx}lMK_5@*Bra4D6odf+ z7PE`9$Ss2!xRGdr%^SB-_0y>`j;&y}#Rnx%~0fQULkipMkQ^E11Sx? zwoe^Al1UzasHHq;HF{=XP-!Q!5TQjij{3`<(|RipQ>|^WL9zCA^dr0?L{{l(C!%hM z2AND-3W=&6*%Cr4Cv+=O@=ho&8pm&GYJ{fK+#3R6N-We4v$ICARas!&PKl$g0AJrM zC{p##p6cTaO-VK>{g7?}SE3I70U_PnZd zFp()V|7HF=Bv!<;NXg5WXk^01xyIZTdYQWI!R9zt)$g>sdvmu6o5SE@ z@Yv~%4ZU&9NiXM(XAd9TIlFh~fo}gtZ-V*;^nu1Dy^+|zZ%OD)GI!C4#1koMLT|D+ zMP)Z3p8x_qT5JiCrIQ7O-c)ZI>TLTCak|i(PS_5!sOq>Dd)=<9(3|Oj%{ISk`T~f& zjf9#oxU$0#IkpcR$oJY_WSPWUPJ%Qudc~zCsw*kSu3fA5?HfXRfl$RoRxXokhzB0% z-ruvUYj>Aq`mVe=gEy%%&WG)=k&Vb9lFLJ_B4NU1wI(}IH`ImAFJ`MoDj0H7sFIe% zf*#(#Ak|9XrjINLXXS{IF20^^eCb(<=HJlK+ik%+#ktrqcDtNLDru6H_=%nk_c5x) zPM8`e9n?XjEe6*+ZkUCHN@!GZX4ykc9nCJY3Xgj7%#dCXm?6#Q5Yx~JYn>=n=W2%o}3syD7?5r;B!{?xLU%rFG@N*vd zRp9s3-Ina8s)re88qPqMV_u9>(D8lw{+@2PW=mXAO9!biZzyI<4Z1akeh`x$b7#c~ zqH1k)Vnua~^*$vGdGu1%1+R(inx-`}dt!oGWQmh$5;GxwLs;Syiz>MdSrcIx5e~Bd zbC(l?g6#1!?tN^Zb7F7oJ)BbE`PKXe(`3`9V5D~OOP+5Xk(9O_xvD3*s;`eq@>*=U zGYI(_J{HULc9VS$VlDZ(rhs~HK+ZNAnPd(z>~sV*U8O z#z}B@&_*}`KGm|TX&I1Bitg1&z2Ro!+>Kh5YE^i!rqp}Q)bKOv1BJg-9^%0jPYTzlG&SZThO9rL~DDjz`RlVjrB1=+huNZa{S0i0D|+nPw7JY#||8mIIl)%DecW(5-LnH%{~_{vRfPn$81 znAy2Gfc=j*^ENSZ^EbD&w0nrW7kI>~o6Zzd#$p>?sJS=Nn{R?$elwHi5My<}X(n{m zJm7K{6JPXn^8jstb&J|?f7H`EBk?n0egd&6#HB8TWZO&~S-Ppsr|;Wcl)x4A)MIAJ zsx+zR6B~{gm~@&twkaLAj!{y^CdOr19dj#H-p<2_r{71siuWUu`~YI;4>J89LbviE z^ba3q)hYNF3}w{LSR=5apaoejEDzh<5NC*AX32(SMKN%sK5<(BmdCb85X6AM+YbVX9jsl_6lA>=5N@EYz-2?_BJ}&NE}Y^NFCa!OZkFnilV(X!aeX!kdWS;Aq2Vs89x z=I!L5)@i!D-KN{S#@yg_VR3YA^kO&jO0fOBo`~MPyjGg)X3gbI$IMzN-@46hV+qx| zer0N6>g{GuJHcF1P$FVkUfP~J&t6D zfqIddN{qP$-YurxyOoZ73Geq(v%$NAmJqQi>hOhJMHVgi(}kPbj+%|dLM7!A`JLrcyAwjM;7Eq_Oa-+3MbDIg> zchM2ErC71c`)Se;4l2qcO`hgrQ(@*m-_Cqn0{yhLIAAVF;kOvDZ!`P<77ys}Lb+eY zAh_!1+sXkDA8)oX97oOeN6qYFc3V3-Cl3;-t@jnBw!zbH`RR`zVk6Ms^GHzjj1{vG za53{x;P&)7Hl$z}R;p~0&0uR5`rQT`wc^#`T{%Mzl`)*)$#SVAT8+>JPqh(V^sx$m zK}Cc;Qy*vPx3hKkJS9CRV{p!|Gix$tt$taTQ4GD46+`bdbDmP*_lasaFc*L&7YIqN zpc8Pyo2mv^>3nZ*4?O9JEyW8aV3uP`fO`+iXvLf5Dn%TcwKcD~ysdflmCdC&@~UUI0UKzRxkevd!=n{oV@sg;<6d?MIPJid zt;P{qtyMM99`Smp3h(EdhaAbu!ul@l>c6Ina6=-6QqR{~u-OX}m_4;7*~nlRx5`U4 zd7iEaGj`naf#VObN9?-Gq_h}0;A9j?BLRw5BG!qC636I(_;@bDWxeiHU3EEZf~>#_ z%NIohrQRmZcYv~&~ zB{@qVZKrdw0CHL9QMnj_3~aRbm`S_suvpp6RCY@uFJlj%Z1Z}bpll3Pyk*|zR=EKO zhs+J^$e9mP-cJ5}{>0)6L_r2EvjOF9*nHSr)LKXC>``Gc5SZ?m83k7~S|yBW(mqNI!!!)WOo+qz8j-n?o9eFzKA(P< z`C9tj=11xGn4hNKYkrx2(DT!Wz0v9SdDGJ$@@Az!=*><)wht4^tYA_HBsbs#5wEkBPdxJ`7L9HPQr&#h9-D1 zPLa(Ju8cVRHPSsZ0y9&{>_kEGOfw-t0&Re`@-4qv&Y{5E5UON8quu*7<=$|O8f*-)0a#wldkgUjU9RCI_ z|2b(1ZbnY!xRjHej;ANLrgL>fOu)_3gBGVnOWW%nH}w*<1d#N0L??wW06fGZ6cuid zUFlz%O#0u=xb&|eTEFI*+ib>D(FE>=&@wHciXO%hEuRjexDmD6Y{I)6|IARi4rUCz~P4G7|~|lG*Pg zWtlrXWwFkdaVY7XwnLUCIwz#Zp-;S&tm+)8}NK!8m@!lsucm}}%$80Us zMga-+Pt>LndgGj~D^nX$6-#aEXPcmY4rv8$CA30gu4eldtGli>C{i1dnY74^7)X(s z;+J&tOMT+YVdqS>NUMEy@W}B9yX>?7ZbGOB;W{ z`{_>sWosfk=k|0*dZ%i#9jM7zfia8|X~_{|iO4d)kE8{xz~Pt{r9`i+I&riTWr=kDBj1_PYQ3wi3cMkPW>D* zLO3VR3)ZBjkZwPA%1T`8daN)2tjCH^|3BGtmxDa#;T9wqG`nz%M#Z zpHAzbW%{dGrLsZOyo_TkWAj-d?6~zNr$fdB;Z_pT5P13#@6jKIZ5Hl^2M$ixBGXRw>xfB?K|O`Q37u zU1}?U?$%>-Y)uH0;Ijp3OWof5K}H~vKjPF9bYg3z-Jo~?E3Gh5QdCLeNz4VJAgHQe z)x@xEN9q|*413Tkt;gA%ZI9lq)NsG>cJ-8Xp-UTvOB}JQ|kH)c7mDQ4t)cZ;5!ikk9t#?$WnDiqgMcNiMJy~jG zG+0dfIAllhSbYwc3%Tm#Occh!lEM{D@BG_e!Z_&f91_-a1l`b$FtyJOd$mLRAG?sy zS^eAX#`Z=e6>J?^D(HId_ymHhj(==mk1LMZAFha?rZYc0;qOHM@Z5_5CnE+FX8&(T z3^)}r;I!ix176YOz2&>m6aB5Nm8P)ALQs144s$3u#mX^=;2G;4veG^1V|vES$Vj_6 zrJ&se*cCzj?}v7C7;R<=k6Y*qojx%N%2@E=&H-R=7KRuOEDlUdsAw=DmbR!0Qv37$ z9jLgFTF{02LNw6JLX4Qv1D{;0_OeiC8Chq`ss2+L!|+^yG$zjYF<+6Ne&!6glcvd+Bq&?<3`aqUd{T0~Eh#yrs@D6V5D`OakbOl$IuO7g`= zp+fi5#+t|;Cm)?%^iL6Ne`JB z1S2H?>Dhdr5y%N3I1GBd0)uQs8k%)1i%N9*%x6qP`mfE{^q0-t^jB$(I25T9=Gi)R z#+r>Rt_(l+i>p5Ix^2)7{jDNlP5a))o}Rq}2MP>o*=cAIh>j1+W=|T}-6NM~?YWhmOqwn(TbDFX z`xT$3Sh1i&}^Rosqcdx~AsWu@&r2*jpTlw*c?D_v|u~ZuIrXXdiWU(a3 zh>blC?g%;EiCHZ@%K<{RtiK7XB}|$!^>t=keabAWR}e)f3LUZ4(w~22;rdY!Mg7%m zwX~(T2S@w~YL7#7DV#kvRbcZH%s|BWRVs6EDj7#tm33}`d zP(PNDwLeJKV<_3D6pT(iDThXx_*9mCiUpDUa~RpD7P*yuq6wW@_YpI%VvPch+v9hTzis9Bj%-;^fM%yY?+txQX|=CG3n=FTNI2-p}6LA zb+XSnFt26I%WV_xdtw2!Mt^HbSQ8h!6~#!0T=xH$fr(IHML7z+5-~9azbBZOwi~*3 z^<#XCfV)jgnf29wvs~{YuAs4?HL2xGuB*CA4g>s?Hi%7 zc5wOCFZ?U$kN#R}Btxa*4gcF&^NdIAjAy*PS#zDYuYtS$S+Cpc(cJ-kT&IuT!0XF+ z{jfjYK%;lPcSFXzQP+cw-c8<%^l@|G-2yzUcWdC?hTVs^FXO#f*Oz3xm+E@ElHZ}4 z?o_h7GTz-8?;e%?GJV_|crRCYsaIsZS9-v{KI6SQn9q_^L70s2(r3<3T$ItpJ>2|o$Hegz@c&dv}*a& zjQ1J6-Jj{ppX=i(jmp!i;ImotH{R#;@fU&j`Hc5hf%k>1$$MYa$ConRGZ_yM*m2&M zGu~GM@2gp}k1pXmNU-C)uVuWi2i`YS;y3lnw=y0hKhFD3#{1ih_g&q7PtR{xioXlI z?+4xw0`Knw?}vf+4|?{athvqmF?h1xPqN-my?@ll&-C$68SnoD-alu(|Lgrr;QedX z`#10Bf%l7y_shWh_pEuP_p7Y;Yqjq`GTwh?z5nw5Nu7N#>;1R)KY{mb#s?1C^Zkrp zM{oM6te^Jlsn8EHekS8L=r*g5#=sA=<^g|{zKjn1FWc-O) zf0B=>Vlyw#-IT1~`qQGCQ=Pixq6Mn1m{*&6#M#uShjX&cPo%b1kX~xHUywhK`4@bMz=^v?|Zv#5qbdHu69{_`{-1A%`|;IGb_ zuX+0de@)hWLsvY?zoqNCtoe?vc$R-x*K@NV_;SU+{0F+?V*W#2H)PF^biE*JexeES zH~xhqv+u8_{~KZ}taAPz!kK9ZO+gjYsLFPdRa}fK8#!08Wf+p#A1ryS5j0u2ag37i`^+df%x?fmtLoW&*K>;6Rq<^l z8#p1%m-QpT9NcFZy_)1~$gZ*Xq@?oK$_>StPVM$HzGnKTuvGWf>-6{5pd>f@~*% zD(6T}W&hJeU6DdA@uWc0r{sxDIsg>8YvTGF5A@>Iim=hmZ1?oU?B22(K(y8tQZxpV zPENF>GC4}f#8S2hCt@Uk64ESg?CIWvM!AAuGFg>UQIAY2tzuj;SQ1@SVa#kYvZxNl z78x$ zajq#rlL~EYa<^i5>*M#_zc4uh(fe$u(9`ZwVOLLXkI}jnCl{OZSr4Q5i^Ucg8aaIs z5LM`PcsoPyh2B+ysooQUuiX&%8$*ASzu974hu$b}bm)!s#?^?ZKGs4`Cs=$HyfE-D z3jHnq^AQUHI_~(;=Dq{@PJo*8yF!1fzb){$hyKO>C82+*{{rT8(dgQBSLp9h{%RoO zOvzYb?26a%U{&*+(7(*T9A1~3EA(-t|3U|%?O)|zjR@2wcJSbx;83Aw%}{?5?v^mm1x@70k3V>EAR=;!_2p;zw(p})sxHJH%v@~;j2 zy`jI)-yZ>k*N8M9_}!u3;~xn9>-^rp?+g8Y_0@p?g3vp~TORn=hyD%zjqxZso~w(^ zxqDB{cN8>&kXAcNd&NmPL?)YFp!TpVAgPV!C;{k#0TL;oKCWubqs|MJj(h5yRm5?b4oJ{tuF#Ix?}^S$D=ns;}AD#!Wl zxXg_-U0)UYul8TVuF6_;i)*bdo&IjdcL6tz>jt`d^ShcgaGsgb%~IM`blxDmUGojS z@I&_Z(0{GRY6<4ONMn5qs?_q8>p-7F|8@TBL;nr_eXI?VC3@fOAE9@ucbb;#8`&9Y znOM!dZO@$feRG<-x|?+k{Wp21v2IDwxvxjlyLl&5B_IFJ)_10${&)9qUOHO~?#)^t zE20XM{0t;RO)Wesdc2mprw>BwE6Z5mI706tZ%gPs-+#V(`B32BANp_c-x~UF)9iV> zx+&Ff0|Q#MYFu#vMt=a@jPAgHN9aG`zY}plvUL}1?AVz{^7XFJf4Bc0=xDK*6YF}? zfk^G%+?VgS!x_z$;bTy8K${nHE*mWKkTfFD3%xh+9|TyhFf;}F9Zi}(3wa3cP-jQ? z!hW@YIn%MLy{CKM!REMOfqyvg-xvDt_dftYnSBYzHNn02_NYh&C``Q41dODLKSYy1 z@IM&(5BVP=AaYTk&RN8^pc(Vjy?uomT~vm?f!({iZVb(TnEwp?4~PDrh=OhPws~gt z<%Nv%`vff***4gGyU@}%@9N3->5Z=GxSm)Mr3EVibI#E@>p~TJ+r5iJ?-CEFL`#|C zalSxSwW0s8|B=wURKFIXn^=Fc>?IzA|A_yQz<)IKKdL$NF%iro{@v7Y#pR1Gzhc*w zt&6X?GVmV@{iFWlq5pCJSm1vm^gpR|pVG$@{*$5qX(qk@r~Wm8|C!MLGyl&q7#^@7 z^v(S}c3e7odpiy`=lA8o(SjeZ%{&^u_J=Z#Wm2}A0Ag#l`6zeVYzwUnnuGUVTcoL2fLbA4@v&X11Qh!2@ z{k2tVS@q+rwjz>8Z5rsT)?g)KHCgTLlSIQYV}(-<+h8(m#c>C}7+Ij*0=(&QLx(0piwq6C zHVhiW(2+VUQ?k@{7Rxq@*vlSsype5!$YH}X>yn4i60ecONwnm7QUc}{6QlVYhRShF zpnX>x)0)>Dag5_c#G3e|<0QaNEEeBintb`_U6QA5H&>G#QPf|R1cxlGg#M6#50XRM z3t@2V8?Emi*q`sUVLC~b7}mrOh;v}4H}&-9*SpQwG86EK(N}f{yW!XZtyukpqtYY_ zwDRei!Yz$ShE=lJnxp=-E#pZ^AL%=%%)FrVZ0eF&m$AGk(b>@>x}&(iS|I|{t*dWK zZ`b~={;umejHI^j*s>nRDv{TwQ+4d%HTg$b!J~vx{icfXiVdPjLFj)B; z6@oA?h zr)8&NEnnK()t}##@4u#pL-zEN2@=ar-LH&U(mdGB15pEKC|o^o+NSRO{+{lx&h7Rv z*ucEq-L+?+m;No$ctndL(YJ9&@FtGz*=bwaDo7}jFzZxT0zeRzmefoRwGf|cOYI>o ziIXRxf@!%E^_8Cv6)-@`vo*-tH+1jrQB>DN55+4lG0t&HhRdCrU6Ju)CMCrUo(xcj zIg1uY-Q}_jPDGiB{ik}wG${sk{3|FFD1CCF^io}dQ>B)qEE2_dtnD$(?LE=FBiNWu zbx<$rD&%%Qx~{aOx;MWkf8$cb^AH_WKRCpW3?d89Pw$=kUPD}r5i63|T$spPVb-`M_4 zPpgR4-AKhOFM{B(WW4O2mn5wng``W1xhTeYgp`C5D0z)&&LkFNJd5Z>$Nm&|S!e&F zB~~H5d(@rpUwZM@jnq6YN)$g4C67_~OICkW;f9j#h#oSptVmJYkc+K&f^im3AW|E1 zm32tSIW3>1HJF+d`2--FXPajTwk3=HtmIkTO;s3Ht~o_w)fL$V`UbA(Be=z~-}oLr zNgmn=dyk^0@EosakGQ7xIqIIm^D#U}^TYEto)N~B@8BL8U4qL_M6H{5#4L)U)-8^s*0or#SKBJ<{%-z+!F|}ggaHR* z$Cj{=c4`U{;HixWdW1n}E53@$^f+_z<0L2UY?LYK$1<~6hjn=|0E;Oat(#CK-Z68_ zlYSw3shMO!idUiZS>;*2P9nsE6_PG2Px@msN9wC+W;gJfa$9~I^LZmNyy{!uYev}# zts$@HN#=fYt0GkqvTPGy=h|7F+I9Afx0oyReMUS5HLX3_Uuqt&&-Lr?EeNa;^)dJ#DhSES?^OzgA z69{VsZ>ZU{6^|fe{)NW>D^9WhhFjCm%_IWB%^*zleCEjt$izAb#Wu*qWz3mfkck5j ziWfs8ZujbmH0%>1>sRLgvG*Q;aaC8s|9NlT=#55CvOKnI%T>1ICb@%~Y#evoB!epk z0?4+o1x7ZKO%Jeyl14%b1VaL$1SbR%V!$>_00Rl6kOWABbP`DK*<`c3+2#K`_r95V zGn!E`WOx7H_ks1=++NN-{k+#n$Oi!oHv^*94VZj@FX1!(sb3tx#P(vK=J@*Fk!id$Z!_wc-Gxi!W-LW*VAA`mtB_E zVOfy30BB$~3&PB>r>p3vHg-(C270R}5XnNIo_Almp=Fc!wCI3%vHM76XTjKkImZ(| zZ6@KWPt@&IAzmOAXYbV)Y$*d>&7DJBY+ zQQ8%mR(cL{*RYif!d8y7t)xgD#Qu{gZ<)&y^S#^_+UfZ)<=!kwz__OZ&#fjkrrKXvojG2PNp`?)-dT-F= z2F{35N~AP`^68?_t|L2?U!%;gQ|9xmr59wh^9@QwlxNFz$8ZW^&F5?~4bB`mD|AJ& zidOEIJ(CW~s(U0kKvp*$kgdF}F>g)0ZQ!lhyshPJId3PKx089B!`nLZww||o-Zq%G zjl2!#ZIgN1%v%L-r!XV~WJ{CNT(5in8L6rE?0P9T52q5fg(p^cqj%u-S0+Cx{rAhL z$(&ND(+~L=gghe)G*2VJ zJOLb(y)~WpfQ)WTq_#JfJ}RwSs`1o#Sk7)tRwt|RO|oNib&?P_15!I1ee<(#em0-l z8cWP4+`5v(hL!m{${&@4;j+v7AXtF7*b}+f&A4SUz%7@dZiP&6`^hY~QkJ^?Wu2Rn zv)lpF?heFMph~WD2g^I%A@Uw~guLG!DYv+zEr?M{#<-HGyLw;lt7ner`n zmVD2hEw8$Bw?e|6`{-`x|O5_f@9?k;mG-GvBm7CD35#ZIle#A$GsI#b-` z&UAN$Gt*t^EOJ*nOWh`Ch1=|GaM!Wv5aHYP!ZwO?)QY2%b5819&V6>Y^T4CB3t)a; zQ*1$Ome-IvjWfS}%Ph~mUA|uB?UyPItN4kAD$m<~NOo7Ae!JY-klLd$7TagVtKuX( zhp0YY{H(jBg;epgs+h5QLWfqD5RvfwL(fEeNT5#a?iTrp-F48aTjf=Cp_iVvEr+cOZ?paddZk0jqHW}t_mx*qxEOgJ7 zRqhV#J9bK|+a~9`=g8aKbLA>`7c;sW`;|TN8MgyllTJD8?vrQS3z)@=q~(IX33!_!2qZ;w&tb<7AWL+C&D7sHk*KQ$a$IV1T$-PQ>2y{)s|w|~%;dN% zKSv`uRuj>+Kpk&0Io_6^V*@#WxP@|DZgO0npQDo;sAm+)afQioMShNJNqcf;mCRyY zDMm0xbled!xto zYVbmij2o5Mxk01OF4`~esGqE0|B}WM5?s^hr><3S0kj&_@T6R~AMC5Tgw1k9-f=*t z<^1^0+#d&Uo>-UxcsV5R0^m$+OqfDTQ}1a^J}TF5sZLIAs4hJ$?`!mk|2Y9v$tt-;~(%jK>QS z#9qWw{u?qr_Dz`_dr20=UY1p{@5yPg@5_$ZkL1GGFXWQgPvo-LPvxrEt8#7ZHMueN zGx=!j=kl@GFXgV-ujCW4U(2UszmbEn-^$V0@8t`zKgd^Nf0VDs{vCdelUmjBpO?WI0RQu)j=xFDyb>~!Vl&cj#WVsl8rL_WmvE@K+wshjjDWwc5_L3Ln##qG_&`V8D7@?lGqJ|jP@ zjz4~zyp(N?Ar1^B{In7WA*o7!+nPjG!u^;5ie=S)tcuC1Z!DcuU20nO-l~LmmM)ak z$0U`yxiNWA_E#ql$t?%uf@)&Ud1nFt8+ z&?;Y_tBc@NaEG(y#&8kbt5&_Sf0cObZ&DijyOhQLQzpg!OJ>GimsMb%YdlBRdNEn& zd9uli%Vv+bqh6_O^B|7BGTG?`vdb%%OS}rX%IhcBc>U$QUP|_R1LU8*f%3FhCExJ| z$&bCk@*8iM{J|S8fAdDje|V#u60gQ7^+r3j-WX?^SL@96>YVxBSm!N#Tjou0R(TVh zZQdm3TyLt=?#-aZsPEVXBy++8WnhNr`KY3pign(W#aPX;LE zVJQ!CC@JUVTm>JuvynfxU#2x2m5*us^E;X+KR(NgDMC@@-6>U*tKu^Z3UNs8ygJUf z|LTAoPoBH>%VhH0rFrh|F;BK}v+%fu%pC$|uLRzu(%-vG>bX1K%*D(Jpf>XQlGH= zjwA9(ja66!c6F}_r5CmTektZO3SBnt4wLd&sLRHCy&TM-FaoH2OEP&<)JOrfeBmraASFOd3D(#IkdUD z90t+5!1DpErcA?KniDO!!Qk45wV;yJ5rt_K1cD56=i$bL;$xAfH~df%6uz3<2^-b-?u_p;pQeODgxz9)yhAF{H4B#(Ko$TQwg_lBg~{Ak~otqCn~iTXbWxo-wY5NqF>X0))SQPj<~V>S~J*7cV|S zD&nJLK)gnV#z#wCyjJGL>tu6$tZa{uleYMH>4;B|5634G!Lm;7iBE!LL@z8Hfb*Fy zJ+~LtH`PBY2?wfecD?fCp4=}(0KF;iZunX(ii`9N=ht*o8KS3XB}tTf*EA`6yc-@w z{6qq5;=V4vk|3L_Wng@bOpLFUx5Q7TdKBu}Jj#@L7gUFOU|6T@jHjC*Q-`HKZx7{q z1)2oO+qPvg+<-4UL50sS)X$p8^pDDA%2)j21F0`XQtL+B#?YJelxmMx;@&Y-__2wf zBFXp`84^EL#>9y+AAhS%jh`WN;w^Gwe5-R7In?*fHd=_@zr;)n@1uR{pl^G9>dV9Q zl=upeW!UYyF1Br%WNOk~JnXPM2TxV`SdY&tiOuo}WLk2kOsS4n`7@Y$uR3u=zWRuK z4c5&8NK*(<&91n`^G{q2Cja^i8s`r`tg?zQpkEK$K1Ek&{71C=$N0y5g(-fODSk~( zi2qzx#eXeL@n6c?_^;$NzO}@Eo9#o$5ZP9laJFYgTZ5Ch^rb{c+s)3HLHp&c+1%u6 zWd!UTjbef567lPYL2E?txGvdPKW95T!j<)naBA-wATJz}7mvs{9+dqM3R_a&JS^XO zP)@8&J|^GZf_tCu00Up*tb9~n=IOh*7J5{^$J6)mFZ8JVfTtg>-vY$>5l=r}zXb~L z6`p>weoG}k|CGm9dF1!kc>EcUB=|Xxzu=K!{w0sUTEDt}O~d0S#1@Pgey0p*7%@XP z>=F6()iFl?ciC-a)~=iZ8hR${WQJTDU%=LRi+qIpo$*DC$WBJWb=u^&+&kEWzeL*b z8&=5Ax&My)Yuta&{iodj!2K2Of8_on?tkL`J??+z{xbJ};r<=&f8qWE?tkU}5chv& z#a_=HOaSKh3-WK=x8V%pxqRP5ue(b>a6Vj0{hLLDimFwvw}y!8v9>}7G^5F!>mWo! z1|)shX-00J$%4s8Rw9@yi;c>~LZKX)5h3Pgo)`+Kax+IHTM>a?j{mR$nQ~0Kr>LOU zhutO9`r1=ON@?*la?{*!s$F#LQ8egf`6Wn_%$8zNfS?(|ox2SwVo@562BuVvI+#M| zO3F&|98AsmLF${^0fPG1t#{1a!KhomXIC5M((SG3j^)iJUL#Uc#6*!nMMuMO^S{k&vkg!KX#SzTns*ZhS-gGSin?5o7q+1eGurwO_9= zw#XR~yGruyROe2=mZAC~nO^-bTW0}MgQ~Q_kde%;MBQ*l%dSNoJJ4Kf-9vSua%yhvrNZVpXauBk?m${D2>gCGIPXBrY*X+=WOaB+){_t{f3UD&u1A^UKJJ;i>t3wq4LhSlp~P z&d?8eI@hX9iSs5>sVY;g?Py~qg^CC4D?Z1GY_EGG1sLs8qS4a=kG9Ty)lar!EH;RU zMi0zN6%UJJjy3$@r5)+j00eAg5KX!QXr;(NjYWOkEh&v*@&t4g!Op>M_y9A*v*IgL ziuL3-2B}W1RK&(gRcxG$icO#aIM?T@r7oaBiYyqJiw`vxZ+cV`$_FatFUeooVF?WC zVahZzm)JbW-uaS@oj@r#-VDpyO-YIz&QoI2M|3lA(vvD-w2ebXPHU;4dD2lyfO}E2 zQZE%BLz=D+Q0tZ1AsC~Q%h*~fI!P*HC(F>-dK$k$#>O_v^w=h8jGe-8jHEi3P+#g{ zYbezxWIWDvOBwI+ay<6|+-K(l@Nddb&YuN|u7C5%cx*d34|+G?d7M}UdTJ1@AgMk` zO?akK8LfUv$3%iN_1m7m@L(`X+3x7tsx&}3XSszse?{SV#`%eb_nCEBXr_ci?3{-5c;xpI3J*wwvPjPZ&Oibwr({6rjl5iNNluU-j-_<+yx}8k!aocQr)>nx zd1A31lz$2-`2YcW3&(&5)`_@c_tvMs1_4&2!{>`eG@@SKRMkPZ{J>$vA?gnoi=E_b zNxA5$gxkD7znU%S{sAf0pO9i{5OYQ^Ea5ovgKHv|(0E6##yj$m{M&7&nXUZcFXFks zrGVcdH2I4uKpl!}6IyA4!Uv`4A_deBXNM1S?+ja%&=%DX)8dEc6mMub_pg!S|CKiW zO@_GtCS%`!RAxPfYL!`-NMNP=_`vbR)le_)fAKarGeC300jet0l)O&T zi#Y86ezBMgj42cz0syp~jMi9^S7R(rqUubI4GgGGNm)GyX z_T&FTBvKWM*JCV-LH_oYs>u%>XfQd|!=?{Qu(d{~Hhq3p8uBa7M^6VI>ogt1p5RVk?AI*ChZ$mr==LI&b=3q`YE9G{Zi$AT1LSfQYbYvEEO#s z1GSOv0j0WNbudRQMyKW3;{&|ReNvL{QWQ~()+*90- z%g5-ZowwmfF9P88?*uaTeHoiQlZVnla+k_b^(9YW85?-hgrf3f6z=7H1*c<;7I)6# zP+TstH?xd-3pg{&t=Q@;whqA@bJnc}7|5>T9&t6IPDn+@GkaMtVIDqu&^~U%r$X3K zEoK}`I{m#fy1`61nSU5)`$yqu*6+F=_crFF3x=k$2i?ZmkS|dT%TWx=RRznKUG|F3 zSPbg|_UnaUSQoKpFE#}z=+N*@X$(u%kDcKkQH;vll8PUek|&0_cSvH`@VmorNH0qa zmgOpz6{*7RtV^ikQc0ktl5#JX;b^LibN@*i+^b}o`*td`SfN&#g-;KOYw;azsfABh zlhhKZnlvB7qG{P?hbYtw@*cs9sN(-^+;J08;sWCMxY9zK)hFB?jI@AgVn6-G@K8=$=l(X6WBM67~UD z>?+2)Yu0GmqX7w!d5US(0U8oAPC0r8%`)7(iDl5KX%^lj0lk8IS1!jT1Xr}>GE_=i^*zWmAZG$4QxGtogFYaL{~N8ptwP9>|HZ zz?T({%;?k72+^)2z*pl47$#pHPp?Wi9P%-*RkAveHF&0$nSH7+i)59XDzoqZZAh1K zy}5hWzVq5cq{$*u+0RY8x3}(6k9=10kmjs$YV2yAYFdp^IN41)5YREv87!R2+CkfF zWJo)wFIqIE8Z*hF36L*vfMN&Tc8NC2V1qcnRI}R68snh%guNn-rx|9TGRkceO%WJ1 zc^EY@`TaSaPr{<9wF85vu=q4OX#uo~S(QAs1hH}hv%oWhPAZ@?z%%waDOsclWwk$dcV=(c#WHU;pM$cpN<9Es| zWg1q+F`aOwu>_?L)iEgB50{U7fH>M+8-6MAW_d;tFU0hxq(A4zz}Wq0TYXv@VxN(P#3)(8iLjb)C!6>rBS0JVBoTDaZG(4OPUMqP zp5{XKi{h;1a2yRI5_#|AACvi}D?HvQ)6oZrPeEB~3~b75r^5D^qo=IDACms28(*~t zp$@0fO^JPhR%0X-dsYU;z9hq9UzWPqSBRqWoXm}VRTjs-CTn9~m(A#qweW36OoJ$n zBDX6wGK0G!zU9RGoNf@_sgP}@oXJyVUOwXcpG&X5@CJ}x{hLF^J^_$IIBz}i6cbXd zhv(3wE&;`XM=1IWSChy}h^G)sv1PWIeVbn0uCDFMZM*m2a8mbk`g@7)2mP%m!ypeo z?r{UDv@*Aj9#Pz0o+-FyvN&zDYZ|B>UdgxsMlylgp!hPlayh}=-}E!0PsnTp&ab~1 z>$~%Sjm9sLP6VEJqI}9wWLv;0)QT_qz`V4GvC2^`VjSm5@qa`lEWzb)l~|23(#k2) z{K|&MKbLH3h)s$$JbnZd2}^$}hG_xN4gkrs13esOme1e(9e_>mreS#S${jlmo2`W=F92-5bRg+lJ(m{_CX9D^JnAuJC1&Q<7 zvcs31fwajv`6zc7`e%r($(}Fm>QQXhVs&8H8OXV^%a`*4X%}1_Wc?&${6zV(2Mhe( z9%GSuV1wkm#@;X< zt_uE|7PuG750Y)zs%CR7ZM~pvn|giD8uIJ%OBZZ^4s$HKXm2Y#*zF;`lwA=KeUu?I zEu9(5apPPh6v5-tBCD%XFb(yL%&g>sDJ(%@7brZ7Xo;C+Nh!v~{qEgHgD2}7DNR+Z zS{MFA${atOnIG79N)+r;1%m8)=(Q)I-k#4GD@4?HvK`0{Q}&xZ`3JTU*Te=SU3~FL zyIS_*1PDw5QVuF;WU;YNk5`Y*!EksKp{+_m-_lv5dPdnssV;@OcrdUeTo%gv%v&jG zqN$cs4A1f$pDL&WSaO}fTLGd;S<2?LcK*(J2apSs_Kj%LQVh=G{1+Owufu&}#$E7t z*P~S6Ojv3Scg0!IBSk|v@wnx)W!m8S{5l1k-Zu9LEkof!_9$*r8an~CjwGZLtb6Pi z%1%I;Hb|S0`H&>##!RE4F;2RE`!PHiURiSa?btF@HkObFRf_&ftE5z;`AHeDUy{}S zQ5m2b>;t!;o31LiRmgA$Sv*WzWhfVn8{=-Z`0h~pH4O8)5tz@xjK|P%s#_-u+_AFQ z9VaKbOj2FSoP?KL<ZKYRI#~YS$wWUx4~{>BnTYH!F!vDI?ZzvKg`A zvyxbb@@d3=v`dZ()`BBvC96nabxlSclA1^ct#|Yx8Dr@<9gR~JGjmrm8mkaitVUST z#0)n}y}K56>Pa%&J(i{PnGN4)8r=it#Ye- z1}35{@+k}w4`Ybv8XC`)<4_#7wBA6Jh}S@9)p9?T`&jO8&8PJ~Sn=|y-$TDf|K^hM z7!Jui6c7}zpG+(TQLfhuDl7!e^6VGR`YC7_CL#Q%C1kq(K0|*zPA{O1Fe;HEmTWcW zIvnFd@I{#@+tRzejPLf{44b@vkmYCVG1kz^=%Vx{}jBjp>giU+GU4ODBD3beE5YX;yNqPCY9rgaQ# z=UmH%Nu5#RiA=AGm@NMA+EZ#qubCrY`urzeD-s^2IFE@kLXrOp^WzPN@Q z)H@@|yHab6E?4FIEC%u^v>ytTa@28*6$9Zx#Y3Mxo*_0dPbL>T*m;7}<8$~!cpUxc zqf+fWY06Uxu9kNV<&g?IkDT%>P3><

b3C#0adb5Et>9)K}}&1LqoU{fLLrP^m)I zClr}zwKE{n#d#`H?bCSB`8@t6p1~UdE-aic$u#H7s3ClXiG5BMI$xzRmJ6s&QsAy# z#3;$zV#(l8F;Gjl2P<|EI^$s{#xht+2A67TfO@%wubSLY!On|VAm9c8-j|-1T1ocU zen`sfk(n+1TO=9{d2Ex82}>_g(NI}_(Jx^Q|1v3S3l<&9pt41OkEC^li;fJTZS@Z+ z`bVT6YvknGYV{|~+>~TZemF@1H~X?b3D@%-`sEg1ZcT!Yd_?R0Xi{#I+X*fycW44K-l_My z^z+^N^l`o1qpdiQkWc8#CzEood@3RL`EozON3}_xmd}*I6#lGU4*K$-*7=ZL9xj7r ze#n=@TH%qTJR<+BsUOwfKBt$*^xNb5^h6R@Oiw1|DS2A^_<7Cwg@in#zdfs;zv#=C z67pqz|B5fqCFHBVd@adIP8854dES>7w9)kUUU|`%Z-C|IiEVO7R$so!329PJ!Z}kBW{MVG!4E#}0MyHPjyU#tUAqi$JB4 z_Jl6`jd$0sQ3a#H3^zmyB6&1A%o5|qZA~v1Y{oujo`#db2VlF6OE9^30gLuvjbVu% zNJ>pk&I}GRts5U^1#)(4UZEbP!z$D{S~p%)3zQ6EWfXzeobKEfEXd0mT@zu8B5e$L+6znto;HXrlQHw?^yMWMWQQF#+f=+q zn?YprS*sUaXN)N09A%c<<)_V7sy|DuFDsC!_!`SIyGR#fcFDd-smr^T+V?`Wv4w+q zb+h7%x3K%jONH#b0@)!~^%9Q^Li-!D@igPh0eUcJ!y+-P8nbXTd=HB!kQUh*<;YnE z+A*`>0{JdMdb?52d_y{rMNNp_h;dFqwT5HW6|gakI^b5Z2h22_jlWcd3W0oIeh|oR z<-kT9j@oUvcwgHtY-Iv0#DA0_BY>eewN$W0m?inKyb{Pyj;3RQ7Cj*)ZQ37DvUel=>Az@c8q6{a%A5|BB=t;XX6f7yf`O;%Doy^mY zflkqFm0?w8hrp?zp^O6ojCxBU1x`P_Xm*Wvbc~YFV>X{Vc6GvIqeQK*<+j~ZSFX*R zFfjh2pgVHpzG1iaS-;zvAQZXBvhp?3v3GO$8j5R}#mhOPR&JTuK6PyeJD9y4wmJ9Y zRa3SeJ;`@5og%p0IS;7+P*{8XsmM3F~_SgRqfl;+ObV{2d&+^ zJ6*-_v=)#Rk>!9ah9S)}idgZa{rg7-H3V^_@0AbiE>S@Kn*x8lA!((KVP-)vhQ*zB zM*=*cZjp`Kk%_O6_MLCwZ#K!isO#nsK~q6O7$c=zW1MkZ>~2?R4b2_hKC9?xP8Tm<5_1K~AI4fcE5trOoYXbYaqb zWhkZ{02npG9l-Cg^r-H{k|wu=A8s6b>H6 zHlAI?$SKA3c&>o)u|sz9OB-*W3E3c>%JH&%uC$G-GPdHd(n?^Z`POZ0Vu0W)BFTp` zeAeP^6V40Y;D%N3tzYz8r8==VEUDh*Y!dO*Yf@llzfgYb;Zsn;GKXT6#>@N!s=S5ek8G7_ah zlp|-N9BDiYRj89>oD1pVt&Tq_vv8wY9X~3w4#{kry|TIlhib{m)g?z{4!wU5F2Iqw z+y*~&GSk(VT_mem7J_?{1Ssz~+>$ha^&W>ik~v_u3-Ok`3_SKEyd`hMTk=_sD?6Q- zbT}S(UtF$se7O!U$u~GjxycE_UAmX`vX3=u2Vw&Qq1@;Rc+5U5^TM6jtZr%Mqq*70 zY@KjO7N{I=GE?=IY|Dn~YI7DyiSrit+zVx}vq);3#ptvwVG69K>xI+;Mr`YH284tD zV9`N;PyV29hz|OR(LrxykROqS=`lwrs-nY3WKoRmG$OL>7PG)~=E8N?y9wEoJ0VN5 z-EKx$AWk#v?X{T2oWw#tS&nno;bmeyeDw{o3{PrnolUaA*$j1iDk>#sG7)Ftvbsg~ zJ6q*r&UU#A2aESPJLDkVYb@y0Nx3*PDVxJdX|R(L&Ox(Iz|y0#jDI>G_-8fKRP7y> zNCWM>T*kb-jd{6ThB;R-FIQqpeO1o9K!SuoMtR%{WI}J*K&s^mx3YbY8?FF z3o(u_#M0QGWib8_N5uXjV`6{B6~Mnz{N-{*Sjh~k&`R+2cUVp|72t|l_g7vcalIGE z^?>Mt{|HpA=-+HA zDvFk^H)x&_cSbO@y6L&H1qpodabg79ZoLV1y4=KW8CE#AaVG?Nw5&ahm22Y``P!Q4 zeQpUo=#6KgseLS1YA9CsiT-ETqsyvN=;@i0R}U1G*gzPGR3=VZ9rG0D5Yh21yZyqQ zt4OPVEBV&P%InO4Tk)`B&aK2?%^PuK{$;Am9q0wQ8w%Yj(H~`)`DfapB0<>IZa%CWZ6?zT%JJYpp}TQ5Kb zD$9sjrmu#DivoGbXEqu`8Wp-C^Qmb!Tomfdd|1)8eS0f0f3iskpnYLGdJBc7c2+km z{ld$wZn|kyuUDpVQ-R5Rpb9Y|J1N6+F+&j`-8v5PGNPzBC09N2c$pc1XsRx50P50c zJYg95`I0wbDZq{@us{kjb80d=b9u9sURKAp1H5?N{drvOA* zUm&N1$D77_h&?G--YB9SJ1U+c?r{{zZo$=ViTcO%6^X!qX{kMEv_y+A+z+h&G+G0n zL2KXv8HLND2InCfHV}M=Ss`7-XW?NqOj;GcE2s=TA7vZ<2+6GRs1{i? z84+5b&eAm(P4*~-RG`RU8>l0umBy9M%x|BL*l^RT5%gF|S2Ze~sDK)1I1$7;nG3KN zZ9n6ri$OZ{??f{6b(c25sxx~sy|41X^%zxqTuav4)0|X}Er71~YJtp|E}woytlbBX)yQ42oGIN98T8u#;4Nj?4B7 zHEU2y3IUc{f?LyiO&?VsasgGI-L0D3D&kxZef3^8w|a%JRVegP5&(~>ncW>NUX{2M z<_t6{UAnvbsoD{{JI;NWxVgJ~=HKsgAAuy$za}#Fb(+_=qKmM-rQ>3|;*0EY%x}tM zIG!feeOMYVQ-o3f134U}Hg^C5gQC?Lb2R)x8tb$Foe-dMXB&}%JGSk-c*)L|_8p40 zrF8_dNB@d+nk*c^j~DZpqXy&1|4KMu>;TaeROLxkn+?!2ni9Zt0vKnFN9?Qzs7KH6 z<+uQUUby%<@l9Gp9DPNWSFaGd%^g|Xy^PiN&ei_PV zAIFJ`tHGQtQ%ytMJBJvS7HToHTk!|{5!h@W1v|S9-qY=nLw5lqD?y_mN=R1-Mn)Tz z^;!mGG#JnzR3j}0REOeW9*hhs1{{1B0WtJ%CK>uTy1Dp{b81q~lJ_TJczvLhrw{4{ zmBF**#w1({GzL#q4Z6Xh#$c&x7M98_3Dp=ZRgJ;3q8fu`@apeOsIuVQ^6^sGya)6N zCBeJplfK-msXwI`t0_2CKAl8*@fp25;LB%|j1*r68;wC<^##Ys!%3LLC<`7^Wx+%8 zh+h6#)1WapSTzRm9j_NO1_!Ig;9xnb6+Ee$e@`XlY5BZwlm>lO8T_JrNxS#uQu&HJ zmz1x{*L?YULY_~;w?$WQw7i&*Z)j=X)H1%MU%s7?@2J5g_m{M|mwoweLcXUJecxA= ziy!*(qa>_@4Vf?s)r!9D%ipxzo3+XR=F7kP@*jl&cVSwyIM6DD z0QFAkFlgDc2abW^AOT#)72o0MRH~JR1o=F$?@ev37b1r&p2wi)nktGkTew%02cjM& zGWcAUj?HBUP+owjFOn`4&F3XkZVNKO&d#>o?aCmt3V359XmuJcMdW*-$j>lL!g$;^ zRaVt42ckijX<+oU8Cyn+Aaiu58`UL+r3N~I(rAm@My1oP%F^uGi6MEvTH{KSzf6^6 zLZK&ZZtL9C)~QjFyK6I2<)Msom@@A$WF4f^M~XpK^_*kGqY9{FyCjGxC5B_F8l{QO zo%{A;Ne#0}`3pK>cGaj~lcMl0x^6&!il#G5ONZwla8A+o`P+8s#4hLqk2Qe*d})Bp z@O)y_gx0!&yi?v4AVb<0AVj**Xhea67&cK?B?@$

+&eO1NyNTy);90KwDiffI8) z--!nry4QCSfm7-v12m<`F{v;gZc4#*={w~C>P!86r!sK*JE_1K;0z3$DrZn33=A=b z8u{*fGe|WC#u*$qL!9bB>`sgEc`jog;j;tMrx zYjg!Dr>B+tpS ztfON$8eijAEZMNQW^&E8miF;`Ybd{F@9sS{yWlD8s=3fGYdULo0UmYORtAWk-tIfA zbih{o&YD0Y(*+2Yt_d{aobQ|*5Ce{7vYxPHGNve4%YZ*Eb))ZW@`)cMIj)$x93?2o z7cH+aa0oP}6UTSaY!T_xu~9gx6leOP=RoGMNBz8GR&$G}wY@>pfxanCDUB9Ek1*)% z?r@8wWRn&j{zy9Zep~xFxLwU41uXC)%7~nXz31c?(QYlQ+SF@R8ymLA1tflNpUyCgCd9J3%VYx^2OZnZI)_1Ilw zx+F4<@j+D84{Dk@5pfy^g@8(}PV0)+wjDd+oqBs(ww(+5UD)4(N6J%3#0`L^1+Bdh z@hz(@jiu&5`6|Xa?Y3cED_$GgFvr2CiaMDH@#u{9V?%d4IX5xuxVM_%SXzZ=d>_q` z@^MDaXmvT!!Vt|3iJAyTSx})gvH>%Mj>SdIahfqp(<6>{ZeFymd1dp7xb3hRyC$OF z-Dv&BC=eVhY+QldUE34+vSDY(?hDnmpjk4-RK^XDOij^n4?>V2RuoIK7bBbDzk@ok zCPHe6g*4$*Bc@j@g>{&rsO*}wsuPYZ>|ww|OQ=Y1a9*g|z*B7rnQ=2Smirs?ic7WK z=Td#nyoN0PGu-L1f^y7rZ)8Wsob#MYY`F+#WxmqU zH$lPMYsb>CD6p|G=xi?C&>6xFhUXsTTprq0TWNUf|=D=X6EMph(NpH~$PFAlS;rgbrXACI~hO0Z;t zxoR!22Wb#V#Mkgz%TfUsY}d2(8)tDSe|jhdm!J$>26N9-W1XU&ZK z@2B``@2Ct$<(GPJp3+bqzek2v$5oTIo>0BRP}C*T?;#m+Kx)D~LrfM`FMU)-npElu zMSmQoaA zn&CYr$C=>rM^LIw9F&;{Wfq}KDQEU);Wxx#0Sq#}Xmp(4i|N0}KO>3!982Ia7}<{_ z{5y(}?D5r2m;fImZt__uIa|01ulTwg<@_UGuZ{)U$P(itMZawf>H zotcCf^g>NV-59Ehp-XRq)ij*5B{df<+9z}#mA^l)AvGV3+In>P#&QO)ZE<7ijd^McF-Kw9K74 ziXBU_<0*E63~?r!;?i5JYjKNnii@<;7Iy;0EugrC6t{@t7SkFSOJVDD*CST7Dxp(U z19Vh4=^6=l$pNWswlkbs#x~FiW*P?}#aPNyb|{vi!nz!-loj}nUV|HrRWj6BjohP| z${=LJ${M-rP>f+OF5iy=I}836>Cf%NTO`R14Nl)^0AcIq@V~@$2L(+sUyVp!l&TyJ1Iea?~jZFgG^RHQhh_by-+LAh1 zRdLrnG5HxeezI=nXdK!xVH{fG$R3vU?C}QGU*13vQWH@22M1*S5!t9ARr{W|;Q>0K z4E&+&kI+Lb;#k2c660T87PKH+k}o z%mJ~EFS-w=)a%kmVvkb5rbh%m!5W|-*zkU-;sJaZK-Z-Ef$*Qd$Szw0iJfa`_qBv# zxDGAFcQVm1D#K}?Lv4D73_)7vJ@hSgp^J>v9c* zY>u(h!d6bTrKDIcrvd@%(E&b{f>=_gACk8ol`~8W7fhn9?5;Dj&9suaudo%KW0ii5 z;ru!)^m!z6FQ9qw9&8Y7MLD`tp>9%UC2~wA0BY&8HKG@M)*)#*B3mDnnb|7M;+3;# z`TNYc-(W0mhy@31JIe_3#&F-kdKk%lC+UWAZ;J}|K8HT)#+MQ^Z(^6~-&hJNigavf z={&cKcJBgp$3g6ja@B4as@e@hjn<65)aV7((=k%33F-)urh2DiWTZY3@N&F~>(yAd z{=&As+td_T;FDmTFl=Rh6x>0Dj*Bkey1SDjI5q4$YE9 z&AZp{+qQFgTkEdvhJ&Y?1JeVftHfd=e$Nz{8=$vBZd|nnc!UKv9o56kunW3qRzz$y zEn*CNuG?a|v%@Pig5`N5T7rM&ed-u;n&Q{pR#lgil@69HTC!o~+GdP7`5{6OgPx z^9+JVc_@$4%&m{($6kKpT2bCn*{e@PJCbS_>4UTv<= z8gzFc$B}AY)uM17N4H=Gi#$%W(^aTj#j)4gf;ocvb<|Kv29NhzWES=%F)#r=PBf5` zD%Pv+Ct8|-6m^`=8*p_f_sI*ZfhMzL&cf=fW|soCD_d(m@&Z6j|E80%4~sEZV?jDA$rH{a<$%P(NMjs$~Q!NvzgHR zjgzMm)z>YM**m3O*FKEaMJJuKX62Gac6<4Cn-;CvxNJSnDf_%d-@x`RDoOWEp=7 zwr+LnU{2#Dj4^-;&~Q+kL*gD4VnQf5tKn)fp#9L)qfI(ZUn`a&Q8obl?})_Feearq z$lK^U*?-dmXd?gZ~Yek zAYq#yOzW`MP@%yyVMvq%!-rzvI37FU^Ph!}o$|G34EELN;BzQ!zSU)}URSgI9Dx ziTVs#_qKGva7PjwS@s#uWl77ny-2>%Y$)EuhHN3+gBz-qtH@P*<;dvnZuY1!4$+OqxPnysynLN%=ywQj=~({^7@4lpI%5Wpj& z$vG~m(!(&&Zibrn-Fs_V+H2CEqjI;0Pg1G3<&JO3Yxws!9AXxX-Ru@MIM<%BNoDX6CtR>eZv=Jl-|>Q%o7 zv3w*YaHLm6;W5+4hPuwBuDsE}XO3&ml$6dSPbqU?>z(;D?^w)mPjFZ=Rb1#~}>D}_q}n?Z z8|@ZZ>TQ$N-gepOwaMw;IdZnwF6Vmq;_&v!KJR?F)YDKfa4^E29Y?v0BOQ-W+LC;qU7)hvxU zvdYu*evT4oxdhq0ul($(mq0f3ZxRI*-STDw8_;#qk~Mj>*uEr{PA%mE0X9OWt2NE9!loFY`+oIS`M8Mz|TS5pIUd!h{C7A2X;~tSaHB6P^|DGY ztM#%bAx(O3PRLqcPV!})FVIaHo1C5zlMFf1oqnix*ogd!(nu9)r>oY+0;k6zTD}!P z)j2ioc+&oAOfpP)WqTE_0EmI_9GLpH6k@=~D@6fr5z_B&=cFfGq<}SbmQ|({%$Pv! z(e-JgFPj3K6uIFEsO6^_HFw221+d$SH-& zGOGw(Lr$mk^0E%#a?z!Xaz><~_8a@8_56J;yWj>E6Va;%Saa)z;r!(moWZekRnLkn z1dGw7O^x0-PdWG0gQ{<_7Dm&jp%}~N>vksRovQxOq5~4fZtK5oA5kIO_ikuAueGUd z*RD3khIznHDqa4JUX{N}vlLQa%kokNp&SySSh7lNsk7TUGC^+B;3P+TBb?Gm?ldux zMKHrJU6k6>{WxCxF}$PoJbXH&myfM1yGGNBdWBYBI+X!q=|X2tn+D-O+_;d(13hM0 zfD=xVI7brDh10B-w_;{liiManHTF$Xjy31ErhkdtIO>oq!9%>JR2x^9bGN6y3EUF~u8dqp~9Kane9uTmahEgY5e!BG@TnQ5BPWSVe9 z`X7@FO1E@r( zjL%I)zgDZmBCktphvREQ?R%RbmGo{~U(eYtvES1A-_iQt)A~QkX#5b(zz@+}{12_d z|4dq$3-skb6Y^jB{<^OM zcf8!{#nnp;StYrR{YKKkeuLyrA|co7y)+>==sl@!Zv%ZQ_nitth&uf=Po=MM1V%cJ z{*p?nu?8%1r^}kfiLjzg5Ry5C7AYu*Pd0B#5=na4iK1Vy!b$FQZKOfLf;} z>5O*9l%jfHm*j#3vDO)2G!Y(Aw6iqZW;eaUC zI@3$h_diZA$Ls4%y?`&)IosCy_}(!Gxc(oURt#Jt@^ahceW>-)}*x4Z+U0ZIosKx zE!ycjZN76(R}9a0U`QZnh?2q?Ov87OpXKw;dS{$h){>R8c59m#q2-}nD?qZ0L7zrT zZo4R#!=hrb_wp&JGzwZ9}3@wAWS`#M`YmbA3?l$m{m4*h z-EldiB^Ss4q6HW3YjSDpo{m-`Qz%JLy>4IoUS>5^>Rr?hYt1Orvt|cH@@MnV-0sFY zr7J)s=*5i07RNh7<`6oTp|ElKBSy8yKd*H_h=c z#S#y=yG!?YY3DwO$5vvX7NLYq!#GN`l(IIpW$f68{~wa4**s=wS7v|7@bpcdlCxVd z8Yg+WbtZYP+I-?{V0GtCP1O&x1Kl0zQw(N$Hvl!7($qGimx(inqjoE0Nx^7g%r6rk z{lci%cTuuw$s!k1qlwuyGkTpk(-!35A^oefoE`xx9;Tm{?q1ox7!#fy9UAm7^6Mb| z6_qVJjrl*=GnN^M{4hjwL}o1V(*XTxxtX%a*DCWhoTSM2!TMdrCoqxNwUJ+xH50`m zdJt3T;N@c->WDnIh^alyZf*%WwQ1_S53G@NmOgMh(pij)mtHYb(>V+)BK-mj0ce}G zm_KFyhQ`P-8?rSv75KIw_slQChl(t;qN2W6<+(sUAn(&qD?GhlpKg>71?Vzg?K|fM zPP?;P4fL-9Ynu`{dmLg~7d6AjGU2(v>2L@)vR4iUa=&~!hxKH8@XtMBrTET-g(U)_49Xkk2?Y_1)Uu59$!zBp(iN2Yh9K+xGnd zzS=(;$j9ZLzAWj&-tD}H66ApZD}jf6=lZ~TuR}k3C1$P0 zvPqAWnhtev)mU?0TYJrd6Kc+DxrqMDLy#Eh1SH$n8aOvN?+@fD=K}z{^e-C90(Kvm zd*FP~xzTrS3Y-r+HwVssE?5?PDR6F)#{=vUn8RD0j|5mHd_5h`x+u&Kuv>T$E53q5 zpE=$$M?~O!)VVFdY5F$<3>{c-pOX7%{n*YLdu%k;jAilMu8ZSsa=Gt(EO72{?)06z z0_Se$rEoQT=$}9MpmQqVr(jJj6x5rkAhk55_0u-Zv~#cODMVS~?gwhn*vEoN`dmA^@Z}GTlDOzWXM`jxw$H zb{O<1FS<(tw5fA*n}&NSh=_u>y&0DAxq}r&0wS0*xD{uhMS=575JSAU5FQ$V_Zjp$ z+V38j^-FpSi`D4sPVGBVj#^b4>&8{x zDg~x3N^_Qbkr`x{zv%*rhzevA(F{S!0on)}C#*7Z6YI(@|Hw+yI?#VjE7z=9xqjJ_ zwarV{vmGO3Kq1-)UJRcvXzf5ptaiex9#X#n!A;yCrErQMWw1LBZS9Q~luA%R#EjH1 z6s8@Qud!4F-b5s*%thaYuKr2OnwJ{O>pT~=y{a#(9ADPfnL(qOF}8J4l~wKXk{0+| zphfgD%jC#XJiwr|!Fh3`@sjn+HZ5DX3?@uu(sB&T8Ik`cn{m5lGgKubU~I#4AZ%LZ zrV!SWQ>=nc<9yxUyW1dI%5*3M@(O%&q&v63dce+$3~jn@@clQ>NE(0IMPWqdgf}#2 z#r7P^EXM^-2-mXyTHcrebS-jwL^Vjcz=n8ADZ0sBEgP>gchGcm2cJbAbe(yA2fwRT znx+F=HFr>La|hctcW`WT2k|y{5Px%r6fk!XTyuvOFn4fW?z1QnT$h?|;q6aI(PG^1 zG@-yTL{tlA{}xPzQ;CPA^nf%>N~uMLTCbt~#D}4n#06L~mXokTe^Y~Hej!B1iS-Tj zsmeprA4A3zhR6@gK>bn`{W3_uV1k@YqY}CyRE&Cc^~0w4VaCpQICjX?HIlkUJuEd= z@99?BYLu;n08cnNti&d|nt;n=z{u;d*UU&@P_(H1jCt>?OG!S?n1CjkEKw` zQmDZ6aR7}U%2F7`LKp|VH5qbi1_ah@rg=WT7#Cqoe4_kLK1NQVgSO3ga@RKB6}I_i z?mE$H-gukUQ?iB=%5OK4x?Z;%8Q~&~kykrGk#^r5PLS%M>jX8uN$pN03N(CR9~xdo z!v~=lJ{XlZD8;auQAIk;W_9c{tH&8eQi#+rX$^Ok@2i`FDXhBu)HrV@YS+DC>S)3B z`AMfrjZ$A>(sSvBDjqb{Z)x;YAYb34i>zLsnyWpe@@0ga@>DmVJ~dTc1x!;xeB6lO zRjfRUzjVv3+4vm%9Lz=f*(m*-c?6Q5j|$QWg#1~6@E*=USn(7}(K*5if`JTFSPEQV zODSx~Z}eJ50~)$O|3Z%q*?~Kqq4=y|s$sTWbSMVqm)cI}9~6x&pgXk7Pz*FfF_4xG z>@pOUy&8&Z7>a8dit8APcQ6$1WGLRnP`sNqK3uSkgYw(>5!!gDcpC?qHV&eVgSxb_ zs#k6N3~hXXHhz{i;{U;UkTx>;fEx!miFKYCoZFdlvm;G;#9PG0o$Xa8%o-`> zUS0Y`4Up_Zw@7K}?2-dAe2`~f%Yo80t@^2Skf#p~rGrY2$n=9UgD7VAoAqQ2bkOP@ zW;A>4PB5ww&KGImmuTRZrPBEd!u{uDoby$ggmv>wtefBBe1kYw-=dk16dcenQeAd^ zyvBgSi3$64LAd^Bq}TrtGoa>tX%0`9{B1BeGOi<;N!7|2XYRJyW6-d`{!!v?e@VJ2 z>E{lRf$l&V=2po>7vB-?V2*(rmqa=;;(iDrzx zhIZH56XW^7ok|VUq|}`*L*3(Llsk*^K9`xX^V!$Bv*)IJHgr*LN5Z-CIiG`4Gebrn<`+g2!-w(RJfZyf2g09F6Wq z`uhYYu1%_HLE6&k>6T7Bp?;X2dk@LP1-WgmPt6*BL}riRuV+Z)o=XdN(ZchXf_A20 zw~TT3$TatSTKZ(cmd5j2dNn}nDe!?bh_DLe^M;SOLzTtTE;WV?ze5tkM%*2Ko2MQt zh7I3-?Fjzb=Xmvlz0~}3j+p3m*>l@KOZP*x@kZMBVX1a+mRk1~nd06mjqXQG#h(u= z)+M6Qvaa^}ikokhWbO6+K73nP+gpr(jM@S<7{>+fJyPKwV2(aX>GzsazYvzXi*qtg zsq^c`-iSxj8s7ao*F_vHA+$ZS^kIdVN)EZ5>9$c$#kK1Nj5ATo`(s!Q>N32Ddm&wt$IHM08|oZ5%RTOROGK z#fJ4q_9e=ExtC>bDp2Nj%50^~9hA8< zQs#GY4P@Inox66Y8faOgf5x%NV{!@(O*HD^sd)%RtRpPu`(%Xs9~N^8W2B4y_($cm zEsCt4-ee0ygT0vmlqkdRmueo)bSU%`^(aHs!?RpD@cOIy197n=W0%N;*rjq@>}_Ff zU#1=;P2n6cRQxY8!_d8!yY|PJ#g>eK##T+?9qp*>t=eipB~*x9moa3I*x6Q zwioQt9n^9sJ-Uk?eVkelJiMV=S_{_lDQdZoTJEQo&rl1JjW;k}XBQl=hp7W6Vc0)U zk3B*iNH)Vd?&M9Oh6au`0Q|7*NCWW0veN?a!_t-k;D_ZLD8_S9hgQn*+(|}@Hy=DJ zI9A&uY<|q$f?um1eH1O;C)uuFkU_EM*s{;c(AXDc6whN~UzXa~SEM2KyiAR~fOhZm zX!pLz@%9?Ny}F`IyYjZJ7bEG<!J=NY@T_ARO1hh@(bX&h>o!DDx^ zt#)-G49?FWu!B&KR`uWpjH>i*J7Xh=4&qFPVD&JK_lC(ZZ@AQWBV?>MQjYUR$vm$H zRpMXDufi6o4ZA{ezkV3*it_O&xq`&MhVfu~Ix2+ce*LJo;@jx{OwHy!o8uhhC_4*?27ki~pIkmWbb73{r%4G|yof#-5e<*4luVFfGzI5@t zC5);5O`xEj`INc(*y{QtCTKu=Qsv7aABS5KH-cgW9$opW2(s3d9 zR%R12^K*5=LS8I5LNR0Q_=Jh3h>Tw2F|vB`*xPN#=Y>j3lM8B5EQqkxjj%S;@Ep~M ziVUmQ_*5ctuasz{%^|%K03(IW%E2SGHA$LBV8LO&angktA?+;1 z8iN&GPhHsWz31FV*ELo~-8SD$Ul^dnNGCV#ZrhG-wQ3n<74sJKp_Gh3#j5GqqN4hE zlX_Jc%iLzoXxjCq5qa8pVIv|6g1I_>D|^+X2n>m6nPrqd!uCeA{?0A9M+<8@WkqV? zzUhA6(#x)x@>74^;ps%#O^&CpZkIzkM|w502*P#ER$SSRGKvxXsJpR<_};d-w@N91 z1KqPqZ&{1=EJ(-#04&z+fdg+T1OOV5+`9O$1dJ}LN z%n=M}l43Nh_HZf91&H$-Ut6#RD64;pHuY)=k(EI;C(3}58 zfSzhpL}J!=g<`!0G6msN-(X*f%Agd-2g~<3xIr4g5P2i~D(}h2dl~NATxaMp?Y&F7S|VxbcS%J$D#_9qkoj~1bTcICH>xM2E8%8qCA(NSv{jZI@C;X z$}_S!($o;XI>re$mqq*W|7K7J*u}@@Nb|E~H;WshAm2l#A^;(>;i!uhl>jM$qC|qn z{!}Am8@m%9l!m??2rg3_rDJt3{^Ih6xkKSr=-*s2^lC3gRQ|epU^zKSE5?*^sZ|%4 zbxAd)$2ne7SGB&>`|2!ntV}9ntR|OX1U*$R)BMm|OOoNk2)A5j`Z5cjn7+&fprr$y z_h5S%u6M}e4DHgLJzHc^8!DnWg@fG>+S+@=c*a@Fn?lYB44p!G__!;y?N06iflv3L zd!#zEvrWUh2Rs2Fd2j$wtkNfSeG|wDLO{S^FCZ#3ZtKMRULXr)QJ~@r&V(%8teAFy z+w~;@$~epM!WSSDAx_vTP1ilh2n+XRbs%e`DZr)c+JFG0YaKc67#17N%3Xa0&(7X> zK$F0}KAZ=KK?CHh+fo`B%=8L43Cz zDCEl`+F6%D)1zl}=D-=QymxrY{khMUJRcSnA3bU7yBQGuQ&xSiV1R<@t|tv%4hBno zDHqO@Au`DqkU~xqWvb%Tftc(1bevw){ixn?=`dYp<76YrY1e36fYqt@uYShysFt?~ z*P{tpqUo0UvJ6<~3vm|zr_Y~$YUOA2x6>|p`ogk}8UY{ML54y(>miS;@;`Bq;oV0) z84nAf{PA3|1v# ziXFM?Ow=5?P6g@NIbr&l9JsI+jM{~(-n1Jg;T9^6%c?jYyg7L7fvDMyo{>|DEU7=4 ztv6Dw@_7nS8SXncrxQ(FN{>pCf9mS1jKlgF*)v&BWITP{Bdz+R2YSlr(C?QGn(C`3 z&_YLg?qE)!CKvCRKZMqlcD4H+{^aQKA3R9_}STN>`f|MYo%Ob$6g zU|1agD~{Pp>8~=@egTYyDTK5zacVdO_cC1&iZcR)jmK+1npp)1#o2~#H<1i_OXcM* z1Io<*5P^kh3C{nc@_K#XrKz&x)xAMa0>to`49&YTBGNAJ6E^{L%h;DHyHa{dCEW_! zTo#SOQ{_b!1K!G^vh>n_ky0rwn|>4dRoP9|H?#E8NCmGs^pZkGVh0|Pq=k)Io{h4F zzek4!cKkN(w@u{U^Hp1|oq62;QfOS$0FZJL~+PiN}oEMHnQNWxZq+2+gkBpku5zO*W2 zG#}6QWk-^sH+gm@v64DRFXxu2|JgDjDyLrd_;S9+Vc@q~>CnqL#?$ds=}f5SW1?R|4#|IN>jgGKVPj+*Z6pI zkn4PTMhiHSb7!1xQ8M}iW&6w&YCXKAy)I>|$XOqF4^)m}Yrcc1p6kpjrsoV%|2qEwj@v)z z*vJ!{c9D~XaVF- zeAF~B%05rSl>q#CzAx`qKRef}R~>xDzfWE5yx*4(s0$k!`ysipr*l1Qo4UK9ln=|z zzB;?PMQ&A(H*0)#dUKmb{1}jJL&VR{61hE$2-1`P^N-0L0g;5b+$DFbBORJ|r@S+b z2L`fIRt4Bh-WXv20GBM6_>919oRopvDWQ}F~ zUKHmnBc~0)LAS@2?q}sgL>3_MCQlNBj1k94IOp5l!TFT~+E#|&IeBc*6$7HuUpWJJ zwsbZd7aiTlA@70JUXXwCMtp=HBlE~_>s)r;p1l|6D0wc~jaxkvNQt2ll3C_17%6y_~A2fPt#TlLr(iMHE-++{GqqM?5 z-9x}@M`1+R{GH^|=1-&cxJG_1o5WMOy7$JyIj&#T*s@G3=4*9*YN+bP56jkWMHxF8 zhBj(H2YO={=qxIYH5^mO5&D5!PP=XB_*-fBN0`!&(%##cYT`3- z)rmcava~d{@~+&nM$LKgz%Y_1c1L7X!_yBuDm7d5+hG~aTT{c+lb#?wD&$Di)%iM_ zB;3a`3wpO5wE8%Akm^px=`K>;!>^wRm)gmsT9>Im+wsFPCVz|`&SY^l6qIc;5u??g zy2x*03s{X~8a*t6SV&fuWtI|w>BF^D+gLKGy5te5Qwyp7+7S)!K6XFsxdjJae}N^J zn{#3`XFB<~TcjfWJYMsCL*Ix(AE~l7n$bk3CziH;tB0#jmX}BDhrOoFEvZj6*eLVE zD8}25_XlFuKT9xjTPkDkI|tY_rjE%+)uF_c>_Q|~Hhq7Lv3MMPhNG~|o`gB}6eIOC z`}T`+7Is{_h%CPk^TkWBfObqGUSe0jj9vG4Dd7jC z{2`LMABQ8p5#kduM7ZR#lLQr5 z!<5*?(|f6mFiPk(z6wMtv5csTy3h9UZ=Ua}JWn{)NB`QrWf+EC;DF62m~8BZ5Q`k- zJ$e0#`q}KBT8nk;Bc!0!OX#Zj5w@_X##vp!<{zg@N)>@>D`_O@fdK%Mt=c`tm6<+6 z(ih;!S)9Y@v*WkAy=CjJR$nGKeGA6cJrWtV0i@`>mW#KxnqZDP$Z+p_m9~9U zUwdBx7ghH5f5?Gh5X1s=P%IQsRBUM!5JbR^b$}t1lD5UJwYvkmb;VX}*Y56)RdJBi1|72 zh%-=%LbI15K6_~epWTcUxg1IAUQ;1;H)DvVfE^AU>RSLQr0$qJD7F^D97F03vuV0e z%H5%Y)KWwWNdLiSSCn3tqGE-AO8<~g@2-ofRTTZ9EKuQkUCRE@5iN@&loijp&zqwA z+9{N~Y?%iFrz&)}IJvQi`EdGL3gWErA2*3==5SWX`w5W?)~?ayZ&|3G`|;Z zY&0}Oq!b$am4>;{C3Z1aLuF`KEJ^(O0YM3tB2q}>MJ=={kiuEPq85^<^Q%xZY(N6jIzDCJ?n`C`2tJZ2`$;K8JBJnILHC(#%v5778M8TDfo!YHJesM&Jm<9Ym_p z#vBjGGnMHf@=zth*-pfVj1O01#0sQv9R% zD73^sd(BDcLy{i|ed@7ZqTp?ppD2hm%qiErz|R26r6X8f6d)-l4TBA2#OvA_b~J;|1aX;gP0L zr@q$XqPgv;N*cdQf((FvyNFp$MI#_2O94tv+%#NBeTXGkpjx_s0i~hkr*?KJG!0iZ zuS#sf#W(=BP{2l1wAMcpoBXqlxrpy?@XR#CE@r8*>1k0(nJQ|>LU|)NDU%PNqULZ@ zp*4+zl@tgkhZ7@)hbAn@-Xw9U;qsJ(I9Sz_s-3kgQ-)wgiaT7;c0Jtn0*+W^R13uj zu?#NlJ=W&Ke?$7XbIE z7)j7Sx~8Ca4>@Fa^pcrAbHvW)Wa*VOycoMK`2i?Q4W?mnW(sw@ctr zZ<_?33b#w(fo>-SJJ`(`aERC*vf)7Z1BGP!i<0Q5=4O2*I{Y@AV-V=F zN;hEt6Esv&4!uRi@a64~fI&t1@YYyYG)9tO3~@whzJ2z;C(bCG*5j!i;V$<7>!y}- zN)Ew2W_#_Bf-YEy3Kjb~C>t`20ANioSVYHdz6IH_lm@p8_JwDGVj|&;F|%AaeOi~W zOw0ux(&FOd(&EUwKpBXkGBEe~#HA+7(jsH|X$BjSi1?&PaHjsJ7=-W(k&)C#-WCfO zB!T5Lw-~C$kG2n*!L0skVbcnCSpKg_PXBe<&q3#!pjGIygn0WQhJfow zT*1pRXeh84&56Y*=A?Ps8Dx1z_|uXT?3Dojk!K`&0vP9?6=b3@2t_jxK{g-}$%CsD z8~y4ag&ZLzYlJH=jy%HhtSC%lPzr{4zk*|(-OQ?sskK-P4d&gfB;wGBdx8*helSGz5&{Bl-#2de=0lDMw8l9k-eDs^#$6s2;o6NGW%_jXU!##}nMqC|wK)?l`audZUHoQHLbFkql9FUvzW|+AkG*g*33K(^)hK!#*Ip zDK<3;QI&nG9tJ3&_AnTr>Wq@K{ZMp94V(>7C^40FC#z$CqAEL;A8kX>#6vOKf>mg$ z3g3Zkx;C!i3S8u>8XFu1F0J>Vd(8`a)kAeO@?$TgJHK=O{Ns_Imy3F!)DCDw5^_tZ zE>*xOaWT$^VG;!7G;6_iuDa>a&DzzmM%FGmvg&AM%Gwnj%+EBMP!&F_ z)RiSyQ^bHVg!rKW&Lj%7#5d%MJLGYNep%@0r4T#x$9aXOEjhWOT6=$j7yMe1Z_6S? zfzUwl8;*MR*4{ZbN1GATNchCQ(OPWjl}E^Pay?Rs&Je*>fe0H;KJ=7z zsqy~njhO#UTq3lwlXK&MqDzg;Y#HHke%0rHCRUGozDLPSC8_EEE)I1Z6VVWJ@QTMAK-vgHC) z4TiC&gF+%9n6%UVh8}QfYloxY9H*wp2j^zy7Y#VQH8Gl4`*9u=3yE7R4JfTO`%-|905DFrKy zia!T&mU7mDnTNl{@x(Y5{=a01tKN^OZ8`qe>+AgYCp7vjLHKcW7O$B|mbYrn#DaEF zYNf%&Blts#u{hF#+&0}0v&#)!$dkvqQhi5kZBgR^>n(JA!0Mh#&s55 zkl7WfTyPh23F15vn=eKUW|3u#BGN&|k~xu!1gO1l*df zqQh!Btf2>MEx7qL?!gv(|+rUq>$gkbUzY-4qkR1_#T4gFTAcqYHy6^NDc^qPu#(L!Zk&~8(? z9|8bt0RV2I(@(?0DnXXgN1np-Rs!WPMbfFxV(Fcf2(LbgX$lu^63y4JYZ4TZ2ZmBv zka4Ror$-HPoeYM>k?Cow88W2bU~WYtoW`Y!JtuathHH=+L*mG;%RakHv(;&xF1bEgQ?IkF; z<_!~Wv_m~LE;U3j?yZnhc*m6g5+LV>A)fG~utsLBTS`vH|8~v^zJ5)A)7%8i_d%+H zJqF(o63CgNBw*p6f%5_NC`xtKoNyEd*02(iKsta!H#&5u1MJ$0K^|iJ(Sw~;cu4zC z30;D9PGOn+&o-D{)@N}fTf)Auz7qD8eUp&?5E1(hKa>Ur5(7g6 zBP>e%$K{lWc};I&g1!nuJj=5r*J2-I5S(`eb`o?*Q%OKqlH{?$*wOu$m|Zcym3 zx*?@3E?^4An{ubcf#PlgOSoo%_?x;)Sm3;?F|t*a1z6)g@_wX5MSkG9F4Zi*QYVzY zMQ+McxOpL~49$HM_dfqRW%cY7&gBMp>JN=w7V#=Wz>H2rgO%kTrKW|-BbEEHaBPFP ztylo;G&Jk0=m39>A}V%T0si!LaHfyKj=}arrY$+vgH`$ueIfkI%1@AFkhwmC$kv84 zb|+Gw%+%=&|Eb)WbRD4HhQBEkiw)FBI&puK`7zzY-hw-0d%>Nt!@!wbDffWlhynWv zR|~;9An|TjNP>+VZH&qM-)I{%rGtnLW^^zo-6vk{3Hek$49L3yc`<+zR7p+=%4Qp9 z)m?fwE5luv&1L0yW<@XHaK(NFF$YoB24F8V0-M4OQk=$MK{NqJvpJX-Eug65j-v+@ zbv#j8FO&@%0YzCg^(Vxe0Lp+7SYB%Fi>%mtDY8m&23rxO-_C5IPNbdNAGxtl(Ve@z zcJ3fRis7VQ)MUAM7pz{^v(5ohPqM9($0~3>8ejuokxX$AnYt2WV0cy?@~;ZPj!sZo zqJsfFMXoA}T+)@S0yLh=IU-D>Jsqmjp&A_=)XnAx9tT5Li_q1y*CXAgifEi_=-^t| zJ33+O=!!0FhEDZDr~0B*{LyT|Xt*%6NoTZ557gC=oRcYPyaZRI8xRL>Q+4t=Q3HzJ zJ1L;WB1OF6R(Mj&%^2-hdJC(a%N*TI9N|mB-m#4F9A*LYeUb4>gkYsIYu|C;?nuf& z2&l|dOoZW!23!!goFKwkw>O4%r=HjPFl$DpalqJY@WDT+G=4NkUFGjz0^kzB}bsvd=5-REXvVb;hIqp)A{I!1yH0| z2y}~~6}SWfu4TB7ou2|tPgI>M?@E==Wp2R;@!gm@riq*BZq~3%osve+>y}0JwzHeB zry5}pTRPGxwrR1QwN$qi&v+z1C|fWnw?bmF4Qgo!t_N_bNNK4Uod(cJ%fOK!Yks^U zbwltUFFp<0s4KE+y7UlnEVFwM()KCE1NxWe@mrdjY4PK2`G6 zQ6N%%3mc@?J6BZCJ-QsteRCa<*Ed~7hZ}gnd+|636$g{ zs&oofIt@4j^{JA#jw+o8pbMzdMO5jsc9lpuZII3?nQ2$)Dzbu-(orQdu1aQ(Ha?0f zflIBcmu{dWH&LZqsM2k~8KO^>e05amJ^(#Hm0qAqziC&Ato?`TtdhBQl_-)b=t3P; zGUuvf?r7tus1iKD=&I5mD9Kw?=^d){9_oI>Fr{e^50z$MFMJ66h<8EO5t#M(ti-0L zRhSFJuF$m7$ctyA@YE2qV*t*i8dwth1AnafC2$VJxeU&2aVB*R{M1?y1dRVQb9TS~IrJj0KA^F@op6k!_-SY!zs64+7 zU{KCiaeF`YR=Iug}fH3&WG2`Qj(Ie zqb6@x<+xHQH^Bj+iU-JK9;sBt0#{0yOU1QEHW4hy(!FG;An%q_1uBTYPw3KMy@f2G z7>cm(RP5eWX70RgpbBI-4~Mf3v{VA6dc>o+VBDsqr*b7xanTE7N@$Qa9C=kB`<%=# zG&1uxj0JuT8aYw*|B&@gs5QE-2-F%mftvi;E4wp4O{>|{aPVgV2nIEC~0NxnOM z)Lu+PY%5taMk_o|1~FJH!Vo}DgH&tI{#0XjBs{Q;dIjYY=g3aJwE?kHN&cXJJSe^u~y$;gW?l2~EZ!jI?sAf0TU4ot7QI6#- zVaMRVpILH6O~V`&fw@jXq@t1)!i^LScb@IoaS42koe;5;5^U8@OV}B9R*SEu{wTCK z6#?9gCxK70^CEVEc4(J4ezwAYscKj&`k0D-)d0@l5x86Jtq~uRrccL$4B!h^&(N4tv4m(doD_V^cv&hC z>1Kl!k97;pSv8J)Of&vQAr_CqY1kZ}Q@dnYUvgZnke<=3t})l5-<2~8@xkZ`yjsdr z@D20MxdeAH2zk!3+IolWN$jcp-97^JaQLrK*U)X^CC+Y6Z@zJE$WM zusS@!TJZvF#TzzZKG^yPgJsqZe8={vVkip4^HHfdnoJ5yo(o7|d6KOMvUULfjW4;H z!w9cCxy(vCcOT^A4ax{`D-?hEam!!eoHw zmkIW0KfH^mR|?GDct)_Q;1#1|tSq>%rC}aghT08xz#A(|XEiXMS2GsC#-SU>qf38A zqhsAu01N~`6AmEQwXnj33(=#@+|C$0AUi0ciS3NZh_Sr7nR#x~6g2TvaFeE?iD!VV zJQG~4*#OBim$jSISX~~zIhP>oPheH@&FPN@BF2+Fif$Z4>}F#}GDwHss%!&2uJYJL!0$ZAY1PIp(ysk+#Rn3DSFn1cKj@WLD1!*+ z1*%bAl^f+?3J0N^9lF4dwE7NKgT4qj4h}ZpJVAlk2ga@OVrEkZ#=Er)Sstt14BS~? z$~R!A$@^=C;pH4wo_w>yq%x1Wz%!IFxrM6NY326^jtKH$Q=jVr zSLy+9PBmJAw^lucLZ8N`b{6B{9GDa5!NI%$!uujVu}k>ouiyi_iotdbe5UJQ?%o0` z^)_hoJBlVC@4?v0pdqLUnxZLaMyQ0wuhtg!vZ&fz-UY0xb}s7HQbI1`vk-3DF*g44D9FV)|VLAzhUlp z1-MC^)I_^$6&BX&Vf8z*ChHv7=G?G?4LMrU+@>+ttWCHJL9_A$`#nnX0R#I_4D62> z*q^|>g+nPt{i@?kKTB=`X}W_o+sc}6#tj2bIK+Qq30&jWsquQld4{p;)RU3D7iF- zOt7Go)lZt9DvwT&$Ln#4WY)=XOQdPBvNUO=EKwRErwmbeD5VG<^f;1xjRydaLDHx= z85XV7y3(|yWPpi>{5@WZBEVmfG%YSIUXDldv`A+vU#eWAEC3c63siDxKycd-P5b}@ zZKVXz1$Ctfhzuf?MPMJzmnv4CB5#Hav1w_^&0Jh))pbryPjrqw^GSwv}9d&i-otf$qMWv$1#i{(g)PC3yW;w^ECB#?LsJK|H(QM9K>05TocS{Pr zFllPCJd#w_qIwA4f$~9AQi|{;{$62k#U>@llVve-;d{!vg}oUiPmN58OC~Kf=hRq` zBSH}Q9_tCKKq%VpqbGdi(X#aTG>x9cK$2>@RjHYZZj6$}E5?enwpgrmN8-bc9=@ri zEu~)Rsr|H{VH`%vMSO`R%iZgWmUb?Youx3j*Co61S&eEx={9H6iVYY3OpRo zhebd(ZcN~*w6kU&?yiq|=pbWIQih!S7!?lXq^W?yiS6-W^AD6Ns3;|>p;gQpq@*Z# zAS@`o!If0w)dGs@EdZmVtb|JMvU07hU06;}QY?5RC@%km$}7lIK!H07bLl8ChmS8Z zDGev4rAm{cg{>;ZluMJLvi%W+0fE->T}zXbFowlqe!ytg#D^P3S`P(vQM^Z$5rPob zMkgR0RpIlgim4hVVlfS6t>XFC$cjr7JP;z~;M4GIFUX_=tuFv^?ITlj>&0T>YP#B~ z!c8#E7^V99t)`04NHIFch6J~^6qgs{T}%HqKD3pvreucYnN@lBU51l+a+@w#%PkNo z&7u^xMDr02Tih2{ap8ntAk}=(U1*_!$gcFuO(=TWrjFos5il$U>Z0ubM-iTx3HRe3~=BfOVU0 zU&dhZ6ecYtALGMfo3nLiJC5^Zo$ImE(Se7XvTIJPo`0w4Hf+;&mUqV5Vhb}v@Wl3G zM%HG=16Z%))v9H&5wNN8d)ukSA9XfZKXpV)&Dqjor$bZU>~3aGeMOx*IajWA#=l&h z(rz+C*<26jgZ<{%xn?)Cy7%rBV~eMhL2ciC%{o(J!G!G;5f8sT zKD##AgR%Q*gU^4f>$0`{(B`H?6TU62{@OUUr^Vv*kK?1aSb1z?i=W@<^e&m&#&^l& zo!75Fe)Q;Cz+ta$vJ;&KeTzBxQ(mX9@t+5``10|?y?qZHvR!**w>JKC@8GHTZI@R( zJJozd#H}ZjT7TJY@%>Asi&YQ%N9^qESo&dmo4yl$=1zF$y1eRGuc@_cQQ* ze;c*B+lX!I-O6CV6sJ`^B8~nGtZCgjE$_ic#@_BuI&i6$nbFYL;rGvGet+Zswe{la zY-qIq)V|Pe@o{htKe5#v1}V&Eakk?o&kFAk*w)Q6t$4uX)&Ywzz1&84IUGLdW$h)7 z8d@=>SM7DfylRa)y{VF8FPBRml^W)?j~z8FxrFn<4m(P;Ot$(d( z=hntr-I&zM`&hlaXSSjShvVxxA3fx?xk+8~X^|&4S6wGrd$jzfj_ZtekNpsNc5|k& zO}1~IxtnpOmsD2SvrXr=orABnStYIL(6HnU^Ty^zBibLVS#{c~z+Yz6 z(Vg4Wt#-v`QYjbf0b{%mH+HZY>+M=|=VU|w%{k#0Y%cg+NDQs^yzc6G4cnBjHtp9N zQGK?Enoh4Pt#f?jqXmx+J!mRch4EzDi4A*Vuge`oIjw-Lt<|+C9GIn$=61dN&AY&}nPvyXn#HqKC8lewv>a zZ2q*?%31FQkGoU)P3;G@E39bPc4vKg_daW8&YIbIZJV|2*S3DS*KNbAl?ztv_1)d& z@9Ywu#{z10uh}|g(ixKlPs6T<-CikPSvII;vkx1b*YsIlVaaZv%>9WgU(a5+ujkN( zZIf2s>9_akUlj+rd=3Aa@Yl)@ttFjJw@MsLZ%WSCwm8zLZ&Hg&F2`>E(cZhqArJ56 zvKg{j_eV_GdA`N6%YHxmSxtyL+Wn!!!-S&=N0-$wtzlmyFz7|l>$#ypJ6F_R(Y$T* zw#QDNI=%Gtl{t;(wXA>D_36B)^RCXjyS-P}tgdx)SLN=I`)_&Fbw!ugxqA{vc5T{a zdFKvYdu;VvzhHg!E4$b4URiSG&fsamYZqRLIkf4I++TB7Z@1g@_?qd>4Y>)qgJdxg zLFfw7t^??Hcs+*Ons7(br3?t<<&B;M8AIN;m7+?9SXX^Iy9UI`V$zbC;OT zXRXg(Yw$3))XCb1;}(R?yVyFWT+GhY;qS(b9~(IAr1Pv+&hsi9y?uP|qkyyzeS6&R zf8oP|d0Xcle6{N4#@BAI<6e)xwdhpCMYR`pX^?vE&~fj3?H`|aw^%fzUZ1<`2DkHW zmmRb1X*HKfmnogrU){8QdFGmrvNz>g{n;vI(Zf~`TQt7odZ)`zryA#NKfe8ByF*C} ze;Rq$dq}nKQQ!N2KhIVUt!@xwG&b8ayPM(PpZX89-#^j4*-iPMTdu$IoUnMOXBp2) z!`2Ubd|p0F$~lqjiER9#!IGLIN000@%6($;n9k+T z*PqoW^ZYIE)Vn@^`ONgWGcTroyQUkR0vb8CTI1Zi#f`?h8t!sG>KxtW)aA|#I{U{5 zR&46*xWO$ke&5|MuilM*u;78k!vW=HyBzP4+;7R5gYQSKEW6s-rf##D9&N`2H<|vs zr?um%vJY+uQS+Ei5}XLz>{)vf1AH!>3M}+}CT3ebBVrm=`fmqBBmelaJi;?MUMI z?JkvPh<@#}b@DosE>7ZHuNBY2yVknuDB2Pu?-afN^w<+kXRcjX=k%*nTTk4a+<5+* zMc-f99JIMVHFx=_z)nt;IzQRFu6NTdE&BGmDSlYSq|T_0rt4bl7?6_(d zl^Jra)~&3^6-FnW*gxmi^j}u5J-jpOZ1jcb=TGi9E$mie=9*bgW|c^^ynf>s%ex(a zdG+B>-s?ARk;`Rkd}&E3Ou!rzDg74G)>!tHIctDh3jzpgM~ z&z}u{yL_|To{wK!{krdF2ZIhlm!mJs|MvfT>qqwuW7j`o215biwGW zs9K5Kt2-}Uu5_Vgc<7`nbzZhEajeR|ZwuaJI$63|cKCVz(FfI%efm9m{?YvI$I6z? zZe&atuUfk*brS;7!R`VOS=+ZCX zUHGqYH=Yl>I4$Pw*$E3~EEqJ{`SYz_H<#uPcp7=;Zf~okH@mFU?qBfzKK^O*J!>AlA*&+Fc| zM_+dD_U+cSH@AlL&dXfCLjcR_z`Qln$x&J@)hF4`Jt4{yoiZ+O+S+Mzi02iEQ9> z6Z=i$7|$S2L^_)|@bC81a4n5&6AC@p{?!>9I-If3-*JATbUec$E^^;vgCV#Uj74Y`unVp$84wt!qr;q5)k@*eYrJPB%%^28sW3N&- zpPP*O?o(r4C-|cI)+ts6Yx=HpogMrgejAQhwFI zs|laYRtL6mtr#7Q@l$tW)o@7{qZmoum={0x7cmq!}tA_VI z8&)(v=()CIRvj-})B7*p-b%kZceH1zic{L;)OqtxBuz}MS%2l|v5(W@`Z{N~3d&n+ z-mR5a?G72PZ4xT=s#-Sn>BB3{N*-9-ulvikwVzr#G|uS%&7_mj(Q8>Q!|%dQp!^?p ziP1Ie&}YowH`r%`SFd40dL`S$Z>BId~&?`LI|ASolL9YBDSALKyKgg9I zcGU%A3lbjVx!M-FQh@ zjXSf;-EK4Od0KsI$DBW- zWh^;U#W%`j{`fQRlWgYQwx1T(Ai}j<ppXc;S z_U6mM>SIs8wtn+v*lb)b{$i85tyG9?bH?!p7q;x_-?dKgaKEy%W*&)nWxe=8@19LZ z+O7&}WEeEm;9g)x^|P-xF4;Zr*PHF#2MlN(S{T5 z@7|1R5=tH3@zEXZ+HuTrLMaw80E#CJ9YVT?C0O>PdHoU&GYXS-?;D3 z+Oc(m-}q_gDte?f_8T`YAl<=vZFaA9d;V(g#xC9ou_-&niTSqw>#Re&7wx{)ww_RO z?8!BMef}bQ`SRhb#@ib;zijvX#ob=47ZH|bid$sb(?jdm$r(zE^aQ0d;E$S^*c|0g->f2J1?D$TJ%#_i|31PcAvN9 z)S7p9lP4d!-sDOAwg=-P>=&Hy_~V}E3 z!KvE*H`6L_ZZvhWPx<~a_qsaUobTFV!`y_xiOc3D^l_@(2{$C&1HIqWsJ7a5!as2bddb9l#r_?jq*DZN(>7N5W&;R9pNZ^#M zb1l+)?^^Ajx+K`i_sof)Thre*ow2n2?O`v&?oBg(n0&C=pnxr9myaCq;YOG09v(5} z_GFr$x%=kLtOjLgt@G`&vRz!o;5Nf#V`glWw3(B$E@|IP*I)aOH~HFSRzt(}dfywje%tiHCi}R4(fC*1VTgZ|K92wlUAL&xJgdC0G2^XJ+Pab-j;1t2x_cMT2`y8ro(V4rc94 ze!G!Ud5!ZOkD;Df=PZ`E-+7U}#$s#jiLHLI9buUyWgTYSNLeVp#umEfR5|N1^yQYd zyDdbmrZ&7TT5@goo8d3Lde605@0*dHnf>x@*5GW{9D^1nw!hY>(f+c$UAuB;-;Z{& zw0-wjo|P=|GO98{woJUeX4d1a4_CdI8q_v)Xvv|YIvyVo+TcJ-m){1xejd~O+8_OE zw)>npx^ef9ZGVzIUc2CcQIp)ClkT1jahA1fTYumm$2M0;zW*@w=}gOWS*ESrfBE?N zO^G3Y{W|_zW3Sm)+^+2_HFvwG+%mv-`q$CFEhyc1$oM<$>ed}R#9;7@@CH-s9sOng zh=(o*%C$Z?=ys)zCf8oy4Z4^cy{1o@fa}%Q-K>3dV~L5khc6m3^yJhNEc)HgM`zF6 ze*bb~``?Cp_k>vRRioqUy`PkHNX)z3e)jDV-)nwqcfss8)^%v~V)IpoWfn`;1*}OJ z^lrZq^E;R)slGh-aKTh!oemQNuR@)Wl526OM3n~V4@x>Hh6d51P;Rlk|cSdr_v{C$qkA6KKNojNtRWqgpE z{gVTEl6Q9=?)|*PXGG5(&1Up8PJH7uYurY0>fWpXpV_QZ2Z|zN;c53;X`4yXw zusrypgom}+t}ch>HoF@AIyLf1*_(^DH+x&TsoT-LqIUzk4VajC#cZjmn|0cuLk$Oo zwhn92f6L+Tzb}8jtU}Ki!#+l77Z1f&Szh{UuU{r5_U~MQ)muD0^on@Jec852rNRb{ zzC8H&wkgI(#a*w~TQRXzg=dTME_rWw)x>DiuIxs0v+7>CnpeJ3$|2JM+j|)pTR#Yn z8FqDf$}HdG7LC@6U%m3#)4+3E*T*L=HQeyh)wPAs>*o!Y&h0pIh;2ZVN~WIHliSv? ztCZgF^QV+g-^%nTQ`OYG<`sFbCRurpj~oga_$7JjDnEl44{F~zTgZ#81DBqy75;c$f819f!bzyHn0I2v;aiL2qRK(PLRlBB~awqpPy;>Tk z;00Q67Y3%9vH)Cz1r`QIWy>w7l6JXj3jj{g4y4w1jYJz!fH}=MW0ax)zfbCm*cC}55fmesjdK3R0Vxe>8`}2s*e-j zq5_nJkpD&>6kG|lX=yg(Nsh(?>!i zc@5L<>z0k2vdu6xQ$pEQzntvjXhuD;q{T(|g9$#@WV$Oe;e*xphE*7&(7O5Xx-l)HzVYRGnN=A1y4JBdoyoo9nd`z=h{R;fz ze%`;k_Z(-&C~>MWihAT^FO4e>8r_X_#9unW1VfclBV`NWoRd8kMk)F{Y+$hk)~Vmz9u?ItDG4#mxL8aKt_9Q~S`zgbeN9P-Ve8dmVrZZnL$fQryDh@nOi760#qDBZ zXs8>5e;cO__0d9P%ATy011pN`s4@(|!Nc=?~;(_Opnu8A9mIWR^^IJ>`lT|8{M z;Y%hw?lTuIBq-Gq)aD30NEA3R`qAD`?Fn3aNsasDb!HFRhmw;3>hki1Ky8}@4^Cle zNh#Q=>1ux31kMPs_TG-JrX=j{b(Qr6?HPd$zHe5foO4c8_#Wi11Jf3o0~aOXM(2>d zzWCaPsgULG1*+7N`V}q?gA)ZxLL~MMdLyC6^MhLt|8}~OEOyJj-WMH0Nw{cyf}^(r zyIRmG+(khMlKYOG8fwfKCE*gjtDe3H+J*T?=`Q}E;qHMqK$lPwes^6P=?gssUbf(I zR1U9AVe*uWxX1z<>sidqTIbMEl!QGp)kj}!2wH@AqVVw<;-kAt2jtq)Tr%zHk{POCF_1S^pjj917rPczhJ4X}?t6zMQOy&B%h~^#gW&IN= zmMcoaUiBPPETsOy=?M|?6g}&DH}dnb8K@^EA=={;i-#6ow!n$d6Rqvtc`I}ero&T< zg|=-{VvL?RXZP5-CJ^f#rFMdD-88dUID_Eu4r@6W3h=0?C-RP6{$AG&dumF;ksLdx zSjdajyJauTVR67nDNs=5+KY;XHD4`@So&{0Z8T*Ph7={?C-iqtu@Hxmi^Y7{bE zOWU0b1VT!_g4(`WRV<_(LjCnb8CuTOBpB!@2~jRsS4@;`^+ajs_4VihaL_3U_aniZ zii1*j8}85P`PjNVSouicS*U(F***5@0bRk5)D64hpcl^&VTPj2XtDBkUegP9vID%X zC#CRSyo;DmcMRNA=L>p;lDDcFM2sK2uO~7exSC8%g+oBS5dL=6ePn4Y$&`dcp~@3I z5pw)VucVYHxqfw=cge-#A!aj5LgviO7kZ-fgLg!|syA6a=G0BJB_$!Q%dhmrlA&cV&3TBid>NlkHjQur$j*_>a9eu6zM5!Xv^s1w%Td$s{fr*lk zjen|?eh76>`QHtFruGH#LkZ#<)er3BPKCe?!w!p^cX_6XQk1D1N0Zw&m!eDN^mRk8P->y74lOG&Km7w_6r)J4yIQ|SM0h;{7D^rhOdlil z#}qD$h>%B7u${u|RWBj@?ge~Jl!Q{qrg8rSTOk#jHO+HHDySSv5O}G6IoZ((#X-GX0ze$JeX`cM)I+Fa9$iKvk3ylIywTW5}44U%v~z>uKeIZtbdcjElF7ha!f zC9Ze9i9t?DD6^_Othks8sZgN!-EEOAW0Zt!&X6&BqsiYR#K9RNUo_tWQvoF*|7q#s z!a#E|WjOAvhTKyZFO`s3EXs@xKoe0ClC*|Pi;slE>Xnq97?oNuOO?=iM)eHohml4} zNb+o5S$woXaDL9AE*xp2FY63Tu1h(M;5gQguP?rk*MUMYt@rkFLQ%AcxAO^UnhuC7}qg z&-tQ2DqZM@!5e!4llINhZ|YYAc|%D^oQ=Oy6nISmpziiqbN|V~Yk*8isAcixPEpXg z557Rr>(emHRRQ?eDOD4+bmeD7K+a!O`Wj{r@M`W2vV>AC0l?K|j0&C=sp|^RHXx`C zd$0K^4?Rao$n1BuEdr`?Fgtig$&w4y?`hHOajP!)fGG)C%-)ssM3BEdIHv8@5;N=djX^mWh^vc{xZ;0P(PAS7bEh%rh+k=+AF zJ<(9-76`v%oyKuX(5;k&)!6G=4EPEGNP%dcjq7H&4YC$W!j0~>#`>Yr-M_CoT6POS z-%=9x?-suz;3|q-Q2+M4-Zi2!8l94`;r)QDK>Cy#TM4<)hOfJI-lYT9;3pvoTjZDa z`oYiNBJ{1Uy+6SV`)@``*dlu)3WEzNjY6iPt3?QM6T7LAwiqUqggdTYay=n?D?@82 zrv=@0u=4pm+5lK6`3h#S3vqg4BB_%qZlSjW3(Qo6$_C9dcXQY&qH2#uWlrx7eKusvWXP4eHh68B~pyb2fWIYt7Pe+?c8*p+$G^J$m=n_Z;%iJW5Re9N5D?aX>LzS#>|*0$ZRl*_ z3RHHnwKX)d1~M318#+1JDBCDZDx&*-ohvO~+-wX(6&)M47~X@{el6=j?72wRr+V=u9Ekz)LOEraHzsGE@W4AR z!-k~ox8=M(O{t-s|?fZbUC8K@~=~b4SY}>Ve8ne*BgV`(J|iQ>KTL>&LiPhFIRU8 zZ@gsbMElB3>C03BUOjuz)A_lUM4+ntn>qU_P^oqIgSo^c>bcJhImrdTwoP=;oU?9l z>Fl@yb?x5P-8)0M%!~xEVQ>dRW#X6yIVr3L&J!rt!SH>d$mTQt4}^m|Xx&4X(VsvaC$G91)O-q`M~9-|18 zAkFCpA%U!ea5yGR)K@rFDU!1vtTV4|C}x|bkS-p;{}l2MnYkwty)ys>0m*ul8t*^J zOy#>$6&>yDfsW1|BIbs+WM=L=c|io>Rj3py z#z(CujRX*@B-T@Ds z&!Q>Q^}(Nx10KDi*jS}EI+`Sau*o;M7e%CK+{t*x!a*Z&Bt0HfV_c?mFC4MFS4R{J zeztHgXj3KlG+33OU}nouFy0>xk$)UV`qTD+1;x3urxWrsWjRfnyu3&;{#aqTebG|wc z{>CWX3ES^n<@lLmkXXkQwH@j2hMVo>`$qX_wD*tu1NZ;UaDSR@Q~^yG{XV$v{i1Eq ztFiD9^0FN>CJ}mb>jV|tt0$HrSlL4V3%#KEiD=%r%kkOZ5N&WGd~G2? z`M|^kq>>xvsxi%jK1ClR%!|5#8a(t<16Q6#SIGoWqTHi#tb`ELIBf9ojZOKOCQ1*r)!q1 z**YW@Mw$KEwUXi`y4y6uX`R|dLcBe@m|nuj1^2(KTjLDUlfT1e?aC>$)o@UW5HfGa zxFS_8aFPMAd+W~5e~xI-2fD{G>Sq@RJseY#o6z#D05fn$V)+F@M^lxrn?NZEYkRUl zA+BRP)!-Gup?I|*MS1|?>(1iQ6DfJt*vtUXLHe#agF^!Wk-jr%tyji11q%Q?pRbot zUA}RBbA-DvMYykLJ2-Pkke6*qkGtDtvH2(O5`*WXot!!gA$%O3t z(G_91W4d`v$$+VjDISq}537YqPG~noN<^{-7j^k#*T97MIXZ7-21F?5u|H8;3?S_V zO#bsMgWdhpb+4}@ZWrs@^@kvy?qj0hGrC-wcG&@V408<@^)C=P@U3|o2FI8RlFu)& zU87aw#Mec4!j#P71V&9f%fiE`va>$v%biJdeI7M2Ma1sN#3ko5Exb@8!Cq*e*Gx;6 zl{zqpSb4k6-KmXC7Z2%v{ufcO z{MdzFD=R7B3M1dEQ)!H#AzKwiVRWnbb8xR<7^P%J$<_Gyjpf?yRkkM#>NzzPw3f(4 zb%or6yi9b!l=~u*@GjMQD|Ip1&UAZzzA04@WUg>Ku9FrIQ{5)Ej{twq(W^VK1Hm$O121vrOx?SE`^qZ} z5ilB)o6%JnJGXbrv{8_?!yyho>&u2|(i2CPP?TDIOZ--{EJ5?_)_wmmHS>%}S$^|s zMU%oX22vi8czAdQv=3$!y){>blKl~?M?f(mM3SlB64#dfN`QS(OprysSGk1SV?1_lpTqi!Zl{ zc>&F3VE#@0W}U^A*Bs;N0#6i5e@f0vdDPd^;?@AT8XG#?acH%^(O6yUmR2w;--ezJ zg}1M}QDI|*@z6zCau#k8I7E8h>i3Nttv%-mSW9aN-1IQTq1EI(c24T-ERLE1cquJjr{z7F*56)Mz*nI|@)lc`w_g zP~V@|tm~@cXjivPzJo6O(oay@J6`>n@D8diS3m#uLPF>1=}bKli0imjM|W_D+QP|L z_rXc!?wb77W?6(610gc5Yqo5K$Y)%WE3OoZiL}qwn8{9gz1v#8B&X(@Yi<}zX5Ic1 z1B9ratB&zY%vrvPEg%vbWkOQB?C-93aG3)x0>yH`NR}PNv4aKb9 z8aWr!c?E6mRX>=y6ZUpn#KD$~Y@`CLn58!tLdHC^*4bEPeaR2VWOVqx9Yg!aQ1B61 z?OeJ?CdJV6J%6uZsGQY1PDD!d9L&}x8S)iB81%hNDbP0&);RY$U$d$`pkhernVWi~ zGLRzB_R{c(^Kx%owdXW{QR`jzggvA}7diB~t2>x$=hEiD1|dNlS;MGP-2kb?fvXk~ zX~+z&_x&zyG`w>G4j+?H1>P{&kEiL)12U>^dR@dpmUd z9F-l==00N0_XMGwxqQH^a{l4aGTn$z8KBfVzTU8UHU2!FT!wB#-g-lNw6`*p9nNj!*a8KuX*d1Ea+V$aUye9?uMwiHL(d zBkR&UI-l(6F8vACs)n1QK8 z3G`nuF;A%$PGQ8ElHYKEB$o#SdsK5ey5jT3wSWE!0Wc-+_FV~ymNhD7eJK6>cBEH+ zXMR!9F~gmcRa1{F;6MnqK3SgVp|wDwEY+IQSOSvwRtz%A-!0m82|N{af?slO#EJ%=ks{}h*lH}+zhvSQk7Lx8v$TRulT zxuypoP@-k&^Q?qAsS1f5YH+R>zi1s;&A(C5=Hcnc1&#qHDxhnE;)D+RnsIE(j_RYj z_8mWZ0mvqZBj)x_>4ZazU#f+~v+-)!Td=>2>=^nGiR^KU`TThQw#e9jh%8EJP`*P5 zogWJ}Xii#e&1*HASrO|~5N#BmiD5RgQqCTLQqkO0vY^i``BGBn64W>G7%`;*7~kl$ zwJ?*+tG`T?0TNxQ5fa1>g~3L^R$-e1G@k6i%+iijCcsBQEK?PT>D49=MXNvcW4JPY95;h;G8{mL%t>)7@`# zGR)b^wjE>OQ?HYKvl0mM%8NR$uSx5D?bx%I_=4R^n1hDSlSC21!shoX^{mwEzC9ma z0kx6$MWx1@8n!R61APdsf|}HYTkK3uYh*s|*}v5_tZ8@ae#P0wg;xdW*PhoYcRVsU_Z&1I>}g|2Hl z>N5>qgGHuM=0L1lHy-cFS<=CdP_r48pv^o~9frkdeVPzYoHD?2Z}S~$9j_2Ob`O!~ z#AFQi#Op7JBBrGF5F+y7wy#VIRZ$gM=wD1nNJ@LnU`2fyGkis6rjj~w959wpYLj&V zHX{^ejN=mR^p>Nd!vPMn7abN~Y=~)ykk`Ue>|<}-b`ya4$n;HJIan(F*Lsq))D54dnsR7(I!$8Ab@>gM0AAF$%fpmYwyTih=M!>tmyC^Bv>x za1UkJpUz$aSQ51Xl&%d|@?0o!sQ?1^=uld1{ugOzlEpg<`VNWW4w*M$tva_Vp(@w& z>Cv%drvnv3Vc4W3F*}pkMaxPB*omjCH}pWw_i6d4lqCUO6xQy6>D;tOh+Dg;vhmg) zxIqoToupiIMauDhk1B?VcZm??1g}1|5TD`f#)J}Ky3K&p2D3G{DIcIs4C=>888+P$ z7?&e43)p;%Exm}%$%Cp63A+wy2|#BUOKYct&>|U(yeW7fzrp*vl*pY6EFK=E)DH1K zEL_f?Qc^uoo_t)mG9oI{6@EmTVi02VppjIOu%UpUWS+J{s>pkmd@Cs!JPIOoAG8d= z9su<<9s?KmW%#8M!{~js^ z*_Sr~3?ZPqc!`~gN%@>){pQ_r@G{Oa+4D5ws*%NyCx$B9V1Y+pTn*Bv%+mI)IQHjg z!^RF+{+Nh1d-HM5cMcuzsKIb}M`B^bMCn;|c*8ZE#byz$H6)`C1f{t4F+^yWH`KAo z3JNH#4WSa?t%8(yk5^v^)X!YPh2si(duS6{L<~&EhTIA=k81GQCYj06+Bdtc-^svB zkJCFrvMY6tsf89rQ`7WRD?*<}b>=7zd*j*Lwfi9s<%y(d#AmBf{@P5Lt2cZw_V&K7_am&M4GopJbem~(s5 z!v#t9Aw2($m*j!a_?Zn=llhXcc0r?OMdB6om0^`i{G!0P#juH$=)it9`BvRdIGH$C zQ&8R2GsLfZ2eZ00U%5fr0BT;k$>jj&YxDeHyeBn+Nh}%ZMZiR z6I|#7hk$LR^hF!JX1s-Gj+9rr=?iw~KGj!Ib<6@zWqTZrJ}46@35lBct0!)jg{9~> zm&b*)_2_0v{O<8u)K104$i~9?KL>q7tkL#3KUXV=B*{Yf_qmRs=ksf zB?b-&?k2)J9psv{KZ2>(O?fnj2c3dl?t`)nxHE%;+%QNtF}pvtXqi0}6nqK66op0Y zY{VAC5Sbs>JDb{_UjR4#YXYCYjbBzX^mf3lv zaY93<7()+9G||xn8FYrxZ=A4|kZp$1eJMbxs(&rPO*H zU3s>9%tUx{!+M1f9D67}u_Lv_X&FmEWQnFpZ+NK?_N7YWi@Mf>zPY+R8`x33>2LF~ zBl00vC1!Y7w68N!rWzen)+)ZR@^CjRE`G?IfTe(BGGA#4gL+(vabdmgM%jKi!7T}( zayo6qBIVQjHPThfTnMYXTnchSYsq2TJVtR@pVg~RzdCYlPkI_PIJS76w2F5zIeuls z?wM;M3NBk`GLqzxcGqb{H|ZN75Z2li(&NJ4VWti^es>dLBoP#|-@OQ76C-IU$m{~|ioTm!Ej{W`=)Wq(f*eNV0Y zl{op=Y{(z+=AVHh6=y?dpt_;8%g@9{`eOuX;xVzofUYgwOF^8#t zIXn!wF=g;&QI)iTrY!aRvLl^?c+RZZ%f#aa88odbr0DsLj|&3Z+>95u_osJQeyFa- zu@$9jppGmoEQCdpE6i9P5G6EsboQc3!r^-a5Ef+_eeMIqtsF1T#P=`)EU)Sgo%hG5 z499TG_S|dZ_>;NNf|Z^2&(2n}Sh-JnGtT<^+YT}!n@M{o>1|ulT)z?p2oFsQpAGwK znZ*d$lztP9)f51Yz{I5T7o#jWdV#7;e+9dM7qC^ z*bdk#V@HhAMLqZs4*(29L72u@WCLshAAK$0dA~4q;4b*a+Q=4nb^(~ZhTm7=cAt2s zI-g>{j4w!%i@Ep$A&$Xs?Nz0?99GRyR^N-hjK_L6KH!{(v!>3;(i!do>54nWq)-)v z_YpywWcB$p&1~!6wbW`|yZr_l1cVX;1cc@{we-W;NY@P0N58;$K%^UDiG+10p?Ygs zMMskDE*gr^fvSNL8j;dn)E!hswyNQT38BRA+9xC$9lh-r(q&CLh8w zj-JMwMq6;~S^46xy{QSsBC|F=U|h>{T!<*R+TDA9i$|iDG&V4zOW(HO7)^#E3t>1<8Y|0e}#mro`n%9WgY)Fcxj-!mw#aS0ex)^MuqO8Q! zOu3To6Y8-DsB)LO^;tu_bEu9>?z+DU<#jY6A^|_U{gHWL4lRigG@RzN#ZFS`P8}Rw zzEkY8OO^aMCbdCSMWae|PBzJJ2$tX2j#mz1GfhVpEJ9!?)~i$pa` zp9|;9;j}ka&I@DxJB~87H`})1jL4?i9wZl}+){63hXNxsrH#W0RT3fzt+B~!OkFlgyozzsrI@?2 zY}>Mi++@AJetnS;D4E}LKo*^+!QIMEnaN&Z;>(G~oet0icZM{Pg)|PbZ87wJFBq}R zEEVQpYG*s!qT6O*C|24|P7Q5VP*l za-dIDeo~(zo7%7O445V)+C%ED*u#4yk3)G(tefx(@R<-?MAjImT}?0C!#5FdyX{hVa&4U19Ge5*=VxydbVVuIU-Gd_(W4Ed}fMH+MX zicWg|SG$b^@?6J^$<+WQLd_Y%Do=@C3;qyh7&u9cXS_;l%?i-Jd9c0=$^2{wvtVo`Y+d;9M8B`gR+M_)qM;5#FC@sSj`2qEH zZoej5B}JInfQ2dpIQFy!6G2V$+F{yq6)B3v>$SR|dqq2qh6{mrrduhCes?Nnj(2bB&6Z5Z7!$5;&;MBZH0I6Ot(7_JSa4z8v!5E{c8Qa zA?64sKU{l?fK9VrS@&EF;oy@dr<4|1XP5@{NZGzI%|qwqU|}*UmQI6W^;y7H^P=je zD&<^o^dqq&$r@?VyO&d|?|V;fK!=RT$Pu?mxoqE#)n>APsBVOw?PQCN3x_YQ4Sg^# z+A4pM16`iKTmsaLLH_W3Mc`UXGcbUwjXdQYl0A5KbNCC?aW7p@qGlCihm4~7As?d5 zhhE2}n1ls1?n5M@wJNF6y;CyXV)l`l2_B?KqbcRACc(b7-<6k&t+1D;WSS zd(;W^f!$Pmglp3ZYuLen4s`V+WoF@_qpKtBG!o(Rbu83UcgqmPe%(=(x^UMogGW#q zBC~8Xx_W66k7B|Zms=2+3uxbodjnIuhFc_+6F#ghMN_ZW4E^$Ox`e!VSU@W3$qQ1RGFCrB3221KnOB{KdAWAsAQIig|@R3JOX zu~`LO)Ti-cc2>>7p7$jluq`mY4V0R!K`!kUsv4yk;=^dS+;f9VswN+cfOZ^;`zd{R z78&KcmbEcrs)--{qQ=+ew5G(eTX2{7pe~dlza^ab@@)Ig)JR7PU&xkx>(K6)%Q)-n zNmH?s1WCx#nu01fP(h*KgRiwjs!n0TPh}BEPO(^s!w`w$dsuCziKxH=SdWmHKNE5g z=t`1dc$JW!I2E%lD?c|jwBk^D91k!m`;c$3;E_J6fW5`L?a=a$%VO;9HfA~`a8Ork zlt>R5wGUt}c}#4@f49kCLW?sN3o%aodK)=O|D?~ZbDrO^RHBR+ryUNNa@;*Eb`!@0 zWwf5KD%$xtBUGK`O0puZT<_C#sfqSvAe67kS8F`zfoVHQV>~l8r%}2(eZK{F2sTjt zz|UL}1UPlXF&2dLgvGqpa_eNSdYxNr+BvMBUAUqa$Jbz`Qo7!;olj7f!QLlByqFK|pf-Y5%qBzZ6*g zEBW`LtUr5v|NLGA_2c?Z-t_qRqa^B2&VOGN^{dC?&mMny`u{}sy-4cE^_>j*@v!h8 z4++0u{(aHZpFp|(g8u~bpHIwB37(eA{36JI44?kTasKz>nWscg%R7D%=|2Y7{trYy z9N(ujPxJV{XcnRV8_nOd`cILcCWC(=pTPVk^3T-pQ{<-^$Y01aaKDNCGavaB`Du3R z7xJgaBENs0^q;fwGuQPL`Dsey7cvj>ZzBIpa6CnR8ovL9T!`|U$UlSmPm!NSbAKV9 zqWvcF&)Du$jkz(ThCh5~S#8Zl=2hv{@M) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must set src.dir - Must set test.src.dir - Must set build.dir - Must set dist.dir - Must set build.classes.dir - Must set dist.javadoc.dir - Must set build.test.classes.dir - Must set build.test.results.dir - Must set build.classes.excludes - Must set dist.jar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must set javac.includes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must select some files in the IDE or set javac.includes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - To run this application from the command line without Ant, try: - - - - - - - java -cp "${run.classpath.with.dist.jar}" ${main.class} - - - - - - - - - - - - - - - - - - - - - - - To run this application from the command line without Ant, try: - - java -jar "${dist.jar.resolved}" - - - - - - - - - - - - - - - - - - - Must select one file in the IDE or set run.class - - - - - - - - - - - - - - - - - - - - Must select one file in the IDE or set debug.class - - - - - Must set fix.includes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must select some files in the IDE or set javac.includes - - - - - - - - - - - - - - - - - - - - Some tests failed; see details above. - - - - - - - - - Must select some files in the IDE or set test.includes - - - - Some tests failed; see details above. - - - - - Must select one file in the IDE or set test.class - - - - - - - - - - - - - - - - - - - - - - - - - - - Must select one file in the IDE or set applet.url - - - - - - - - - Must select one file in the IDE or set applet.url - - - - - - - - - - - - - - - - - - - diff --git a/apps/desktopgui/nbproject/genfiles.properties b/apps/desktopgui/nbproject/genfiles.properties deleted file mode 100644 index f6b0f837b..000000000 --- a/apps/desktopgui/nbproject/genfiles.properties +++ /dev/null @@ -1,8 +0,0 @@ -build.xml.data.CRC32=c4b345cd -build.xml.script.CRC32=9785bb9a -build.xml.stylesheet.CRC32=be360661 -# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. -# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. -nbproject/build-impl.xml.data.CRC32=f630f8db -nbproject/build-impl.xml.script.CRC32=8c02c081 -nbproject/build-impl.xml.stylesheet.CRC32=65b8de21 diff --git a/apps/desktopgui/nbproject/project.properties b/apps/desktopgui/nbproject/project.properties deleted file mode 100644 index a02ea8207..000000000 --- a/apps/desktopgui/nbproject/project.properties +++ /dev/null @@ -1,81 +0,0 @@ -application.desc=An anonymous communication network. -application.homepage=http://www.i2p2.de -application.title=I2P Desktop GUI -application.vendor=I2P Developers -build.classes.dir=${build.dir}/classes -build.classes.excludes=**/*.java,**/*.form -# This directory is removed when the project is cleaned: -build.dir=build -build.generated.dir=${build.dir}/generated -# Only compile against the classpath explicitly listed here: -build.sysclasspath=ignore -build.test.classes.dir=${build.dir}/test/classes -build.test.results.dir=${build.dir}/test/results -debug.classpath=\ - ${run.classpath} -debug.test.classpath=\ - ${run.test.classpath} -# This directory is removed when the project is cleaned: -dist.dir=dist -dist.jar=${dist.dir}/desktopgui.jar -dist.javadoc.dir=${dist.dir}/javadoc -excludes= -file.reference.appframework.jar=lib/appframework.jar -file.reference.i2p.jar=../../core/java/build/i2p.jar -file.reference.i2ptunnel.jar=../i2ptunnel/java/build/i2ptunnel.jar -file.reference.router.jar=../../router/java/build/router.jar -file.reference.routerconsole.jar=../routerconsole/java/build/routerconsole.jar -file.reference.swing-worker.jar=lib/swing-worker.jar -includes=** -jar.compress=false -javac.classpath=\ - ${file.reference.router.jar}:\ - ${file.reference.appframework.jar}:\ - ${file.reference.swing-worker.jar}:\ - ${file.reference.i2p.jar}:\ - ${file.reference.routerconsole.jar}:\ - ${file.reference.i2ptunnel.jar} -# Space-separated list of extra javac options -javac.compilerargs= -javac.deprecation=false -javac.source=1.6 -javac.target=1.6 -javac.test.classpath=\ - ${javac.classpath}:\ - ${build.classes.dir}:\ - ${libs.junit.classpath}:\ - ${libs.junit_4.classpath} -javadoc.additionalparam= -javadoc.author=false -javadoc.encoding=${source.encoding} -javadoc.encoding.used=${javadoc.encoding} -javadoc.noindex=false -javadoc.nonavbar=false -javadoc.notree=false -javadoc.private=false -javadoc.splitindex=true -javadoc.use=true -javadoc.version=false -javadoc.windowtitle= -jnlp.codebase.type=local -jnlp.codebase.url=file:/home/mathias/Documenten/Programmeren/i2p_monotone/repo/i2p.i2p/apps/desktopgui/dist/ -jnlp.enabled=false -jnlp.offline-allowed=false -jnlp.signed=false -main.class=net.i2p.desktopgui.desktopgui.Main -manifest.file=manifest.mf -meta.inf.dir=${src.dir}/META-INF -platform.active=default_platform -run.classpath=\ - ${javac.classpath}:\ - ${build.classes.dir} -# Space-separated list of JVM arguments used when running the project -# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value -# or test-sys-prop.name=value to set system properties for unit tests): -run.jvmargs= -run.test.classpath=\ - ${javac.test.classpath}:\ - ${build.test.classes.dir} -source.encoding=UTF-8 -src.dir=src -test.src.dir=test diff --git a/apps/desktopgui/nbproject/project.xml b/apps/desktopgui/nbproject/project.xml deleted file mode 100644 index 9dba9493c..000000000 --- a/apps/desktopgui/nbproject/project.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - org.netbeans.modules.java.j2seproject - - - desktopgui - 1.6.5 - - - - - - - - - - - - diff --git a/apps/desktopgui/desktopgui/resources/logo/logo.jpg b/apps/desktopgui/resources/images/logo.jpg similarity index 100% rename from apps/desktopgui/desktopgui/resources/logo/logo.jpg rename to apps/desktopgui/resources/images/logo.jpg diff --git a/apps/desktopgui/desktopgui/resources/logo/logo_green.jpg b/apps/desktopgui/resources/images/logo_green.jpg similarity index 100% rename from apps/desktopgui/desktopgui/resources/logo/logo_green.jpg rename to apps/desktopgui/resources/images/logo_green.jpg diff --git a/apps/desktopgui/desktopgui/resources/logo/logo_orange.jpg b/apps/desktopgui/resources/images/logo_orange.jpg similarity index 100% rename from apps/desktopgui/desktopgui/resources/logo/logo_orange.jpg rename to apps/desktopgui/resources/images/logo_orange.jpg diff --git a/apps/desktopgui/desktopgui/resources/logo/logo_red.jpg b/apps/desktopgui/resources/images/logo_red.jpg similarity index 100% rename from apps/desktopgui/desktopgui/resources/logo/logo_red.jpg rename to apps/desktopgui/resources/images/logo_red.jpg diff --git a/apps/desktopgui/src/META-INF/services/org.jdesktop.application.Application b/apps/desktopgui/src/META-INF/services/org.jdesktop.application.Application deleted file mode 100644 index 6cd2ac1fb..000000000 --- a/apps/desktopgui/src/META-INF/services/org.jdesktop.application.Application +++ /dev/null @@ -1 +0,0 @@ -desktopgui.Main \ No newline at end of file diff --git a/apps/desktopgui/src/net/i2p/desktopgui/Main.java b/apps/desktopgui/src/net/i2p/desktopgui/Main.java new file mode 100644 index 000000000..221de0b06 --- /dev/null +++ b/apps/desktopgui/src/net/i2p/desktopgui/Main.java @@ -0,0 +1,79 @@ +package net.i2p.desktopgui; + +/* + * Main.java + */ + +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.UnsupportedLookAndFeelException; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * The main class of the application. + */ +public class Main { + + /** + * Start the tray icon code (loads tray icon in the tray area). + */ + private void startUp() { + trayManager = new TrayManager(); + } + + /** + * Main method launching the application. + */ + public static void main(String[] args) { + System.setProperty("java.awt.headless", "false"); //Make sure I2P is running in GUI mode for our application + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (ClassNotFoundException ex) { + Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); + } catch (InstantiationException ex) { + Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); + } catch (IllegalAccessException ex) { + Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); + } catch (UnsupportedLookAndFeelException ex) { + Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); + } + + final Main main = new Main(); + main.launchForeverLoop(); + //We'll be doing GUI work, so let's stay in the event dispatcher thread. + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + main.startUp(); + + } + + }); + } + + /** + * Avoids the app terminating because no Window is opened anymore. + * More info: http://java.sun.com/javase/6/docs/api/java/awt/doc-files/AWTThreadIssues.html#Autoshutdown + */ + public void launchForeverLoop() { + Runnable r = new Runnable() { + public void run() { + try { + Object o = new Object(); + synchronized (o) { + o.wait(); + } + } catch (InterruptedException ie) { + } + } + }; + Thread t = new Thread(r); + t.setDaemon(false); + t.start(); + } + + ///Manages the lifetime of the tray icon. + private TrayManager trayManager = null; +} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java b/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java new file mode 100644 index 000000000..c7c33d7cd --- /dev/null +++ b/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java @@ -0,0 +1,148 @@ +package net.i2p.desktopgui; + +import java.awt.AWTException; +import java.awt.Desktop; +import java.awt.Image; +import java.awt.MenuItem; +import java.awt.PopupMenu; +import java.awt.SystemTray; +import java.awt.Toolkit; +import java.awt.TrayIcon; +import java.awt.Desktop.Action; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; +import java.util.Properties; + +import javax.swing.SwingWorker; + +import net.i2p.desktopgui.router.RouterManager; +import net.i2p.router.Router; + +/** + * Manages the tray icon life. + * + */ +public class TrayManager { + + ///The tray area, or null if unsupported + private SystemTray tray = null; + ///Our tray icon, or null if unsupported + private TrayIcon trayIcon = null; + + /** + * Instantiate tray icon and add it to the system tray. + */ + public TrayManager() { + if(SystemTray.isSupported()) { + tray = SystemTray.getSystemTray(); + trayIcon = new TrayIcon(getTrayImage(), "I2P", getMainMenu()); + try { + tray.add(trayIcon); + } catch (AWTException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + + /** + * Build a popup menu, adding callbacks to the different items. + * @return popup menu + */ + public PopupMenu getMainMenu() { + PopupMenu popup = new PopupMenu(); + MenuItem browserLauncher = new MenuItem("Launch I2P Browser"); + browserLauncher.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent arg0) { + new SwingWorker() { + + @Override + protected Object doInBackground() throws Exception { + return null; + } + + @Override + protected void done() { + if(Desktop.isDesktopSupported()) { + Desktop desktop = Desktop.getDesktop(); + if(desktop.isSupported(Action.BROWSE)) { + try { + desktop.browse(new URI("http://localhost:7657")); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (URISyntaxException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + else { + trayIcon.displayMessage("Browser not found", + "The default browser for your system was not found.", + TrayIcon.MessageType.WARNING); + } + } + } + + }.execute(); + } + }); + popup.add(browserLauncher); + popup.addSeparator(); + MenuItem restartItem = new MenuItem("Restart I2P"); + restartItem.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent arg0) { + new SwingWorker() { + + @Override + protected Object doInBackground() throws Exception { + RouterManager.shutDown(Router.EXIT_GRACEFUL_RESTART); + return null; + } + + }.execute(); + + } + + }); + popup.add(restartItem); + MenuItem stopItem = new MenuItem("Stop I2P"); + stopItem.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent arg0) { + new SwingWorker() { + + @Override + protected Object doInBackground() throws Exception { + RouterManager.shutDown(Router.EXIT_GRACEFUL); + return null; + } + + }.execute(); + + } + + }); + popup.add(stopItem); + return popup; + } + + /** + * Get tray icon image from the desktopgui resources in the jar file. + * @return image used for the tray icon + */ + public Image getTrayImage() { + URL url = getClass().getResource("/desktopgui/resources/images/logo.jpg"); + Image image = Toolkit.getDefaultToolkit().getImage(url); + return image; + } +} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/desktopgui/GUIVersion.java b/apps/desktopgui/src/net/i2p/desktopgui/desktopgui/GUIVersion.java deleted file mode 100644 index 21f0e04cf..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/desktopgui/GUIVersion.java +++ /dev/null @@ -1,14 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ - -package net.i2p.desktopgui.desktopgui; - -/** - * - * @author mathias - */ -public class GUIVersion { - public static final String VERSION = "0.0.2"; -} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/desktopgui/Main.java b/apps/desktopgui/src/net/i2p/desktopgui/desktopgui/Main.java deleted file mode 100644 index c3078163d..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/desktopgui/Main.java +++ /dev/null @@ -1,109 +0,0 @@ -package net.i2p.desktopgui.desktopgui; - -/* - * Main.java - */ - - - -import net.i2p.desktopgui.gui.Tray; -import net.i2p.desktopgui.gui.SpeedSelector; -import java.awt.SystemTray; -import java.util.Properties; -import java.util.logging.Level; -import java.util.logging.Logger; -import javax.swing.UIManager; -import javax.swing.UnsupportedLookAndFeelException; -import org.jdesktop.application.Application; -import org.jdesktop.application.SingleFrameApplication; -import net.i2p.desktopgui.persistence.PropertyManager; - -/** - * The main class of the application. - */ -public class Main extends SingleFrameApplication { - - /** - * At startup create and show the main frame of the application. - */ - @Override protected void startup() { - Properties props = PropertyManager.loadProps(); - - //First load: present screen with information (to help choose I2P settings) - if(props.getProperty(FIRSTLOAD).equals("true")) { - props.setProperty(FIRSTLOAD, "false"); - PropertyManager.saveProps(props); - new SpeedSelector(); //Start speed selector GUI - } - - if(SystemTray.isSupported()) { - tray = new Tray(); - } - else { //Alternative if SystemTray is not supported on the platform - } - } - - /** - * This method is to initialize the specified window by injecting resources. - * Windows shown in our application come fully initialized from the GUI - * builder, so this additional configuration is not needed. - */ - @Override protected void configureWindow(java.awt.Window root) { - } - - /** - * A convenient static getter for the application instance. - * @return the instance of Main - */ - public static Main getApplication() { - return Application.getInstance(Main.class); - } - - /** - * Main method launching the application. - */ - public static void main(String[] args) { - System.setProperty("java.awt.headless", "false"); //Make sure I2P is running in GUI mode for our application - try { - UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); - } catch (ClassNotFoundException ex) { - Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); - } catch (InstantiationException ex) { - Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); - } catch (IllegalAccessException ex) { - Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); - } catch (UnsupportedLookAndFeelException ex) { - Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); - } - - Main main = getApplication(); - main.launchForeverLoop(); - main.startup(); - } - - /** - * Avoids the app terminating because no Window is opened anymore. - * More info: http://java.sun.com/javase/6/docs/api/java/awt/doc-files/AWTThreadIssues.html#Autoshutdown - */ - public void launchForeverLoop() { - Runnable r = new Runnable() { - public void run() { - try { - Object o = new Object(); - synchronized (o) { - o.wait(); - } - } catch (InterruptedException ie) { - } - } - }; - Thread t = new Thread(r); - t.setDaemon(false); - t.start(); - } - - private Tray tray = null; - ///Indicates if this is the first time the application loads - ///(is only true at the very start of loading the first time!) - private static final String FIRSTLOAD = "firstLoad"; -} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/desktopgui/resources/Main.properties b/apps/desktopgui/src/net/i2p/desktopgui/desktopgui/resources/Main.properties deleted file mode 100644 index fb7218cea..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/desktopgui/resources/Main.properties +++ /dev/null @@ -1,11 +0,0 @@ -# Application global resources - -Application.name = desktopgui -Application.title = I2P Desktop GUI -Application.version = 0.7.1 -Application.vendor = I2P Developers -Application.homepage = http://www.i2p2.de -Application.description = An anonymous communication network. -Application.vendorId = I2P -Application.id = desktopgui -Application.lookAndFeel = system diff --git a/apps/desktopgui/src/net/i2p/desktopgui/desktopgui/resources/Main_nl_BE.properties b/apps/desktopgui/src/net/i2p/desktopgui/desktopgui/resources/Main_nl_BE.properties deleted file mode 100644 index 81107aca9..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/desktopgui/resources/Main_nl_BE.properties +++ /dev/null @@ -1,11 +0,0 @@ -# Application global resources - -Application.name = desktopgui -Application.title = I2P Desktop GUI -Application.version = 0.7.1 -Application.vendor = I2P Ontwikkelaars -Application.homepage = http://www.i2p2.de -Application.description = Een anoniem communicatienetwerk. -Application.vendorId = I2P -Application.id = desktopgui -Application.lookAndFeel = system diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/ClientTunnelWindow.form b/apps/desktopgui/src/net/i2p/desktopgui/gui/ClientTunnelWindow.form deleted file mode 100644 index 0f07284d5..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/ClientTunnelWindow.form +++ /dev/null @@ -1,396 +0,0 @@ - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/ClientTunnelWindow.java b/apps/desktopgui/src/net/i2p/desktopgui/gui/ClientTunnelWindow.java deleted file mode 100644 index b7102b3ce..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/ClientTunnelWindow.java +++ /dev/null @@ -1,434 +0,0 @@ -/* - * ClientTunnelWindow.java - * - * Created on 10-jun-2009, 16:49:12 - */ - -package net.i2p.desktopgui.gui; - -import net.i2p.i2ptunnel.web.EditBean; -import java.awt.event.ActionListener; - -/** - * - * @author mathias - */ -public class ClientTunnelWindow extends javax.swing.JFrame { - - /** Creates new form ClientTunnelWindow */ - public ClientTunnelWindow(int tunnelNumber, ActionListener al) { - initComponents(); - this.tunnelNumber = tunnelNumber; - this.al = al; - extraInitComponents(); - this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); - this.setSize(600, 600); - this.setLocationRelativeTo(null); - this.requestFocus(); - this.changeTunnelState.setVisible(false); //TODO: implement tunnel state change - this.setVisible(true); - } - - public void extraInitComponents() { - EditBean bean = new EditBean(); - if(!bean.isClient(tunnelNumber)) { - this.dispose(); - } - else { - this.tunnelName.setText(bean.getTunnelName(tunnelNumber)); - this.tunnelType.setText(bean.getTunnelType(tunnelNumber)); - this.tunnelPort.setText(bean.getClientPort(tunnelNumber)); - this.tunnelDestination.setText(bean.getClientDestination(tunnelNumber)); - - if(bean.getTunnelType(tunnelNumber).equals(TYPE_STREAMR_CLIENT)) { - tunnelProfile.setVisible(false); - tunnelProfileLabel.setVisible(false); - this.delayConnect.setVisible(false); - this.sharedClient.setVisible(false); - this.autoStart.setVisible(false); - } - else { - if(bean.isInteractive(tunnelNumber)) { - tunnelProfile.setSelectedIndex(TUNNEL_INTERACTIVE); - } - else { - tunnelProfile.setSelectedIndex(TUNNEL_BULK); - } - - this.delayConnect.setSelected(bean.shouldDelay(tunnelNumber)); - this.sharedClient.setSelected(bean.isSharedClient(tunnelNumber)); - this.autoStart.setSelected(bean.startAutomatically(tunnelNumber)); - } - - this.tunnelDepth.setSelectedIndex(bean.getTunnelDepth(tunnelNumber, 2)); - - int variance = bean.getTunnelVariance(tunnelNumber, 0); - if(variance == 0) { - this.depthVariance.setSelectedIndex(0); - } - else if(variance == 1) { - this.depthVariance.setSelectedIndex(1); - } - else if(variance == 2) { - this.depthVariance.setSelectedIndex(2); - } - else if(variance == -1) { - this.depthVariance.setSelectedIndex(3); - } - else if(variance == -2) { - this.depthVariance.setSelectedIndex(4); - } - - int tunnelQuantity = bean.getTunnelQuantity(tunnelNumber, 2) - 1; - if(tunnelQuantity >= 0 && tunnelQuantity <= 2) { - this.tunnelCount.setSelectedIndex(tunnelQuantity); - } - - int backupTunnelQuantity = bean.getTunnelBackupQuantity(tunnelNumber, 0); - if(backupTunnelQuantity >= 0 && backupTunnelQuantity <= 3) { - this.backupTunnelCount.setSelectedIndex(backupTunnelQuantity); - } - - - if(bean.getTunnelType(tunnelNumber).equals(TYPE_STREAMR_CLIENT)) { - this.reduceIdle.setVisible(false); - this.closeIdle.setVisible(false); - this.delayIdle.setVisible(false); - } - else { - this.reduceIdle.setSelected(bean.getReduce(tunnelNumber)); - this.closeIdle.setSelected(bean.getClose(tunnelNumber)); - this.delayIdle.setSelected(bean.getDelayOpen(tunnelNumber)); - } - } - } - - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ - @SuppressWarnings("unchecked") - // //GEN-BEGIN:initComponents - private void initComponents() { - - tunnelNameLabel = new javax.swing.JLabel(); - tunnelTypeLabel = new javax.swing.JLabel(); - tunnelPortLabel = new javax.swing.JLabel(); - tunnelDestinationLabel = new javax.swing.JLabel(); - tunnelProfileLabel = new javax.swing.JLabel(); - delayConnect = new javax.swing.JCheckBox(); - sharedClient = new javax.swing.JCheckBox(); - autoStart = new javax.swing.JCheckBox(); - jSeparator1 = new javax.swing.JSeparator(); - tunnelDepthLabel = new javax.swing.JLabel(); - depthVarianceLabel = new javax.swing.JLabel(); - tunnelCountLabel = new javax.swing.JLabel(); - backupTunnelCountLabel = new javax.swing.JLabel(); - jSeparator2 = new javax.swing.JSeparator(); - reduceIdle = new javax.swing.JCheckBox(); - closeIdle = new javax.swing.JCheckBox(); - delayIdle = new javax.swing.JCheckBox(); - jSeparator3 = new javax.swing.JSeparator(); - save = new javax.swing.JButton(); - cancel = new javax.swing.JButton(); - tunnelName = new javax.swing.JTextField(); - tunnelType = new javax.swing.JLabel(); - tunnelPort = new javax.swing.JTextField(); - tunnelDestination = new javax.swing.JTextField(); - tunnelProfile = new javax.swing.JComboBox(); - tunnelDepth = new javax.swing.JComboBox(); - depthVariance = new javax.swing.JComboBox(); - tunnelCount = new javax.swing.JComboBox(); - backupTunnelCount = new javax.swing.JComboBox(); - changeTunnelState = new javax.swing.JButton(); - - setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); - org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(net.i2p.desktopgui.desktopgui.Main.class).getContext().getResourceMap(ClientTunnelWindow.class); - setTitle(resourceMap.getString("Form.title")); // NOI18N - setName("Form"); // NOI18N - getContentPane().setLayout(null); - - tunnelNameLabel.setText(resourceMap.getString("tunnelNameLabel.text")); // NOI18N - tunnelNameLabel.setName("tunnelNameLabel"); // NOI18N - getContentPane().add(tunnelNameLabel); - tunnelNameLabel.setBounds(20, 20, 120, 17); - - tunnelTypeLabel.setText(resourceMap.getString("tunnelTypeLabel.text")); // NOI18N - tunnelTypeLabel.setName("tunnelTypeLabel"); // NOI18N - getContentPane().add(tunnelTypeLabel); - tunnelTypeLabel.setBounds(20, 50, 120, 17); - - tunnelPortLabel.setText(resourceMap.getString("tunnelPortLabel.text")); // NOI18N - tunnelPortLabel.setName("tunnelPortLabel"); // NOI18N - getContentPane().add(tunnelPortLabel); - tunnelPortLabel.setBounds(20, 80, 110, 17); - - tunnelDestinationLabel.setText(resourceMap.getString("tunnelDestinationLabel.text")); // NOI18N - tunnelDestinationLabel.setName("tunnelDestinationLabel"); // NOI18N - getContentPane().add(tunnelDestinationLabel); - tunnelDestinationLabel.setBounds(20, 110, 110, 17); - - tunnelProfileLabel.setText(resourceMap.getString("tunnelProfileLabel.text")); // NOI18N - tunnelProfileLabel.setName("tunnelProfileLabel"); // NOI18N - getContentPane().add(tunnelProfileLabel); - tunnelProfileLabel.setBounds(20, 140, 110, 17); - - delayConnect.setText(resourceMap.getString("delayConnect.text")); // NOI18N - delayConnect.setName("delayConnect"); // NOI18N - getContentPane().add(delayConnect); - delayConnect.setBounds(20, 170, 160, 22); - - sharedClient.setText(resourceMap.getString("sharedClient.text")); // NOI18N - sharedClient.setName("sharedClient"); // NOI18N - getContentPane().add(sharedClient); - sharedClient.setBounds(20, 200, 160, 22); - - autoStart.setText(resourceMap.getString("autoStart.text")); // NOI18N - autoStart.setName("autoStart"); // NOI18N - getContentPane().add(autoStart); - autoStart.setBounds(20, 230, 160, 22); - - jSeparator1.setName("jSeparator1"); // NOI18N - getContentPane().add(jSeparator1); - jSeparator1.setBounds(0, 510, 750, 10); - - tunnelDepthLabel.setText(resourceMap.getString("tunnelDepthLabel.text")); // NOI18N - tunnelDepthLabel.setName("tunnelDepthLabel"); // NOI18N - getContentPane().add(tunnelDepthLabel); - tunnelDepthLabel.setBounds(20, 280, 160, 17); - - depthVarianceLabel.setText(resourceMap.getString("depthVarianceLabel.text")); // NOI18N - depthVarianceLabel.setName("depthVarianceLabel"); // NOI18N - getContentPane().add(depthVarianceLabel); - depthVarianceLabel.setBounds(20, 310, 160, 17); - - tunnelCountLabel.setText(resourceMap.getString("tunnelCountLabel.text")); // NOI18N - tunnelCountLabel.setName("tunnelCountLabel"); // NOI18N - getContentPane().add(tunnelCountLabel); - tunnelCountLabel.setBounds(20, 340, 160, 17); - - backupTunnelCountLabel.setText(resourceMap.getString("backupTunnelCountLabel.text")); // NOI18N - backupTunnelCountLabel.setName("backupTunnelCountLabel"); // NOI18N - getContentPane().add(backupTunnelCountLabel); - backupTunnelCountLabel.setBounds(20, 370, 170, 17); - - jSeparator2.setName("jSeparator2"); // NOI18N - getContentPane().add(jSeparator2); - jSeparator2.setBounds(0, 260, 750, 10); - - reduceIdle.setText(resourceMap.getString("reduceIdle.text")); // NOI18N - reduceIdle.setName("reduceIdle"); // NOI18N - getContentPane().add(reduceIdle); - reduceIdle.setBounds(20, 420, 300, 22); - - closeIdle.setText(resourceMap.getString("closeIdle.text")); // NOI18N - closeIdle.setName("closeIdle"); // NOI18N - getContentPane().add(closeIdle); - closeIdle.setBounds(20, 450, 370, 22); - - delayIdle.setText(resourceMap.getString("delayIdle.text")); // NOI18N - delayIdle.setName("delayIdle"); // NOI18N - getContentPane().add(delayIdle); - delayIdle.setBounds(20, 480, 400, 22); - - jSeparator3.setName("jSeparator3"); // NOI18N - getContentPane().add(jSeparator3); - jSeparator3.setBounds(0, 400, 760, 10); - - save.setText(resourceMap.getString("save.text")); // NOI18N - save.setName("save"); // NOI18N - save.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - saveActionPerformed(evt); - } - }); - getContentPane().add(save); - save.setBounds(10, 520, 44, 29); - - cancel.setText(resourceMap.getString("cancel.text")); // NOI18N - cancel.setName("cancel"); // NOI18N - cancel.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cancelActionPerformed(evt); - } - }); - getContentPane().add(cancel); - cancel.setBounds(60, 520, 55, 29); - - tunnelName.setText(resourceMap.getString("tunnelName.text")); // NOI18N - tunnelName.setName("tunnelName"); // NOI18N - getContentPane().add(tunnelName); - tunnelName.setBounds(200, 20, 340, 27); - - tunnelType.setText(resourceMap.getString("tunnelType.text")); // NOI18N - tunnelType.setName("tunnelType"); // NOI18N - getContentPane().add(tunnelType); - tunnelType.setBounds(200, 50, 340, 20); - - tunnelPort.setText(resourceMap.getString("tunnelPort.text")); // NOI18N - tunnelPort.setName("tunnelPort"); // NOI18N - getContentPane().add(tunnelPort); - tunnelPort.setBounds(200, 70, 340, 27); - - tunnelDestination.setText(resourceMap.getString("tunnelDestination.text")); // NOI18N - tunnelDestination.setName("tunnelDestination"); // NOI18N - getContentPane().add(tunnelDestination); - tunnelDestination.setBounds(200, 100, 340, 27); - - tunnelProfile.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Interactive connection (Instant messaging)", "Bulk connection (Downloads, websites...)" })); - tunnelProfile.setName("tunnelProfile"); // NOI18N - getContentPane().add(tunnelProfile); - tunnelProfile.setBounds(200, 130, 340, 27); - - tunnelDepth.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0 hop tunnel (no anonymity, low latency)", "1 hop tunnel (low anonymity, low latency)", "2 hop tunnel (medium anonymity, medium latency)", "3 hop tunnel (high anonymity, high latency)" })); - tunnelDepth.setName("tunnelDepth"); // NOI18N - getContentPane().add(tunnelDepth); - tunnelDepth.setBounds(200, 280, 350, 27); - - depthVariance.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0 hop variance (no random, good performance)", "+ 0-1 hop variance (slightly random, lower performance)", "+ 0-2 hop variance (very random, lower performance)", "+/- 0-1 hop variance (slightly random, standard performance)", "+/- 0-2 hop variance (not recommended)" })); - depthVariance.setName("depthVariance"); // NOI18N - getContentPane().add(depthVariance); - depthVariance.setBounds(200, 310, 350, 27); - - tunnelCount.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1 tunnel (low bandwidth usage, low reliability)", "2 tunnels (standard bandwidth usage, standard reliability)", "3 tunnels (high bandwidth usage, high reliability)" })); - tunnelCount.setName("tunnelCount"); // NOI18N - getContentPane().add(tunnelCount); - tunnelCount.setBounds(200, 340, 350, 27); - - backupTunnelCount.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0 backup tunnels (no redundancy, no resource usage)", "1 backup tunnel (low redundancy, low resource usage)", "2 backup tunnels (medium redundancy, medium resource usage)", "3 backup tunnels (high redundancy, high resource usage)" })); - backupTunnelCount.setName("backupTunnelCount"); // NOI18N - getContentPane().add(backupTunnelCount); - backupTunnelCount.setBounds(200, 370, 350, 27); - - changeTunnelState.setText(resourceMap.getString("changeTunnelState.text")); // NOI18N - changeTunnelState.setName("changeTunnelState"); // NOI18N - getContentPane().add(changeTunnelState); - changeTunnelState.setBounds(160, 520, 150, 29); - - pack(); - }// //GEN-END:initComponents - - private void saveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveActionPerformed - EditBean bean = new EditBean(); - if(!bean.isClient(tunnelNumber)) { - al.actionPerformed(evt); - this.dispose(); - } - else { - bean.setTunnel("" + tunnelNumber); - bean.setName(tunnelName.getText()); - bean.setPort(tunnelPort.getText()); - bean.setTargetDestination(tunnelDestination.getText()); - if(!bean.getTunnelType(tunnelNumber).equals(TYPE_STREAMR_CLIENT)) { - if(tunnelProfile.getSelectedIndex() == TUNNEL_INTERACTIVE) { - bean.setProfile("interactive"); - } - else { - bean.setProfile("bulk"); - } - - if(delayConnect.isSelected()) { - bean.setConnectDelay("true"); - } - else { - bean.setConnectDelay("false"); - } - - if(sharedClient.isSelected()) { - bean.setShared(true); - } - else { - bean.setShared(false); - } - - if(autoStart.isSelected()) { - bean.setStartOnLoad("true"); - } - else { - } - } - bean.setTunnelDepth("" + tunnelDepth.getSelectedIndex()); - - int variance = depthVariance.getSelectedIndex(); - if(variance >= 0 && variance <= 2) { - bean.setTunnelVariance("" + variance); - } - else if(variance == 3) { - bean.setTunnelVariance("-1"); - } - else if(variance == 4) { - bean.setTunnelVariance("-2"); - } - - bean.setTunnelQuantity("" + tunnelCount.getSelectedIndex() + 1); - - bean.setTunnelBackupQuantity("" + backupTunnelCount.getSelectedIndex()); - - if(!bean.getTunnelType(tunnelNumber).equals(TYPE_STREAMR_CLIENT)) { - if(reduceIdle.isSelected()) { - bean.setReduce("true"); - } - else { - } - - if(closeIdle.isSelected()) { - bean.setClose("true"); - } - else { - } - - if(delayIdle.isSelected()) { - bean.setDelayOpen("true"); - } - } - - } - - al.actionPerformed(evt); - this.dispose(); -}//GEN-LAST:event_saveActionPerformed - - private void cancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelActionPerformed - al.actionPerformed(evt); - this.dispose(); - }//GEN-LAST:event_cancelActionPerformed - - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JCheckBox autoStart; - private javax.swing.JComboBox backupTunnelCount; - private javax.swing.JLabel backupTunnelCountLabel; - private javax.swing.JButton cancel; - private javax.swing.JButton changeTunnelState; - private javax.swing.JCheckBox closeIdle; - private javax.swing.JCheckBox delayConnect; - private javax.swing.JCheckBox delayIdle; - private javax.swing.JComboBox depthVariance; - private javax.swing.JLabel depthVarianceLabel; - private javax.swing.JSeparator jSeparator1; - private javax.swing.JSeparator jSeparator2; - private javax.swing.JSeparator jSeparator3; - private javax.swing.JCheckBox reduceIdle; - private javax.swing.JButton save; - private javax.swing.JCheckBox sharedClient; - private javax.swing.JComboBox tunnelCount; - private javax.swing.JLabel tunnelCountLabel; - private javax.swing.JComboBox tunnelDepth; - private javax.swing.JLabel tunnelDepthLabel; - private javax.swing.JTextField tunnelDestination; - private javax.swing.JLabel tunnelDestinationLabel; - private javax.swing.JTextField tunnelName; - private javax.swing.JLabel tunnelNameLabel; - private javax.swing.JTextField tunnelPort; - private javax.swing.JLabel tunnelPortLabel; - private javax.swing.JComboBox tunnelProfile; - private javax.swing.JLabel tunnelProfileLabel; - private javax.swing.JLabel tunnelType; - private javax.swing.JLabel tunnelTypeLabel; - // End of variables declaration//GEN-END:variables - private int tunnelNumber; - private ActionListener al; - private static final int TUNNEL_INTERACTIVE = 0; - private static final int TUNNEL_BULK = 1; - private static final String TYPE_STREAMR_CLIENT = "Streamr client"; -} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/GeneralConfiguration.form b/apps/desktopgui/src/net/i2p/desktopgui/gui/GeneralConfiguration.form deleted file mode 100644 index 589f5cee2..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/GeneralConfiguration.form +++ /dev/null @@ -1,645 +0,0 @@ - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - <Editor/> - <Renderer/> - </Column> - <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> - <Title resourceKey="clientTable.columnModel.title1"/> - <Editor/> - <Renderer/> - </Column> - <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> - <Title resourceKey="clientTable.columnModel.title2"/> - <Editor/> - <Renderer/> - </Column> - <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> - <Title resourceKey="clientTable.columnModel.title3"/> - <Editor/> - <Renderer/> - </Column> - </TableColumnModel> - </Property> - <Property name="name" type="java.lang.String" value="clientTable" noResource="true"/> - <Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor"> - <TableHeader reorderingAllowed="true" resizingAllowed="true"/> - </Property> - </Properties> - <Events> - <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="clientTableMouseClicked"/> - </Events> - </Component> - </SubComponents> - </Container> - <Container class="javax.swing.JScrollPane" name="serverFrame"> - <Properties> - <Property name="name" type="java.lang.String" value="serverFrame" noResource="true"/> - </Properties> - - <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> - <SubComponents> - <Component class="javax.swing.JTable" name="serverTable"> - <Properties> - <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor"> - <Table columnCount="3" rowCount="4"> - <Column editable="true" title="Name" type="java.lang.Object"/> - <Column editable="true" title="Address" type="java.lang.Object"/> - <Column editable="true" title="Status" type="java.lang.Object"/> - </Table> - </Property> - <Property name="columnModel" type="javax.swing.table.TableColumnModel" editor="org.netbeans.modules.form.editors2.TableColumnModelEditor"> - <TableColumnModel selectionModel="0"> - <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> - <Title resourceKey="serverTable.columnModel.title0"/> - <Editor/> - <Renderer/> - </Column> - <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> - <Title resourceKey="serverTable.columnModel.title1"/> - <Editor/> - <Renderer/> - </Column> - <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> - <Title resourceKey="serverTable.columnModel.title2"/> - <Editor/> - <Renderer/> - </Column> - </TableColumnModel> - </Property> - <Property name="name" type="java.lang.String" value="serverTable" noResource="true"/> - <Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor"> - <TableHeader reorderingAllowed="true" resizingAllowed="true"/> - </Property> - </Properties> - <Events> - <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="serverTableMouseClicked"/> - </Events> - </Component> - </SubComponents> - </Container> - <Component class="javax.swing.JLabel" name="tunnelsExplanation"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="tunnelsExplanation.text"/> - <Property name="name" type="java.lang.String" value="tunnelsExplanation" noResource="true"/> - </Properties> - </Component> - <Component class="javax.swing.JLabel" name="clientTunnelLabel"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="clientTunnelLabel.text"/> - <Property name="name" type="java.lang.String" value="clientTunnelLabel" noResource="true"/> - </Properties> - </Component> - <Component class="javax.swing.JLabel" name="serverTunnelLabel"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="serverTunnelLabel.text"/> - <Property name="name" type="java.lang.String" value="serverTunnelLabel" noResource="true"/> - </Properties> - </Component> - </SubComponents> - </Container> - <Container class="javax.swing.JPanel" name="networkPanel"> - <Properties> - <Property name="name" type="java.lang.String" value="networkPanel" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> - <JTabbedPaneConstraints tabName="Network"> - <Property name="tabTitle" type="java.lang.String" resourceKey="networkPanel.TabConstraints.tabTitle"/> - </JTabbedPaneConstraints> - </Constraint> - </Constraints> - - <Layout> - <DimensionLayout dim="0"> - <Group type="103" groupAlignment="0" attributes="0"> - <EmptySpace min="0" pref="562" max="32767" attributes="0"/> - </Group> - </DimensionLayout> - <DimensionLayout dim="1"> - <Group type="103" groupAlignment="0" attributes="0"> - <EmptySpace min="0" pref="388" max="32767" attributes="0"/> - </Group> - </DimensionLayout> - </Layout> - </Container> - <Container class="javax.swing.JPanel" name="advancedPanel"> - <Properties> - <Property name="name" type="java.lang.String" value="advancedPanel" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> - <JTabbedPaneConstraints tabName="Advanced"> - <Property name="tabTitle" type="java.lang.String" resourceKey="advancedPanel.TabConstraints.tabTitle"/> - </JTabbedPaneConstraints> - </Constraint> - </Constraints> - - <Layout> - <DimensionLayout dim="0"> - <Group type="103" groupAlignment="0" attributes="0"> - <EmptySpace min="0" pref="562" max="32767" attributes="0"/> - </Group> - </DimensionLayout> - <DimensionLayout dim="1"> - <Group type="103" groupAlignment="0" attributes="0"> - <EmptySpace min="0" pref="388" max="32767" attributes="0"/> - </Group> - </DimensionLayout> - </Layout> - </Container> - </SubComponents> - </Container> - </SubComponents> -</Form> diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/GeneralConfiguration.java b/apps/desktopgui/src/net/i2p/desktopgui/gui/GeneralConfiguration.java deleted file mode 100644 index 3e4a17fd2..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/GeneralConfiguration.java +++ /dev/null @@ -1,839 +0,0 @@ -/* - * GeneralConfiguration.java - * - * Created on 10 april 2009, 19:04 - */ - -package net.i2p.desktopgui.gui; - -import java.awt.Desktop; -import java.awt.event.ActionEvent; -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.logging.Level; -import java.util.logging.Logger; -import net.i2p.desktopgui.router.configuration.SpeedHelper; -import javax.swing.JComboBox; -import javax.swing.ButtonModel; -import javax.swing.JTextField; -import net.i2p.desktopgui.router.RouterHelper; -import net.i2p.desktopgui.router.configuration.SpeedHandler; -import net.i2p.desktopgui.router.configuration.UpdateHelper; -import net.i2p.router.web.NewsFetcher; -import net.i2p.desktopgui.router.configuration.UpdateHandler; -import java.util.Date; -import javax.swing.SwingWorker; -import net.i2p.i2ptunnel.web.IndexBean; -import javax.swing.table.DefaultTableModel; -import java.awt.event.ActionListener; - -/** - * - * @author mathias - */ -public class GeneralConfiguration extends javax.swing.JFrame { - - /** Creates new form GeneralConfiguration */ - public GeneralConfiguration() { - initComponents(); - extraInitComponents(); - this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); - this.setLocationRelativeTo(null); - this.requestFocus(); - this.setVisible(true); - } - - private void extraInitComponents() { - initSpeedTab(); - initUpdateTab(); - initTunnelTab(); - } - - private void initSpeedTab() { - try { - String inbound = SpeedHelper.getInboundBandwidth(); - String outbound = SpeedHelper.getOutboundBandwidth(); - - initSpeeds("" + Integer.parseInt(inbound)*8, "" + Integer.parseInt(outbound)*8); - initUsage("" + Integer.parseInt(inbound), "" + Integer.parseInt(outbound)); - } - catch(Exception e) { - e.printStackTrace(); - System.out.println("Exception noticed, probably running desktopgui in a debugger instead of along with I2P!?"); - initSpeeds("100", "100"); - initUsage("12", "12"); - } - } - - private void initUpdateTab() { - //Set update policy - String updatePolicy = UpdateHelper.getUpdatePolicy(); - if(updatePolicy.equals(UpdateHelper.NOTIFY_UPDATE_POLICY)) { - updateButtonGroup.setSelected(updateInform.getModel(), true); - } - else if(updatePolicy.equals(UpdateHelper.DOWNLOAD_UPDATE_POLICY)) { - updateButtonGroup.setSelected(updateDownload.getModel(), true); - } - else if(updatePolicy.equals(UpdateHelper.INSTALL_UPDATE_POLICY)) { - updateButtonGroup.setSelected(updateDownloadRestart.getModel(), true); - } - else { - System.out.println("desktopgui: no updates for you!"); - } - - //Check if an update is available - //TODO: move this method out of the routerconsole so desktopgui doesn't depend on routerconsole!!! - if(NewsFetcher.getInstance(RouterHelper.getContext()).updateAvailable()) { - updateNow.setVisible(true); - } - else { - updateNow.setVisible(false); - } - } - - private void initTunnelTab() { - while(((DefaultTableModel) clientTable.getModel()).getRowCount() > 0) { - ((DefaultTableModel) clientTable.getModel()).removeRow(0); - } - while(((DefaultTableModel) serverTable.getModel()).getRowCount() > 0) { - ((DefaultTableModel) serverTable.getModel()).removeRow(0); - } - IndexBean bean = new IndexBean(); - for(int i=0; i<bean.getTunnelCount(); i++) { - if(bean.isClient(i)) { - Object[] row = {bean.getTunnelName(i), bean.getTunnelType(i), - bean.getClientInterface(i) + ":" + bean.getClientPort(i), - getTunnelStatus(bean.getTunnelStatus(i))}; - ((DefaultTableModel) clientTable.getModel()).addRow(row); - } - else { - Object[] row = {bean.getTunnelName(i), - bean.getServerTarget(i), - getTunnelStatus(bean.getTunnelStatus(i))}; - ((DefaultTableModel) serverTable.getModel()).addRow(row); - } - } - } - - public String getTunnelStatus(int status) { - if(status == IndexBean.NOT_RUNNING) { - return "Not running"; - } - else if(status == IndexBean.RUNNING) { - return "Running"; - } - else if(status == IndexBean.STANDBY) { - return "Standby"; - } - else if(status == IndexBean.STARTING) { - return "Starting"; - } - else { - return "Error: status not found"; - } - } - - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ - @SuppressWarnings("unchecked") - // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents - private void initComponents() { - - updateButtonGroup = new javax.swing.ButtonGroup(); - applyPanel = new javax.swing.JPanel(); - cancel = new javax.swing.JToggleButton(); - ok = new javax.swing.JToggleButton(); - settingsPanel = new javax.swing.JTabbedPane(); - speedPanel = new javax.swing.JPanel(); - uploadSpeedLabel = new javax.swing.JLabel(); - downloadSpeedLabel = new javax.swing.JLabel(); - uploadspeed = new javax.swing.JTextField(); - downloadspeed = new javax.swing.JTextField(); - uploadkbps = new javax.swing.JComboBox(); - downloadkbps = new javax.swing.JComboBox(); - uploadUsageLabel = new javax.swing.JLabel(); - downloadUsageLabel = new javax.swing.JLabel(); - uploadgb = new javax.swing.JTextField(); - downloadgb = new javax.swing.JTextField(); - gbUploadLabel = new javax.swing.JLabel(); - gbDownloadLabel = new javax.swing.JLabel(); - uploadDownloadExplanation = new javax.swing.JLabel(); - updatesPanel = new javax.swing.JPanel(); - updateMethod = new javax.swing.JLabel(); - updateInform = new javax.swing.JRadioButton(); - updateDownload = new javax.swing.JRadioButton(); - updateDownloadRestart = new javax.swing.JRadioButton(); - checkUpdates = new javax.swing.JToggleButton(); - updateNow = new javax.swing.JToggleButton(); - advancedUpdateConfig = new javax.swing.JToggleButton(); - tunnelPanel = new javax.swing.JPanel(); - clientFrame = new javax.swing.JScrollPane(); - clientTable = new javax.swing.JTable(); - serverFrame = new javax.swing.JScrollPane(); - serverTable = new javax.swing.JTable(); - tunnelsExplanation = new javax.swing.JLabel(); - clientTunnelLabel = new javax.swing.JLabel(); - serverTunnelLabel = new javax.swing.JLabel(); - networkPanel = new javax.swing.JPanel(); - advancedPanel = new javax.swing.JPanel(); - - setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); - org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(net.i2p.desktopgui.desktopgui.Main.class).getContext().getResourceMap(GeneralConfiguration.class); - setTitle(resourceMap.getString("Form.title")); // NOI18N - setName("Form"); // NOI18N - - applyPanel.setName("applyPanel"); // NOI18N - - cancel.setText(resourceMap.getString("cancel.text")); // NOI18N - cancel.setName("cancel"); // NOI18N - cancel.addMouseListener(new java.awt.event.MouseAdapter() { - public void mouseClicked(java.awt.event.MouseEvent evt) { - cancelMouseClicked(evt); - } - }); - - ok.setText(resourceMap.getString("ok.text")); // NOI18N - ok.setName("ok"); // NOI18N - ok.addMouseListener(new java.awt.event.MouseAdapter() { - public void mouseClicked(java.awt.event.MouseEvent evt) { - okMouseClicked(evt); - } - }); - - javax.swing.GroupLayout applyPanelLayout = new javax.swing.GroupLayout(applyPanel); - applyPanel.setLayout(applyPanelLayout); - applyPanelLayout.setHorizontalGroup( - applyPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, applyPanelLayout.createSequentialGroup() - .addContainerGap(475, Short.MAX_VALUE) - .addComponent(ok) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cancel) - .addContainerGap()) - ); - applyPanelLayout.setVerticalGroup( - applyPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(applyPanelLayout.createSequentialGroup() - .addGroup(applyPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cancel) - .addComponent(ok)) - .addContainerGap(14, Short.MAX_VALUE)) - ); - - settingsPanel.setName("settingsPanel"); // NOI18N - - speedPanel.setName("speedPanel"); // NOI18N - speedPanel.setLayout(null); - - uploadSpeedLabel.setText(resourceMap.getString("uploadSpeedLabel.text")); // NOI18N - uploadSpeedLabel.setName("uploadSpeedLabel"); // NOI18N - speedPanel.add(uploadSpeedLabel); - uploadSpeedLabel.setBounds(20, 20, 140, 30); - - downloadSpeedLabel.setText(resourceMap.getString("downloadSpeedLabel.text")); // NOI18N - downloadSpeedLabel.setName("downloadSpeedLabel"); // NOI18N - speedPanel.add(downloadSpeedLabel); - downloadSpeedLabel.setBounds(20, 60, 140, 30); - - uploadspeed.setText(resourceMap.getString("uploadspeed.text")); // NOI18N - uploadspeed.setName("uploadspeed"); // NOI18N - uploadspeed.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyReleased(java.awt.event.KeyEvent evt) { - speedKeyReleased(evt); - } - }); - speedPanel.add(uploadspeed); - uploadspeed.setBounds(160, 20, 77, 27); - - downloadspeed.setText(resourceMap.getString("downloadspeed.text")); // NOI18N - downloadspeed.setName("downloadspeed"); // NOI18N - downloadspeed.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyReleased(java.awt.event.KeyEvent evt) { - speedKeyReleased(evt); - } - }); - speedPanel.add(downloadspeed); - downloadspeed.setBounds(160, 60, 77, 27); - - uploadkbps.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "kbps", "kBps" })); - uploadkbps.setName("uploadkbps"); // NOI18N - uploadkbps.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - uploadkbpsActionPerformed(evt); - } - }); - speedPanel.add(uploadkbps); - uploadkbps.setBounds(240, 20, 68, 27); - - downloadkbps.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "kbps", "kBps" })); - downloadkbps.setName("downloadkbps"); // NOI18N - downloadkbps.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - downloadkbpsActionPerformed(evt); - } - }); - speedPanel.add(downloadkbps); - downloadkbps.setBounds(240, 60, 68, 27); - - uploadUsageLabel.setText(resourceMap.getString("uploadUsageLabel.text")); // NOI18N - uploadUsageLabel.setName("uploadUsageLabel"); // NOI18N - speedPanel.add(uploadUsageLabel); - uploadUsageLabel.setBounds(330, 20, 97, 30); - - downloadUsageLabel.setText(resourceMap.getString("downloadUsageLabel.text")); // NOI18N - downloadUsageLabel.setName("downloadUsageLabel"); // NOI18N - speedPanel.add(downloadUsageLabel); - downloadUsageLabel.setBounds(330, 60, 97, 30); - - uploadgb.setText(resourceMap.getString("uploadgb.text")); // NOI18N - uploadgb.setName("uploadgb"); // NOI18N - uploadgb.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyReleased(java.awt.event.KeyEvent evt) { - monthKeyReleased(evt); - } - }); - speedPanel.add(uploadgb); - uploadgb.setBounds(440, 20, 60, 27); - - downloadgb.setText(resourceMap.getString("downloadgb.text")); // NOI18N - downloadgb.setName("downloadgb"); // NOI18N - downloadgb.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyReleased(java.awt.event.KeyEvent evt) { - monthKeyReleased(evt); - } - }); - speedPanel.add(downloadgb); - downloadgb.setBounds(440, 60, 60, 27); - - gbUploadLabel.setText(resourceMap.getString("gbUploadLabel.text")); // NOI18N - gbUploadLabel.setName("gbUploadLabel"); // NOI18N - speedPanel.add(gbUploadLabel); - gbUploadLabel.setBounds(510, 20, 19, 30); - - gbDownloadLabel.setText(resourceMap.getString("gbDownloadLabel.text")); // NOI18N - gbDownloadLabel.setName("gbDownloadLabel"); // NOI18N - speedPanel.add(gbDownloadLabel); - gbDownloadLabel.setBounds(510, 60, 19, 30); - - uploadDownloadExplanation.setText(resourceMap.getString("uploadDownloadExplanation.text")); // NOI18N - uploadDownloadExplanation.setName("uploadDownloadExplanation"); // NOI18N - speedPanel.add(uploadDownloadExplanation); - uploadDownloadExplanation.setBounds(20, 100, 520, 70); - - settingsPanel.addTab(resourceMap.getString("speedPanel.TabConstraints.tabTitle"), speedPanel); // NOI18N - - updatesPanel.setName("updatesPanel"); // NOI18N - - updateMethod.setText(resourceMap.getString("updateMethod.text")); // NOI18N - updateMethod.setName("updateMethod"); // NOI18N - - updateButtonGroup.add(updateInform); - updateInform.setText(resourceMap.getString("updateInform.text")); // NOI18N - updateInform.setName("updateInform"); // NOI18N - - updateButtonGroup.add(updateDownload); - updateDownload.setText(resourceMap.getString("updateDownload.text")); // NOI18N - updateDownload.setName("updateDownload"); // NOI18N - - updateButtonGroup.add(updateDownloadRestart); - updateDownloadRestart.setText(resourceMap.getString("updateDownloadRestart.text")); // NOI18N - updateDownloadRestart.setName("updateDownloadRestart"); // NOI18N - - checkUpdates.setText(resourceMap.getString("checkUpdates.text")); // NOI18N - checkUpdates.setName("checkUpdates"); // NOI18N - checkUpdates.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - checkUpdatesActionPerformed(evt); - } - }); - - updateNow.setText(resourceMap.getString("updateNow.text")); // NOI18N - updateNow.setName("updateNow"); // NOI18N - updateNow.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - updateNowActionPerformed(evt); - } - }); - - advancedUpdateConfig.setText(resourceMap.getString("advancedUpdateConfig.text")); // NOI18N - advancedUpdateConfig.setName("advancedUpdateConfig"); // NOI18N - advancedUpdateConfig.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - advancedUpdateConfigActionPerformed(evt); - } - }); - - javax.swing.GroupLayout updatesPanelLayout = new javax.swing.GroupLayout(updatesPanel); - updatesPanel.setLayout(updatesPanelLayout); - updatesPanelLayout.setHorizontalGroup( - updatesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(updatesPanelLayout.createSequentialGroup() - .addGroup(updatesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(updatesPanelLayout.createSequentialGroup() - .addGap(20, 20, 20) - .addGroup(updatesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(updateMethod) - .addGroup(updatesPanelLayout.createSequentialGroup() - .addComponent(checkUpdates) - .addGap(18, 18, 18) - .addComponent(updateNow)))) - .addGroup(updatesPanelLayout.createSequentialGroup() - .addGap(40, 40, 40) - .addGroup(updatesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(updateInform, javax.swing.GroupLayout.DEFAULT_SIZE, 377, Short.MAX_VALUE) - .addComponent(updateDownload, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(updateDownloadRestart, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) - .addContainerGap()) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, updatesPanelLayout.createSequentialGroup() - .addContainerGap(339, Short.MAX_VALUE) - .addComponent(advancedUpdateConfig) - .addContainerGap()) - ); - updatesPanelLayout.setVerticalGroup( - updatesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(updatesPanelLayout.createSequentialGroup() - .addContainerGap() - .addComponent(updateMethod) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(updateInform) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(updateDownload) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(updateDownloadRestart) - .addGap(18, 18, 18) - .addGroup(updatesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(checkUpdates) - .addComponent(updateNow)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 181, Short.MAX_VALUE) - .addComponent(advancedUpdateConfig) - .addContainerGap()) - ); - - settingsPanel.addTab(resourceMap.getString("updatesPanel.TabConstraints.tabTitle"), updatesPanel); // NOI18N - - tunnelPanel.setName("tunnelPanel"); // NOI18N - - clientFrame.setName("clientFrame"); // NOI18N - - clientTable.setModel(new javax.swing.table.DefaultTableModel( - new Object [][] { - - }, - new String [] { - "Name", "Type", "Address", "Status" - } - )); - clientTable.setName("clientTable"); // NOI18N - clientTable.addMouseListener(new java.awt.event.MouseAdapter() { - public void mouseClicked(java.awt.event.MouseEvent evt) { - clientTableMouseClicked(evt); - } - }); - clientFrame.setViewportView(clientTable); - clientTable.getColumnModel().getColumn(0).setHeaderValue(resourceMap.getString("clientTable.columnModel.title0")); // NOI18N - clientTable.getColumnModel().getColumn(1).setHeaderValue(resourceMap.getString("clientTable.columnModel.title1")); // NOI18N - clientTable.getColumnModel().getColumn(2).setHeaderValue(resourceMap.getString("clientTable.columnModel.title2")); // NOI18N - clientTable.getColumnModel().getColumn(3).setHeaderValue(resourceMap.getString("clientTable.columnModel.title3")); // NOI18N - - serverFrame.setName("serverFrame"); // NOI18N - - serverTable.setModel(new javax.swing.table.DefaultTableModel( - new Object [][] { - {null, null, null}, - {null, null, null}, - {null, null, null}, - {null, null, null} - }, - new String [] { - "Name", "Address", "Status" - } - )); - serverTable.setName("serverTable"); // NOI18N - serverTable.addMouseListener(new java.awt.event.MouseAdapter() { - public void mouseClicked(java.awt.event.MouseEvent evt) { - serverTableMouseClicked(evt); - } - }); - serverFrame.setViewportView(serverTable); - serverTable.getColumnModel().getColumn(0).setHeaderValue(resourceMap.getString("serverTable.columnModel.title0")); // NOI18N - serverTable.getColumnModel().getColumn(1).setHeaderValue(resourceMap.getString("serverTable.columnModel.title1")); // NOI18N - serverTable.getColumnModel().getColumn(2).setHeaderValue(resourceMap.getString("serverTable.columnModel.title2")); // NOI18N - - tunnelsExplanation.setText(resourceMap.getString("tunnelsExplanation.text")); // NOI18N - tunnelsExplanation.setName("tunnelsExplanation"); // NOI18N - - clientTunnelLabel.setText(resourceMap.getString("clientTunnelLabel.text")); // NOI18N - clientTunnelLabel.setName("clientTunnelLabel"); // NOI18N - - serverTunnelLabel.setText(resourceMap.getString("serverTunnelLabel.text")); // NOI18N - serverTunnelLabel.setName("serverTunnelLabel"); // NOI18N - - javax.swing.GroupLayout tunnelPanelLayout = new javax.swing.GroupLayout(tunnelPanel); - tunnelPanel.setLayout(tunnelPanelLayout); - tunnelPanelLayout.setHorizontalGroup( - tunnelPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, tunnelPanelLayout.createSequentialGroup() - .addContainerGap() - .addGroup(tunnelPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(tunnelsExplanation, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 538, Short.MAX_VALUE) - .addComponent(serverFrame, javax.swing.GroupLayout.DEFAULT_SIZE, 538, Short.MAX_VALUE) - .addComponent(clientTunnelLabel, javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(clientFrame, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 538, Short.MAX_VALUE) - .addComponent(serverTunnelLabel, javax.swing.GroupLayout.Alignment.LEADING)) - .addContainerGap()) - ); - tunnelPanelLayout.setVerticalGroup( - tunnelPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(tunnelPanelLayout.createSequentialGroup() - .addContainerGap() - .addComponent(clientTunnelLabel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(clientFrame, javax.swing.GroupLayout.DEFAULT_SIZE, 119, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(serverTunnelLabel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(serverFrame, javax.swing.GroupLayout.DEFAULT_SIZE, 122, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(tunnelsExplanation, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(32, 32, 32)) - ); - - settingsPanel.addTab(resourceMap.getString("tunnelPanel.TabConstraints.tabTitle"), tunnelPanel); // NOI18N - - networkPanel.setName("networkPanel"); // NOI18N - - javax.swing.GroupLayout networkPanelLayout = new javax.swing.GroupLayout(networkPanel); - networkPanel.setLayout(networkPanelLayout); - networkPanelLayout.setHorizontalGroup( - networkPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 562, Short.MAX_VALUE) - ); - networkPanelLayout.setVerticalGroup( - networkPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 388, Short.MAX_VALUE) - ); - - settingsPanel.addTab(resourceMap.getString("networkPanel.TabConstraints.tabTitle"), networkPanel); // NOI18N - - advancedPanel.setName("advancedPanel"); // NOI18N - - javax.swing.GroupLayout advancedPanelLayout = new javax.swing.GroupLayout(advancedPanel); - advancedPanel.setLayout(advancedPanelLayout); - advancedPanelLayout.setHorizontalGroup( - advancedPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 562, Short.MAX_VALUE) - ); - advancedPanelLayout.setVerticalGroup( - advancedPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 388, Short.MAX_VALUE) - ); - - settingsPanel.addTab(resourceMap.getString("advancedPanel.TabConstraints.tabTitle"), advancedPanel); // NOI18N - - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(applyPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(layout.createSequentialGroup() - .addGap(12, 12, 12) - .addComponent(settingsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 566, Short.MAX_VALUE)) - ); - layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addComponent(settingsPanel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(applyPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - ); - - pack(); - }// </editor-fold>//GEN-END:initComponents - - private void speedKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_speedKeyReleased - try { - String upload = ""; - if(uploadkbps.getSelectedIndex() == KILOBIT) - upload = "" + Integer.parseInt(uploadspeed.getText())/8; - else - upload = uploadspeed.getText(); - String download = ""; - if(downloadkbps.getSelectedIndex() == KILOBIT) - download = "" + Integer.parseInt(downloadspeed.getText())/8; - else - download = downloadspeed.getText(); - initUsage(upload, download); - } - catch(NumberFormatException e) { - e.printStackTrace(); - return; - } -}//GEN-LAST:event_speedKeyReleased - -private void uploadkbpsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_uploadkbpsActionPerformed - kbpsSwitchPerformed(uploadkbps, uploadspeed); -}//GEN-LAST:event_uploadkbpsActionPerformed - -private void downloadkbpsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_downloadkbpsActionPerformed - kbpsSwitchPerformed(downloadkbps, downloadspeed); -}//GEN-LAST:event_downloadkbpsActionPerformed - -private void monthKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_monthKeyReleased - try { - int uploadMonthValue = Integer.parseInt(uploadgb.getText()); - int downloadMonthValue = Integer.parseInt(downloadgb.getText()); - - String upload = ""; - String burstUpload = ""; - String download = ""; - String burstDownload = ""; - - if(uploadkbps.getSelectedIndex() == KILOBIT) - upload = "" + SpeedHelper.calculateSpeed(uploadMonthValue)*8; //kbit - else - upload = "" + SpeedHelper.calculateSpeed(uploadMonthValue); //kbyte - - if(downloadkbps.getSelectedIndex() == KILOBIT) - download = "" + SpeedHelper.calculateSpeed(downloadMonthValue)*8; //kbit - else - download = "" + SpeedHelper.calculateSpeed(downloadMonthValue); //kbyte - - initSpeeds(upload, download); - } - catch(NumberFormatException e) { - e.printStackTrace(); - return; - } -}//GEN-LAST:event_monthKeyReleased - -private void cancelMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_cancelMouseClicked - this.dispose(); -}//GEN-LAST:event_cancelMouseClicked - -private void okMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_okMouseClicked - saveSpeeds(); - saveUpdatePolicy(); - this.dispose(); -}//GEN-LAST:event_okMouseClicked - -private void checkUpdatesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkUpdatesActionPerformed - long current = new Date().getTime(); - if(current < newsLastFetched + 5*60*1000) { - return; - } - checkUpdates.setText("Checking for updates"); - checkUpdates.setEnabled(false); - newsLastFetched = current; - SwingWorker sw = new SwingWorker() { - - @Override - protected Object doInBackground() throws Exception { - NewsFetcher.getInstance(RouterHelper.getContext()).fetchNews(); - return null; - } - - @Override - protected void done() { - checkUpdates.setText("Check for updates now"); - checkUpdates.setEnabled(true); - if(NewsFetcher.getInstance(RouterHelper.getContext()).updateAvailable()) { - updateNow.setVisible(true); - } - } - - }; -}//GEN-LAST:event_checkUpdatesActionPerformed - -private void updateNowActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_updateNowActionPerformed - SwingWorker sw = new SwingWorker() { - - @Override - protected Object doInBackground() throws Exception { - new net.i2p.router.web.UpdateHandler().update(); - return null; - } - - }; - updateNow.setEnabled(false); - updateNow.setText("Updating..."); - checkUpdates.setEnabled(false); - -}//GEN-LAST:event_updateNowActionPerformed - -private void advancedUpdateConfigActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_advancedUpdateConfigActionPerformed - try { - Desktop.getDesktop().browse(new URI("http://127.0.0.1:7657/configupdate.jsp")); - } catch (URISyntaxException ex) { - Logger.getLogger(GeneralConfiguration.class.getName()).log(Level.SEVERE, null, ex); - } - catch (IOException ex) { - Logger.getLogger(GeneralConfiguration.class.getName()).log(Level.SEVERE, null, ex); - } -}//GEN-LAST:event_advancedUpdateConfigActionPerformed - -private void clientTableMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_clientTableMouseClicked - int row = clientTable.getSelectedRow(); - if(row == -1) { //No selected row - return; - } - else { - IndexBean bean = new IndexBean(); - /* - * TODO: This is not entirely good: if one adds/removes a tunnel without desktopgui, this number will be wrong - */ - int clientNumber = 0; - int i = 0; - for(clientNumber=0; clientNumber<bean.getTunnelCount(); clientNumber++) { - if(bean.isClient(clientNumber)) { - if(i == row) { - break; - } - i++; - } - } - new ClientTunnelWindow(clientNumber, new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - initTunnelTab(); - } - - }); - } -}//GEN-LAST:event_clientTableMouseClicked - -private void serverTableMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_serverTableMouseClicked - int row = serverTable.getSelectedRow(); - if(row == -1) { //No selected row - return; - } - else { - IndexBean bean = new IndexBean(); - /* - * TODO: This is not entirely good: if one adds/removes a tunnel without desktopgui, this number will be wrong - */ - int serverNumber = 0; - int i = 0; - for(serverNumber=0; serverNumber<bean.getTunnelCount(); serverNumber++) { - if(!bean.isClient(serverNumber)) { - if(i == row) { - break; - } - i++; - } - } - new ServerTunnelWindow(serverNumber, new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - initTunnelTab(); - } - - }); - } -}//GEN-LAST:event_serverTableMouseClicked - - protected void initUsage(String upload, String download) { - uploadgb.setText("" + SpeedHelper.calculateMonthlyUsage(Integer.parseInt(upload))); - downloadgb.setText("" + SpeedHelper.calculateMonthlyUsage(Integer.parseInt(download))); - } - - protected void initSpeeds(String upload, String download) { - uploadspeed.setText(upload); - downloadspeed.setText(download); - } - - private void kbpsSwitchPerformed(JComboBox kbps, JTextField speed) { - int index = kbps.getSelectedIndex(); - int previous = Integer.parseInt(speed.getText()); - if(index == KILOBIT) { - speed.setText("" + previous*8); - } - else { - speed.setText("" + previous/8); - } - } - - protected void saveSpeeds() { - int maxDownload = Integer.parseInt(downloadspeed.getText()); - int maxUpload = Integer.parseInt(uploadspeed.getText()); - if(uploadkbps.getSelectedIndex() == KILOBIT) { - SpeedHandler.setOutboundBandwidth(maxUpload/8); - SpeedHandler.setOutboundBurstBandwidth(maxUpload/8); - } - else { - SpeedHandler.setOutboundBandwidth(maxUpload); - SpeedHandler.setOutboundBurstBandwidth(maxUpload); - } - if(downloadkbps.getSelectedIndex() == KILOBIT) { - SpeedHandler.setInboundBandwidth(maxDownload/8); - SpeedHandler.setInboundBurstBandwidth(maxDownload/8); - } - else { - SpeedHandler.setInboundBandwidth(maxDownload); - SpeedHandler.setInboundBurstBandwidth(maxDownload); - } - } - - protected void saveUpdatePolicy() { - ButtonModel policyButton = updateButtonGroup.getSelection(); - if(policyButton.equals(updateInform.getModel())) { - UpdateHandler.setUpdatePolicy(UpdateHelper.NOTIFY_UPDATE_POLICY); - } - else if(policyButton.equals(updateDownload.getModel())) { - UpdateHandler.setUpdatePolicy(UpdateHelper.DOWNLOAD_UPDATE_POLICY); - } - else if(policyButton.equals(updateDownloadRestart.getModel())) { - UpdateHandler.setUpdatePolicy(UpdateHelper.INSTALL_UPDATE_POLICY); - } - } - - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JPanel advancedPanel; - private javax.swing.JToggleButton advancedUpdateConfig; - private javax.swing.JPanel applyPanel; - private javax.swing.JToggleButton cancel; - private javax.swing.JToggleButton checkUpdates; - private javax.swing.JScrollPane clientFrame; - private javax.swing.JTable clientTable; - private javax.swing.JLabel clientTunnelLabel; - private javax.swing.JLabel downloadSpeedLabel; - private javax.swing.JLabel downloadUsageLabel; - private javax.swing.JTextField downloadgb; - private javax.swing.JComboBox downloadkbps; - private javax.swing.JTextField downloadspeed; - private javax.swing.JLabel gbDownloadLabel; - private javax.swing.JLabel gbUploadLabel; - private javax.swing.JPanel networkPanel; - private javax.swing.JToggleButton ok; - private javax.swing.JScrollPane serverFrame; - private javax.swing.JTable serverTable; - private javax.swing.JLabel serverTunnelLabel; - private javax.swing.JTabbedPane settingsPanel; - private javax.swing.JPanel speedPanel; - private javax.swing.JPanel tunnelPanel; - private javax.swing.JLabel tunnelsExplanation; - private javax.swing.ButtonGroup updateButtonGroup; - private javax.swing.JRadioButton updateDownload; - private javax.swing.JRadioButton updateDownloadRestart; - private javax.swing.JRadioButton updateInform; - private javax.swing.JLabel updateMethod; - private javax.swing.JToggleButton updateNow; - private javax.swing.JPanel updatesPanel; - private javax.swing.JLabel uploadDownloadExplanation; - private javax.swing.JLabel uploadSpeedLabel; - private javax.swing.JLabel uploadUsageLabel; - private javax.swing.JTextField uploadgb; - private javax.swing.JComboBox uploadkbps; - private javax.swing.JTextField uploadspeed; - // End of variables declaration//GEN-END:variables - - public static final int KILOBIT = 0; - public static final int KILOBYTE = 1; - - private long newsLastFetched = 0; -} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/JPopupTrayIcon.java b/apps/desktopgui/src/net/i2p/desktopgui/gui/JPopupTrayIcon.java deleted file mode 100644 index 1f62df2c2..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/JPopupTrayIcon.java +++ /dev/null @@ -1,185 +0,0 @@ -/* -* Created on Sep 15, 2008 5:51:33 PM -*/ - -/* - * This class is part of fishfarm project: https://fishfarm.dev.java.net/ - * It is licensed under the GPL version 2.0 with Classpath Exception. - * - * Copyright (C) 2008 Michael Bien - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -package net.i2p.desktopgui.gui; - -import java.awt.Dimension; -import java.awt.Frame; -import java.awt.GraphicsEnvironment; -import java.awt.Image; -import java.awt.Point; -import java.awt.PopupMenu; -import java.awt.TrayIcon; -import java.awt.Window; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import javax.swing.JDialog; -import javax.swing.JPopupMenu; -import javax.swing.JWindow; -import javax.swing.RootPaneContainer; -import javax.swing.event.PopupMenuEvent; -import javax.swing.event.PopupMenuListener; -import java.util.Date; - - - -/** - * JPopupMenu compatible TrayIcon based on Alexander Potochkin's JXTrayIcon - * (http://weblogs.java.net/blog/alexfromsun/archive/2008/02/jtrayicon_updat.html) - * but uses a JWindow instead of a JDialog to workaround some bugs on linux. - * - * @author Michael Bien - */ -public class JPopupTrayIcon extends TrayIcon { - - private JPopupMenu menu; - - private Window window; - private PopupMenuListener popupListener; - - private final static boolean IS_WINDOWS = System.getProperty("os.name").toLowerCase().contains("windows"); - - private static MouseEvent previous = null; - private static Date previousTime = new Date(); - private static Date time = new Date(); - - public JPopupTrayIcon(Image image) { - super(image); - init(); - } - - public JPopupTrayIcon(Image image, String tooltip) { - super(image, tooltip); - init(); - } - - public JPopupTrayIcon(Image image, String tooltip, PopupMenu popup) { - super(image, tooltip, popup); - init(); - } - - public JPopupTrayIcon(Image image, String tooltip, JPopupMenu popup) { - super(image, tooltip); - init(); - setJPopupMenu(popup); - } - - - private final void init() { - - - popupListener = new PopupMenuListener() { - - @Override - public void popupMenuWillBecomeVisible(PopupMenuEvent e) { - //System.out.println("popupMenuWillBecomeVisible"); - } - - @Override - public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { - //System.out.println("popupMenuWillBecomeInvisible"); - if(window != null) { - window.dispose(); - window = null; - } - } - - @Override - public void popupMenuCanceled(PopupMenuEvent e) { -// System.out.println("popupMenuCanceled"); - if(window != null) { - window.dispose(); - window = null; - } - } - }; - - addMouseListener(new MouseAdapter() { - @Override - public void mousePressed(MouseEvent e) { - //System.out.println("Pressed " + e.getPoint()); - showJPopupMenu(e, previous); - previous = e; - previousTime = time; - time = new Date(); - } - - @Override - public void mouseReleased(MouseEvent e) { - //System.out.println("Released " + e.getPoint()); - showJPopupMenu(e, previous); - previous = e; - previousTime = time; - time = new Date(); - } - }); - - } - - private final void showJPopupMenu(MouseEvent e, MouseEvent previous) { - if((e.isPopupTrigger() || previous.isPopupTrigger()) && (time.getTime() - previousTime.getTime() < 1000) && menu != null) { - if (window == null) { - - if(IS_WINDOWS) { - window = new JDialog((Frame)null); - ((JDialog)window).setUndecorated(true); - }else{ - window = new JWindow((Frame)null); - } - window.setAlwaysOnTop(true); - Dimension size = menu.getPreferredSize(); - - Point centerPoint = GraphicsEnvironment.getLocalGraphicsEnvironment().getCenterPoint(); - if(e.getY() > centerPoint.getY()) - window.setLocation(e.getX(), e.getY() - size.height); - else - window.setLocation(e.getX(), e.getY()); - - window.setVisible(true); - - menu.show(((RootPaneContainer)window).getContentPane(), 0, 0); - - // popup works only for focused windows - window.toFront(); - - } - } - } - - - public final JPopupMenu getJPopupMenu() { - return menu; - } - - public final void setJPopupMenu(JPopupMenu menu) { - if (this.menu != null) { - this.menu.removePopupMenuListener(popupListener); - } - this.menu = menu; - menu.addPopupMenuListener(popupListener); - } - -} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/LogViewer.form b/apps/desktopgui/src/net/i2p/desktopgui/gui/LogViewer.form deleted file mode 100644 index ed2441319..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/LogViewer.form +++ /dev/null @@ -1,103 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> - -<Form version="1.5" maxVersion="1.6" type="org.netbeans.modules.form.forminfo.JFrameFormInfo"> - <Properties> - <Property name="defaultCloseOperation" type="int" value="3"/> - <Property name="title" type="java.lang.String" resourceKey="Form.title"/> - <Property name="name" type="java.lang.String" value="Form" noResource="true"/> - </Properties> - <SyntheticProperties> - <SyntheticProperty name="formSizePolicy" type="int" value="1"/> - </SyntheticProperties> - <AuxValues> - <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/> - <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/> - <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> - <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> - <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/> - <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/> - <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> - <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> - <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> - </AuxValues> - - <Layout> - <DimensionLayout dim="0"> - <Group type="103" groupAlignment="0" attributes="0"> - <Group type="102" alignment="0" attributes="0"> - <EmptySpace min="12" pref="12" max="12" attributes="0"/> - <Component id="explanationText" min="-2" pref="561" max="-2" attributes="0"/> - <EmptySpace max="-2" attributes="0"/> - </Group> - <Component id="textScroll" alignment="1" pref="722" max="32767" attributes="0"/> - <Group type="102" alignment="0" attributes="0"> - <EmptySpace max="-2" attributes="0"/> - <Component id="refreshButton" min="-2" max="-2" attributes="0"/> - <EmptySpace type="separate" max="-2" attributes="0"/> - <Component id="clearButton" min="-2" max="-2" attributes="0"/> - <EmptySpace pref="587" max="32767" attributes="0"/> - </Group> - </Group> - </DimensionLayout> - <DimensionLayout dim="1"> - <Group type="103" groupAlignment="0" attributes="0"> - <Group type="102" alignment="0" attributes="0"> - <EmptySpace min="-2" max="-2" attributes="0"/> - <Component id="explanationText" min="-2" pref="45" max="-2" attributes="0"/> - <EmptySpace type="unrelated" max="-2" attributes="0"/> - <Group type="103" groupAlignment="3" attributes="0"> - <Component id="refreshButton" alignment="3" min="-2" max="-2" attributes="0"/> - <Component id="clearButton" alignment="3" min="-2" max="-2" attributes="0"/> - </Group> - <EmptySpace min="-2" pref="14" max="-2" attributes="0"/> - <Component id="textScroll" pref="330" max="32767" attributes="0"/> - </Group> - </Group> - </DimensionLayout> - </Layout> - <SubComponents> - <Container class="javax.swing.JScrollPane" name="textScroll"> - <Properties> - <Property name="name" type="java.lang.String" value="textScroll" noResource="true"/> - </Properties> - <AuxValues> - <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> - </AuxValues> - - <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> - <SubComponents> - <Component class="javax.swing.JTextArea" name="logText"> - <Properties> - <Property name="columns" type="int" value="20"/> - <Property name="rows" type="int" value="5"/> - <Property name="name" type="java.lang.String" value="logText" noResource="true"/> - </Properties> - </Component> - </SubComponents> - </Container> - <Component class="javax.swing.JLabel" name="explanationText"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="explanationText.text"/> - <Property name="name" type="java.lang.String" value="explanationText" noResource="true"/> - </Properties> - </Component> - <Component class="javax.swing.JButton" name="refreshButton"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="refreshButton.text"/> - <Property name="name" type="java.lang.String" value="refreshButton" noResource="true"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="refreshButtonActionPerformed"/> - </Events> - </Component> - <Component class="javax.swing.JButton" name="clearButton"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="clearButton.text"/> - <Property name="name" type="java.lang.String" value="clearButton" noResource="true"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="clearButtonActionPerformed"/> - </Events> - </Component> - </SubComponents> -</Form> diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/LogViewer.java b/apps/desktopgui/src/net/i2p/desktopgui/gui/LogViewer.java deleted file mode 100644 index 1edf85b3b..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/LogViewer.java +++ /dev/null @@ -1,164 +0,0 @@ -/* - * LogViewer.java - * - * Created on 10 april 2009, 19:17 - */ - -package net.i2p.desktopgui.gui; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.util.logging.Level; -import java.util.logging.Logger; -import javax.swing.WindowConstants; - -/** - * - * @author mathias - */ -public class LogViewer extends javax.swing.JFrame { - - /** Creates new form LogViewer */ - public LogViewer() { - initComponents(); - readLogText(); - this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - this.setVisible(true); - } - - private void readLogText() { - Thread t = new Thread(new Runnable() { - - @Override - public void run() { - String s = ""; - File f = new File(LOGLOCATION); - if(f.exists()) { - try { - BufferedReader br = new BufferedReader(new FileReader(f)); - while(true) { - String line = br.readLine(); - if(line != null) - s += JTEXTNEWLINE + line; - else - break; - } - } - catch(Exception e) { - s = "An error has occurred while loading the logfiles:" + JTEXTNEWLINE + e.getMessage(); - } - } - logText.setText(s); - } - - }); - t.start(); - } - - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ - @SuppressWarnings("unchecked") - // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents - private void initComponents() { - - textScroll = new javax.swing.JScrollPane(); - logText = new javax.swing.JTextArea(); - explanationText = new javax.swing.JLabel(); - refreshButton = new javax.swing.JButton(); - clearButton = new javax.swing.JButton(); - - setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); - org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(net.i2p.desktopgui.desktopgui.Main.class).getContext().getResourceMap(LogViewer.class); - setTitle(resourceMap.getString("Form.title")); // NOI18N - setName("Form"); // NOI18N - - textScroll.setName("textScroll"); // NOI18N - - logText.setColumns(20); - logText.setRows(5); - logText.setName("logText"); // NOI18N - textScroll.setViewportView(logText); - - explanationText.setText(resourceMap.getString("explanationText.text")); // NOI18N - explanationText.setName("explanationText"); // NOI18N - - refreshButton.setText(resourceMap.getString("refreshButton.text")); // NOI18N - refreshButton.setName("refreshButton"); // NOI18N - refreshButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - refreshButtonActionPerformed(evt); - } - }); - - clearButton.setText(resourceMap.getString("clearButton.text")); // NOI18N - clearButton.setName("clearButton"); // NOI18N - clearButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - clearButtonActionPerformed(evt); - } - }); - - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addGap(12, 12, 12) - .addComponent(explanationText, javax.swing.GroupLayout.PREFERRED_SIZE, 561, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap()) - .addComponent(textScroll, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 722, Short.MAX_VALUE) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(refreshButton) - .addGap(18, 18, 18) - .addComponent(clearButton) - .addContainerGap(587, Short.MAX_VALUE)) - ); - layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(explanationText, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(refreshButton) - .addComponent(clearButton)) - .addGap(14, 14, 14) - .addComponent(textScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 330, Short.MAX_VALUE)) - ); - - pack(); - }// </editor-fold>//GEN-END:initComponents - -private void clearButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearButtonActionPerformed - File f = new File(LOGLOCATION); - f.delete(); - try { - f.createNewFile();//GEN-LAST:event_clearButtonActionPerformed - } catch (IOException ex) { - Logger.getLogger(LogViewer.class.getName()).log(Level.SEVERE, null, ex); - } - readLogText(); -} - -private void refreshButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_refreshButtonActionPerformed - readLogText(); -}//GEN-LAST:event_refreshButtonActionPerformed - - - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JButton clearButton; - private javax.swing.JLabel explanationText; - private javax.swing.JTextArea logText; - private javax.swing.JButton refreshButton; - private javax.swing.JScrollPane textScroll; - // End of variables declaration//GEN-END:variables - - private static final String LOGLOCATION = "wrapper.log"; - private static final String JTEXTNEWLINE = "\n"; -} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/ServerTunnelWindow.form b/apps/desktopgui/src/net/i2p/desktopgui/gui/ServerTunnelWindow.form deleted file mode 100644 index 303f49a7f..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/ServerTunnelWindow.form +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> - -<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JFrameFormInfo"> - <Properties> - <Property name="defaultCloseOperation" type="int" value="3"/> - <Property name="name" type="java.lang.String" value="Form" noResource="true"/> - </Properties> - <SyntheticProperties> - <SyntheticProperty name="formSizePolicy" type="int" value="1"/> - </SyntheticProperties> - <AuxValues> - <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/> - <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/> - <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> - <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> - <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/> - <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/> - <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> - <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> - <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> - <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,44,0,0,1,-112"/> - </AuxValues> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout"> - <Property name="useNullLayout" type="boolean" value="true"/> - </Layout> - <SubComponents> - <Component class="javax.swing.JLabel" name="jLabel1"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="jLabel1.text"/> - <Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="10" y="10" width="-1" height="-1"/> - </Constraint> - </Constraints> - </Component> - </SubComponents> -</Form> diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/ServerTunnelWindow.java b/apps/desktopgui/src/net/i2p/desktopgui/gui/ServerTunnelWindow.java deleted file mode 100644 index 765210148..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/ServerTunnelWindow.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ - -/* - * ServerTunnelWindow.java - * - * Created on 11-jun-2009, 14:55:53 - */ - -package net.i2p.desktopgui.gui; - -import java.awt.event.ActionListener; - -/** - * - * @author mathias - */ -public class ServerTunnelWindow extends javax.swing.JFrame { - - /** Creates new form ServerTunnelWindow */ - public ServerTunnelWindow(int tunnelNumber, ActionListener al) { - initComponents(); - this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); - this.setSize(600, 600); - this.setLocationRelativeTo(null); - this.requestFocus(); - this.setVisible(true); - } - - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ - @SuppressWarnings("unchecked") - // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents - private void initComponents() { - - jLabel1 = new javax.swing.JLabel(); - - setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); - setName("Form"); // NOI18N - getContentPane().setLayout(null); - - org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(net.i2p.desktopgui.desktopgui.Main.class).getContext().getResourceMap(ServerTunnelWindow.class); - jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N - jLabel1.setName("jLabel1"); // NOI18N - getContentPane().add(jLabel1); - jLabel1.setBounds(10, 10, 43, 17); - - pack(); - }// </editor-fold>//GEN-END:initComponents - - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JLabel jLabel1; - // End of variables declaration//GEN-END:variables - -} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector.form b/apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector.form deleted file mode 100644 index 5ee7b94ac..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector.form +++ /dev/null @@ -1,179 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> - -<Form version="1.5" maxVersion="1.6" type="org.netbeans.modules.form.forminfo.JFrameFormInfo"> - <Properties> - <Property name="defaultCloseOperation" type="int" value="2"/> - <Property name="title" type="java.lang.String" resourceKey="Form.title"/> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[610, 330]"/> - </Property> - <Property name="name" type="java.lang.String" value="Form" noResource="true"/> - <Property name="resizable" type="boolean" value="false"/> - </Properties> - <SyntheticProperties> - <SyntheticProperty name="formSizePolicy" type="int" value="1"/> - </SyntheticProperties> - <AuxValues> - <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/> - <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/> - <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> - <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> - <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/> - <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/> - <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> - <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> - <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> - <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,56,0,0,2,102"/> - </AuxValues> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout"> - <Property name="useNullLayout" type="boolean" value="true"/> - </Layout> - <SubComponents> - <Component class="javax.swing.JButton" name="nextButton"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="nextButton.text"/> - <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[72, 29]"/> - </Property> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[72, 29]"/> - </Property> - <Property name="name" type="java.lang.String" value="nextButton" noResource="true"/> - </Properties> - <Events> - <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="nextButtonMouseClicked"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="440" y="250" width="90" height="-1"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="uploadLabel"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="uploadLabel.text"/> - <Property name="name" type="java.lang.String" value="uploadLabel" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="20" y="60" width="-1" height="30"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="downloadLabel"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="downloadLabel.text"/> - <Property name="name" type="java.lang.String" value="downloadLabel" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="20" y="110" width="-1" height="30"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JComboBox" name="uploadChoice"> - <Properties> - <Property name="editable" type="boolean" value="true"/> - <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> - <StringArray count="11"> - <StringItem index="0" value="100"/> - <StringItem index="1" value="200"/> - <StringItem index="2" value="500"/> - <StringItem index="3" value="1000"/> - <StringItem index="4" value="2000"/> - <StringItem index="5" value="4000"/> - <StringItem index="6" value="8000"/> - <StringItem index="7" value="10000"/> - <StringItem index="8" value="20000"/> - <StringItem index="9" value="50000"/> - <StringItem index="10" value="100000"/> - </StringArray> - </Property> - <Property name="selectedIndex" type="int" value="3"/> - <Property name="name" type="java.lang.String" value="uploadChoice" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="300" y="60" width="-1" height="-1"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JComboBox" name="downloadChoice"> - <Properties> - <Property name="editable" type="boolean" value="true"/> - <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> - <StringArray count="11"> - <StringItem index="0" value="100"/> - <StringItem index="1" value="200"/> - <StringItem index="2" value="500"/> - <StringItem index="3" value="1000"/> - <StringItem index="4" value="2000"/> - <StringItem index="5" value="4000"/> - <StringItem index="6" value="8000"/> - <StringItem index="7" value="10000"/> - <StringItem index="8" value="20000"/> - <StringItem index="9" value="50000"/> - <StringItem index="10" value="100000"/> - </StringArray> - </Property> - <Property name="selectedIndex" type="int" value="3"/> - <Property name="name" type="java.lang.String" value="downloadChoice" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="300" y="110" width="-1" height="-1"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="speedExplanation"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="speedExplanation.text"/> - <Property name="name" type="java.lang.String" value="speedExplanation" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="20" y="160" width="570" height="60"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JComboBox" name="uploadkbps"> - <Properties> - <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> - <StringArray count="2"> - <StringItem index="0" value="kbps"/> - <StringItem index="1" value="kBps"/> - </StringArray> - </Property> - <Property name="name" type="java.lang.String" value="uploadKbit" noResource="true"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="uploadkbpsActionPerformed"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="470" y="60" width="-1" height="-1"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JComboBox" name="downloadkbps"> - <Properties> - <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> - <StringArray count="2"> - <StringItem index="0" value="kbps"/> - <StringItem index="1" value="kBps"/> - </StringArray> - </Property> - <Property name="name" type="java.lang.String" value="downloadKbit" noResource="true"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="downloadkbpsActionPerformed"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="470" y="110" width="-1" height="-1"/> - </Constraint> - </Constraints> - </Component> - </SubComponents> -</Form> diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector.java b/apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector.java deleted file mode 100644 index 335812e2a..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector.java +++ /dev/null @@ -1,194 +0,0 @@ -/* - * ProfileSelector.java - * - * Created on 3 april 2009, 13:57 - */ - -package net.i2p.desktopgui.gui; - -import java.awt.Point; -import java.util.Properties; -import javax.swing.JComboBox; -import javax.swing.JTextField; -import net.i2p.desktopgui.persistence.PropertyManager; -import net.i2p.desktopgui.util.IntegerVerifier; - -/** - * - * @author mathias - */ -public class SpeedSelector extends javax.swing.JFrame { - - /** Creates new form ProfileSelector */ - public SpeedSelector() { - this.props = PropertyManager.getProps(); - initComponents(); - initComponentsCustom(); - initSpeeds(props); - this.setVisible(true); - this.setLocationRelativeTo(null); - this.requestFocus(); - } - - public SpeedSelector(Point point) { - this(); - this.setLocation(point); - } - - public void initComponentsCustom() { - ((JTextField)uploadChoice.getEditor().getEditorComponent()).setInputVerifier(new IntegerVerifier()); - ((JTextField)downloadChoice.getEditor().getEditorComponent()).setInputVerifier(new IntegerVerifier()); - } - - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ - @SuppressWarnings("unchecked") - // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents - private void initComponents() { - - nextButton = new javax.swing.JButton(); - uploadLabel = new javax.swing.JLabel(); - downloadLabel = new javax.swing.JLabel(); - uploadChoice = new javax.swing.JComboBox(); - downloadChoice = new javax.swing.JComboBox(); - speedExplanation = new javax.swing.JLabel(); - uploadkbps = new javax.swing.JComboBox(); - downloadkbps = new javax.swing.JComboBox(); - - setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); - org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(net.i2p.desktopgui.desktopgui.Main.class).getContext().getResourceMap(SpeedSelector.class); - setTitle(resourceMap.getString("Form.title")); // NOI18N - setMinimumSize(new java.awt.Dimension(610, 330)); - setName("Form"); // NOI18N - setResizable(false); - getContentPane().setLayout(null); - - nextButton.setText(resourceMap.getString("nextButton.text")); // NOI18N - nextButton.setMaximumSize(new java.awt.Dimension(72, 29)); - nextButton.setMinimumSize(new java.awt.Dimension(72, 29)); - nextButton.setName("nextButton"); // NOI18N - nextButton.addMouseListener(new java.awt.event.MouseAdapter() { - public void mouseClicked(java.awt.event.MouseEvent evt) { - nextButtonMouseClicked(evt); - } - }); - getContentPane().add(nextButton); - nextButton.setBounds(440, 250, 90, 29); - - uploadLabel.setText(resourceMap.getString("uploadLabel.text")); // NOI18N - uploadLabel.setName("uploadLabel"); // NOI18N - getContentPane().add(uploadLabel); - uploadLabel.setBounds(20, 60, 246, 30); - - downloadLabel.setText(resourceMap.getString("downloadLabel.text")); // NOI18N - downloadLabel.setName("downloadLabel"); // NOI18N - getContentPane().add(downloadLabel); - downloadLabel.setBounds(20, 110, 263, 30); - - uploadChoice.setEditable(true); - uploadChoice.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "100", "200", "500", "1000", "2000", "4000", "8000", "10000", "20000", "50000", "100000" })); - uploadChoice.setSelectedIndex(3); - uploadChoice.setName("uploadChoice"); // NOI18N - getContentPane().add(uploadChoice); - uploadChoice.setBounds(300, 60, 154, 27); - - downloadChoice.setEditable(true); - downloadChoice.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "100", "200", "500", "1000", "2000", "4000", "8000", "10000", "20000", "50000", "100000" })); - downloadChoice.setSelectedIndex(3); - downloadChoice.setName("downloadChoice"); // NOI18N - getContentPane().add(downloadChoice); - downloadChoice.setBounds(300, 110, 154, 27); - - speedExplanation.setText(resourceMap.getString("speedExplanation.text")); // NOI18N - speedExplanation.setName("speedExplanation"); // NOI18N - getContentPane().add(speedExplanation); - speedExplanation.setBounds(20, 160, 570, 60); - - uploadkbps.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "kbps", "kBps" })); - uploadkbps.setName("uploadKbit"); // NOI18N - uploadkbps.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - uploadkbpsActionPerformed(evt); - } - }); - getContentPane().add(uploadkbps); - uploadkbps.setBounds(470, 60, 68, 27); - - downloadkbps.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "kbps", "kBps" })); - downloadkbps.setName("downloadKbit"); // NOI18N - downloadkbps.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - downloadkbpsActionPerformed(evt); - } - }); - getContentPane().add(downloadkbps); - downloadkbps.setBounds(470, 110, 68, 27); - - pack(); - }// </editor-fold>//GEN-END:initComponents - -private void nextButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_nextButtonMouseClicked - if(uploadkbps.getSelectedIndex() == KILOBIT) - props.setProperty(SpeedSelectorConstants.MAXUPLOADCAPABLE, uploadChoice.getSelectedItem().toString()); - else - props.setProperty(SpeedSelectorConstants.MAXUPLOADCAPABLE, "" + Integer.parseInt(uploadChoice.getSelectedItem().toString())*8); - if(downloadkbps.getSelectedIndex() == KILOBIT) - props.setProperty(SpeedSelectorConstants.MAXDOWNLOADCAPABLE, downloadChoice.getSelectedItem().toString()); - else - props.setProperty(SpeedSelectorConstants.MAXDOWNLOADCAPABLE, "" + Integer.parseInt(downloadChoice.getSelectedItem().toString())*8); - PropertyManager.saveProps(props); - new SpeedSelector2(this.getLocationOnScreen()); - this.dispose(); -}//GEN-LAST:event_nextButtonMouseClicked - -private void uploadkbpsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_uploadkbpsActionPerformed - kbpsSwitchPerformed(uploadkbps, uploadChoice); -}//GEN-LAST:event_uploadkbpsActionPerformed - -private void downloadkbpsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_downloadkbpsActionPerformed - kbpsSwitchPerformed(downloadkbps, downloadChoice); -}//GEN-LAST:event_downloadkbpsActionPerformed - -private void kbpsSwitchPerformed(JComboBox kbps, JComboBox speed) { - int index = kbps.getSelectedIndex(); - int previous = Integer.parseInt(speed.getSelectedItem().toString()); - if(index == KILOBIT) { - speed.setSelectedItem("" + previous*8); - } - else { - speed.setSelectedItem("" + previous/8); - } -} - -private void initSpeeds(Properties props) { - String up = props.getProperty(SpeedSelectorConstants.MAXUPLOADCAPABLE); - String down = props.getProperty(SpeedSelectorConstants.MAXDOWNLOADCAPABLE); - - if(up == null) - props.setProperty(SpeedSelectorConstants.MAXUPLOADCAPABLE, "1000"); - if(down == null) - props.setProperty(SpeedSelectorConstants.MAXDOWNLOADCAPABLE, "1000"); - - uploadChoice.setSelectedItem(props.getProperty(SpeedSelectorConstants.MAXUPLOADCAPABLE)); - downloadChoice.setSelectedItem(props.getProperty(SpeedSelectorConstants.MAXDOWNLOADCAPABLE)); -} - - - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JComboBox downloadChoice; - private javax.swing.JLabel downloadLabel; - private javax.swing.JComboBox downloadkbps; - private javax.swing.JButton nextButton; - private javax.swing.JLabel speedExplanation; - private javax.swing.JComboBox uploadChoice; - private javax.swing.JLabel uploadLabel; - private javax.swing.JComboBox uploadkbps; - // End of variables declaration//GEN-END:variables - - Properties props; - private static final int KILOBIT = 0; - private static final int KILOBYTE = 1; -} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector2.form b/apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector2.form deleted file mode 100644 index 54f5fa726..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector2.form +++ /dev/null @@ -1,118 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> - -<Form version="1.5" maxVersion="1.6" type="org.netbeans.modules.form.forminfo.JFrameFormInfo"> - <NonVisualComponents> - <Component class="javax.swing.ButtonGroup" name="buttonGroup1"> - </Component> - </NonVisualComponents> - <Properties> - <Property name="defaultCloseOperation" type="int" value="2"/> - <Property name="title" type="java.lang.String" resourceKey="Form.title"/> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[610, 330]"/> - </Property> - <Property name="name" type="java.lang.String" value="Form" noResource="true"/> - <Property name="resizable" type="boolean" value="false"/> - </Properties> - <SyntheticProperties> - <SyntheticProperty name="formSizePolicy" type="int" value="1"/> - </SyntheticProperties> - <AuxValues> - <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/> - <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/> - <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> - <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> - <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/> - <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/> - <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> - <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> - <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> - <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,44,0,0,2,105"/> - </AuxValues> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout"> - <Property name="useNullLayout" type="boolean" value="true"/> - </Layout> - <SubComponents> - <Component class="javax.swing.JButton" name="nextButton"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="nextButton.text"/> - <Property name="name" type="java.lang.String" value="nextButton" noResource="true"/> - </Properties> - <Events> - <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="nextButtonMouseClicked"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="440" y="250" width="90" height="-1"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JButton" name="returnButton"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="returnButton.text"/> - <Property name="name" type="java.lang.String" value="returnButton" noResource="true"/> - </Properties> - <Events> - <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="returnButtonMouseClicked"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="336" y="250" width="90" height="-1"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="questionLabel"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="questionLabel.text"/> - <Property name="name" type="java.lang.String" value="questionLabel" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="30" y="40" width="-1" height="-1"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JRadioButton" name="browseButton"> - <Properties> - <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor"> - <ComponentRef name="buttonGroup1"/> - </Property> - <Property name="text" type="java.lang.String" resourceKey="browseButton.text"/> - <Property name="actionCommand" type="java.lang.String" resourceKey="browseButton.actionCommand"/> - <Property name="name" type="java.lang.String" value="browseButton" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="40" y="120" width="-1" height="40"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JRadioButton" name="downloadButton"> - <Properties> - <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor"> - <ComponentRef name="buttonGroup1"/> - </Property> - <Property name="text" type="java.lang.String" resourceKey="downloadButton.text"/> - <Property name="actionCommand" type="java.lang.String" resourceKey="downloadButton.actionCommand"/> - <Property name="name" type="java.lang.String" value="downloadButton" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="40" y="70" width="-1" height="40"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="jLabel1"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="jLabel1.text"/> - <Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="30" y="170" width="530" height="70"/> - </Constraint> - </Constraints> - </Component> - </SubComponents> -</Form> diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector2.java b/apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector2.java deleted file mode 100644 index 772d16918..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector2.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * ProfileSelector2.java - * - * Created on 3 april 2009, 14:36 - */ - -package net.i2p.desktopgui.gui; - -import java.awt.Point; -import java.util.Enumeration; -import java.util.Properties; -import javax.swing.AbstractButton; -import net.i2p.desktopgui.persistence.PropertyManager; - -/** - * - * @author mathias - */ -public class SpeedSelector2 extends javax.swing.JFrame { - Properties props; - - /** Creates new form ProfileSelector2 */ - public SpeedSelector2(Point point) { - this.props = PropertyManager.getProps(); - initComponents(); - this.setLocation(point); - loadButtonSelection(); - this.setVisible(true); - this.requestFocus(); - } - - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ - @SuppressWarnings("unchecked") - // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents - private void initComponents() { - - buttonGroup1 = new javax.swing.ButtonGroup(); - nextButton = new javax.swing.JButton(); - returnButton = new javax.swing.JButton(); - questionLabel = new javax.swing.JLabel(); - browseButton = new javax.swing.JRadioButton(); - downloadButton = new javax.swing.JRadioButton(); - jLabel1 = new javax.swing.JLabel(); - - setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); - org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(net.i2p.desktopgui.desktopgui.Main.class).getContext().getResourceMap(SpeedSelector2.class); - setTitle(resourceMap.getString("Form.title")); // NOI18N - setMinimumSize(new java.awt.Dimension(610, 330)); - setName("Form"); // NOI18N - setResizable(false); - getContentPane().setLayout(null); - - nextButton.setText(resourceMap.getString("nextButton.text")); // NOI18N - nextButton.setName("nextButton"); // NOI18N - nextButton.addMouseListener(new java.awt.event.MouseAdapter() { - public void mouseClicked(java.awt.event.MouseEvent evt) { - nextButtonMouseClicked(evt); - } - }); - getContentPane().add(nextButton); - nextButton.setBounds(440, 250, 90, 29); - - returnButton.setText(resourceMap.getString("returnButton.text")); // NOI18N - returnButton.setName("returnButton"); // NOI18N - returnButton.addMouseListener(new java.awt.event.MouseAdapter() { - public void mouseClicked(java.awt.event.MouseEvent evt) { - returnButtonMouseClicked(evt); - } - }); - getContentPane().add(returnButton); - returnButton.setBounds(336, 250, 90, 29); - - questionLabel.setText(resourceMap.getString("questionLabel.text")); // NOI18N - questionLabel.setName("questionLabel"); // NOI18N - getContentPane().add(questionLabel); - questionLabel.setBounds(30, 40, 265, 17); - - buttonGroup1.add(browseButton); - browseButton.setText(resourceMap.getString("browseButton.text")); // NOI18N - browseButton.setActionCommand(resourceMap.getString("browseButton.actionCommand")); // NOI18N - browseButton.setName("browseButton"); // NOI18N - getContentPane().add(browseButton); - browseButton.setBounds(40, 120, 520, 40); - - buttonGroup1.add(downloadButton); - downloadButton.setText(resourceMap.getString("downloadButton.text")); // NOI18N - downloadButton.setActionCommand(resourceMap.getString("downloadButton.actionCommand")); // NOI18N - downloadButton.setName("downloadButton"); // NOI18N - getContentPane().add(downloadButton); - downloadButton.setBounds(40, 70, 499, 40); - - jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N - jLabel1.setName("jLabel1"); // NOI18N - getContentPane().add(jLabel1); - jLabel1.setBounds(30, 170, 530, 70); - - pack(); - }// </editor-fold>//GEN-END:initComponents - -private void returnButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_returnButtonMouseClicked - saveButtonSelection(); - PropertyManager.saveProps(props); - new SpeedSelector(this.getLocationOnScreen()); - this.dispose(); -}//GEN-LAST:event_returnButtonMouseClicked - -private void nextButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_nextButtonMouseClicked - saveButtonSelection(); - PropertyManager.saveProps(props); - new SpeedSelector3(this.getLocationOnScreen(), this.getSize()); - this.dispose(); -}//GEN-LAST:event_nextButtonMouseClicked - -private void loadButtonSelection() { - - Enumeration<AbstractButton> elements = buttonGroup1.getElements(); - while(elements.hasMoreElements()) { - AbstractButton button = elements.nextElement(); - if(button == null) - continue; - if(props.getProperty(SpeedSelectorConstants.USERTYPE) == null) - break; - String type = button.getActionCommand(); - if(type.equals(props.getProperty(SpeedSelectorConstants.USERTYPE))) { - button.setSelected(true); - break; - } - } -} - -private void saveButtonSelection() { - Enumeration<AbstractButton> elements = buttonGroup1.getElements(); - while(elements.hasMoreElements()) { - AbstractButton button = elements.nextElement(); - if(button == null) - continue; - if(button.isSelected()) { - String type = button.getActionCommand(); - props.setProperty(SpeedSelectorConstants.USERTYPE, type); - break; - } - } -} - - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JRadioButton browseButton; - private javax.swing.ButtonGroup buttonGroup1; - private javax.swing.JRadioButton downloadButton; - private javax.swing.JLabel jLabel1; - private javax.swing.JButton nextButton; - private javax.swing.JLabel questionLabel; - private javax.swing.JButton returnButton; - // End of variables declaration//GEN-END:variables - -} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector3.form b/apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector3.form deleted file mode 100644 index 8e4aa5b4e..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector3.form +++ /dev/null @@ -1,338 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> - -<Form version="1.5" maxVersion="1.6" type="org.netbeans.modules.form.forminfo.JFrameFormInfo"> - <Properties> - <Property name="defaultCloseOperation" type="int" value="2"/> - <Property name="title" type="java.lang.String" resourceKey="Form.title"/> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[670, 330]"/> - </Property> - <Property name="name" type="java.lang.String" value="Form" noResource="true"/> - <Property name="resizable" type="boolean" value="false"/> - </Properties> - <SyntheticProperties> - <SyntheticProperty name="formSizePolicy" type="int" value="1"/> - </SyntheticProperties> - <AuxValues> - <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/> - <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/> - <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> - <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> - <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/> - <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/> - <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> - <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> - <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> - <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,74,0,0,2,-108"/> - </AuxValues> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout"> - <Property name="useNullLayout" type="boolean" value="true"/> - </Layout> - <SubComponents> - <Component class="javax.swing.JButton" name="finishButton"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="finishButton.text"/> - <Property name="name" type="java.lang.String" value="finishButton" noResource="true"/> - </Properties> - <Events> - <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="finishButtonMouseClicked"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="440" y="250" width="90" height="-1"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JButton" name="previousButton"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="previousButton.text"/> - <Property name="name" type="java.lang.String" value="previousButton" noResource="true"/> - </Properties> - <Events> - <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="previousButtonMouseClicked"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="336" y="250" width="90" height="-1"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="settingsInfo"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="settingsInfo.text"/> - <Property name="name" type="java.lang.String" value="settingsInfo" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="20" y="30" width="-1" height="-1"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="uploadLabel"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="uploadLabel.text"/> - <Property name="name" type="java.lang.String" value="uploadLabel" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="20" y="70" width="140" height="30"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="downloadLabel"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="downloadLabel.text"/> - <Property name="name" type="java.lang.String" value="downloadLabel" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="340" y="70" width="160" height="30"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="uploadBurstLabel"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="uploadBurstLabel.text"/> - <Property name="name" type="java.lang.String" value="uploadBurstLabel" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="20" y="110" width="140" height="30"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="downloadBurstLabel"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="downloadBurstLabel.text"/> - <Property name="name" type="java.lang.String" value="downloadBurstLabel" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="340" y="110" width="160" height="30"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="uploadUsageLabel"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="uploadUsageLabel.text"/> - <Property name="name" type="java.lang.String" value="uploadUsageLabel" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="20" y="150" width="140" height="30"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="downloadUsageLabel"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="downloadUsageLabel.text"/> - <Property name="name" type="java.lang.String" value="downloadUsageLabel" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="340" y="150" width="160" height="30"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JTextField" name="uploadField"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="uploadField.text"/> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[77, 27]"/> - </Property> - <Property name="name" type="java.lang.String" value="uploadField" noResource="true"/> - </Properties> - <Events> - <EventHandler event="keyReleased" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="speedFieldKeyReleased"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="160" y="70" width="-1" height="-1"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JTextField" name="uploadBurstField"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="uploadBurstField.text"/> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[77, 27]"/> - </Property> - <Property name="name" type="java.lang.String" value="uploadBurstField" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="160" y="110" width="-1" height="-1"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JTextField" name="downloadField"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="downloadField.text"/> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[77, 27]"/> - </Property> - <Property name="name" type="java.lang.String" value="downloadField" noResource="true"/> - </Properties> - <Events> - <EventHandler event="keyReleased" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="speedFieldKeyReleased"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="500" y="70" width="-1" height="-1"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JTextField" name="downloadBurstField"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="downloadBurstField.text"/> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[77, 27]"/> - </Property> - <Property name="name" type="java.lang.String" value="downloadBurstField" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="500" y="110" width="-1" height="-1"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JComboBox" name="kbpsBurstDownload"> - <Properties> - <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> - <StringArray count="2"> - <StringItem index="0" value="kbps"/> - <StringItem index="1" value="kBps"/> - </StringArray> - </Property> - <Property name="name" type="java.lang.String" value="kbpsBurstDownload" noResource="true"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="kbpsBurstDownloadActionPerformed"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="580" y="110" width="-1" height="-1"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JComboBox" name="kbpsUpload"> - <Properties> - <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> - <StringArray count="2"> - <StringItem index="0" value="kbps"/> - <StringItem index="1" value="kBps"/> - </StringArray> - </Property> - <Property name="name" type="java.lang.String" value="kbpsUpload" noResource="true"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="kbpsUploadActionPerformed"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="240" y="70" width="-1" height="-1"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JComboBox" name="kbpsBurstUpload"> - <Properties> - <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> - <StringArray count="2"> - <StringItem index="0" value="kbps"/> - <StringItem index="1" value="kBps"/> - </StringArray> - </Property> - <Property name="name" type="java.lang.String" value="kbpsBurstUpload" noResource="true"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="kbpsBurstUploadActionPerformed"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="240" y="110" width="-1" height="-1"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JComboBox" name="kbpsDownload"> - <Properties> - <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> - <StringArray count="2"> - <StringItem index="0" value="kbps"/> - <StringItem index="1" value="kBps"/> - </StringArray> - </Property> - <Property name="name" type="java.lang.String" value="kbpsDownload" noResource="true"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="kbpsDownloadActionPerformed"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="580" y="70" width="-1" height="-1"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="uploadGB"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="uploadUsageLabel.text"/> - <Property name="name" type="java.lang.String" value="uploadUsageLabel" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="240" y="150" width="45" height="30"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JTextField" name="uploadMonth"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="uploadMonth.text"/> - <Property name="name" type="java.lang.String" value="uploadMonth" noResource="true"/> - </Properties> - <Events> - <EventHandler event="keyReleased" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="monthKeyReleased"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="160" y="150" width="-1" height="-1"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JTextField" name="downloadMonth"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="downloadMonth.text"/> - <Property name="name" type="java.lang.String" value="downloadMonth" noResource="true"/> - </Properties> - <Events> - <EventHandler event="keyReleased" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="monthKeyReleased"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="500" y="150" width="-1" height="-1"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="downloadGB"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="downloadUsageLabel.text"/> - <Property name="name" type="java.lang.String" value="downloadUsageLabel" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="580" y="150" width="40" height="30"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="explanation"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="explanation.text"/> - <Property name="name" type="java.lang.String" value="explanation" noResource="true"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> - <AbsoluteConstraints x="20" y="180" width="600" height="70"/> - </Constraint> - </Constraints> - </Component> - </SubComponents> -</Form> diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector3.java b/apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector3.java deleted file mode 100644 index 933ad3ff2..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelector3.java +++ /dev/null @@ -1,439 +0,0 @@ -/* - * ProfileSelector3.java - * - * Created on 3 april 2009, 15:17 - */ - -package net.i2p.desktopgui.gui; - -import java.awt.Dimension; -import java.awt.Point; -import java.util.Properties; -import javax.swing.JComboBox; -import javax.swing.JTextField; -import net.i2p.desktopgui.persistence.PropertyManager; -import net.i2p.desktopgui.router.configuration.SpeedHandler; -import net.i2p.desktopgui.router.configuration.SpeedHelper; - -/** - * - * @author mathias - */ -public class SpeedSelector3 extends javax.swing.JFrame { - Properties props; - - /** Creates new form ProfileSelector3 */ - public SpeedSelector3(Point point, Dimension dimension) { - this.props = PropertyManager.getProps(); - initComponents(); - this.setLocation(point); - this.setSize(dimension); - initSpeeds(); - initUsage(); - this.setVisible(true); - this.requestFocus(); - } - - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ - @SuppressWarnings("unchecked") - // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents - private void initComponents() { - - finishButton = new javax.swing.JButton(); - previousButton = new javax.swing.JButton(); - settingsInfo = new javax.swing.JLabel(); - uploadLabel = new javax.swing.JLabel(); - downloadLabel = new javax.swing.JLabel(); - uploadBurstLabel = new javax.swing.JLabel(); - downloadBurstLabel = new javax.swing.JLabel(); - uploadUsageLabel = new javax.swing.JLabel(); - downloadUsageLabel = new javax.swing.JLabel(); - uploadField = new javax.swing.JTextField(); - uploadBurstField = new javax.swing.JTextField(); - downloadField = new javax.swing.JTextField(); - downloadBurstField = new javax.swing.JTextField(); - kbpsBurstDownload = new javax.swing.JComboBox(); - kbpsUpload = new javax.swing.JComboBox(); - kbpsBurstUpload = new javax.swing.JComboBox(); - kbpsDownload = new javax.swing.JComboBox(); - uploadGB = new javax.swing.JLabel(); - uploadMonth = new javax.swing.JTextField(); - downloadMonth = new javax.swing.JTextField(); - downloadGB = new javax.swing.JLabel(); - explanation = new javax.swing.JLabel(); - - setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); - org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(net.i2p.desktopgui.desktopgui.Main.class).getContext().getResourceMap(SpeedSelector3.class); - setTitle(resourceMap.getString("Form.title")); // NOI18N - setMinimumSize(new java.awt.Dimension(670, 330)); - setName("Form"); // NOI18N - setResizable(false); - getContentPane().setLayout(null); - - finishButton.setText(resourceMap.getString("finishButton.text")); // NOI18N - finishButton.setName("finishButton"); // NOI18N - finishButton.addMouseListener(new java.awt.event.MouseAdapter() { - public void mouseClicked(java.awt.event.MouseEvent evt) { - finishButtonMouseClicked(evt); - } - }); - getContentPane().add(finishButton); - finishButton.setBounds(440, 250, 90, 29); - - previousButton.setText(resourceMap.getString("previousButton.text")); // NOI18N - previousButton.setName("previousButton"); // NOI18N - previousButton.addMouseListener(new java.awt.event.MouseAdapter() { - public void mouseClicked(java.awt.event.MouseEvent evt) { - previousButtonMouseClicked(evt); - } - }); - getContentPane().add(previousButton); - previousButton.setBounds(336, 250, 90, 29); - - settingsInfo.setText(resourceMap.getString("settingsInfo.text")); // NOI18N - settingsInfo.setName("settingsInfo"); // NOI18N - getContentPane().add(settingsInfo); - settingsInfo.setBounds(20, 30, 532, 17); - - uploadLabel.setText(resourceMap.getString("uploadLabel.text")); // NOI18N - uploadLabel.setName("uploadLabel"); // NOI18N - getContentPane().add(uploadLabel); - uploadLabel.setBounds(20, 70, 140, 30); - - downloadLabel.setText(resourceMap.getString("downloadLabel.text")); // NOI18N - downloadLabel.setName("downloadLabel"); // NOI18N - getContentPane().add(downloadLabel); - downloadLabel.setBounds(340, 70, 160, 30); - - uploadBurstLabel.setText(resourceMap.getString("uploadBurstLabel.text")); // NOI18N - uploadBurstLabel.setName("uploadBurstLabel"); // NOI18N - getContentPane().add(uploadBurstLabel); - uploadBurstLabel.setBounds(20, 110, 140, 30); - - downloadBurstLabel.setText(resourceMap.getString("downloadBurstLabel.text")); // NOI18N - downloadBurstLabel.setName("downloadBurstLabel"); // NOI18N - getContentPane().add(downloadBurstLabel); - downloadBurstLabel.setBounds(340, 110, 160, 30); - - uploadUsageLabel.setText(resourceMap.getString("uploadUsageLabel.text")); // NOI18N - uploadUsageLabel.setName("uploadUsageLabel"); // NOI18N - getContentPane().add(uploadUsageLabel); - uploadUsageLabel.setBounds(20, 150, 140, 30); - - downloadUsageLabel.setText(resourceMap.getString("downloadUsageLabel.text")); // NOI18N - downloadUsageLabel.setName("downloadUsageLabel"); // NOI18N - getContentPane().add(downloadUsageLabel); - downloadUsageLabel.setBounds(340, 150, 160, 30); - - uploadField.setText(resourceMap.getString("uploadField.text")); // NOI18N - uploadField.setMinimumSize(new java.awt.Dimension(77, 27)); - uploadField.setName("uploadField"); // NOI18N - uploadField.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyReleased(java.awt.event.KeyEvent evt) { - speedFieldKeyReleased(evt); - } - }); - getContentPane().add(uploadField); - uploadField.setBounds(160, 70, 77, 27); - - uploadBurstField.setText(resourceMap.getString("uploadBurstField.text")); // NOI18N - uploadBurstField.setMinimumSize(new java.awt.Dimension(77, 27)); - uploadBurstField.setName("uploadBurstField"); // NOI18N - getContentPane().add(uploadBurstField); - uploadBurstField.setBounds(160, 110, 77, 27); - - downloadField.setText(resourceMap.getString("downloadField.text")); // NOI18N - downloadField.setMinimumSize(new java.awt.Dimension(77, 27)); - downloadField.setName("downloadField"); // NOI18N - downloadField.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyReleased(java.awt.event.KeyEvent evt) { - speedFieldKeyReleased(evt); - } - }); - getContentPane().add(downloadField); - downloadField.setBounds(500, 70, 77, 27); - - downloadBurstField.setText(resourceMap.getString("downloadBurstField.text")); // NOI18N - downloadBurstField.setMinimumSize(new java.awt.Dimension(77, 27)); - downloadBurstField.setName("downloadBurstField"); // NOI18N - getContentPane().add(downloadBurstField); - downloadBurstField.setBounds(500, 110, 77, 27); - - kbpsBurstDownload.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "kbps", "kBps" })); - kbpsBurstDownload.setName("kbpsBurstDownload"); // NOI18N - kbpsBurstDownload.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - kbpsBurstDownloadActionPerformed(evt); - } - }); - getContentPane().add(kbpsBurstDownload); - kbpsBurstDownload.setBounds(580, 110, 68, 27); - - kbpsUpload.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "kbps", "kBps" })); - kbpsUpload.setName("kbpsUpload"); // NOI18N - kbpsUpload.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - kbpsUploadActionPerformed(evt); - } - }); - getContentPane().add(kbpsUpload); - kbpsUpload.setBounds(240, 70, 68, 27); - - kbpsBurstUpload.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "kbps", "kBps" })); - kbpsBurstUpload.setName("kbpsBurstUpload"); // NOI18N - kbpsBurstUpload.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - kbpsBurstUploadActionPerformed(evt); - } - }); - getContentPane().add(kbpsBurstUpload); - kbpsBurstUpload.setBounds(240, 110, 68, 27); - - kbpsDownload.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "kbps", "kBps" })); - kbpsDownload.setName("kbpsDownload"); // NOI18N - kbpsDownload.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - kbpsDownloadActionPerformed(evt); - } - }); - getContentPane().add(kbpsDownload); - kbpsDownload.setBounds(580, 70, 68, 27); - - uploadGB.setText(resourceMap.getString("uploadUsageLabel.text")); // NOI18N - uploadGB.setName("uploadUsageLabel"); // NOI18N - getContentPane().add(uploadGB); - uploadGB.setBounds(240, 150, 45, 30); - - uploadMonth.setText(resourceMap.getString("uploadMonth.text")); // NOI18N - uploadMonth.setName("uploadMonth"); // NOI18N - uploadMonth.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyReleased(java.awt.event.KeyEvent evt) { - monthKeyReleased(evt); - } - }); - getContentPane().add(uploadMonth); - uploadMonth.setBounds(160, 150, 77, 27); - - downloadMonth.setText(resourceMap.getString("downloadMonth.text")); // NOI18N - downloadMonth.setName("downloadMonth"); // NOI18N - downloadMonth.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyReleased(java.awt.event.KeyEvent evt) { - monthKeyReleased(evt); - } - }); - getContentPane().add(downloadMonth); - downloadMonth.setBounds(500, 150, 77, 27); - - downloadGB.setText(resourceMap.getString("downloadUsageLabel.text")); // NOI18N - downloadGB.setName("downloadUsageLabel"); // NOI18N - getContentPane().add(downloadGB); - downloadGB.setBounds(580, 150, 40, 30); - - explanation.setText(resourceMap.getString("explanation.text")); // NOI18N - explanation.setName("explanation"); // NOI18N - getContentPane().add(explanation); - explanation.setBounds(20, 180, 600, 70); - - pack(); - }// </editor-fold>//GEN-END:initComponents - -private void previousButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_previousButtonMouseClicked - saveSpeeds(); - PropertyManager.saveProps(props); - new SpeedSelector2(this.getLocationOnScreen()); - this.dispose(); -}//GEN-LAST:event_previousButtonMouseClicked - -private void finishButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_finishButtonMouseClicked - saveSpeeds(); - PropertyManager.saveProps(props); - - int maxDownload = Integer.parseInt(props.getProperty(SpeedSelectorConstants.MAXDOWNLOAD)); - int maxUpload = Integer.parseInt(props.getProperty(SpeedSelectorConstants.MAXUPLOAD)); - int maxUploadBurst = Integer.parseInt(props.getProperty(SpeedSelectorConstants.MAXUPLOADBURST)); - int maxDownloadBurst = Integer.parseInt(props.getProperty(SpeedSelectorConstants.MAXDOWNLOADBURST)); - - //Working in kB, not kb! - SpeedHandler.setInboundBandwidth(maxDownload/8); - SpeedHandler.setOutboundBandwidth(maxUpload/8); - SpeedHandler.setInboundBurstBandwidth(maxDownloadBurst/8); - SpeedHandler.setOutboundBurstBandwidth(maxUploadBurst/8); - - this.dispose(); -}//GEN-LAST:event_finishButtonMouseClicked - -private void speedFieldKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_speedFieldKeyReleased - try { - String upload = ""; - if(kbpsUpload.getSelectedIndex() == KILOBIT) - upload = uploadField.getText(); - else - upload = "" + Integer.parseInt(uploadField.getText())*8; - String download = ""; - if(kbpsDownload.getSelectedIndex() == KILOBIT) - download = downloadField.getText(); - else - download = "" + Integer.parseInt(downloadField.getText())*8; - initUsage(upload, download); - } - catch(NumberFormatException e) { - return; - } -}//GEN-LAST:event_speedFieldKeyReleased - -private void kbpsUploadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_kbpsUploadActionPerformed - kbpsSwitchPerformed(kbpsUpload, uploadField); -}//GEN-LAST:event_kbpsUploadActionPerformed - -private void kbpsBurstUploadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_kbpsBurstUploadActionPerformed - kbpsSwitchPerformed(kbpsBurstUpload, uploadBurstField); -}//GEN-LAST:event_kbpsBurstUploadActionPerformed - -private void kbpsDownloadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_kbpsDownloadActionPerformed - kbpsSwitchPerformed(kbpsDownload, downloadField); -}//GEN-LAST:event_kbpsDownloadActionPerformed - -private void kbpsBurstDownloadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_kbpsBurstDownloadActionPerformed - kbpsSwitchPerformed(kbpsBurstDownload, downloadBurstField); -}//GEN-LAST:event_kbpsBurstDownloadActionPerformed - -private void monthKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_monthKeyReleased - try { - int uploadMonthValue = Integer.parseInt(uploadMonth.getText()); - int downloadMonthValue = Integer.parseInt(downloadMonth.getText()); - - String upload = ""; - String burstUpload = ""; - String download = ""; - String burstDownload = ""; - - if(kbpsUpload.getSelectedIndex() == KILOBIT) - upload = "" + SpeedHelper.calculateSpeed(uploadMonthValue)*8; //kbit - else - upload = "" + SpeedHelper.calculateSpeed(uploadMonthValue); //kbyte - - if(kbpsBurstUpload.getSelectedIndex() == KILOBIT) - burstUpload = "" + SpeedHelper.calculateSpeed(uploadMonthValue)*8; //kbit - else - burstUpload = "" + SpeedHelper.calculateSpeed(uploadMonthValue); //kbyte - - if(kbpsDownload.getSelectedIndex() == KILOBIT) - download = "" + SpeedHelper.calculateSpeed(downloadMonthValue)*8; //kbit - else - download = "" + SpeedHelper.calculateSpeed(downloadMonthValue); //kbyte - - if(kbpsBurstDownload.getSelectedIndex() == KILOBIT) - burstDownload = "" + SpeedHelper.calculateSpeed(downloadMonthValue)*8; //kbit - else - burstDownload = "" + SpeedHelper.calculateSpeed(downloadMonthValue); //kbyte - - initSpeeds(upload, burstUpload, download, burstDownload); - } - catch(NumberFormatException e) { - e.printStackTrace(); - return; - } -}//GEN-LAST:event_monthKeyReleased - -private void kbpsSwitchPerformed(JComboBox kbps, JTextField speed) { - int index = kbps.getSelectedIndex(); - int previous = Integer.parseInt(speed.getText()); - if(index == KILOBIT) { - speed.setText("" + previous*8); - } - else { - speed.setText("" + previous/8); - } -} - - protected void initSpeeds() { - String up = "" + SpeedHelper.calculateSpeed( - props.getProperty(SpeedSelectorConstants.MAXUPLOADCAPABLE), props.getProperty(SpeedSelectorConstants.USERTYPE)); - String upBurst = "" + SpeedHelper.calculateSpeed( - props.getProperty(SpeedSelectorConstants.MAXUPLOADCAPABLE), props.getProperty(SpeedSelectorConstants.USERTYPE)); - String down = "" + SpeedHelper.calculateSpeed( - props.getProperty(SpeedSelectorConstants.MAXDOWNLOADCAPABLE), props.getProperty(SpeedSelectorConstants.USERTYPE)); - String downBurst = "" + SpeedHelper.calculateSpeed( - props.getProperty(SpeedSelectorConstants.MAXDOWNLOADCAPABLE), props.getProperty(SpeedSelectorConstants.USERTYPE)); - String userType = props.getProperty(SpeedSelectorConstants.USERTYPE); - - initSpeeds(up, upBurst, down, downBurst); - } - - protected void initSpeeds(String up, String upBurst, String down, String downBurst) { - uploadField.setText(up); - uploadBurstField.setText(upBurst); - downloadField.setText(down); - downloadBurstField.setText(downBurst); - } - - protected void saveSpeeds() { - if(kbpsUpload.getSelectedIndex() == KILOBIT) - props.setProperty(SpeedSelectorConstants.MAXUPLOAD, uploadField.getText()); - else - props.setProperty(SpeedSelectorConstants.MAXUPLOAD, "" + Integer.parseInt(uploadField.getText())*8); - if(kbpsBurstUpload.getSelectedIndex() == KILOBIT) - props.setProperty(SpeedSelectorConstants.MAXUPLOADBURST, uploadBurstField.getText()); - else - props.setProperty(SpeedSelectorConstants.MAXUPLOADBURST, "" + Integer.parseInt(uploadBurstField.getText())*8); - if(kbpsDownload.getSelectedIndex() == KILOBIT) - props.setProperty(SpeedSelectorConstants.MAXDOWNLOAD, downloadField.getText()); - else - props.setProperty(SpeedSelectorConstants.MAXDOWNLOAD, "" + Integer.parseInt(downloadField.getText())*8); - if(kbpsBurstDownload.getSelectedIndex() == KILOBIT) - props.setProperty(SpeedSelectorConstants.MAXDOWNLOADBURST, downloadBurstField.getText()); - else - props.setProperty(SpeedSelectorConstants.MAXDOWNLOADBURST, "" + Integer.parseInt(downloadBurstField.getText())*8); - } - - protected void initUsage(String upload, String download) { - uploadMonth.setText("" + SpeedHelper.calculateMonthlyUsage(Integer.parseInt(upload)/8)); - downloadMonth.setText("" + SpeedHelper.calculateMonthlyUsage(Integer.parseInt(download)/8)); - } - - protected void initUsage() { - String upload = ""; - if(kbpsUpload.getSelectedIndex() == KILOBIT) - upload = uploadField.getText(); - else - upload = "" + Integer.parseInt(uploadField.getText())/8; - String download = ""; - if(kbpsDownload.getSelectedIndex() == KILOBIT) - download = downloadField.getText(); - else - download = "" + Integer.parseInt(downloadField.getText())/8; - initUsage(upload, download); - } - - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JTextField downloadBurstField; - private javax.swing.JLabel downloadBurstLabel; - private javax.swing.JTextField downloadField; - private javax.swing.JLabel downloadGB; - private javax.swing.JLabel downloadLabel; - private javax.swing.JTextField downloadMonth; - private javax.swing.JLabel downloadUsageLabel; - private javax.swing.JLabel explanation; - private javax.swing.JButton finishButton; - private javax.swing.JComboBox kbpsBurstDownload; - private javax.swing.JComboBox kbpsBurstUpload; - private javax.swing.JComboBox kbpsDownload; - private javax.swing.JComboBox kbpsUpload; - private javax.swing.JButton previousButton; - private javax.swing.JLabel settingsInfo; - private javax.swing.JTextField uploadBurstField; - private javax.swing.JLabel uploadBurstLabel; - private javax.swing.JTextField uploadField; - private javax.swing.JLabel uploadGB; - private javax.swing.JLabel uploadLabel; - private javax.swing.JTextField uploadMonth; - private javax.swing.JLabel uploadUsageLabel; - // End of variables declaration//GEN-END:variables - - private static final int KILOBIT = 0; - private static final int KILOBYTE = 1; -} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelectorConstants.java b/apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelectorConstants.java deleted file mode 100644 index 1088f6957..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/SpeedSelectorConstants.java +++ /dev/null @@ -1,25 +0,0 @@ -package net.i2p.desktopgui.gui; - -/** - * - * @author mathias - */ -public class SpeedSelectorConstants { - ///Maximum upload speed for the internet connection - public static final String MAXUPLOADCAPABLE = "maxUploadCapable"; - ///Maximum download speed for the internet connection - public static final String MAXDOWNLOADCAPABLE = "maxDownloadCapable"; - - //User profile type: what behaviour does this user have while using IP2? - public static final String USERTYPE = "userType"; - - //Maximum upload speed for I2P - public static final String MAXUPLOAD = "maxUpload"; - //Maximum upload burst speed for I2P - public static final String MAXUPLOADBURST = "maxUploadBurst"; - - //Maximum download speed for I2P - public static final String MAXDOWNLOAD = "maxDownload"; - //Maximum download burst speed for I2P - public static final String MAXDOWNLOADBURST = "maxDownloadBurst"; -} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/Tray.java b/apps/desktopgui/src/net/i2p/desktopgui/gui/Tray.java deleted file mode 100644 index 02fb5b2df..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/Tray.java +++ /dev/null @@ -1,228 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ - -package net.i2p.desktopgui.gui; - -import net.i2p.desktopgui.desktopgui.*; -import java.awt.AWTException; -import java.awt.Desktop; -import java.awt.Image; -import java.awt.SystemTray; -import java.awt.Toolkit; -import java.awt.TrayIcon; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.io.File; -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.logging.Level; -import java.util.logging.Logger; -import javax.swing.JMenu; -import javax.swing.JMenuItem; -import javax.swing.JPopupMenu; -import net.i2p.desktopgui.router.RouterHandler; -import net.i2p.desktopgui.router.RouterHelper; -import net.i2p.desktopgui.router.configuration.PeerHelper; - -/** - * - * @author mathias - */ -public class Tray { - - public Tray() { - tray = SystemTray.getSystemTray(); - loadSystemTray(); - } - - private void loadSystemTray() { - - Image image = Toolkit.getDefaultToolkit().getImage("desktopgui/resources/logo/logo.jpg"); - - final JPopupMenu popup = new JPopupMenu(); - - //Create menu items to put in the popup menu - JMenuItem browserLauncher = new JMenuItem("Launch browser"); - browserLauncher.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent arg0) { - if(Desktop.isDesktopSupported()) { - Desktop desktop = Desktop.getDesktop(); - try { - if(desktop.isSupported(Desktop.Action.BROWSE)) { - desktop.browse(new URI("http://localhost:7657")); - } - else { - trayIcon.displayMessage("Browser not found", "The default browser for your system was not found.", TrayIcon.MessageType.WARNING); - } - } catch (URISyntaxException ex) { - Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); - } catch(IOException ex) { - Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); - } - } - } - - }); - JMenuItem howto = new JMenuItem("How to use I2P"); - howto.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent arg0) { - if(Desktop.isDesktopSupported()) { - Desktop desktop = Desktop.getDesktop(); - try { - File f = new File("desktopgui/resources/howto/howto.html"); - System.out.println(new URI(null, null, null, 0, "file://" + f.getAbsolutePath(), null, null)); - desktop.browse(new URI(null, null, null, 0, "file://" + f.getAbsolutePath(), null, null)); - //desktop.browse(new URI("file://" + f.getAbsolutePath())); - } catch (URISyntaxException ex) { - Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); - } catch(IOException ex) { - Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); - } - } - } - - }); - JMenu config = new JMenu("Configuration"); - JMenuItem speedConfig = new JMenuItem("Speed"); - speedConfig.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent arg0) { - (new SpeedSelector()).setVisible(true); - } - - }); - JMenuItem generalConfig = new JMenuItem("General Configuration"); - generalConfig.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent arg0) { - new GeneralConfiguration(); - } - - }); - JMenuItem advancedConfig = new JMenuItem("Advanced Configuration"); - advancedConfig.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent arg0) { - if(Desktop.isDesktopSupported()) { - Desktop desktop = Desktop.getDesktop(); - try { - desktop.browse(new URI("http://localhost:7657/config.jsp")); - } catch (URISyntaxException ex) { - Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); - } catch(IOException ex) { - Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); - } - } - } - - }); - JMenuItem viewLog = new JMenuItem("View log"); - viewLog.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent arg0) { - new LogViewer(); - } - - }); - JMenuItem version = new JMenuItem("Version"); - version.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent arg0) { - new Version(); - } - - }); - JMenuItem shutdown = new JMenuItem("Shutdown I2P"); - shutdown.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent arg0) { - RouterHandler.setStatus(RouterHandler.SHUTDOWN_GRACEFULLY); - long shutdownTime = RouterHelper.getGracefulShutdownTimeRemaining(); - System.out.println("Shutdowntime remaining: " + shutdownTime); - if(shutdownTime>0) { - trayIcon.displayMessage("Shutting down...", "Shutdown time remaining: " + shutdownTime/1000 + " seconds." - + System.getProperty("line.separator") + "Shutdown will not happen immediately, because we are still participating in the network.", TrayIcon.MessageType.INFO); - } - else { - trayIcon.displayMessage("Shutting down...", "Shutting down immediately.", TrayIcon.MessageType.INFO); - } - } - - }); - - //Add menu items to popup menu - popup.add(browserLauncher); - popup.add(howto); - - popup.addSeparator(); - - config.add(speedConfig); - config.add(generalConfig); - config.add(advancedConfig); - popup.add(config); - - popup.addSeparator(); - - popup.add(viewLog); - popup.add(version); - - popup.addSeparator(); - - popup.add(shutdown); - - //Add tray icon - trayIcon = new JPopupTrayIcon(image, "I2P: the anonymous network", popup); - - try { - tray.add(trayIcon); - } catch (AWTException ex) { - Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); - } - - PeerHelper.addReachabilityListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent arg0) { - updateTooltip(); - } - - }); - PeerHelper.addActivePeerListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent arg0) { - updateTooltip(); - int activePeers = PeerHelper.getActivePeers(); - if(activePeers == 0) - trayIcon.setImage(Toolkit.getDefaultToolkit().getImage("desktopgui/resources/logo/logo_red.jpg")); - else if(activePeers < 10) - trayIcon.setImage(Toolkit.getDefaultToolkit().getImage("desktopgui/resources/logo/logo_orange.jpg")); - else - trayIcon.setImage(Toolkit.getDefaultToolkit().getImage("desktopgui/resources/logo/logo_green.jpg")); - - } - - }); - } - - public void updateTooltip() { - trayIcon.setToolTip("I2P Network status: " + PeerHelper.getReachability() + " / " + "Active Peers: " + PeerHelper.getActivePeers()); - } - - private SystemTray tray = null; - private JPopupTrayIcon trayIcon = null; - -} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/Version.form b/apps/desktopgui/src/net/i2p/desktopgui/gui/Version.form deleted file mode 100644 index 32ab90b31..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/Version.form +++ /dev/null @@ -1,102 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> - -<Form version="1.5" maxVersion="1.6" type="org.netbeans.modules.form.forminfo.JDialogFormInfo"> - <Properties> - <Property name="defaultCloseOperation" type="int" value="2"/> - <Property name="title" type="java.lang.String" resourceKey="Form.title"/> - <Property name="name" type="java.lang.String" value="Form" noResource="true"/> - </Properties> - <SyntheticProperties> - <SyntheticProperty name="formSizePolicy" type="int" value="1"/> - </SyntheticProperties> - <AuxValues> - <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/> - <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/> - <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> - <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> - <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/> - <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/> - <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> - <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> - <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> - </AuxValues> - - <Layout> - <DimensionLayout dim="0"> - <Group type="103" groupAlignment="0" attributes="0"> - <Group type="102" attributes="0"> - <EmptySpace max="-2" attributes="0"/> - <Group type="103" groupAlignment="0" attributes="0"> - <Group type="102" alignment="0" attributes="0"> - <Group type="103" groupAlignment="1" max="-2" attributes="0"> - <Component id="I2Plabel" alignment="0" max="32767" attributes="0"/> - <Component id="GUILabel" alignment="0" max="32767" attributes="1"/> - </Group> - <EmptySpace type="separate" max="-2" attributes="0"/> - <Group type="103" groupAlignment="0" attributes="0"> - <Component id="I2PVersion" pref="126" max="32767" attributes="0"/> - <Component id="GUIVersion" pref="126" max="32767" attributes="0"/> - </Group> - </Group> - <Component id="okButton" alignment="1" min="-2" max="-2" attributes="0"/> - </Group> - <EmptySpace max="-2" attributes="0"/> - </Group> - </Group> - </DimensionLayout> - <DimensionLayout dim="1"> - <Group type="103" groupAlignment="0" attributes="0"> - <Group type="102" alignment="0" attributes="0"> - <EmptySpace max="-2" attributes="0"/> - <Group type="103" groupAlignment="0" attributes="0"> - <Component id="I2Plabel" min="-2" max="-2" attributes="0"/> - <Component id="I2PVersion" min="-2" max="-2" attributes="0"/> - </Group> - <EmptySpace max="-2" attributes="0"/> - <Group type="103" groupAlignment="0" attributes="0"> - <Component id="GUILabel" min="-2" max="-2" attributes="0"/> - <Component id="GUIVersion" min="-2" max="-2" attributes="0"/> - </Group> - <EmptySpace max="32767" attributes="0"/> - <Component id="okButton" min="-2" max="-2" attributes="0"/> - <EmptySpace max="-2" attributes="0"/> - </Group> - </Group> - </DimensionLayout> - </Layout> - <SubComponents> - <Component class="javax.swing.JButton" name="okButton"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="okButton.text"/> - <Property name="name" type="java.lang.String" value="okButton" noResource="true"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="okButtonActionPerformed"/> - </Events> - </Component> - <Component class="javax.swing.JLabel" name="I2Plabel"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="I2Plabel.text"/> - <Property name="name" type="java.lang.String" value="I2Plabel" noResource="true"/> - </Properties> - </Component> - <Component class="javax.swing.JLabel" name="GUILabel"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="GUILabel.text"/> - <Property name="name" type="java.lang.String" value="GUILabel" noResource="true"/> - </Properties> - </Component> - <Component class="javax.swing.JLabel" name="I2PVersion"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="I2PVersion.text"/> - <Property name="name" type="java.lang.String" value="I2PVersion" noResource="true"/> - </Properties> - </Component> - <Component class="javax.swing.JLabel" name="GUIVersion"> - <Properties> - <Property name="text" type="java.lang.String" resourceKey="GUIVersion.text"/> - <Property name="name" type="java.lang.String" value="GUIVersion" noResource="true"/> - </Properties> - </Component> - </SubComponents> -</Form> diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/Version.java b/apps/desktopgui/src/net/i2p/desktopgui/gui/Version.java deleted file mode 100644 index 25a38d6b8..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/Version.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Version.java - * - * Created on 13 april 2009, 13:48 - */ - -package net.i2p.desktopgui.gui; - -import javax.swing.JFrame; -import net.i2p.desktopgui.router.RouterHelper; - -/** - * - * @author mathias - */ -public class Version extends javax.swing.JDialog { - - public Version() { - this(new JFrame(), true); - } - - - private Version(java.awt.Frame parent, boolean modal) { - super(parent, modal); - initComponents(); - String i2pVersion = RouterHelper.getVersion(); - String guiVersion = net.i2p.desktopgui.desktopgui.GUIVersion.VERSION; - this.I2PVersion.setText("<html><h1>" + i2pVersion + "</h1></html>"); - this.GUIVersion.setText("<html><h1>" + guiVersion + "</h1></html>"); - this.setVisible(true); - } - - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ - @SuppressWarnings("unchecked") - // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents - private void initComponents() { - - okButton = new javax.swing.JButton(); - I2Plabel = new javax.swing.JLabel(); - GUILabel = new javax.swing.JLabel(); - I2PVersion = new javax.swing.JLabel(); - GUIVersion = new javax.swing.JLabel(); - - setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); - org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(net.i2p.desktopgui.desktopgui.Main.class).getContext().getResourceMap(Version.class); - setTitle(resourceMap.getString("Form.title")); // NOI18N - setName("Form"); // NOI18N - - okButton.setText(resourceMap.getString("okButton.text")); // NOI18N - okButton.setName("okButton"); // NOI18N - okButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - okButtonActionPerformed(evt); - } - }); - - I2Plabel.setText(resourceMap.getString("I2Plabel.text")); // NOI18N - I2Plabel.setName("I2Plabel"); // NOI18N - - GUILabel.setText(resourceMap.getString("GUILabel.text")); // NOI18N - GUILabel.setName("GUILabel"); // NOI18N - - I2PVersion.setText(resourceMap.getString("I2PVersion.text")); // NOI18N - I2PVersion.setName("I2PVersion"); // NOI18N - - GUIVersion.setText(resourceMap.getString("GUIVersion.text")); // NOI18N - GUIVersion.setName("GUIVersion"); // NOI18N - - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addComponent(I2Plabel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(GUILabel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGap(18, 18, 18) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(I2PVersion, javax.swing.GroupLayout.DEFAULT_SIZE, 126, Short.MAX_VALUE) - .addComponent(GUIVersion, javax.swing.GroupLayout.DEFAULT_SIZE, 126, Short.MAX_VALUE))) - .addComponent(okButton, javax.swing.GroupLayout.Alignment.TRAILING)) - .addContainerGap()) - ); - layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(I2Plabel) - .addComponent(I2PVersion)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(GUILabel) - .addComponent(GUIVersion)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(okButton) - .addContainerGap()) - ); - - pack(); - }// </editor-fold>//GEN-END:initComponents - -private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed - this.dispose(); -}//GEN-LAST:event_okButtonActionPerformed - - - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JLabel GUILabel; - private javax.swing.JLabel GUIVersion; - private javax.swing.JLabel I2PVersion; - private javax.swing.JLabel I2Plabel; - private javax.swing.JButton okButton; - // End of variables declaration//GEN-END:variables - -} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/ClientTunnelWindow.properties b/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/ClientTunnelWindow.properties deleted file mode 100644 index ca036e197..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/ClientTunnelWindow.properties +++ /dev/null @@ -1,26 +0,0 @@ -# To change this template, choose Tools | Templates -# and open the template in the editor. - -Form.title=Client Tunnel Configuration -tunnelNameLabel.text=Name: -tunnelTypeLabel.text=Type: -tunnelType.text=jLabel10 -tunnelName.text=jTextField1 -tunnelPortLabel.text=Port: -tunnelPort.text=jTextField2 -tunnelDestination.text=jTextField3 -tunnelDestinationLabel.text=Destination: -tunnelProfileLabel.text=Profile: -delayConnect.text=Delay connect -sharedClient.text=Shared client -autoStart.text=Auto start -tunnelDepthLabel.text=Tunnel depth: -depthVarianceLabel.text=Depth variance: -tunnelCountLabel.text=Tunnel count: -backupTunnelCountLabel.text=Backup tunnel count: -reduceIdle.text=Reduce tunnel count when idle -closeIdle.text=Close tunnels when idle -delayIdle.text=Delay opening of tunnels when idle -save.text=Save -cancel.text=Cancel -changeTunnelState.text=Start Tunnel diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/GeneralConfiguration.properties b/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/GeneralConfiguration.properties deleted file mode 100644 index d53ac80d0..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/GeneralConfiguration.properties +++ /dev/null @@ -1,37 +0,0 @@ -cancel.text=Cancel -ok.text=OK -Form.title=General Configuration -speedPanel.TabConstraints.tabTitle=Speed -updatesPanel.TabConstraints.tabTitle=Updates -tunnelPanel.TabConstraints.tabTitle=Tunnels/Services -networkPanel.TabConstraints.tabTitle=Network -advancedPanel.TabConstraints.tabTitle=Advanced -uploadSpeedLabel.text=Upload speed: -downloadSpeedLabel.text=Download speed: -uploadspeed.text=jTextField1 -downloadspeed.text=jTextField2 -uploadgb.text=jTextField3 -downloadgb.text=jTextField4 -updateMethod.text=What is your preferred automatic update setting? -updateInform.text=Only inform about updates (not advised) -updateDownload.text=Download and verify update file, do not restart -updateDownloadRestart.text=Download, verify and restart -checkUpdates.text=Check for updates now -updateNow.text=Update available: update now -advancedUpdateConfig.text=Advanced update configuration -clientTunnelLabel.text=Client tunnels: -serverTunnelLabel.text=Server tunnels: -tunnelsExplanation.text=Click on a tunnel to view and change its configuration. + Tunnel explanation -uploadUsageLabel.text=Monthly usage: -downloadUsageLabel.text=Monthly usage: -gbUploadLabel.text=GB -gbDownloadLabel.text=GB -uploadDownloadExplanation.text=Explanation ... -clientTable.columnModel.title3=Status -clientTable.columnModel.title2=Address -clientTable.columnModel.title1=Type -clientTable.columnModel.title0=Name -serverTable.columnModel.title0=Name -serverTable.columnModel.title3=Title 4 -serverTable.columnModel.title2=Status -serverTable.columnModel.title1=Address diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/LogViewer.properties b/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/LogViewer.properties deleted file mode 100644 index d4ef5bf0e..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/LogViewer.properties +++ /dev/null @@ -1,4 +0,0 @@ -refreshButton.text=Refresh -clearButton.text=Clear -explanationText.text=Explanation ... -Form.title=View Logs diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/ServerTunnelWindow.properties b/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/ServerTunnelWindow.properties deleted file mode 100644 index 683f3caa7..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/ServerTunnelWindow.properties +++ /dev/null @@ -1 +0,0 @@ -jLabel1.text=Name: diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/SpeedSelector.properties b/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/SpeedSelector.properties deleted file mode 100644 index 00eb6c973..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/SpeedSelector.properties +++ /dev/null @@ -1,6 +0,0 @@ - -Form.title=I2P Speed Configuration -nextButton.text=Next -uploadLabel.text=What is your maximum upload speed? -downloadLabel.text=What is your maximum download speed? -speedExplanation.text=<html>The maximum speed is set by your provider. It can be given in <b>kilobit (kbps)</b> or <b>kilobyte (kBps)</b>.<br />One kilobyte equals eight kilobit.</html> diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/SpeedSelector2.properties b/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/SpeedSelector2.properties deleted file mode 100644 index 909518ada..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/SpeedSelector2.properties +++ /dev/null @@ -1,9 +0,0 @@ -returnButton.text=Previous -Form.title=I2P Speed Configuration -questionLabel.text=Which of these descriptions fits you best? -browseButton.text=Browsing: I want to use I2P to browse websites anonymously, no heavy usage. -downloadButton.text=Downloading: I want to use I2P for downloads and filesharing, heavy usage. -nextButton.text=Next -browseButton.actionCommand=Browsing -downloadButton.actionCommand=Downloading -jLabel1.text=<html>I2P can be used for many different purposes. Here, we present two possible descriptions. If you use a lot of bandwidth in I2P (for example using downloading), please check the <b>downloading</b> option. If your bandwidth usage is limited, please check the <b>browsing</b> option.</html> diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/SpeedSelector3.properties b/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/SpeedSelector3.properties deleted file mode 100644 index 6dca3ca51..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/SpeedSelector3.properties +++ /dev/null @@ -1,17 +0,0 @@ -Form.title=I2P Configuration -previousButton.text=Previous -finishButton.text=Finish -uploadLabel.text=Upload Speed: -uploadBurstLabel.text=Burst Upload Speed: -downloadLabel.text=Download Speed: -downloadBurstLabel.text=Burst Download Speed: -uploadUsageLabel.text=GB -downloadUsageLabel.text=GB -uploadField.text=jTextField1 -uploadBurstField.text=jTextField2 -downloadField.text=jTextField4 -downloadBurstField.text=jTextField5 -uploadMonth.text=jTextField1 -downloadMonth.text=jTextField2 -settingsInfo.text=The profile information your entered, indicates that these are your optimal settings: -explanation.text=<html>We give a suggested upload and download speed. If your provider imposes a monthly bandwidth limit (usually given in <b>gigabyte (GB)</b>), please enter a value lower than that limit. If you run I2P only 50% of the time, you can double the bandwidth limit to use the same amount as when you are online 100% of the time.</html> diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/Version.properties b/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/Version.properties deleted file mode 100644 index c2030bb2d..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/gui/resources/Version.properties +++ /dev/null @@ -1,6 +0,0 @@ -okButton.text=OK -I2Plabel.text=<html><h1>I2P Version:</h1></html> -GUILabel.text=<html><h1>GUI Version:</h1></html> -I2PVersion.text=jLabel3 -GUIVersion.text=jLabel4 -Form.title=Version diff --git a/apps/desktopgui/src/net/i2p/desktopgui/persistence/PropertyManager.java b/apps/desktopgui/src/net/i2p/desktopgui/persistence/PropertyManager.java deleted file mode 100644 index 770bd0957..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/persistence/PropertyManager.java +++ /dev/null @@ -1,72 +0,0 @@ -package net.i2p.desktopgui.persistence; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.Properties; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * - * @author mathias - */ -public class PropertyManager { - - public static void setProps(Properties props) { - PropertyManager.props = props; - } - - public static Properties getProps() { - return props; - } - - public static Properties loadProps() { - Properties defaultProps = new Properties(); - defaultProps.setProperty("firstLoad", "true"); - - // create application properties with default - Properties applicationProps = new Properties(defaultProps); - - // now load properties from last invocation - FileInputStream in; - try { - in = new FileInputStream(PROPSLOCATION); - applicationProps.load(in); - in.close(); - } catch (FileNotFoundException ex) { - //Nothing serious, just means it's being loaded for the first time. - } catch(IOException ex) { - Logger.getLogger(PropertyManager.class.getName()).log(Level.INFO, null, ex); - } - props = applicationProps; - return applicationProps; - } - - public static void saveProps(Properties props) { - FileOutputStream out; - try { - File d = new File(PROPSDIRECTORY); - if(!d.exists()) - d.mkdir(); - File f = new File(PROPSLOCATION); - if(!f.exists()) - f.createNewFile(); - out = new FileOutputStream(f); - props.store(out, PROPSLOCATION); - } catch (FileNotFoundException ex) { - Logger.getLogger(PropertyManager.class.getName()).log(Level.SEVERE, null, ex); - } catch(IOException ex) { - Logger.getLogger(PropertyManager.class.getName()).log(Level.SEVERE, null, ex); - } - } - - private static Properties props; - - ///Location where we store the Application Properties - public static final String PROPSDIRECTORY = "desktopgui"; - public static final String PROPSFILENAME = "appProperties"; - public static final String PROPSLOCATION = PROPSDIRECTORY + File.separator + PROPSFILENAME; -} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterHandler.java b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterHandler.java deleted file mode 100644 index 022c5c814..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterHandler.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ - -package net.i2p.desktopgui.router; - -import java.util.logging.Level; -import java.util.logging.Logger; -import net.i2p.router.RouterContext; - -/** - * - * @author mathias - */ -public class RouterHandler { - public static final int SHUTDOWN_GRACEFULLY = 0; - public static void setStatus(int status) { - if(status == SHUTDOWN_GRACEFULLY) { - Thread t = new Thread(new Runnable() { - - public void run() { - RouterContext context = RouterHelper.getContext(); - context.router().shutdownGracefully(); - while(context.router().getShutdownTimeRemaining()>0) - try { - Thread.sleep(context.router().getShutdownTimeRemaining()); - } catch (InterruptedException ex) { - Logger.getLogger(RouterHandler.class.getName()).log(Level.SEVERE, null, ex); - } - System.exit(0); - } - - }); - t.start(); - } - } -} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterHelper.java b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterHelper.java deleted file mode 100644 index 2da95f0c6..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterHelper.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.i2p.desktopgui.router; - -import net.i2p.router.RouterContext; -import net.i2p.router.RouterVersion; - -/** - * - * @author mathias - */ -public class RouterHelper { - public static RouterContext getContext() { - return (RouterContext) RouterContext.listContexts().get(0); - } - - public static long getGracefulShutdownTimeRemaining() { - return RouterHelper.getContext().router().getShutdownTimeRemaining(); - } - - public static String getVersion() { - return (RouterVersion.VERSION + "-" + RouterVersion.BUILD); - } -} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java new file mode 100644 index 000000000..c73e7c481 --- /dev/null +++ b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java @@ -0,0 +1,23 @@ +package net.i2p.desktopgui.router; + +import net.i2p.I2PAppContext; +import org.tanukisoftware.wrapper.WrapperManager; + +public class RouterManager { + + public static void shutDown(final int exitCode) { + I2PAppContext.getGlobalContext().addShutdownTask(new Runnable() { + + @Override + public void run() { + try { + WrapperManager.signalStopped(exitCode); + } + catch(Throwable t) { + //TODO: log + } + } + + }); + } +} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/router/configuration/PeerHelper.java b/apps/desktopgui/src/net/i2p/desktopgui/router/configuration/PeerHelper.java deleted file mode 100644 index 74df2b3d9..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/router/configuration/PeerHelper.java +++ /dev/null @@ -1,165 +0,0 @@ -package net.i2p.desktopgui.router.configuration; - -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.ArrayList; -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; -import net.i2p.data.RouterAddress; -import net.i2p.router.CommSystemFacade; -import net.i2p.router.RouterContext; -import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade; -import net.i2p.router.transport.ntcp.NTCPAddress; -import net.i2p.desktopgui.router.RouterHelper; - -/** - * Part of the code imported and adapted from the I2P Router Console (which is licensed as public domain) - */ -public class PeerHelper { - public static String getReachability() { - RouterContext context = RouterHelper.getContext(); - if (context.router().getUptime() > 60*1000 - && (!context.router().gracefulShutdownInProgress()) - && !context.clientManager().isAlive()) - return "ERROR: Client Manager I2CP Error - check logs"; // not a router problem but the user should know - if (!context.clock().getUpdatedSuccessfully()) - return "ERROR: ClockSkew"; - if (context.router().isHidden()) - return "Hidden"; - - int status = context.commSystem().getReachabilityStatus(); - switch (status) { - case CommSystemFacade.STATUS_OK: - RouterAddress ra = context.router().getRouterInfo().getTargetAddress("NTCP"); - if (ra == null || (new NTCPAddress(ra)).isPubliclyRoutable()) - return "OK"; - return "ERROR: Private TCP Address"; - case CommSystemFacade.STATUS_DIFFERENT: - return "ERROR: You are behind a symmetric NAT."; - case CommSystemFacade.STATUS_REJECT_UNSOLICITED: - if (context.router().getRouterInfo().getTargetAddress("NTCP") != null) - return "WARNING: You are behind a firewall and have Inbound TCP Enabled"; - if (((FloodfillNetworkDatabaseFacade)context.netDb()).floodfillEnabled()) - return "WARNING: You are behind a firewall and are a floodfill router"; - if (context.router().getRouterInfo().getCapabilities().indexOf('O') >= 0) - return "WARNING: You are behind a firewall and are a fast router"; - return "Firewalled"; - case CommSystemFacade.STATUS_HOSED: - return "ERROR: The UDP port is already in use. Set i2np.udp.internalPort=xxxx to a different value in the advanced config and restart"; - case CommSystemFacade.STATUS_UNKNOWN: // fallthrough - default: - ra = context.router().getRouterInfo().getTargetAddress("SSU"); - if (ra == null && context.router().getUptime() > 5*60*1000) { - if (context.getProperty(PROP_I2NP_NTCP_HOSTNAME) == null || - context.getProperty(PROP_I2NP_NTCP_PORT) == null) - return "ERROR: UDP is disabled and the inbound TCP host/port combination is not set"; - else - return "WARNING: You are behind a firewall and have UDP Disabled"; - } - return "Testing"; - } - } - - /** - * How many peers we are talking to now - * - */ - public static int getActivePeers() { - RouterContext context = RouterHelper.getContext(); - if (context == null) - return 0; - else - return context.commSystem().countActivePeers(); - } - - public static void addActivePeerListener(ActionListener listener) { - synchronized(activePeerListeners) { - activePeerListeners.add(listener); - if(activePeerTimer == null) { - activePeerTimer = new Timer(); - TimerTask t = new TimerTask() { - private int activePeers = 0; - - @Override - public void run() { - int newActivePeers = getActivePeers(); - if(!(activePeers == newActivePeers)) { - synchronized(activePeerListeners) { - for(int i=0; i<activePeerListeners.size(); i++) { - activePeerListeners.get(i).actionPerformed(new ActionEvent(this, 0, "")); - } - } - activePeers = newActivePeers; - } - } - }; - activePeerTimer.schedule(t, 0, 60*1000); - } - } - } - - public static void removeActivePeerListener(ActionListener listener) { - synchronized(activePeerListeners) { - activePeerListeners.remove(listener); - if(activePeerListeners.size() == 0) { - activePeerTimer.cancel(); - activePeerTimer = null; - } - } - } - - - - public static void addReachabilityListener(ActionListener listener) { - synchronized(reachabilityListeners) { - reachabilityListeners.add(listener); - if(reachabilityTimer == null) { - reachabilityTimer = new Timer(); - TimerTask t = new TimerTask() { - - private String reachability = ""; - - @Override - public void run() { - String newReachability = getReachability(); - if(!reachability.equals(newReachability)) { - synchronized(reachabilityListeners) { - for(int i=0; i<reachabilityListeners.size(); i++) { - reachabilityListeners.get(i).actionPerformed(new ActionEvent(this, 0, "")); - } - } - reachability = newReachability; - } - } - - }; - reachabilityTimer.schedule(t, 0, 60*1000); - } - } - } - - public static void removeReachabilityListener(ActionListener listener) { - synchronized(reachabilityListeners) { - reachabilityListeners.remove(listener); - if(reachabilityListeners.size() == 0) { - reachabilityTimer.cancel(); - reachabilityTimer = null; - } - } - } - - private static List<ActionListener> reachabilityListeners = new ArrayList<ActionListener>(); - private static Timer reachabilityTimer = null; - - private static List<ActionListener> activePeerListeners = new ArrayList<ActionListener>(); - private static Timer activePeerTimer = null; - - /** copied from various private components */ - public final static String PROP_I2NP_UDP_PORT = "i2np.udp.port"; - public final static String PROP_I2NP_INTERNAL_UDP_PORT = "i2np.udp.internalPort"; - public final static String PROP_I2NP_NTCP_HOSTNAME = "i2np.ntcp.hostname"; - public final static String PROP_I2NP_NTCP_PORT = "i2np.ntcp.port"; - public final static String PROP_I2NP_NTCP_AUTO_PORT = "i2np.ntcp.autoport"; - public final static String PROP_I2NP_NTCP_AUTO_IP = "i2np.ntcp.autoip"; -} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/router/configuration/SpeedHandler.java b/apps/desktopgui/src/net/i2p/desktopgui/router/configuration/SpeedHandler.java deleted file mode 100644 index 8fd675657..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/router/configuration/SpeedHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package net.i2p.desktopgui.router.configuration; - -import net.i2p.router.RouterContext; -import net.i2p.router.transport.FIFOBandwidthRefiller; -import net.i2p.desktopgui.router.RouterHelper; - -/** - * - * @author mathias - */ -public class SpeedHandler { - - public static void setInboundBandwidth(int kbytes) { - context.router().setConfigSetting(FIFOBandwidthRefiller.PROP_INBOUND_BANDWIDTH, "" + kbytes); - context.router().saveConfig(); - } - - public static void setOutboundBandwidth(int kbytes) { - context.router().setConfigSetting(FIFOBandwidthRefiller.PROP_OUTBOUND_BANDWIDTH, "" + kbytes); - context.router().saveConfig(); - } - - public static void setInboundBurstBandwidth(int kbytes) { - context.router().setConfigSetting(FIFOBandwidthRefiller.PROP_INBOUND_BURST_BANDWIDTH, "" + kbytes); - context.router().saveConfig(); - } - - public static void setOutboundBurstBandwidth(int kbytes) { - context.router().setConfigSetting(FIFOBandwidthRefiller.PROP_OUTBOUND_BURST_BANDWIDTH, "" + kbytes); - context.router().saveConfig(); - } - - private static final RouterContext context = RouterHelper.getContext(); -} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/router/configuration/SpeedHelper.java b/apps/desktopgui/src/net/i2p/desktopgui/router/configuration/SpeedHelper.java deleted file mode 100644 index 51b8b5a6f..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/router/configuration/SpeedHelper.java +++ /dev/null @@ -1,43 +0,0 @@ -package net.i2p.desktopgui.router.configuration; - -import net.i2p.router.transport.FIFOBandwidthRefiller; -import net.i2p.desktopgui.router.RouterHelper; - -/** - * - * @author mathias - */ -public class SpeedHelper { - public static final String USERTYPE_BROWSING = "Browsing"; - public static final String USERTYPE_DOWNLOADING = "Downloading"; - - public static int calculateSpeed(String capable, String profile) { - int capableSpeed = Integer.parseInt(capable); - int advisedSpeed = capableSpeed; - if(capableSpeed > 1000) { - if(profile.equals(USERTYPE_BROWSING)) //Don't overdo usage for people just wanting to browse (we don't want to drive them away due to resource hogging) - advisedSpeed *= 0.6; - else if(profile.equals(USERTYPE_DOWNLOADING)) - advisedSpeed *= 0.8; - } - else - advisedSpeed *= 0.6; //Lower available bandwidth: don't hog all the bandwidth - return advisedSpeed; - } - - public static int calculateMonthlyUsage(int kbytes) { - return (int) ((((long)kbytes)*3600*24*31)/1000000); - } - - public static int calculateSpeed(int gigabytes) { - return (int) (((long)gigabytes)*1000000/31/24/3600); - } - - public static String getInboundBandwidth() { - return RouterHelper.getContext().router().getConfigSetting(FIFOBandwidthRefiller.PROP_INBOUND_BANDWIDTH); - } - - public static String getOutboundBandwidth() { - return RouterHelper.getContext().router().getConfigSetting(FIFOBandwidthRefiller.PROP_OUTBOUND_BANDWIDTH); - } -} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/router/configuration/UpdateHandler.java b/apps/desktopgui/src/net/i2p/desktopgui/router/configuration/UpdateHandler.java deleted file mode 100644 index e913f5e51..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/router/configuration/UpdateHandler.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ - -package net.i2p.desktopgui.router.configuration; - -import net.i2p.desktopgui.router.RouterHelper; - -/** - * - * @author mathias - */ -public class UpdateHandler { - public static void setUpdatePolicy(String policy) { - RouterHelper.getContext().router().setConfigSetting(UpdateHelper.PROP_UPDATE_POLICY, policy); - RouterHelper.getContext().router().saveConfig(); - } -} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/router/configuration/UpdateHelper.java b/apps/desktopgui/src/net/i2p/desktopgui/router/configuration/UpdateHelper.java deleted file mode 100644 index 6e28db108..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/router/configuration/UpdateHelper.java +++ /dev/null @@ -1,65 +0,0 @@ -package net.i2p.desktopgui.router.configuration; - -import net.i2p.desktopgui.router.RouterHelper; - -/** - * - * @author mathias - */ -public class UpdateHelper { - - public static final String PROP_NEWS_URL = "router.newsURL"; - public static final String DEFAULT_NEWS_URL = "http://echelon.i2p/i2p/news.xml"; - - public static final String PROP_REFRESH_FREQUENCY = "router.newsRefreshFrequency"; - public static final String DEFAULT_REFRESH_FREQUENCY = 24*60*60*1000 + ""; - - public static final String PROP_UPDATE_POLICY = "router.updatePolicy"; - public static final String NOTIFY_UPDATE_POLICY = "notify"; - public static final String DOWNLOAD_UPDATE_POLICY = "download"; - public static final String INSTALL_UPDATE_POLICY = "install"; - public static final String DEFAULT_UPDATE_POLICY = DOWNLOAD_UPDATE_POLICY; - - public static final String PROP_SHOULD_PROXY = "router.updateThroughProxy"; - public static final String DEFAULT_SHOULD_PROXY = Boolean.TRUE.toString(); - public static final String PROP_PROXY_HOST = "router.updateProxyHost"; - public static final String DEFAULT_PROXY_HOST = "127.0.0.1"; - public static final String PROP_PROXY_PORT = "router.updateProxyPort"; - public static final String DEFAULT_PROXY_PORT = "4444"; - - public static final String PROP_UPDATE_URL = "router.updateURL"; - public static final String DEFAULT_UPDATE_URL = - "http://echelon.i2p/i2p/i2pupdate.sud\r\n" + - "http://stats.i2p/i2p/i2pupdate.sud\r\n" + - "http://www.i2p2.i2p/_static/i2pupdate.sud\r\n" + - "http://update.postman.i2p/i2pupdate.sud" ; - - public static final String PROP_TRUSTED_KEYS = "router.trustedUpdateKeys"; - - public static String getNewsURL() { - String url = RouterHelper.getContext().getProperty(PROP_NEWS_URL); - if(url == null) { - return DEFAULT_NEWS_URL; - } - else { - return url; - } - } - - public static String getUpdatePolicy() { - String policy = null; - try { - policy = RouterHelper.getContext().getProperty(PROP_UPDATE_POLICY); - } - catch(Exception e) { - e.printStackTrace(); - } - System.out.println("Policy: " + policy); - if(policy == null) { - return DEFAULT_UPDATE_POLICY; - } - else { - return policy; - } - } -} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/util/IntegerVerifier.java b/apps/desktopgui/src/net/i2p/desktopgui/util/IntegerVerifier.java deleted file mode 100644 index 7cc0fb46a..000000000 --- a/apps/desktopgui/src/net/i2p/desktopgui/util/IntegerVerifier.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.i2p.desktopgui.util; - -import javax.swing.InputVerifier; -import javax.swing.JComponent; -import javax.swing.JTextField; - -/** - * - * @author mathias - */ - -public class IntegerVerifier extends InputVerifier { - - @Override - public boolean verify(JComponent arg0) { - JTextField jtf = (JTextField) arg0; - return verify(jtf.getText()); - } - - @Override - public boolean shouldYieldFocus(JComponent input) { - return verify(input); - } - - public static boolean verify(String s) { - for(int i=0;i<s.length();i++) - if(s.charAt(i) > '9' || s.charAt(i) < '0') - return false; - return true; - } - -} \ No newline at end of file diff --git a/build.xml b/build.xml index 17a5d36eb..c784461ac 100644 --- a/build.xml +++ b/build.xml @@ -32,6 +32,7 @@ <echo message=" updaterRouter: updater with the i2p.jar and router.jar only" /> <echo message=" distclean: clean up all derived files" /> <echo message=" syndie: generate a standalone syndie install" /> + <echo message=" desktopgui: generate a standalone desktopgui install" /> <echo message=" i2psnark: generate a standalone i2psnark install" /> <echo message=" justBOB: generate a standalone BOB-one.jar" /> <echo message=" javadoc: generate javadoc for the entire project into ./build/javadoc" /> @@ -39,10 +40,6 @@ <echo message=" debianhowto: instructions on building Debian packages" /> <echo message=" debian: generate Debian packages (source + binary)" /> <echo message=" debianrepo: build a Debian repository (reprepro required)" /> - <echo message=" updaterWithDesktopgui: tar the built files and desktopgui in an i2pupdate.zip" /> - <echo message=" pkgWithDesktopgui: distclean then package everything up with the desktopgui" /> - <echo message=" distWithDesktopgui: pkgWithDesktopgui and javadoc" /> - <echo message=" distcleanWithDesktopgui: clean up all derived files (including desktopgui files)" /> <echo message=" poupdate: update the .po files for translators" /> </target> <target name="debianhowto"> @@ -690,6 +687,10 @@ <ant dir="core/java/" target="fullclovertest" /> <ant dir="router/java/" target="fullclovertest" /> </target> + <target name="desktopgui"> + <ant dir="apps/desktopgui" target="jar" /> + <copy file="apps/desktopgui/dist/desktopgui.jar" todir="." /> + </target> <target name="syndie" > <ant dir="apps/syndie/java/" target="standalone" /> <copy file="apps/syndie/java/syndie-standalone.zip" todir="." /> @@ -743,34 +744,6 @@ </exec> <echo message="Findbugs output stored in findbugs.xml" /> </target> - <target name="buildWithDesktopgui" depends="buildrouter,builddepSmall"> - <ant dir="apps/desktopgui" target="build_jar" /> - </target> - <target name="preppkgWithDesktopgui" depends="buildWithDesktopgui,preppkg"> - <copy file="apps/desktopgui/dist/desktopgui.jar" todir="pkg-temp/lib/" /> - <copy file="apps/desktopgui/lib/swing-worker.jar" todir="pkg-temp/lib/" /> - <copy file="apps/desktopgui/lib/appframework.jar" todir="pkg-temp/lib/" /> - <mkdir dir="pkg-temp/desktopgui/resources/" /> - <copy todir="pkg-temp/desktopgui/resources/"> - <fileset dir="apps/desktopgui/desktopgui/resources/" /> - </copy> - </target> - <target name="installerWithDesktopgui" depends="preppkgWithDesktopgui,installer" /> - <target name="prepupdateWithDesktopgui" depends="buildWithDesktopgui,prepupdate"> - <copy file="apps/desktopgui/dist/desktopgui.jar" todir="pkg-temp/lib/" /> - <copy file="apps/desktopgui/lib/swing-worker.jar" todir="pkg-temp/lib/" /> - <copy file="apps/desktopgui/lib/appframework.jar" todir="pkg-temp/lib/" /> - <mkdir dir="pkg-temp/desktopgui/resources/" /> - <copy todir="pkg-temp/desktopgui/resources/"> - <fileset dir="apps/desktopgui/desktopgui/resources/" /> - </copy> - </target> - <target name="updaterWithDesktopgui" depends="prepupdateWithDesktopgui,updater" /> - <target name="pkgWithDesktopgui" depends="distclean, updaterWithDesktopgui, installerWithDesktopgui, preppkg" /> - <target name="distWithDesktopgui" depends="pkgWithDesktopgui, javadoc" /> - <target name="distcleanWithDesktopgui" depends="distclean"> - <ant dir="apps/desktopgui" target="build_clean" /> - </target> <!-- this is the same dependency as pkg, but with updater200 in the middle, since preppkg puts too much stuff in pkg-temp --> From b885046c6403a1e6f2aedb76f3a4a42d60ba0732 Mon Sep 17 00:00:00 2001 From: mathiasdm <mathiasdm@mail.i2p> Date: Thu, 25 Nov 2010 18:12:32 +0000 Subject: [PATCH 002/463] - Added README - Added configuration - Added option to start I2P from desktopgui - Cleanup --- apps/desktopgui/README | 13 +++ apps/desktopgui/TODO | 15 +++- apps/desktopgui/build.xml | 3 +- .../src/net/i2p/desktopgui/Main.java | 4 + .../src/net/i2p/desktopgui/TrayManager.java | 42 +++++++++- .../i2p/desktopgui/router/RouterManager.java | 43 ++++++---- .../desktopgui/util/ConfigurationManager.java | 82 +++++++++++++++++++ build.xml | 2 +- 8 files changed, 179 insertions(+), 25 deletions(-) create mode 100644 apps/desktopgui/README create mode 100644 apps/desktopgui/src/net/i2p/desktopgui/util/ConfigurationManager.java diff --git a/apps/desktopgui/README b/apps/desktopgui/README new file mode 100644 index 000000000..2a4f3a40c --- /dev/null +++ b/apps/desktopgui/README @@ -0,0 +1,13 @@ +Current setup: +* Build desktopgui: + * 'ant jar' in the desktopgui directory + OR + * 'ant desktopgui' in the i2p.i2p directory +* Place desktopgui.jar in the $I2P/lib/ directory. +* Add to .i2p/clients.config: + #Desktopgui + clientApp.6.args=--startWithI2P --I2PLocation=/SOME_LOCATION + clientApp.6.delay=5 + clientApp.6.main=net.i2p.desktopgui.Main + clientApp.6.name=desktopgui + clientApp.6.startOnLoad=true diff --git a/apps/desktopgui/TODO b/apps/desktopgui/TODO index d47410b65..5583a0068 100644 --- a/apps/desktopgui/TODO +++ b/apps/desktopgui/TODO @@ -1,8 +1,17 @@ +HIGH PRIORITY: +- Allow desktopgui to start, stop and restart I2P. - DONE +- Internationalisation +- Correct logging system +UNKNOWN: - API to allow applications to add themselves to the menu? * registerApplication(); -- should return a positive number on success, -1 on failure * unregisterApplication(int); -- should return nothing (or bool for success?), and the parameter should be the number given when registering the application -- Internationalisation - Fetch I2P localhost from the core I2P application? -- Correct logging system - Use I2PAppContext::appDir (something like that) for desktopgui data. -- Check core/java/src/net/i2p/util/FileUtil.java for dynamic jar loading +- Consider SWT as option + * Check core/java/src/net/i2p/util/FileUtil.java for dynamic jar loading + * Possible logic: + - First try to load SWT (has the most options and is not ugly) + - Then load AWT +- Access router.jar from other JVM? Is this possible? -- no: use I2CP with auth (not ready yet) +- Start desktopgui with another user than the user starting I2P (required for daemon usage). diff --git a/apps/desktopgui/build.xml b/apps/desktopgui/build.xml index 0d38f0f5d..5c7f2f496 100644 --- a/apps/desktopgui/build.xml +++ b/apps/desktopgui/build.xml @@ -43,7 +43,8 @@ </manifest> </jar> </target> - + + <target name="dist" depends="jar" /> <target name="all" depends="jar" /> </project> diff --git a/apps/desktopgui/src/net/i2p/desktopgui/Main.java b/apps/desktopgui/src/net/i2p/desktopgui/Main.java index 221de0b06..f4c1948aa 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/Main.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/Main.java @@ -9,6 +9,7 @@ import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import java.util.logging.Level; import java.util.logging.Logger; +import net.i2p.desktopgui.util.*; /** * The main class of the application. @@ -39,7 +40,10 @@ public class Main { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } + ConfigurationManager.getInstance().loadArguments(args); + final Main main = new Main(); + main.launchForeverLoop(); //We'll be doing GUI work, so let's stay in the event dispatcher thread. SwingUtilities.invokeLater(new Runnable() { diff --git a/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java b/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java index c7c33d7cd..fac120e06 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java @@ -9,6 +9,7 @@ import java.awt.SystemTray; import java.awt.Toolkit; import java.awt.TrayIcon; import java.awt.Desktop.Action; +import java.awt.TrayIcon.MessageType; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; @@ -20,6 +21,7 @@ import java.util.Properties; import javax.swing.SwingWorker; import net.i2p.desktopgui.router.RouterManager; +import net.i2p.desktopgui.util.*; import net.i2p.router.Router; /** @@ -54,6 +56,8 @@ public class TrayManager { * @return popup menu */ public PopupMenu getMainMenu() { + boolean inI2P = ConfigurationManager.getInstance().getBooleanConfiguration("startWithI2P", false); + PopupMenu popup = new PopupMenu(); MenuItem browserLauncher = new MenuItem("Launch I2P Browser"); browserLauncher.addActionListener(new ActionListener() { @@ -95,6 +99,32 @@ public class TrayManager { }); popup.add(browserLauncher); popup.addSeparator(); + MenuItem startItem = new MenuItem("Start I2P"); + startItem.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent arg0) { + new SwingWorker<Object, Object>() { + + @Override + protected Object doInBackground() throws Exception { + RouterManager.start(); + return null; + } + + @Override + protected void done() { + trayIcon.displayMessage("Starting", "I2P is starting!", TrayIcon.MessageType.INFO); + tray.remove(trayIcon); + } + + }.execute(); + } + + }); + if(!inI2P) { + popup.add(startItem); + } MenuItem restartItem = new MenuItem("Restart I2P"); restartItem.addActionListener(new ActionListener() { @@ -104,7 +134,7 @@ public class TrayManager { @Override protected Object doInBackground() throws Exception { - RouterManager.shutDown(Router.EXIT_GRACEFUL_RESTART); + RouterManager.restart(); return null; } @@ -113,7 +143,9 @@ public class TrayManager { } }); - popup.add(restartItem); + if(inI2P) { + popup.add(restartItem); + } MenuItem stopItem = new MenuItem("Stop I2P"); stopItem.addActionListener(new ActionListener() { @@ -123,7 +155,7 @@ public class TrayManager { @Override protected Object doInBackground() throws Exception { - RouterManager.shutDown(Router.EXIT_GRACEFUL); + RouterManager.shutDown(); return null; } @@ -132,7 +164,9 @@ public class TrayManager { } }); - popup.add(stopItem); + if(inI2P) { + popup.add(stopItem); + } return popup; } diff --git a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java index c73e7c481..d7c29612f 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java @@ -1,23 +1,34 @@ package net.i2p.desktopgui.router; -import net.i2p.I2PAppContext; -import org.tanukisoftware.wrapper.WrapperManager; +import java.io.IOException; + +import net.i2p.desktopgui.util.ConfigurationManager; +import net.i2p.router.Router; +import net.i2p.router.RouterContext; public class RouterManager { + + private static Router getRouter() { + return RouterContext.listContexts().get(0).router(); + } + + public static void start() { + try { + String location = ConfigurationManager.getInstance().getStringConfiguration("I2PLocation", "/home/i2p"); + //TODO: detect I2P directory + //TODO: crossplatform + Runtime.getRuntime().exec(location + "/i2psvc " + location + "/wrapper.config"); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + public static void restart() { + getRouter().restart(); + } - public static void shutDown(final int exitCode) { - I2PAppContext.getGlobalContext().addShutdownTask(new Runnable() { - - @Override - public void run() { - try { - WrapperManager.signalStopped(exitCode); - } - catch(Throwable t) { - //TODO: log - } - } - - }); + public static void shutDown() { + getRouter().shutdownGracefully(); } } diff --git a/apps/desktopgui/src/net/i2p/desktopgui/util/ConfigurationManager.java b/apps/desktopgui/src/net/i2p/desktopgui/util/ConfigurationManager.java new file mode 100644 index 000000000..872b994fe --- /dev/null +++ b/apps/desktopgui/src/net/i2p/desktopgui/util/ConfigurationManager.java @@ -0,0 +1,82 @@ +package net.i2p.desktopgui.util; + +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Pattern; + +/** + * Manage the configuration of desktopgui. + * @author mathias + * + */ +public class ConfigurationManager { + + private static ConfigurationManager instance; + private Map<String, String> stringConfigurations = new HashMap<String, String>(); + private Map<String, Boolean> booleanConfigurations = new HashMap<String, Boolean>(); + + private ConfigurationManager() {} + + public static ConfigurationManager getInstance() { + if(instance == null) { + instance = new ConfigurationManager(); + } + return instance; + } + + public void loadArguments(String[] args) { + //Match pattern of the form --word=true or --word=false + Pattern booleanConfiguration = Pattern.compile("--(\\w)"); + //Match pattern of the form --word=word + Pattern stringConfiguration = Pattern.compile("--(\\w)=(\\w)"); + //Match pattern of the form --word + Pattern existsConfiguration = Pattern.compile("--(\\w)"); + for(int i=0; i<args.length; i++) { + String arg = args[i]; + if(arg.startsWith("--")) { + arg = arg.substring(2); + if(arg.length() < 1) { + continue; + } + int equals = arg.indexOf('='); + if(equals != -1 && equals < arg.length() - 1) { //String configuration + loadStringConfiguration(arg, equals); + } + else { //Boolean configuration + loadBooleanConfiguration(arg); + } + } + else if(arg.startsWith("-")) { //Boolean configuration + loadBooleanConfiguration(arg); + } + } + } + + public void loadBooleanConfiguration(String arg) { + booleanConfigurations.put(arg, Boolean.TRUE); + } + + public void loadStringConfiguration(String arg, int equalsPosition) { + String key = arg.substring(0, equalsPosition); + String value = arg.substring(equalsPosition+1); + stringConfigurations.put(key, value); + } + + public boolean getBooleanConfiguration(String arg, boolean defaultValue) { + Boolean value = ((Boolean) booleanConfigurations.get("startWithI2P")); + System.out.println(value); + if(value != null) { + return value; + } + return defaultValue; + } + + public String getStringConfiguration(String arg, String defaultValue) { + String value = stringConfigurations.get(arg); + System.out.println(value); + if(value != null) { + return value; + } + return defaultValue; + } +} diff --git a/build.xml b/build.xml index c784461ac..04efa6247 100644 --- a/build.xml +++ b/build.xml @@ -687,7 +687,7 @@ <ant dir="core/java/" target="fullclovertest" /> <ant dir="router/java/" target="fullclovertest" /> </target> - <target name="desktopgui"> + <target name="desktopgui" depends="builddepSmall"> <ant dir="apps/desktopgui" target="jar" /> <copy file="apps/desktopgui/dist/desktopgui.jar" todir="." /> </target> From 02c3abfc4ca8a87bd06794cb3a080f34aa58390c Mon Sep 17 00:00:00 2001 From: mathiasdm <mathiasdm@mail.i2p> Date: Thu, 25 Nov 2010 18:22:28 +0000 Subject: [PATCH 003/463] Added desktopgui documentation. --- .../src/net/i2p/desktopgui/TrayManager.java | 4 +++- .../net/i2p/desktopgui/router/RouterManager.java | 14 ++++++++++++++ .../i2p/desktopgui/util/ConfigurationManager.java | 13 +++++++------ 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java b/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java index fac120e06..51bf9b95c 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java @@ -26,7 +26,6 @@ import net.i2p.router.Router; /** * Manages the tray icon life. - * */ public class TrayManager { @@ -115,6 +114,9 @@ public class TrayManager { @Override protected void done() { trayIcon.displayMessage("Starting", "I2P is starting!", TrayIcon.MessageType.INFO); + //Hide the tray icon. + //We cannot stop the desktopgui program entirely, + //since that risks killing the I2P process as well. tray.remove(trayIcon); } diff --git a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java index d7c29612f..eb6a762d3 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java @@ -12,6 +12,14 @@ public class RouterManager { return RouterContext.listContexts().get(0).router(); } + /** + * Start an I2P router instance. + * This method has limited knowledge + * (there is no I2P instance running to collect information from). + * + * It needs to determine itself where the I2P instance is located, + * except if the location has been given through command-line arguments. + */ public static void start() { try { String location = ConfigurationManager.getInstance().getStringConfiguration("I2PLocation", "/home/i2p"); @@ -24,10 +32,16 @@ public class RouterManager { } } + /** + * Restart the running I2P instance. + */ public static void restart() { getRouter().restart(); } + /** + * Stop the running I2P instance. + */ public static void shutDown() { getRouter().shutdownGracefully(); } diff --git a/apps/desktopgui/src/net/i2p/desktopgui/util/ConfigurationManager.java b/apps/desktopgui/src/net/i2p/desktopgui/util/ConfigurationManager.java index 872b994fe..21e32bb27 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/util/ConfigurationManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/util/ConfigurationManager.java @@ -12,7 +12,9 @@ import java.util.regex.Pattern; public class ConfigurationManager { private static ConfigurationManager instance; + ///Configurations with a String as value private Map<String, String> stringConfigurations = new HashMap<String, String>(); + ///Configurations with a Boolean as value private Map<String, Boolean> booleanConfigurations = new HashMap<String, Boolean>(); private ConfigurationManager() {} @@ -24,13 +26,12 @@ public class ConfigurationManager { return instance; } + /** + * Collects arguments of the form --word, --word=otherword and -blah + * to determine user parameters. + * @param args Command line arguments to the application + */ public void loadArguments(String[] args) { - //Match pattern of the form --word=true or --word=false - Pattern booleanConfiguration = Pattern.compile("--(\\w)"); - //Match pattern of the form --word=word - Pattern stringConfiguration = Pattern.compile("--(\\w)=(\\w)"); - //Match pattern of the form --word - Pattern existsConfiguration = Pattern.compile("--(\\w)"); for(int i=0; i<args.length; i++) { String arg = args[i]; if(arg.startsWith("--")) { From e06ce250ab51761b692af5126854fdff54046613 Mon Sep 17 00:00:00 2001 From: mathiasdm <mathiasdm@mail.i2p> Date: Mon, 29 Nov 2010 17:17:59 +0000 Subject: [PATCH 004/463] * Switch to I2P logging. * Add javadoc where necessary. * Add javadoc build target. * Some code cleanup. --- apps/desktopgui/build.xml | 18 ++++++++++ .../src/net/i2p/desktopgui/Main.java | 21 ++++++------ .../src/net/i2p/desktopgui/TrayManager.java | 33 ++++++++++++------- .../i2p/desktopgui/router/RouterManager.java | 11 +++++-- .../desktopgui/util/ConfigurationManager.java | 22 ++++++++++++- 5 files changed, 80 insertions(+), 25 deletions(-) diff --git a/apps/desktopgui/build.xml b/apps/desktopgui/build.xml index 5c7f2f496..961088719 100644 --- a/apps/desktopgui/build.xml +++ b/apps/desktopgui/build.xml @@ -6,12 +6,14 @@ <property name="dist" location="dist"/> <property name="jar" value="desktopgui.jar"/> <property name="resources" value="resources"/> + <property name="javadoc" value="javadoc"/> <property name="javac.compilerargs" value=""/> <target name="init"> <mkdir dir="${build}"/> <mkdir dir="${build}/${resources}"/> + <mkdir dir="${build}/${javadoc}"/> <mkdir dir="${dist}"/> </target> @@ -44,6 +46,22 @@ </jar> </target> + <target name="javadoc"> + <mkdir dir="${build}" /> + <mkdir dir="${build}/${javadoc}" /> + <javadoc + sourcepath="${src}" destdir="${build}/${javadoc}" + packagenames="*" + use="true" + splitindex="true" + windowtitle="Desktopgui"> + <classpath> + <pathelement location="../../router/java/build/router.jar" /> + <pathelement location="../../core/java/build/i2p.jar" /> + </classpath> + </javadoc> + </target> + <target name="dist" depends="jar" /> <target name="all" depends="jar" /> </project> diff --git a/apps/desktopgui/src/net/i2p/desktopgui/Main.java b/apps/desktopgui/src/net/i2p/desktopgui/Main.java index f4c1948aa..997cde64d 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/Main.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/Main.java @@ -7,37 +7,40 @@ package net.i2p.desktopgui; import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; -import java.util.logging.Level; -import java.util.logging.Logger; import net.i2p.desktopgui.util.*; +import net.i2p.util.Log; /** * The main class of the application. */ public class Main { + + ///Manages the lifetime of the tray icon. + private TrayManager trayManager = null; + private final static Log log = new Log(Main.class); /** * Start the tray icon code (loads tray icon in the tray area). */ private void startUp() { - trayManager = new TrayManager(); + trayManager = TrayManager.getInstance(); + trayManager.startManager(); } /** * Main method launching the application. */ public static void main(String[] args) { - System.setProperty("java.awt.headless", "false"); //Make sure I2P is running in GUI mode for our application try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException ex) { - Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); + log.log(Log.ERROR, null, ex); } catch (InstantiationException ex) { - Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); + log.log(Log.ERROR, null, ex); } catch (IllegalAccessException ex) { - Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); + log.log(Log.ERROR, null, ex); } catch (UnsupportedLookAndFeelException ex) { - Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); + log.log(Log.ERROR, null, ex); } ConfigurationManager.getInstance().loadArguments(args); @@ -78,6 +81,4 @@ public class Main { t.start(); } - ///Manages the lifetime of the tray icon. - private TrayManager trayManager = null; } diff --git a/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java b/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java index 51bf9b95c..8aa4e65c6 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java @@ -9,43 +9,54 @@ import java.awt.SystemTray; import java.awt.Toolkit; import java.awt.TrayIcon; import java.awt.Desktop.Action; -import java.awt.TrayIcon.MessageType; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; -import java.util.Properties; import javax.swing.SwingWorker; import net.i2p.desktopgui.router.RouterManager; -import net.i2p.desktopgui.util.*; -import net.i2p.router.Router; +import net.i2p.desktopgui.util.ConfigurationManager; +import net.i2p.util.Log; /** * Manages the tray icon life. */ public class TrayManager { + private static TrayManager instance = null; ///The tray area, or null if unsupported private SystemTray tray = null; ///Our tray icon, or null if unsupported private TrayIcon trayIcon = null; + private final static Log log = new Log(TrayManager.class); + + /** + * Instantiate tray manager. + */ + private TrayManager() {} + + public static TrayManager getInstance() { + if(instance == null) { + instance = new TrayManager(); + } + return instance; + } /** - * Instantiate tray icon and add it to the system tray. + * Add the tray icon to the system tray and start everything up. */ - public TrayManager() { + public void startManager() { if(SystemTray.isSupported()) { tray = SystemTray.getSystemTray(); trayIcon = new TrayIcon(getTrayImage(), "I2P", getMainMenu()); try { tray.add(trayIcon); } catch (AWTException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.log(Log.WARN, "Problem creating system tray icon!", e); } } } @@ -78,11 +89,9 @@ public class TrayManager { try { desktop.browse(new URI("http://localhost:7657")); } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.log(Log.WARN, "Failed to open browser!", e); } catch (URISyntaxException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.log(Log.WARN, "Failed to open browser!", e); } } else { diff --git a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java index eb6a762d3..228747106 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java @@ -5,9 +5,17 @@ import java.io.IOException; import net.i2p.desktopgui.util.ConfigurationManager; import net.i2p.router.Router; import net.i2p.router.RouterContext; +import net.i2p.util.Log; +/** + * Handle communications with the router instance. + * @author mathias + * + */ public class RouterManager { + private final static Log log = new Log(RouterManager.class); + private static Router getRouter() { return RouterContext.listContexts().get(0).router(); } @@ -27,8 +35,7 @@ public class RouterManager { //TODO: crossplatform Runtime.getRuntime().exec(location + "/i2psvc " + location + "/wrapper.config"); } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + log.log(Log.WARN, "Failed to start I2P", e); } } diff --git a/apps/desktopgui/src/net/i2p/desktopgui/util/ConfigurationManager.java b/apps/desktopgui/src/net/i2p/desktopgui/util/ConfigurationManager.java index 21e32bb27..d514f314a 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/util/ConfigurationManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/util/ConfigurationManager.java @@ -2,7 +2,6 @@ package net.i2p.desktopgui.util; import java.util.HashMap; import java.util.Map; -import java.util.regex.Pattern; /** * Manage the configuration of desktopgui. @@ -53,16 +52,31 @@ public class ConfigurationManager { } } + /** + * Add a boolean configuration. + * @param arg The key we wish to add as a configuration. + */ public void loadBooleanConfiguration(String arg) { booleanConfigurations.put(arg, Boolean.TRUE); } + /** + * Add a String configuration which consists a key and a value. + * @param arg String of the form substring1=substring2. + * @param equalsPosition Position of the '=' element. + */ public void loadStringConfiguration(String arg, int equalsPosition) { String key = arg.substring(0, equalsPosition); String value = arg.substring(equalsPosition+1); stringConfigurations.put(key, value); } + /** + * Check if a specific boolean configuration exists. + * @param arg The key for the configuration. + * @param defaultValue If the configuration is not found, we use a default value. + * @return The value of a configuration: true if found, defaultValue if not found. + */ public boolean getBooleanConfiguration(String arg, boolean defaultValue) { Boolean value = ((Boolean) booleanConfigurations.get("startWithI2P")); System.out.println(value); @@ -72,6 +86,12 @@ public class ConfigurationManager { return defaultValue; } + /** + * Get a specific String configuration. + * @param arg The key for the configuration. + * @param defaultValue If the configuration is not found, we use a default value. + * @return The value of the configuration, or the defaultValue. + */ public String getStringConfiguration(String arg, String defaultValue) { String value = stringConfigurations.get(arg); System.out.println(value); From 620128a76753e455cc9d6e97ce2dc604581efed1 Mon Sep 17 00:00:00 2001 From: mathiasdm <mathiasdm@mail.i2p> Date: Tue, 30 Nov 2010 17:08:22 +0000 Subject: [PATCH 005/463] Cleaned up RouterManager, should now be crossplatform. --- apps/desktopgui/TODO | 3 ++- .../src/net/i2p/desktopgui/router/RouterManager.java | 10 +++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/apps/desktopgui/TODO b/apps/desktopgui/TODO index 5583a0068..0f5a5de4a 100644 --- a/apps/desktopgui/TODO +++ b/apps/desktopgui/TODO @@ -1,7 +1,8 @@ HIGH PRIORITY: - Allow desktopgui to start, stop and restart I2P. - DONE +- Correct logging system - DONE - Internationalisation -- Correct logging system +- Modify installer to set I2P directory parameter; or use $I2P? UNKNOWN: - API to allow applications to add themselves to the menu? * registerApplication(); -- should return a positive number on success, -1 on failure diff --git a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java index 228747106..5a6001742 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java @@ -30,10 +30,14 @@ public class RouterManager { */ public static void start() { try { - String location = ConfigurationManager.getInstance().getStringConfiguration("I2PLocation", "/home/i2p"); //TODO: detect I2P directory - //TODO: crossplatform - Runtime.getRuntime().exec(location + "/i2psvc " + location + "/wrapper.config"); + //TODO: set/get PID + String separator = System.getProperty("file.separator"); + String homeDirectory = System.getProperty("user.home"); + String location = ConfigurationManager.getInstance() + .getStringConfiguration("I2PLocation", homeDirectory + separator + "i2p"); + + Runtime.getRuntime().exec(location + separator + "i2psvc" + location + separator + "wrapper.config"); } catch (IOException e) { log.log(Log.WARN, "Failed to start I2P", e); } From 36d555523d41e6bbbb444d7fc4d4966e6a63e7e5 Mon Sep 17 00:00:00 2001 From: mathiasdm <mathiasdm@mail.i2p> Date: Thu, 9 Dec 2010 17:22:08 +0000 Subject: [PATCH 006/463] Added translation support + first language (nl). --- apps/desktopgui/TODO | 7 +- apps/desktopgui/build.xml | 18 ++++ apps/desktopgui/bundle-messages.sh | 95 +++++++++++++++++++ apps/desktopgui/locale/messages_nl.po | 31 ++++++ .../src/net/i2p/desktopgui/Main.java | 1 + .../src/net/i2p/desktopgui/TrayManager.java | 19 ++-- .../desktopgui/i18n/DesktopguiTranslator.java | 26 +++++ .../src/net/i2p/desktopgui/package.html | 5 + .../i2p/desktopgui/router/RouterManager.java | 5 + 9 files changed, 199 insertions(+), 8 deletions(-) create mode 100644 apps/desktopgui/bundle-messages.sh create mode 100644 apps/desktopgui/locale/messages_nl.po create mode 100644 apps/desktopgui/src/net/i2p/desktopgui/i18n/DesktopguiTranslator.java create mode 100644 apps/desktopgui/src/net/i2p/desktopgui/package.html diff --git a/apps/desktopgui/TODO b/apps/desktopgui/TODO index 0f5a5de4a..5f38de78a 100644 --- a/apps/desktopgui/TODO +++ b/apps/desktopgui/TODO @@ -1,7 +1,12 @@ HIGH PRIORITY: - Allow desktopgui to start, stop and restart I2P. - DONE - Correct logging system - DONE -- Internationalisation +- Internationalisation: + * Add strings + * Add Windows support + * Might need some kind of trigger to reload the menu (for live language switching) + * Language choice is not actually set as a parameter in I2P config? + As a result, desktopgui always starts with the default, unless you manually set the language. - Modify installer to set I2P directory parameter; or use $I2P? UNKNOWN: - API to allow applications to add themselves to the menu? diff --git a/apps/desktopgui/build.xml b/apps/desktopgui/build.xml index 961088719..f8de80428 100644 --- a/apps/desktopgui/build.xml +++ b/apps/desktopgui/build.xml @@ -39,6 +39,13 @@ </target> <target name="jar" depends="compile"> + <exec executable="sh" osfamily="unix" failifexecutionfails="true" > + <arg value="./bundle-messages.sh" /> + </exec> + <exec executable="sh" osfamily="mac" failifexecutionfails="true" > + <arg value="./bundle-messages.sh" /> + </exec> + <jar basedir="${build}" destfile="${dist}/${jar}"> <manifest> <attribute name="Main-Class" value="net.i2p.desktopgui.Main"/> @@ -62,6 +69,17 @@ </javadoc> </target> + <target name="poupdate"> + <exec executable="sh" osfamily="unix" failifexecutionfails="true" > + <arg value="./bundle-messages.sh" /> + <arg value="-p" /> + </exec> + <exec executable="sh" osfamily="mac" failifexecutionfails="true" > + <arg value="./bundle-messages.sh" /> + <arg value="-p" /> + </exec> + </target> + <target name="dist" depends="jar" /> <target name="all" depends="jar" /> </project> diff --git a/apps/desktopgui/bundle-messages.sh b/apps/desktopgui/bundle-messages.sh new file mode 100644 index 000000000..4762e9a8b --- /dev/null +++ b/apps/desktopgui/bundle-messages.sh @@ -0,0 +1,95 @@ +# +# Update messages_xx.po and messages_xx.class files, +# from both java and jsp sources. +# Requires installed programs xgettext, msgfmt, msgmerge, and find. +# +# usage: +# bundle-messages.sh (generates the resource bundle from the .po file) +# bundle-messages.sh -p (updates the .po file from the source tags, then generates the resource bundle) +# +# zzz - public domain +# Mathiasdm - modifications for desktopgui +# +CLASS=net.i2p.desktopgui.messages +TMPFILE=build/javafiles.txt +export TZ=UTC + +if [ "$1" = "-p" ] +then + POUPDATE=1 +fi + +# add ../java/ so the refs will work in the po file +JPATHS="src" +for i in locale/messages_*.po +do + # get language + LG=${i#locale/messages_} + LG=${LG%.po} + + if [ "$POUPDATE" = "1" ] + then + # make list of java files newer than the .po file + find $JPATHS -name *.java -newer $i > $TMPFILE + fi + + echo $LG + if [ -s build/net/i2p/desktopgui/messages_$LG.class -a \ + build/net/i2p/desktopgui/messages_$LG.class -nt $i -a \ + ! -s $TMPFILE ] + then + continue + fi + + if [ "$POUPDATE" = "1" ] + then + echo "Updating the $i file from the tags..." + # extract strings from java and jsp files, and update messages.po files + # translate calls must be one of the forms: + # _("foo") + # _x("foo") + # intl._("foo") + # intl.title("foo") + # handler._("foo") + # formhandler._("foo") + # net.i2p.router.web.Messages.getString("foo") + # In a jsp, you must use a helper or handler that has the context set. + # To start a new translation, copy the header from an old translation to the new .po file, + # then ant distclean updater. + find $JPATHS -name *.java > $TMPFILE + xgettext -f $TMPFILE -F -L java --from-code=UTF-8 --add-comments\ + --keyword=_ --keyword=_x --keyword=intl._ --keyword=intl.title \ + --keyword=handler._ --keyword=formhandler._ \ + --keyword=net.i2p.router.web.Messages.getString \ + -o ${i}t + if [ $? -ne 0 ] + then + echo 'Warning - xgettext failed, not updating translations' + rm -f ${i}t + break + fi + msgmerge -U --backup=none $i ${i}t + if [ $? -ne 0 ] + then + echo 'Warning - msgmerge failed, not updating translations' + rm -f ${i}t + break + fi + rm -f ${i}t + # so we don't do this again + touch $i + fi + + echo "Generating ${CLASS}_$LG ResourceBundle..." + + # convert to class files in build + msgfmt --java --statistics -r $CLASS -l $LG -d build $i + if [ $? -ne 0 ] + then + echo 'Warning - msgfmt failed, not updating translations' + break + fi +done +rm -f $TMPFILE +# todo: return failure +exit 0 diff --git a/apps/desktopgui/locale/messages_nl.po b/apps/desktopgui/locale/messages_nl.po new file mode 100644 index 000000000..f994059d2 --- /dev/null +++ b/apps/desktopgui/locale/messages_nl.po @@ -0,0 +1,31 @@ +#: src/net/i2p/desktopgui/TrayManager.java:73 +msgid "Launch I2P Browser" +msgstr "Start I2P Browser" + +#: src/net/i2p/desktopgui/TrayManager.java:99 +msgid "Browser not found" +msgstr "Browser niet gevonden" + +#: src/net/i2p/desktopgui/TrayManager.java:100 +msgid "The default browser for your system was not found." +msgstr "De standaard webbrowser voor je systeem werd niet gevonden." + +#: src/net/i2p/desktopgui/TrayManager.java:111 +msgid "Start I2P" +msgstr "I2P starten" + +#: src/net/i2p/desktopgui/TrayManager.java:126 +msgid "I2P is starting!" +msgstr "I2P is aan het starten!" + +#: src/net/i2p/desktopgui/TrayManager.java:126 +msgid "Starting" +msgstr "Bezig met starten" + +#: src/net/i2p/desktopgui/TrayManager.java:140 +msgid "Restart I2P" +msgstr "I2P herstarten" + +#: src/net/i2p/desktopgui/TrayManager.java:161 +msgid "Stop I2P" +msgstr "I2P stoppen" diff --git a/apps/desktopgui/src/net/i2p/desktopgui/Main.java b/apps/desktopgui/src/net/i2p/desktopgui/Main.java index 997cde64d..540807ada 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/Main.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/Main.java @@ -31,6 +31,7 @@ public class Main { * Main method launching the application. */ public static void main(String[] args) { + System.setProperty("java.awt.headless", "false"); try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException ex) { diff --git a/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java b/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java index 8aa4e65c6..3c5899944 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java @@ -18,6 +18,7 @@ import java.net.URL; import javax.swing.SwingWorker; +import net.i2p.desktopgui.i18n.DesktopguiTranslator; import net.i2p.desktopgui.router.RouterManager; import net.i2p.desktopgui.util.ConfigurationManager; import net.i2p.util.Log; @@ -69,7 +70,7 @@ public class TrayManager { boolean inI2P = ConfigurationManager.getInstance().getBooleanConfiguration("startWithI2P", false); PopupMenu popup = new PopupMenu(); - MenuItem browserLauncher = new MenuItem("Launch I2P Browser"); + MenuItem browserLauncher = new MenuItem(_("Launch I2P Browser")); browserLauncher.addActionListener(new ActionListener() { @Override @@ -95,8 +96,8 @@ public class TrayManager { } } else { - trayIcon.displayMessage("Browser not found", - "The default browser for your system was not found.", + trayIcon.displayMessage(_("Browser not found"), + _("The default browser for your system was not found."), TrayIcon.MessageType.WARNING); } } @@ -107,7 +108,7 @@ public class TrayManager { }); popup.add(browserLauncher); popup.addSeparator(); - MenuItem startItem = new MenuItem("Start I2P"); + MenuItem startItem = new MenuItem(_("Start I2P")); startItem.addActionListener(new ActionListener() { @Override @@ -122,7 +123,7 @@ public class TrayManager { @Override protected void done() { - trayIcon.displayMessage("Starting", "I2P is starting!", TrayIcon.MessageType.INFO); + trayIcon.displayMessage(_("Starting"), _("I2P is starting!"), TrayIcon.MessageType.INFO); //Hide the tray icon. //We cannot stop the desktopgui program entirely, //since that risks killing the I2P process as well. @@ -136,7 +137,7 @@ public class TrayManager { if(!inI2P) { popup.add(startItem); } - MenuItem restartItem = new MenuItem("Restart I2P"); + MenuItem restartItem = new MenuItem(_("Restart I2P")); restartItem.addActionListener(new ActionListener() { @Override @@ -157,7 +158,7 @@ public class TrayManager { if(inI2P) { popup.add(restartItem); } - MenuItem stopItem = new MenuItem("Stop I2P"); + MenuItem stopItem = new MenuItem(_("Stop I2P")); stopItem.addActionListener(new ActionListener() { @Override @@ -190,4 +191,8 @@ public class TrayManager { Image image = Toolkit.getDefaultToolkit().getImage(url); return image; } + + private static String _(String s) { + return DesktopguiTranslator._(s); + } } diff --git a/apps/desktopgui/src/net/i2p/desktopgui/i18n/DesktopguiTranslator.java b/apps/desktopgui/src/net/i2p/desktopgui/i18n/DesktopguiTranslator.java new file mode 100644 index 000000000..e6b091eb0 --- /dev/null +++ b/apps/desktopgui/src/net/i2p/desktopgui/i18n/DesktopguiTranslator.java @@ -0,0 +1,26 @@ +package net.i2p.desktopgui.i18n; + +import net.i2p.router.RouterContext; +import net.i2p.util.Translate; + +public class DesktopguiTranslator { + + private static final String BUNDLE_NAME = "net.i2p.desktopgui.messages"; + + private static RouterContext ctx; + + private static RouterContext getRouterContext() { + if(ctx == null) { + ctx = RouterContext.listContexts().get(0); + } + return ctx; + } + + public static String _(String s) { + return Translate.getString(s, getRouterContext(), BUNDLE_NAME); + } + + public static String _(String s, Object o) { + return Translate.getString(s, o, getRouterContext(), BUNDLE_NAME); + } +} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/package.html b/apps/desktopgui/src/net/i2p/desktopgui/package.html new file mode 100644 index 000000000..ac1c91503 --- /dev/null +++ b/apps/desktopgui/src/net/i2p/desktopgui/package.html @@ -0,0 +1,5 @@ +<html> + <body> + <p>Desktopgui is a graphical interface to I2P that allows managing the lifecycle of I2P from the system tray.</p> + </body> +</html> diff --git a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java index 5a6001742..d838eef27 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java @@ -2,6 +2,7 @@ package net.i2p.desktopgui.router; import java.io.IOException; +import net.i2p.desktopgui.i18n.DesktopguiTranslator; import net.i2p.desktopgui.util.ConfigurationManager; import net.i2p.router.Router; import net.i2p.router.RouterContext; @@ -56,4 +57,8 @@ public class RouterManager { public static void shutDown() { getRouter().shutdownGracefully(); } + + private static String _(String s) { + return DesktopguiTranslator._(s); + } } From ceb9bfcc07ec65ac6baa754cd5d23546471b9e5e Mon Sep 17 00:00:00 2001 From: mathiasdm <mathiasdm@mail.i2p> Date: Tue, 14 Dec 2010 07:19:37 +0000 Subject: [PATCH 007/463] Refactoring and splitting logic from interface. --- apps/desktopgui/TODO | 3 +- .../i2p/desktopgui/ExternalTrayManager.java | 52 +++++++ .../i2p/desktopgui/InternalTrayManager.java | 93 ++++++++++++ .../src/net/i2p/desktopgui/TrayManager.java | 136 ++---------------- .../i2p/desktopgui/util/BrowseException.java | 23 +++ .../net/i2p/desktopgui/util/I2PDesktop.java | 35 +++++ 6 files changed, 220 insertions(+), 122 deletions(-) create mode 100644 apps/desktopgui/src/net/i2p/desktopgui/ExternalTrayManager.java create mode 100644 apps/desktopgui/src/net/i2p/desktopgui/InternalTrayManager.java create mode 100644 apps/desktopgui/src/net/i2p/desktopgui/util/BrowseException.java create mode 100644 apps/desktopgui/src/net/i2p/desktopgui/util/I2PDesktop.java diff --git a/apps/desktopgui/TODO b/apps/desktopgui/TODO index 5f38de78a..98e768db9 100644 --- a/apps/desktopgui/TODO +++ b/apps/desktopgui/TODO @@ -2,12 +2,13 @@ HIGH PRIORITY: - Allow desktopgui to start, stop and restart I2P. - DONE - Correct logging system - DONE - Internationalisation: - * Add strings + * Add strings - DONE * Add Windows support * Might need some kind of trigger to reload the menu (for live language switching) * Language choice is not actually set as a parameter in I2P config? As a result, desktopgui always starts with the default, unless you manually set the language. - Modify installer to set I2P directory parameter; or use $I2P? +- Fix tabs versus spaces ;-) UNKNOWN: - API to allow applications to add themselves to the menu? * registerApplication(); -- should return a positive number on success, -1 on failure diff --git a/apps/desktopgui/src/net/i2p/desktopgui/ExternalTrayManager.java b/apps/desktopgui/src/net/i2p/desktopgui/ExternalTrayManager.java new file mode 100644 index 000000000..702807ba2 --- /dev/null +++ b/apps/desktopgui/src/net/i2p/desktopgui/ExternalTrayManager.java @@ -0,0 +1,52 @@ +package net.i2p.desktopgui; + +import java.awt.MenuItem; +import java.awt.PopupMenu; +import java.awt.TrayIcon; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.SwingWorker; + +import net.i2p.desktopgui.router.RouterManager; +import net.i2p.util.Log; + +public class ExternalTrayManager extends TrayManager { + + private final static Log log = new Log(ExternalTrayManager.class); + + protected ExternalTrayManager() {} + + @Override + public PopupMenu getMainMenu() { + PopupMenu popup = new PopupMenu(); + MenuItem startItem = new MenuItem(_("Start I2P")); + startItem.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent arg0) { + new SwingWorker<Object, Object>() { + + @Override + protected Object doInBackground() throws Exception { + RouterManager.start(); + return null; + } + + @Override + protected void done() { + trayIcon.displayMessage(_("Starting"), _("I2P is starting!"), TrayIcon.MessageType.INFO); + //Hide the tray icon. + //We cannot stop the desktopgui program entirely, + //since that risks killing the I2P process as well. + tray.remove(trayIcon); + } + + }.execute(); + } + + }); + popup.add(startItem); + return popup; + } +} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/InternalTrayManager.java b/apps/desktopgui/src/net/i2p/desktopgui/InternalTrayManager.java new file mode 100644 index 000000000..efa7e31a1 --- /dev/null +++ b/apps/desktopgui/src/net/i2p/desktopgui/InternalTrayManager.java @@ -0,0 +1,93 @@ +package net.i2p.desktopgui; + +import java.awt.MenuItem; +import java.awt.PopupMenu; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.SwingWorker; + +import net.i2p.desktopgui.router.RouterManager; +import net.i2p.desktopgui.util.BrowseException; +import net.i2p.desktopgui.util.I2PDesktop; +import net.i2p.util.Log; + +public class InternalTrayManager extends TrayManager { + + private final static Log log = new Log(InternalTrayManager.class); + + protected InternalTrayManager() {} + + @Override + public PopupMenu getMainMenu() { + PopupMenu popup = new PopupMenu(); + + MenuItem browserLauncher = new MenuItem(_("Launch I2P Browser")); + browserLauncher.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent arg0) { + new SwingWorker<Object, Object>() { + + @Override + protected Object doInBackground() throws Exception { + return null; + } + + @Override + protected void done() { + try { + I2PDesktop.browse("http://localhost:7657"); + } catch (BrowseException e1) { + log.log(Log.WARN, "Failed to open browser!", e1); + } + } + + }.execute(); + } + }); + MenuItem restartItem = new MenuItem(_("Restart I2P")); + restartItem.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent arg0) { + new SwingWorker<Object, Object>() { + + @Override + protected Object doInBackground() throws Exception { + RouterManager.restart(); + return null; + } + + }.execute(); + + } + + }); + MenuItem stopItem = new MenuItem(_("Stop I2P")); + stopItem.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent arg0) { + new SwingWorker<Object, Object>() { + + @Override + protected Object doInBackground() throws Exception { + RouterManager.shutDown(); + return null; + } + + }.execute(); + + } + + }); + + popup.add(browserLauncher); + popup.addSeparator(); + popup.add(restartItem); + popup.add(stopItem); + + return popup; + } +} diff --git a/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java b/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java index 3c5899944..1bc8b1b05 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java @@ -20,29 +20,37 @@ import javax.swing.SwingWorker; import net.i2p.desktopgui.i18n.DesktopguiTranslator; import net.i2p.desktopgui.router.RouterManager; +import net.i2p.desktopgui.util.BrowseException; import net.i2p.desktopgui.util.ConfigurationManager; +import net.i2p.desktopgui.util.I2PDesktop; import net.i2p.util.Log; /** * Manages the tray icon life. */ -public class TrayManager { +public abstract class TrayManager { private static TrayManager instance = null; ///The tray area, or null if unsupported - private SystemTray tray = null; + protected SystemTray tray = null; ///Our tray icon, or null if unsupported - private TrayIcon trayIcon = null; + protected TrayIcon trayIcon = null; private final static Log log = new Log(TrayManager.class); /** * Instantiate tray manager. */ - private TrayManager() {} + protected TrayManager() {} public static TrayManager getInstance() { if(instance == null) { - instance = new TrayManager(); + boolean inI2P = ConfigurationManager.getInstance().getBooleanConfiguration("startWithI2P", false); + if(inI2P) { + instance = new InternalTrayManager(); + } + else { + instance = new ExternalTrayManager(); + } } return instance; } @@ -66,121 +74,7 @@ public class TrayManager { * Build a popup menu, adding callbacks to the different items. * @return popup menu */ - public PopupMenu getMainMenu() { - boolean inI2P = ConfigurationManager.getInstance().getBooleanConfiguration("startWithI2P", false); - - PopupMenu popup = new PopupMenu(); - MenuItem browserLauncher = new MenuItem(_("Launch I2P Browser")); - browserLauncher.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent arg0) { - new SwingWorker<Object, Object>() { - - @Override - protected Object doInBackground() throws Exception { - return null; - } - - @Override - protected void done() { - if(Desktop.isDesktopSupported()) { - Desktop desktop = Desktop.getDesktop(); - if(desktop.isSupported(Action.BROWSE)) { - try { - desktop.browse(new URI("http://localhost:7657")); - } catch (IOException e) { - log.log(Log.WARN, "Failed to open browser!", e); - } catch (URISyntaxException e) { - log.log(Log.WARN, "Failed to open browser!", e); - } - } - else { - trayIcon.displayMessage(_("Browser not found"), - _("The default browser for your system was not found."), - TrayIcon.MessageType.WARNING); - } - } - } - - }.execute(); - } - }); - popup.add(browserLauncher); - popup.addSeparator(); - MenuItem startItem = new MenuItem(_("Start I2P")); - startItem.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent arg0) { - new SwingWorker<Object, Object>() { - - @Override - protected Object doInBackground() throws Exception { - RouterManager.start(); - return null; - } - - @Override - protected void done() { - trayIcon.displayMessage(_("Starting"), _("I2P is starting!"), TrayIcon.MessageType.INFO); - //Hide the tray icon. - //We cannot stop the desktopgui program entirely, - //since that risks killing the I2P process as well. - tray.remove(trayIcon); - } - - }.execute(); - } - - }); - if(!inI2P) { - popup.add(startItem); - } - MenuItem restartItem = new MenuItem(_("Restart I2P")); - restartItem.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent arg0) { - new SwingWorker<Object, Object>() { - - @Override - protected Object doInBackground() throws Exception { - RouterManager.restart(); - return null; - } - - }.execute(); - - } - - }); - if(inI2P) { - popup.add(restartItem); - } - MenuItem stopItem = new MenuItem(_("Stop I2P")); - stopItem.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent arg0) { - new SwingWorker<Object, Object>() { - - @Override - protected Object doInBackground() throws Exception { - RouterManager.shutDown(); - return null; - } - - }.execute(); - - } - - }); - if(inI2P) { - popup.add(stopItem); - } - return popup; - } + public abstract PopupMenu getMainMenu(); /** * Get tray icon image from the desktopgui resources in the jar file. @@ -192,7 +86,7 @@ public class TrayManager { return image; } - private static String _(String s) { + protected static String _(String s) { return DesktopguiTranslator._(s); } } diff --git a/apps/desktopgui/src/net/i2p/desktopgui/util/BrowseException.java b/apps/desktopgui/src/net/i2p/desktopgui/util/BrowseException.java new file mode 100644 index 000000000..ec120a416 --- /dev/null +++ b/apps/desktopgui/src/net/i2p/desktopgui/util/BrowseException.java @@ -0,0 +1,23 @@ +package net.i2p.desktopgui.util; + +public class BrowseException extends Exception { + + private static final long serialVersionUID = 1L; + + public BrowseException() { + super(); + } + + public BrowseException(String s) { + super(s); + } + + public BrowseException(String s, Throwable t) { + super(s, t); + } + + public BrowseException(Throwable t) { + super(t); + } + +} \ No newline at end of file diff --git a/apps/desktopgui/src/net/i2p/desktopgui/util/I2PDesktop.java b/apps/desktopgui/src/net/i2p/desktopgui/util/I2PDesktop.java new file mode 100644 index 000000000..3a35d5c31 --- /dev/null +++ b/apps/desktopgui/src/net/i2p/desktopgui/util/I2PDesktop.java @@ -0,0 +1,35 @@ +package net.i2p.desktopgui.util; + +import java.awt.Desktop; +import java.awt.TrayIcon; +import java.awt.Desktop.Action; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; + +import net.i2p.desktopgui.router.RouterManager; +import net.i2p.util.Log; + +public class I2PDesktop { + + private final static Log log = new Log(I2PDesktop.class); + + public static void browse(String url) throws BrowseException { + if(Desktop.isDesktopSupported()) { + Desktop desktop = Desktop.getDesktop(); + if(desktop.isSupported(Action.BROWSE)) { + try { + desktop.browse(new URI(url)); + } catch (Exception e) { + throw new BrowseException(); + } + } + else { + throw new BrowseException(); + } + } + else { + throw new BrowseException(); + } + } +} \ No newline at end of file From afe57512abf92c486f36740fc88d3f52d5b2c7f6 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 19 Dec 2010 15:37:11 +0000 Subject: [PATCH 008/463] PORT msg support; port and extension listener stubs --- .../java/src/org/klomp/snark/Message.java | 7 +++++ .../java/src/org/klomp/snark/Peer.java | 18 ++++++++++--- .../src/org/klomp/snark/PeerConnectionIn.java | 5 ++++ .../org/klomp/snark/PeerConnectionOut.java | 8 ++++++ .../src/org/klomp/snark/PeerCoordinator.java | 6 +++++ .../src/org/klomp/snark/PeerListener.java | 19 ++++++++++++++ .../java/src/org/klomp/snark/PeerState.java | 26 +++++-------------- 7 files changed, 67 insertions(+), 22 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/Message.java b/apps/i2psnark/java/src/org/klomp/snark/Message.java index a9d1e23f2..57fecf43d 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Message.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Message.java @@ -53,6 +53,7 @@ class Message // Used for HAVE, REQUEST, PIECE and CANCEL messages. // low byte used for EXTENSION message + // low two bytes used for PORT message int piece; // Used for REQUEST, PIECE and CANCEL messages. @@ -107,6 +108,9 @@ class Message if (type == EXTENSION) datalen += 1; + if (type == PORT) + datalen += 2; + // add length of data for piece or bitfield array. if (type == BITFIELD || type == PIECE || type == EXTENSION) datalen += len; @@ -130,6 +134,9 @@ class Message if (type == EXTENSION) dos.writeByte((byte) piece & 0xff); + if (type == PORT) + dos.writeShort(piece & 0xffff); + // Send actual data if (type == BITFIELD || type == PIECE || type == EXTENSION) dos.write(data, off, len); diff --git a/apps/i2psnark/java/src/org/klomp/snark/Peer.java b/apps/i2psnark/java/src/org/klomp/snark/Peer.java index ae053b8c8..f42adddef 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Peer.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Peer.java @@ -72,7 +72,6 @@ public class Peer implements Comparable * relevant MetaInfo. */ public Peer(PeerID peerID, byte[] my_id, MetaInfo metainfo) - throws IOException { this.peerID = peerID; this.my_id = my_id; @@ -253,6 +252,13 @@ public class Peer implements Comparable out.sendExtension(0, ExtensionHandshake.getPayload()); } + if ((options & OPTION_DHT) != 0 && util.getDHT() != null) { + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Peer supports DHT, sending PORT message"); + int port = util.getDHT().getPort(); + out.sendPort(port); + } + // Send our bitmap if (bitfield != null) s.out.sendBitfield(bitfield); @@ -303,7 +309,8 @@ public class Peer implements Comparable dout.write(19); dout.write("BitTorrent protocol".getBytes("UTF-8")); // Handshake write - options - dout.writeLong(OPTION_EXTENSION); + // FIXME not if DHT disabled + dout.writeLong(OPTION_EXTENSION | OPTION_DHT); // Handshake write - metainfo hash byte[] shared_hash = metainfo.getInfoHash(); dout.write(shared_hash); @@ -343,7 +350,7 @@ public class Peer implements Comparable _log.debug("Read the remote side's hash and peerID fully from " + toString()); if (options != 0) { - // send them something + // send them something in runConnection() above if (_log.shouldLog(Log.DEBUG)) _log.debug("Peer supports options 0x" + Long.toString(options, 16) + ": " + toString()); } @@ -351,6 +358,11 @@ public class Peer implements Comparable return bs; } + /** @since 0.8.4 */ + public long getOptions() { + return options; + } + public boolean isConnected() { return state != null; diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionIn.java b/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionIn.java index 43bb9a712..90755a937 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionIn.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionIn.java @@ -171,6 +171,11 @@ class PeerConnectionIn implements Runnable if (_log.shouldLog(Log.DEBUG)) _log.debug("Received cancel(" + piece + "," + begin + ") from " + peer + " on " + peer.metainfo.getName()); break; + case 9: // PORT message + int port = din.readUnsignedShort(); + ps.portMessage(port); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Received port message from " + peer + " on " + peer.metainfo.getName()); case 20: // Extension message int id = din.readUnsignedByte(); byte[] payload = new byte[i-2]; diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionOut.java b/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionOut.java index 38cb29e3b..19614bc52 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionOut.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionOut.java @@ -547,4 +547,12 @@ class PeerConnectionOut implements Runnable m.len = bytes.length; addMessage(m); } + + /** @since 0.8.4 */ + void sendPort(int port) { + Message m = new Message(); + m.type = Message.PORT; + m.piece = port; + addMessage(m); + } } diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java index 034f74ae7..c9cdf6141 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java @@ -1086,6 +1086,12 @@ public class PeerCoordinator implements PeerListener } } + /** @since 0.8.4 */ + public void gotExtension(Peer peer, int id, byte[] bs) {} + + /** @since 0.8.4 */ + public void gotPort(Peer peer, int port) {} + /** Return number of allowed uploaders for this torrent. ** Check with Snark to see if we are over the total upload limit. */ diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerListener.java b/apps/i2psnark/java/src/org/klomp/snark/PeerListener.java index 975c12c10..6d9e681cb 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerListener.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerListener.java @@ -179,4 +179,23 @@ interface PeerListener * @since 0.8.2 */ PartialPiece getPartialPiece(Peer peer, BitField havePieces); + + /** + * Called when an extension message is received. + * + * @param peer the Peer that got the message. + * @param id the message ID + * @param bs the message payload + * @since 0.8.4 + */ + void gotExtension(Peer peer, int id, byte[] bs); + + /** + * Called when an extension message is received. + * + * @param peer the Peer that got the message. + * @param port the port + * @since 0.8.4 + */ + void gotPort(Peer peer, int port); } diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerState.java b/apps/i2psnark/java/src/org/klomp/snark/PeerState.java index 0c3c9eee8..ad70df9dc 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerState.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerState.java @@ -32,9 +32,6 @@ import java.util.Set; import net.i2p.I2PAppContext; import net.i2p.util.Log; -import org.klomp.snark.bencode.BDecoder; -import org.klomp.snark.bencode.BEValue; - class PeerState implements DataLoader { private final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(PeerState.class); @@ -485,22 +482,13 @@ class PeerState implements DataLoader /** @since 0.8.2 */ void extensionMessage(int id, byte[] bs) { - if (id == 0) { - InputStream is = new ByteArrayInputStream(bs); - try { - BDecoder dec = new BDecoder(is); - BEValue bev = dec.bdecodeMap(); - Map map = bev.getMap(); - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Got extension handshake message " + bev.toString()); - } catch (Exception e) { - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Failed extension decode", e); - } - } else { - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Got extended message type: " + id + " length: " + bs.length); - } + listener.gotExtension(peer, id, bs); + } + + /** @since 0.8.4 */ + void portMessage(int port) + { + listener.gotPort(peer, port); } void unknownMessage(int type, byte[] bs) From 4899a6d306d644fd880d3a062b5fd720c8eaefe3 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 19 Dec 2010 22:14:02 +0000 Subject: [PATCH 009/463] Refactor fields to private and replace with getters, and lots of prep for lack of metainfo and storage. --- .../src/org/klomp/snark/PeerAcceptor.java | 2 +- .../src/org/klomp/snark/PeerCheckerTask.java | 3 - .../src/org/klomp/snark/PeerCoordinator.java | 58 +++- .../java/src/org/klomp/snark/Snark.java | 263 ++++++++++++++++-- .../src/org/klomp/snark/SnarkManager.java | 73 +++-- .../java/src/org/klomp/snark/StaticSnark.java | 3 +- .../src/org/klomp/snark/TrackerClient.java | 30 +- .../org/klomp/snark/web/I2PSnarkServlet.java | 140 +++++----- 8 files changed, 409 insertions(+), 163 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerAcceptor.java b/apps/i2psnark/java/src/org/klomp/snark/PeerAcceptor.java index 58ef3ae2d..050884e5c 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerAcceptor.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerAcceptor.java @@ -120,7 +120,7 @@ public class PeerAcceptor else { if (_log.shouldLog(Log.DEBUG)) - _log.debug("Rejecting new peer for " + cur.snark.torrent); + _log.debug("Rejecting new peer for " + cur.getName()); socket.close(); return; } diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java index aa9cf2187..d6e2c6089 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java @@ -51,10 +51,7 @@ class PeerCheckerTask extends TimerTask { List<Peer> peerList = coordinator.peerList(); if (peerList.isEmpty() || coordinator.halted()) { - coordinator.peerCount = 0; - coordinator.interestedAndChoking = 0; coordinator.setRateHistory(0, 0); - coordinator.uploaders = 0; if (coordinator.halted()) cancel(); return; diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java index c9cdf6141..ba9727d8a 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java @@ -42,18 +42,33 @@ import net.i2p.util.SimpleTimer2; public class PeerCoordinator implements PeerListener { private final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(PeerCoordinator.class); + + /** + * External use by PeerMonitorTask only. + */ final MetaInfo metainfo; + + /** + * External use by PeerMonitorTask only. + */ final Storage storage; - final Snark snark; + private final Snark snark; // package local for access by CheckDownLoadersTask final static long CHECK_PERIOD = 40*1000; // 40 seconds final static int MAX_UPLOADERS = 6; - // Approximation of the number of current uploaders. - // Resynced by PeerChecker once in a while. - int uploaders = 0; - int interestedAndChoking = 0; + /** + * Approximation of the number of current uploaders. + * Resynced by PeerChecker once in a while. + * External use by PeerCheckerTask only. + */ + int uploaders; + + /** + * External use by PeerCheckerTask only. + */ + int interestedAndChoking; // final static int MAX_DOWNLOADERS = MAX_CONNECTIONS; // int downloaders = 0; @@ -61,14 +76,18 @@ public class PeerCoordinator implements PeerListener private long uploaded; private long downloaded; final static int RATE_DEPTH = 3; // make following arrays RATE_DEPTH long - private long uploaded_old[] = {-1,-1,-1}; - private long downloaded_old[] = {-1,-1,-1}; + private final long uploaded_old[] = {-1,-1,-1}; + private final long downloaded_old[] = {-1,-1,-1}; - // synchronize on this when changing peers or downloaders - // This is a Queue, not a Set, because PeerCheckerTask keeps things in order for choking/unchoking + /** + * synchronize on this when changing peers or downloaders. + * This is a Queue, not a Set, because PeerCheckerTask keeps things in order for choking/unchoking. + * External use by PeerMonitorTask only. + */ final Queue<Peer> peers; + /** estimate of the peers, without requiring any synchronization */ - volatile int peerCount; + private volatile int peerCount; /** Timer to handle all periodical tasks. */ private final CheckEvent timer; @@ -86,12 +105,9 @@ public class PeerCoordinator implements PeerListener private boolean halted = false; private final CoordinatorListener listener; - public I2PSnarkUtil _util; + private final I2PSnarkUtil _util; private static final Random _random = I2PAppContext.getGlobalContext().random(); - public String trackerProblems = null; - public int trackerSeenPeers = 0; - public PeerCoordinator(I2PSnarkUtil util, byte[] id, MetaInfo metainfo, Storage storage, CoordinatorListener listener, Snark torrent) { @@ -153,7 +169,6 @@ public class PeerCoordinator implements PeerListener } public Storage getStorage() { return storage; } - public CoordinatorListener getListener() { return listener; } // for web page detailed stats public List<Peer> peerList() @@ -166,6 +181,11 @@ public class PeerCoordinator implements PeerListener return id; } + public String getName() + { + return snark.getName(); + } + public boolean completed() { return storage.complete(); @@ -1107,6 +1127,14 @@ public class PeerCoordinator implements PeerListener return MAX_UPLOADERS; } + /** + * @return current + * @since 0.8.4 + */ + public int getUploaders() { + return uploaders; + } + public boolean overUpBWLimit() { if (listener != null) diff --git a/apps/i2psnark/java/src/org/klomp/snark/Snark.java b/apps/i2psnark/java/src/org/klomp/snark/Snark.java index 31105a269..79807d68f 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Snark.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Snark.java @@ -26,6 +26,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Properties; @@ -112,6 +113,8 @@ public class Snark } +/******** No, not maintaining a command-line client + public static void main(String[] args) { System.out.println(copyright); @@ -235,19 +238,27 @@ public class Snark } } +***********/ + public static final String PROP_MAX_CONNECTIONS = "i2psnark.maxConnections"; - public String torrent; - public MetaInfo meta; - public Storage storage; - public PeerCoordinator coordinator; - public ConnectionAcceptor acceptor; - public TrackerClient trackerclient; - public String rootDataDir = "."; - public CompleteListener completeListener; - public boolean stopped; - byte[] id; - public I2PSnarkUtil _util; - private PeerCoordinatorSet _peerCoordinatorSet; + + /** most of these used to be public, use accessors below instead */ + private final String torrent; + private MetaInfo meta; + private Storage storage; + private PeerCoordinator coordinator; + private ConnectionAcceptor acceptor; + private TrackerClient trackerclient; + private String rootDataDir = "."; + private final CompleteListener completeListener; + private boolean stopped; + private byte[] id; + private byte[] infoHash; + private final I2PSnarkUtil _util; + private final PeerCoordinatorSet _peerCoordinatorSet; + private String trackerProblems; + private int trackerSeenPeers; + /** from main() via parseArguments() single torrent */ Snark(I2PSnarkUtil util, String torrent, String ip, int user_port, @@ -486,7 +497,7 @@ public class Snark // single torrent acceptor = new ConnectionAcceptor(_util, serversocket, new PeerAcceptor(coordinator)); } - trackerclient = new TrackerClient(_util, meta, coordinator); + trackerclient = new TrackerClient(_util, meta, coordinator, this); } stopped = false; @@ -496,8 +507,7 @@ public class Snark // restart safely, so lets build a new one to replace the old if (_peerCoordinatorSet != null) _peerCoordinatorSet.remove(coordinator); - PeerCoordinator newCoord = new PeerCoordinator(_util, coordinator.getID(), coordinator.getMetaInfo(), - coordinator.getStorage(), coordinator.getListener(), this); + PeerCoordinator newCoord = new PeerCoordinator(_util, id, meta, storage, this, this); if (_peerCoordinatorSet != null) _peerCoordinatorSet.add(newCoord); coordinator = newCoord; @@ -517,7 +527,7 @@ public class Snark } fatal("Could not reopen storage", ioe); } - TrackerClient newClient = new TrackerClient(_util, coordinator.getMetaInfo(), coordinator); + TrackerClient newClient = new TrackerClient(_util, coordinator.getMetaInfo(), coordinator, this); if (!trackerclient.halted()) trackerclient.halt(); trackerclient = newClient; @@ -553,18 +563,223 @@ public class Snark _util.disconnect(); } - static Snark parseArguments(String[] args) + private static Snark parseArguments(String[] args) { return parseArguments(args, null, null); } + // Accessors + + /** + * @return file name of .torrent file (should be full absolute path), or a fake name if in magnet mode. + * @since 0.8.4 + */ + public String getName() { + return torrent; + } + + /** + * @return base name of torrent [filtered version of getMetaInfo.getName()], or a fake name if in magnet mode + * @since 0.8.4 + */ + public String getBaseName() { + if (storage != null) + return storage.getBaseName(); + return torrent; + } + + /** + * @return always will be valid even in magnet mode + * @since 0.8.4 + */ + public byte[] getID() { + return id; + } + + /** + * @return always will be valid even in magnet mode + * @since 0.8.4 + */ + public byte[] getInfoHash() { + if (meta != null) + return meta.getInfoHash(); + return infoHash; + } + + /** + * @return may be null if in magnet mode + * @since 0.8.4 + */ + public MetaInfo getMetaInfo() { + return meta; + } + + /** + * @return may be null if in magnet mode + * @since 0.8.4 + */ + public Storage getStorage() { + return storage; + } + + /** + * @since 0.8.4 + */ + public boolean isStopped() { + return stopped; + } + + /** + * @since 0.8.4 + */ + public long getDownloadRate() { + PeerCoordinator coord = coordinator; + if (coord != null) + return coord.getDownloadRate(); + return 0; + } + + /** + * @since 0.8.4 + */ + public long getUploadRate() { + PeerCoordinator coord = coordinator; + if (coord != null) + return coord.getUploadRate(); + return 0; + } + + /** + * @since 0.8.4 + */ + public long getDownloaded() { + PeerCoordinator coord = coordinator; + if (coord != null) + return coord.getDownloaded(); + return 0; + } + + /** + * @since 0.8.4 + */ + public long getUploaded() { + PeerCoordinator coord = coordinator; + if (coord != null) + return coord.getUploaded(); + return 0; + } + + /** + * @since 0.8.4 + */ + public int getPeerCount() { + PeerCoordinator coord = coordinator; + if (coord != null) + return coord.getPeerCount(); + return 0; + } + + /** + * @since 0.8.4 + */ + public List<Peer> getPeerList() { + PeerCoordinator coord = coordinator; + if (coord != null) + return coord.peerList(); + return Collections.EMPTY_LIST; + } + + /** + * @return String returned from tracker, or null if no error + * @since 0.8.4 + */ + public String getTrackerProblems() { + return trackerProblems; + } + + /** + * @param p tracker error string or null + * @since 0.8.4 + */ + public void setTrackerProblems(String p) { + trackerProblems = p; + } + + /** + * @return count returned from tracker + * @since 0.8.4 + */ + public int getTrackerSeenPeers() { + return trackerSeenPeers; + } + + /** + * @since 0.8.4 + */ + public void setTrackerSeenPeers(int p) { + trackerSeenPeers = p; + } + + /** + * @since 0.8.4 + */ + public void updatePiecePriorities() { + PeerCoordinator coord = coordinator; + if (coord != null) + coord.updatePiecePriorities(); + } + + /** + * @return total of all torrent files, or total of metainfo file if fetching magnet, or -1 + * @since 0.8.4 + */ + public long getTotalLength() { + if (meta != null) + return meta.getTotalLength(); + // FIXME else return metainfo length if available + return -1; + } + + /** + * @return needed of all torrent files, or total of metainfo file if fetching magnet, or -1 + * @since 0.8.4 + */ + public long getNeeded() { + if (storage != null) + return storage.needed(); + // FIXME else return metainfo length if available + return -1; + } + + /** + * @param p the piece number + * @return metainfo piece length or 16K if fetching magnet + * @since 0.8.4 + */ + public int getPieceLength(int p) { + if (meta != null) + return meta.getPieceLength(p); + return 16*1024; + } + + /** + * @return true if restarted + * @since 0.8.4 + */ + public boolean restartAcceptor() { + if (acceptor == null) + return false; + acceptor.restart(); + return true; + } + /** * Sets debug, ip and torrent variables then creates a Snark * instance. Calls usage(), which terminates the program, if * non-valid argument list. The given listeners will be * passed to all components that take one. */ - static Snark parseArguments(String[] args, + private static Snark parseArguments(String[] args, StorageListener slistener, CoordinatorListener clistener) { @@ -719,7 +934,7 @@ public class Snark /** * Aborts program abnormally. */ - public void fatal(String s) + private void fatal(String s) { fatal(s, null); } @@ -727,7 +942,7 @@ public class Snark /** * Aborts program abnormally. */ - public void fatal(String s, Throwable t) + private void fatal(String s, Throwable t) { _util.debug(s, ERROR, t); //System.err.println("snark: " + s + ((t == null) ? "" : (": " + t))); @@ -751,7 +966,7 @@ public class Snark // System.out.println(peer.toString()); } - boolean allocating = false; + private boolean allocating = false; public void storageCreateFile(Storage storage, String name, long length) { //if (allocating) @@ -774,9 +989,9 @@ public class Snark // System.out.println(); // We have all the disk space we need. } - boolean allChecked = false; - boolean checking = false; - boolean prechecking = true; + private boolean allChecked = false; + private boolean checking = false; + private boolean prechecking = true; public void storageChecked(Storage storage, int num, boolean checked) { allocating = false; diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index 82d1d80f4..6a4eb4c7c 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -359,7 +359,7 @@ public class SnarkManager implements Snark.CompleteListener { Set names = listTorrentFiles(); for (Iterator iter = names.iterator(); iter.hasNext(); ) { Snark snark = getTorrent((String)iter.next()); - if ( (snark != null) && (!snark.stopped) ) { + if ( (snark != null) && (!snark.isStopped()) ) { snarksActive = true; break; } @@ -398,9 +398,8 @@ public class SnarkManager implements Snark.CompleteListener { for (Iterator iter = names.iterator(); iter.hasNext(); ) { String name = (String)iter.next(); Snark snark = getTorrent(name); - if ( (snark != null) && (snark.acceptor != null) ) { - snark.acceptor.restart(); - addMessage(_("I2CP listener restarted for \"{0}\"", snark.meta.getName())); + if (snark != null && snark.restartAcceptor()) { + addMessage(_("I2CP listener restarted for \"{0}\"", snark.getBaseName())); } } } @@ -478,7 +477,7 @@ public class SnarkManager implements Snark.CompleteListener { public Snark getTorrentByBaseName(String filename) { synchronized (_snarks) { for (Snark s : _snarks.values()) { - if (s.storage.getBaseName().equals(filename)) + if (s.getBaseName().equals(filename)) return s; } } @@ -554,7 +553,6 @@ public class SnarkManager implements Snark.CompleteListener { _peerCoordinatorSet, _connectionAcceptor, false, dataDir.getPath()); loadSavedFilePriorities(torrent); - torrent.completeListener = this; synchronized (_snarks) { _snarks.put(filename, torrent); } @@ -572,12 +570,11 @@ public class SnarkManager implements Snark.CompleteListener { return; } // ok, snark created, now lets start it up or configure it further - File f = new File(filename); if (!dontAutoStart && shouldAutoStart()) { torrent.startTorrent(); - addMessage(_("Torrent added and started: \"{0}\"", torrent.storage.getBaseName())); + addMessage(_("Torrent added and started: \"{0}\"", torrent.getBaseName())); } else { - addMessage(_("Torrent added: \"{0}\"", torrent.storage.getBaseName())); + addMessage(_("Torrent added: \"{0}\"", torrent.getBaseName())); } } @@ -585,8 +582,7 @@ public class SnarkManager implements Snark.CompleteListener { * Get the timestamp for a torrent from the config file */ public long getSavedTorrentTime(Snark snark) { - MetaInfo metainfo = snark.meta; - byte[] ih = metainfo.getInfoHash(); + byte[] ih = snark.getInfoHash(); String infohash = Base64.encode(ih); infohash = infohash.replace('=', '$'); String time = _config.getProperty(PROP_META_PREFIX + infohash + PROP_META_BITFIELD_SUFFIX); @@ -605,8 +601,10 @@ public class SnarkManager implements Snark.CompleteListener { * Convert "." to a full bitfield. */ public BitField getSavedTorrentBitField(Snark snark) { - MetaInfo metainfo = snark.meta; - byte[] ih = metainfo.getInfoHash(); + MetaInfo metainfo = snark.getMetaInfo(); + if (metainfo == null) + return null; + byte[] ih = snark.getInfoHash(); String infohash = Base64.encode(ih); infohash = infohash.replace('=', '$'); String bf = _config.getProperty(PROP_META_PREFIX + infohash + PROP_META_BITFIELD_SUFFIX); @@ -636,10 +634,13 @@ public class SnarkManager implements Snark.CompleteListener { * @since 0.8.1 */ public void loadSavedFilePriorities(Snark snark) { - MetaInfo metainfo = snark.meta; + MetaInfo metainfo = snark.getMetaInfo(); + Storage storage = snark.getStorage(); + if (metainfo == null || storage == null) + return; if (metainfo.getFiles() == null) return; - byte[] ih = metainfo.getInfoHash(); + byte[] ih = snark.getInfoHash(); String infohash = Base64.encode(ih); infohash = infohash.replace('=', '$'); String pri = _config.getProperty(PROP_META_PREFIX + infohash + PROP_META_PRIORITY_SUFFIX); @@ -655,7 +656,7 @@ public class SnarkManager implements Snark.CompleteListener { } catch (Throwable t) {} } } - snark.storage.setFilePriorities(rv); + storage.setFilePriorities(rv); } /** @@ -777,21 +778,15 @@ public class SnarkManager implements Snark.CompleteListener { remaining = _snarks.size(); } if (torrent != null) { - boolean wasStopped = torrent.stopped; + boolean wasStopped = torrent.isStopped(); torrent.stopTorrent(); if (remaining == 0) { // should we disconnect/reconnect here (taking care to deal with the other thread's // I2PServerSocket.accept() call properly?) ////_util. } - String name; - if (torrent.storage != null) { - name = torrent.storage.getBaseName(); - } else { - name = sfile.getName(); - } if (!wasStopped) - addMessage(_("Torrent stopped: \"{0}\"", name)); + addMessage(_("Torrent stopped: \"{0}\"", torrent.getBaseName())); } return torrent; } @@ -804,14 +799,10 @@ public class SnarkManager implements Snark.CompleteListener { if (torrent != null) { File torrentFile = new File(filename); torrentFile.delete(); - String name; - if (torrent.storage != null) { - removeTorrentStatus(torrent.storage.getMetaInfo()); - name = torrent.storage.getBaseName(); - } else { - name = torrentFile.getName(); - } - addMessage(_("Torrent removed: \"{0}\"", name)); + Storage storage = torrent.getStorage(); + if (storage != null) + removeTorrentStatus(storage.getMetaInfo()); + addMessage(_("Torrent removed: \"{0}\"", torrent.getBaseName())); } } @@ -843,18 +834,24 @@ public class SnarkManager implements Snark.CompleteListener { /** two listeners */ public void torrentComplete(Snark snark) { + MetaInfo meta = snark.getMetaInfo(); + Storage storage = snark.getStorage(); + if (meta == null || storage == null) + return; StringBuilder buf = new StringBuilder(256); - buf.append("<a href=\"/i2psnark/").append(snark.storage.getBaseName()); - if (snark.meta.getFiles() != null) + buf.append("<a href=\"/i2psnark/").append(storage.getBaseName()); + if (meta.getFiles() != null) buf.append('/'); - buf.append("\">").append(snark.storage.getBaseName()).append("</a>"); - long len = snark.meta.getTotalLength(); + buf.append("\">").append(storage.getBaseName()).append("</a>"); addMessage(_("Download finished: {0}", buf.toString())); // + " (" + _("size: {0}B", DataHelper.formatSize2(len)) + ')'); updateStatus(snark); } public void updateStatus(Snark snark) { - saveTorrentStatus(snark.meta, snark.storage.getBitField(), snark.storage.getFilePriorities()); + MetaInfo meta = snark.getMetaInfo(); + Storage storage = snark.getStorage(); + if (meta != null && storage != null) + saveTorrentStatus(meta, storage.getBitField(), storage.getFilePriorities()); } private void monitorTorrents(File dir) { @@ -984,7 +981,7 @@ public class SnarkManager implements Snark.CompleteListener { Set names = listTorrentFiles(); for (Iterator iter = names.iterator(); iter.hasNext(); ) { Snark snark = getTorrent((String)iter.next()); - if ( (snark != null) && (!snark.stopped) ) + if ( (snark != null) && (!snark.isStopped()) ) snark.stopTorrent(); } } diff --git a/apps/i2psnark/java/src/org/klomp/snark/StaticSnark.java b/apps/i2psnark/java/src/org/klomp/snark/StaticSnark.java index 38b470a7c..52bef12b4 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/StaticSnark.java +++ b/apps/i2psnark/java/src/org/klomp/snark/StaticSnark.java @@ -38,6 +38,7 @@ public class StaticSnark //Security.addProvider(gnu); // And finally call the normal starting point. - Snark.main(args); + //Snark.main(args); + System.err.println("unsupported"); } } diff --git a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java index a1a3f4cc2..6bded2100 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java +++ b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java @@ -34,9 +34,11 @@ import java.util.Random; import java.util.Set; import net.i2p.I2PAppContext; +import net.i2p.data.Hash; import net.i2p.util.I2PAppThread; import net.i2p.util.Log; + /** * Informs metainfo tracker of events and gets new peers for peer * coordinator. @@ -63,6 +65,7 @@ public class TrackerClient extends I2PAppThread private I2PSnarkUtil _util; private final MetaInfo meta; private final PeerCoordinator coordinator; + private final Snark snark; private final int port; private boolean stop; @@ -70,15 +73,16 @@ public class TrackerClient extends I2PAppThread private List trackers; - public TrackerClient(I2PSnarkUtil util, MetaInfo meta, PeerCoordinator coordinator) + public TrackerClient(I2PSnarkUtil util, MetaInfo meta, PeerCoordinator coordinator, Snark snark) { super(); // Set unique name. - String id = urlencode(coordinator.getID()); + String id = urlencode(snark.getID()); setName("TrackerClient " + id.substring(id.length() - 12)); _util = util; this.meta = meta; this.coordinator = coordinator; + this.snark = snark; this.port = 6881; //(port == -1) ? 9 : port; @@ -119,10 +123,10 @@ public class TrackerClient extends I2PAppThread public void run() { String infoHash = urlencode(meta.getInfoHash()); - String peerID = urlencode(coordinator.getID()); + String peerID = urlencode(snark.getID()); _log.debug("Announce: [" + meta.getAnnounce() + "] infoHash: " + infoHash); - + // Construct the list of trackers for this torrent, // starting with the primary one listed in the metainfo, // followed by the secondary open trackers @@ -200,7 +204,7 @@ public class TrackerClient extends I2PAppThread firstTime = false; } else if (completed && runStarted) delay = 3*SLEEP*60*1000 + random; - else if (coordinator.trackerProblems != null && ++consecutiveFails < MAX_CONSEC_FAILS) + else if (snark.getTrackerProblems() != null && ++consecutiveFails < MAX_CONSEC_FAILS) delay = INITIAL_SLEEP; else // sleep a while, when we wake up we will contact only the trackers whose intervals have passed @@ -251,7 +255,7 @@ public class TrackerClient extends I2PAppThread uploaded, downloaded, left, event); - coordinator.trackerProblems = null; + snark.setTrackerProblems(null); tr.trackerProblems = null; tr.registerFails = 0; tr.consecutiveFails = 0; @@ -262,8 +266,8 @@ public class TrackerClient extends I2PAppThread Set peers = info.getPeers(); tr.seenPeers = info.getPeerCount(); - if (coordinator.trackerSeenPeers < tr.seenPeers) // update rising number quickly - coordinator.trackerSeenPeers = tr.seenPeers; + if (snark.getTrackerSeenPeers() < tr.seenPeers) // update rising number quickly + snark.setTrackerSeenPeers(tr.seenPeers); if ( (left > 0) && (!completed) ) { // we only want to talk to new people if we need things // from them (duh) @@ -293,12 +297,12 @@ public class TrackerClient extends I2PAppThread tr.trackerProblems = ioe.getMessage(); // don't show secondary tracker problems to the user if (tr.isPrimary) - coordinator.trackerProblems = tr.trackerProblems; + snark.setTrackerProblems(tr.trackerProblems); if (tr.trackerProblems.toLowerCase().startsWith(NOT_REGISTERED)) { // Give a guy some time to register it if using opentrackers too if (trackers.size() == 1) { stop = true; - coordinator.snark.stopTorrent(); + snark.stopTorrent(); } else { // hopefully each on the opentrackers list is really open if (tr.registerFails++ > MAX_REGISTER_FAILS) tr.stop = true; @@ -316,7 +320,7 @@ public class TrackerClient extends I2PAppThread } // *** end of trackers loop here // we could try and total the unique peers but that's too hard for now - coordinator.trackerSeenPeers = maxSeenPeers; + snark.setTrackerSeenPeers(maxSeenPeers); if (!runStarted) _util.debug(" Retrying in one minute...", Snark.DEBUG); } // *** end of while loop @@ -377,8 +381,8 @@ public class TrackerClient extends I2PAppThread try { in = new FileInputStream(fetched); - TrackerInfo info = new TrackerInfo(in, coordinator.getID(), - coordinator.getMetaInfo()); + TrackerInfo info = new TrackerInfo(in, snark.getID(), + snark.getMetaInfo()); _util.debug("TrackerClient response: " + info, Snark.INFO); String failure = info.getFailureReason(); diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index d74426ee1..57e8bd446 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -26,6 +26,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.i2p.I2PAppContext; +import net.i2p.data.Base32; import net.i2p.data.Base64; import net.i2p.data.DataHelper; import net.i2p.util.FileUtil; @@ -361,7 +362,7 @@ public class I2PSnarkServlet extends Default { for (int i = 0; i < snarks.size(); i++) { Snark snark = (Snark)snarks.get(i); boolean showDebug = "2".equals(peerParam); - boolean showPeers = showDebug || "1".equals(peerParam) || Base64.encode(snark.meta.getInfoHash()).equals(peerParam); + boolean showPeers = showDebug || "1".equals(peerParam) || Base64.encode(snark.getInfoHash()).equals(peerParam); displaySnark(out, snark, uri, i, stats, showPeers, isDegraded, showDebug); } @@ -452,7 +453,7 @@ public class I2PSnarkServlet extends Default { if (newURL != null) { if (newURL.startsWith("http://")) { _manager.addMessage(_("Fetching {0}", urlify(newURL))); - I2PAppThread fetch = new I2PAppThread(new FetchAndAdd(_manager, newURL), "Fetch and add"); + I2PAppThread fetch = new I2PAppThread(new FetchAndAdd(_manager, newURL), "Fetch and add", true); fetch.start(); } else { _manager.addMessage(_("Invalid URL - must start with http://")); @@ -468,7 +469,7 @@ public class I2PSnarkServlet extends Default { for (Iterator iter = _manager.listTorrentFiles().iterator(); iter.hasNext(); ) { String name = (String)iter.next(); Snark snark = _manager.getTorrent(name); - if ( (snark != null) && (DataHelper.eq(infoHash, snark.meta.getInfoHash())) ) { + if ( (snark != null) && (DataHelper.eq(infoHash, snark.getInfoHash())) ) { _manager.stopTorrent(name, false); break; } @@ -482,11 +483,9 @@ public class I2PSnarkServlet extends Default { if ( (infoHash != null) && (infoHash.length == 20) ) { // valid sha1 for (String name : _manager.listTorrentFiles()) { Snark snark = _manager.getTorrent(name); - if ( (snark != null) && (DataHelper.eq(infoHash, snark.meta.getInfoHash())) ) { + if ( (snark != null) && (DataHelper.eq(infoHash, snark.getInfoHash())) ) { snark.startTorrent(); - if (snark.storage != null) - name = snark.storage.getBaseName(); - _manager.addMessage(_("Starting up torrent {0}", name)); + _manager.addMessage(_("Starting up torrent {0}", snark.getBaseName())); break; } } @@ -500,8 +499,12 @@ public class I2PSnarkServlet extends Default { for (Iterator iter = _manager.listTorrentFiles().iterator(); iter.hasNext(); ) { String name = (String)iter.next(); Snark snark = _manager.getTorrent(name); - if ( (snark != null) && (DataHelper.eq(infoHash, snark.meta.getInfoHash())) ) { + if ( (snark != null) && (DataHelper.eq(infoHash, snark.getInfoHash())) ) { _manager.stopTorrent(name, true); + MetaInfo meta = snark.getMetaInfo(); + if (meta == null) { + return; + } // should we delete the torrent file? // yeah, need to, otherwise it'll get autoadded again (at the moment File f = new File(name); @@ -520,13 +523,17 @@ public class I2PSnarkServlet extends Default { for (Iterator iter = _manager.listTorrentFiles().iterator(); iter.hasNext(); ) { String name = (String)iter.next(); Snark snark = _manager.getTorrent(name); - if ( (snark != null) && (DataHelper.eq(infoHash, snark.meta.getInfoHash())) ) { + if ( (snark != null) && (DataHelper.eq(infoHash, snark.getInfoHash())) ) { _manager.stopTorrent(name, true); + MetaInfo meta = snark.getMetaInfo(); + if (meta == null) { + return; + } File f = new File(name); f.delete(); _manager.addMessage(_("Torrent file deleted: {0}", f.getAbsolutePath())); - List files = snark.meta.getFiles(); - String dataFile = snark.meta.getName(); + List files = meta.getFiles(); + String dataFile = snark.getBaseName(); f = new File(_manager.getDataDir(), dataFile); if (files == null) { // single file torrent if (f.delete()) @@ -617,8 +624,8 @@ public class I2PSnarkServlet extends Default { List snarks = getSortedSnarks(req); for (int i = 0; i < snarks.size(); i++) { Snark snark = (Snark)snarks.get(i); - if (!snark.stopped) - _manager.stopTorrent(snark.torrent, false); + if (!snark.isStopped()) + _manager.stopTorrent(snark.getName(), false); } if (_manager.util().connected()) { // Give the stopped announces time to get out @@ -631,7 +638,7 @@ public class I2PSnarkServlet extends Default { List snarks = getSortedSnarks(req); for (int i = 0; i < snarks.size(); i++) { Snark snark = (Snark)snarks.get(i); - if (snark.stopped) + if (snark.isStopped()) snark.startTorrent(); } } else { @@ -699,7 +706,7 @@ public class I2PSnarkServlet extends Default { private static final int MAX_DISPLAYED_ERROR_LENGTH = 43; private void displaySnark(PrintWriter out, Snark snark, String uri, int row, long stats[], boolean showPeers, boolean isDegraded, boolean showDebug) throws IOException { - String filename = snark.torrent; + String filename = snark.getName(); File f = new File(filename); filename = f.getName(); // the torrent may be the canonical name, so lets just grab the local name int i = filename.lastIndexOf(".torrent"); @@ -710,28 +717,21 @@ public class I2PSnarkServlet extends Default { fullFilename = new String(filename); filename = filename.substring(0, MAX_DISPLAYED_FILENAME_LENGTH) + "…"; } - long total = snark.meta.getTotalLength(); + long total = snark.getTotalLength(); // Early typecast, avoid possibly overflowing a temp integer - long remaining = (long) snark.storage.needed() * (long) snark.meta.getPieceLength(0); + long remaining = (long) snark.getNeeded() * (long) snark.getPieceLength(0); if (remaining > total) remaining = total; - long downBps = 0; - long upBps = 0; - if (snark.coordinator != null) { - downBps = snark.coordinator.getDownloadRate(); - upBps = snark.coordinator.getUploadRate(); - } + long downBps = snark.getDownloadRate(); + long upBps = snark.getUploadRate(); long remainingSeconds; if (downBps > 0) remainingSeconds = remaining / downBps; else remainingSeconds = -1; - boolean isRunning = !snark.stopped; - long uploaded = 0; - if (snark.coordinator != null) { - uploaded = snark.coordinator.getUploaded(); - stats[0] += snark.coordinator.getDownloaded(); - } + boolean isRunning = !snark.isStopped(); + long uploaded = snark.getUploaded(); + stats[0] += snark.getDownloaded(); stats[1] += uploaded; if (isRunning) { stats[2] += downBps; @@ -739,25 +739,21 @@ public class I2PSnarkServlet extends Default { } stats[5] += total; - boolean isValid = snark.meta != null; - boolean singleFile = snark.meta.getFiles() == null; + MetaInfo meta = snark.getMetaInfo(); + boolean isValid = meta != null; + boolean singleFile = (!isValid) || meta.getFiles() == null; - String err = null; - int curPeers = 0; - int knownPeers = 0; - if (snark.coordinator != null) { - err = snark.coordinator.trackerProblems; - curPeers = snark.coordinator.getPeerCount(); - stats[4] += curPeers; - knownPeers = Math.max(curPeers, snark.coordinator.trackerSeenPeers); - } + String err = snark.getTrackerProblems(); + int curPeers = snark.getPeerCount(); + stats[4] += curPeers; + int knownPeers = Math.max(curPeers, snark.getTrackerSeenPeers()); String rowClass = (row % 2 == 0 ? "snarkTorrentEven" : "snarkTorrentOdd"); String statusString; if (err != null) { if (isRunning && curPeers > 0 && !showPeers) statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + "trackererror.png\" title=\"" + err + "\"></td><td class=\"snarkTorrentStatus " + rowClass + "\">" + _("Tracker Error") + - ": <a href=\"" + uri + "?p=" + Base64.encode(snark.meta.getInfoHash()) + "\">" + + ": <a href=\"" + uri + "?p=" + Base64.encode(snark.getInfoHash()) + "\">" + curPeers + thinsp(isDegraded) + ngettext("1 peer", "{0} peers", knownPeers) + "</a>"; else if (isRunning) @@ -773,7 +769,7 @@ public class I2PSnarkServlet extends Default { } else if (remaining <= 0) { if (isRunning && curPeers > 0 && !showPeers) statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + "seeding.png\" ></td><td class=\"snarkTorrentStatus " + rowClass + "\">" + _("Seeding") + - ": <a href=\"" + uri + "?p=" + Base64.encode(snark.meta.getInfoHash()) + "\">" + + ": <a href=\"" + uri + "?p=" + Base64.encode(snark.getInfoHash()) + "\">" + curPeers + thinsp(isDegraded) + ngettext("1 peer", "{0} peers", knownPeers) + "</a>"; else if (isRunning) @@ -785,7 +781,7 @@ public class I2PSnarkServlet extends Default { } else { if (isRunning && curPeers > 0 && downBps > 0 && !showPeers) statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + "downloading.png\" ></td><td class=\"snarkTorrentStatus " + rowClass + "\">" + _("OK") + - ": <a href=\"" + uri + "?p=" + Base64.encode(snark.meta.getInfoHash()) + "\">" + + ": <a href=\"" + uri + "?p=" + Base64.encode(snark.getInfoHash()) + "\">" + curPeers + thinsp(isDegraded) + ngettext("1 peer", "{0} peers", knownPeers) + "</a>"; else if (isRunning && curPeers > 0 && downBps > 0) @@ -794,7 +790,7 @@ public class I2PSnarkServlet extends Default { ngettext("1 peer", "{0} peers", knownPeers); else if (isRunning && curPeers > 0 && !showPeers) statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + "stalled.png\" ></td><td class=\"snarkTorrentStatus " + rowClass + "\">" + _("Stalled") + - ": <a href=\"" + uri + "?p=" + Base64.encode(snark.meta.getInfoHash()) + "\">" + + ": <a href=\"" + uri + "?p=" + Base64.encode(snark.getInfoHash()) + "\">" + curPeers + thinsp(isDegraded) + ngettext("1 peer", "{0} peers", knownPeers) + "</a>"; else if (isRunning && curPeers > 0) @@ -816,7 +812,7 @@ public class I2PSnarkServlet extends Default { out.write("<td class=\"" + rowClass + "\">"); // temporarily hardcoded for postman* and anonymity, requires bytemonsoon patch for lookup by info_hash - String announce = snark.meta.getAnnounce(); + String announce = meta.getAnnounce(); if (announce.startsWith("http://YRgrgTLG") || announce.startsWith("http://8EoJZIKr") || announce.startsWith("http://lnQ6yoBT") || announce.startsWith("http://tracker2.postman.i2p/") || announce.startsWith("http://ahsplxkbhemefwvvml7qovzl5a2b5xo5i7lyai7ntdunvcyfdtna.b32.i2p/")) { Map trackers = _manager.getTrackers(); @@ -833,7 +829,7 @@ public class I2PSnarkServlet extends Default { continue; baseURL = baseURL.substring(e + 1); out.write("<a href=\"" + baseURL + "details.php?dllist=1&filelist=1&info_hash="); - out.write(TrackerClient.urlencode(snark.meta.getInfoHash())); + out.write(TrackerClient.urlencode(snark.getInfoHash())); out.write("\" title=\"" + _("Details at {0} tracker", name) + "\" target=\"_blank\">"); out.write("<img alt=\"" + _("Info") + "\" border=\"0\" src=\"" + _imgPath + "details.png\">"); out.write("</a>"); @@ -843,13 +839,13 @@ public class I2PSnarkServlet extends Default { out.write("</td>\n<td class=\"" + rowClass + "\">"); StringBuilder buf = null; - if (remaining == 0 || snark.meta.getFiles() != null) { + if (remaining == 0 || meta.getFiles() != null) { buf = new StringBuilder(128); - buf.append("<a href=\"").append(snark.storage.getBaseName()); - if (snark.meta.getFiles() != null) + buf.append("<a href=\"").append(snark.getBaseName()); + if (meta.getFiles() != null) buf.append('/'); buf.append("\" title=\""); - if (snark.meta.getFiles() != null) + if (meta.getFiles() != null) buf.append(_("View files")); else buf.append(_("Open file")); @@ -857,21 +853,21 @@ public class I2PSnarkServlet extends Default { out.write(buf.toString()); } String icon; - if (snark.meta.getFiles() != null) + if (meta.getFiles() != null) icon = "folder"; else - icon = toIcon(snark.meta.getName()); - if (remaining == 0 || snark.meta.getFiles() != null) { + icon = toIcon(meta.getName()); + if (remaining == 0 || meta.getFiles() != null) { out.write(toImg(icon, _("Open"))); out.write("</a>"); } else { out.write(toImg(icon)); } out.write("</td><td class=\"snarkTorrentName " + rowClass + "\">"); - if (remaining == 0 || snark.meta.getFiles() != null) + if (remaining == 0 || meta.getFiles() != null) out.write(buf.toString()); out.write(filename); - if (remaining == 0 || snark.meta.getFiles() != null) + if (remaining == 0 || meta.getFiles() != null) out.write("</a>"); out.write("<td align=\"right\" class=\"snarkTorrentETA " + rowClass + "\">"); @@ -897,8 +893,8 @@ public class I2PSnarkServlet extends Default { out.write(formatSize(upBps) + "ps"); out.write("</td>\n\t"); out.write("<td align=\"center\" class=\"snarkTorrentAction " + rowClass + "\">"); - String parameters = "&nonce=" + _nonce + "&torrent=" + Base64.encode(snark.meta.getInfoHash()); - String b64 = Base64.encode(snark.meta.getInfoHash()); + String parameters = "&nonce=" + _nonce + "&torrent=" + Base64.encode(snark.getInfoHash()); + String b64 = Base64.encode(snark.getInfoHash()); if (showPeers) parameters = parameters + "&p=1"; if (isRunning) { @@ -963,7 +959,7 @@ public class I2PSnarkServlet extends Default { out.write("</td>\n</tr>\n"); if(showPeers && isRunning && curPeers > 0) { - List<Peer> peers = snark.coordinator.peerList(); + List<Peer> peers = snark.getPeerList(); if (!showDebug) Collections.sort(peers, new PeerComparator()); for (Peer peer : peers) { @@ -996,7 +992,7 @@ public class I2PSnarkServlet extends Default { out.write("<td class=\"snarkTorrentStatus " + rowClass + "\">"); out.write("</td>\n\t"); out.write("<td align=\"right\" class=\"snarkTorrentStatus " + rowClass + "\">"); - float pct = (float) (100.0 * (float) peer.completed() / snark.meta.getPieces()); + float pct = (float) (100.0 * (float) peer.completed() / meta.getPieces()); if (pct == 100.0) out.write(_("Seed")); else { @@ -1358,6 +1354,11 @@ public class I2PSnarkServlet extends Default { return _manager.util().getString(s, o); } + /** translate */ + private String _(String s, Object o, Object o2) { + return _manager.util().getString(s, o, o2); + } + /** translate (ngettext) @since 0.7.14 */ private String ngettext(String s, String p, int n) { return _manager.util().getString(n, s, p); @@ -1469,7 +1470,7 @@ public class I2PSnarkServlet extends Default { if (parent) // always true buf.append("<div class=\"page\"><div class=\"mainsection\">"); - boolean showPriority = snark != null && !snark.storage.complete(); + boolean showPriority = snark != null && snark.getStorage() != null && !snark.getStorage().complete(); if (showPriority) buf.append("<form action=\"").append(base).append("\" method=\"POST\">\n"); buf.append("<TABLE BORDER=0 class=\"snarkTorrents\" >" + @@ -1516,15 +1517,16 @@ public class I2PSnarkServlet extends Default { complete = true; status = toImg("tick") + ' ' + _("Directory"); } else { - if (snark == null) { + if (snark == null || snark.getStorage() == null) { // Assume complete, perhaps he removed a completed torrent but kept a bookmark complete = true; status = toImg("cancel") + ' ' + _("Torrent not found?"); } else { + Storage storage = snark.getStorage(); try { File f = item.getFile(); if (f != null) { - long remaining = snark.storage.remaining(f.getCanonicalPath()); + long remaining = storage.remaining(f.getCanonicalPath()); if (remaining < 0) { complete = true; status = toImg("cancel") + ' ' + _("File not found in torrent?"); @@ -1532,7 +1534,7 @@ public class I2PSnarkServlet extends Default { complete = true; status = toImg("tick") + ' ' + _("Complete"); } else { - int priority = snark.storage.getPriority(f.getCanonicalPath()); + int priority = storage.getPriority(f.getCanonicalPath()); if (priority < 0) status = toImg("cancel"); else if (priority == 0) @@ -1588,7 +1590,7 @@ public class I2PSnarkServlet extends Default { buf.append("<td class=\"priority\">"); File f = item.getFile(); if ((!complete) && (!item.isDirectory()) && f != null) { - int pri = snark.storage.getPriority(f.getCanonicalPath()); + int pri = snark.getStorage().getPriority(f.getCanonicalPath()); buf.append("<input type=\"radio\" value=\"5\" name=\"pri.").append(f.getCanonicalPath()).append("\" "); if (pri > 0) buf.append("checked=\"true\""); @@ -1690,6 +1692,9 @@ public class I2PSnarkServlet extends Default { /** @since 0.8.1 */ private void savePriorities(Snark snark, Map postParams) { + Storage storage = snark.getStorage(); + if (storage == null) + return; Set<Map.Entry> entries = postParams.entrySet(); for (Map.Entry entry : entries) { String key = (String)entry.getKey(); @@ -1698,14 +1703,13 @@ public class I2PSnarkServlet extends Default { String file = key.substring(4); String val = ((String[])entry.getValue())[0]; // jetty arrays int pri = Integer.parseInt(val); - snark.storage.setPriority(file, pri); + storage.setPriority(file, pri); //System.err.println("Priority now " + pri + " for " + file); } catch (Throwable t) { t.printStackTrace(); } } } - if (snark.coordinator != null) - snark.coordinator.updatePiecePriorities(); - _manager.saveTorrentStatus(snark.storage.getMetaInfo(), snark.storage.getBitField(), snark.storage.getFilePriorities()); + snark.updatePiecePriorities(); + _manager.saveTorrentStatus(snark.getMetaInfo(), storage.getBitField(), storage.getFilePriorities()); } From 76029992742698022c6699ff30ec30d5f731b7ff Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Mon, 20 Dec 2010 00:05:03 +0000 Subject: [PATCH 010/463] more prep and stubs for no metainfo --- .../src/org/klomp/snark/I2PSnarkUtil.java | 15 +++ .../java/src/org/klomp/snark/Peer.java | 14 ++- .../src/org/klomp/snark/PeerAcceptor.java | 14 +-- .../src/org/klomp/snark/PeerCoordinator.java | 66 +++++++++-- .../java/src/org/klomp/snark/PeerState.java | 19 ++- .../java/src/org/klomp/snark/Snark.java | 112 ++++++++++++------ .../src/org/klomp/snark/SnarkManager.java | 38 ++++++ .../src/org/klomp/snark/TrackerClient.java | 50 ++++++++ .../java/src/org/klomp/snark/TrackerInfo.java | 4 +- .../org/klomp/snark/web/I2PSnarkServlet.java | 54 ++++++++- 10 files changed, 318 insertions(+), 68 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java index 001928d47..e8ff0881f 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java +++ b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java @@ -32,6 +32,8 @@ import net.i2p.util.SimpleScheduler; import net.i2p.util.SimpleTimer; import net.i2p.util.Translate; +import org.klomp.snark.dht.KRPC; + /** * I2P specific helpers for I2PSnark * We use this class as a sort of context for i2psnark @@ -56,6 +58,7 @@ public class I2PSnarkUtil { private int _maxConnections; private File _tmpDir; private int _startupDelay; + private KRPC _krpc; public static final int DEFAULT_STARTUP_DELAY = 3; public static final String PROP_USE_OPENTRACKERS = "i2psnark.useOpentrackers"; @@ -64,6 +67,8 @@ public class I2PSnarkUtil { public static final String DEFAULT_OPENTRACKERS = "http://tracker.welterde.i2p/a"; public static final int DEFAULT_MAX_UP_BW = 8; //KBps public static final int MAX_CONNECTIONS = 16; // per torrent + private static final boolean ENABLE_DHT = true; + public I2PSnarkUtil(I2PAppContext ctx) { _context = ctx; _log = _context.logManager().getLog(Snark.class); @@ -185,10 +190,20 @@ public class I2PSnarkUtil { // opts.setProperty("i2p.streaming.readTimeout", "120000"); _manager = I2PSocketManagerFactory.createManager(_i2cpHost, _i2cpPort, opts); } + // FIXME this only instantiates krpc once, left stuck with old manager + if (ENABLE_DHT && _manager != null && _krpc == null) + _krpc = new KRPC(_context, _manager.getSession()); return (_manager != null); } + /** + * @return null if disabled or not started + * @since 0.8.4 + */ + public KRPC getDHT() { return _krpc; } + public boolean connected() { return _manager != null; } + /** * Destroy the destination itself */ diff --git a/apps/i2psnark/java/src/org/klomp/snark/Peer.java b/apps/i2psnark/java/src/org/klomp/snark/Peer.java index f42adddef..a65e45887 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Peer.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Peer.java @@ -39,6 +39,7 @@ public class Peer implements Comparable private final PeerID peerID; private final byte[] my_id; + private final byte[] infohash; final MetaInfo metainfo; // The data in/output streams set during the handshake and used by @@ -70,11 +71,13 @@ public class Peer implements Comparable * Outgoing connection. * Creates a disconnected peer given a PeerID, your own id and the * relevant MetaInfo. + * @param metainfo null if in magnet mode */ - public Peer(PeerID peerID, byte[] my_id, MetaInfo metainfo) + public Peer(PeerID peerID, byte[] my_id, byte[] infohash, MetaInfo metainfo) { this.peerID = peerID; this.my_id = my_id; + this.infohash = infohash; this.metainfo = metainfo; _id = ++__id; //_log.debug("Creating a new peer with " + peerID.getAddress().calculateHash().toBase64(), new Exception("creating")); @@ -88,12 +91,14 @@ public class Peer implements Comparable * get the remote peer id. To completely start the connection call * the connect() method. * + * @param metainfo null if in magnet mode * @exception IOException when an error occurred during the handshake. */ - public Peer(final I2PSocket sock, InputStream in, OutputStream out, byte[] my_id, MetaInfo metainfo) + public Peer(final I2PSocket sock, InputStream in, OutputStream out, byte[] my_id, byte[] infohash, MetaInfo metainfo) throws IOException { this.my_id = my_id; + this.infohash = infohash; this.metainfo = metainfo; this.sock = sock; @@ -312,8 +317,7 @@ public class Peer implements Comparable // FIXME not if DHT disabled dout.writeLong(OPTION_EXTENSION | OPTION_DHT); // Handshake write - metainfo hash - byte[] shared_hash = metainfo.getInfoHash(); - dout.write(shared_hash); + dout.write(infohash); // Handshake write - peer id dout.write(my_id); dout.flush(); @@ -341,7 +345,7 @@ public class Peer implements Comparable // Handshake read - metainfo hash bs = new byte[20]; din.readFully(bs); - if (!Arrays.equals(shared_hash, bs)) + if (!Arrays.equals(infohash, bs)) throw new IOException("Unexpected MetaInfo hash"); // Handshake read - peer id diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerAcceptor.java b/apps/i2psnark/java/src/org/klomp/snark/PeerAcceptor.java index 050884e5c..0adb13d9b 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerAcceptor.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerAcceptor.java @@ -88,12 +88,11 @@ public class PeerAcceptor } if (coordinator != null) { // single torrent capability - MetaInfo meta = coordinator.getMetaInfo(); - if (DataHelper.eq(meta.getInfoHash(), peerInfoHash)) { + if (DataHelper.eq(coordinator.getInfoHash(), peerInfoHash)) { if (coordinator.needPeers()) { Peer peer = new Peer(socket, in, out, coordinator.getID(), - coordinator.getMetaInfo()); + coordinator.getInfoHash(), coordinator.getMetaInfo()); coordinator.addPeer(peer); } else @@ -101,19 +100,18 @@ public class PeerAcceptor } else { // its for another infohash, but we are only single torrent capable. b0rk. throw new IOException("Peer wants another torrent (" + Base64.encode(peerInfoHash) - + ") while we only support (" + Base64.encode(meta.getInfoHash()) + ")"); + + ") while we only support (" + Base64.encode(coordinator.getInfoHash()) + ")"); } } else { // multitorrent capable, so lets see what we can handle for (Iterator iter = coordinators.iterator(); iter.hasNext(); ) { PeerCoordinator cur = (PeerCoordinator)iter.next(); - MetaInfo meta = cur.getMetaInfo(); - - if (DataHelper.eq(meta.getInfoHash(), peerInfoHash)) { + + if (DataHelper.eq(cur.getInfoHash(), peerInfoHash)) { if (cur.needPeers()) { Peer peer = new Peer(socket, in, out, cur.getID(), - cur.getMetaInfo()); + cur.getInfoHash(), cur.getMetaInfo()); cur.addPeer(peer); return; } diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java index ba9727d8a..f7a3a42fc 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java @@ -93,6 +93,7 @@ public class PeerCoordinator implements PeerListener private final CheckEvent timer; private final byte[] id; + private final byte[] infohash; /** The wanted pieces. We could use a TreeSet but we'd have to clear and re-add everything * when priorities change. @@ -108,11 +109,16 @@ public class PeerCoordinator implements PeerListener private final I2PSnarkUtil _util; private static final Random _random = I2PAppContext.getGlobalContext().random(); - public PeerCoordinator(I2PSnarkUtil util, byte[] id, MetaInfo metainfo, Storage storage, + /** + * @param metainfo null if in magnet mode + * @param storage null if in magnet mode + */ + public PeerCoordinator(I2PSnarkUtil util, byte[] id, byte[] infohash, MetaInfo metainfo, Storage storage, CoordinatorListener listener, Snark torrent) { _util = util; this.id = id; + this.infohash = infohash; this.metainfo = metainfo; this.storage = storage; this.listener = listener; @@ -149,6 +155,8 @@ public class PeerCoordinator implements PeerListener // only called externally from Storage after the double-check fails public void setWantedPieces() { + if (metainfo == null || storage == null) + return; // Make a list of pieces synchronized(wantedPieces) { wantedPieces.clear(); @@ -188,6 +196,9 @@ public class PeerCoordinator implements PeerListener public boolean completed() { + // FIXME return metainfo complete status + if (storage == null) + return false; return storage.complete(); } @@ -204,9 +215,12 @@ public class PeerCoordinator implements PeerListener /** * Returns how many bytes are still needed to get the complete file. + * @return -1 if in magnet mode */ public long getLeft() { + if (metainfo == null | storage == null) + return -1; // XXX - Only an approximation. return ((long) storage.needed()) * metainfo.getPieceLength(0); } @@ -291,6 +305,12 @@ public class PeerCoordinator implements PeerListener return metainfo; } + /** @since 0.8.4 */ + public byte[] getInfoHash() + { + return infohash; + } + public boolean needPeers() { return !halted && peers.size() < getMaxConnections(); @@ -301,6 +321,8 @@ public class PeerCoordinator implements PeerListener * @return 512K: 16; 1M: 11; 2M: 6 */ private int getMaxConnections() { + if (metainfo == null) + return 6; int size = metainfo.getPieceLength(0); int max = _util.getMaxConnections(); if (size <= 512*1024 || completed()) @@ -375,8 +397,15 @@ public class PeerCoordinator implements PeerListener } else { - if (_log.shouldLog(Log.INFO)) - _log.info("New connection to peer: " + peer + " for " + metainfo.getName()); + if (_log.shouldLog(Log.INFO)) { + // just for logging + String name; + if (metainfo == null) + name = "Magnet"; + else + name = metainfo.getName(); + _log.info("New connection to peer: " + peer + " for " + metainfo.getName()); + } // Add it to the beginning of the list. // And try to optimistically make it a uploader. @@ -435,12 +464,22 @@ public class PeerCoordinator implements PeerListener if (need_more) { - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Adding a peer " + peer.getPeerID().toString() + " for " + metainfo.getName(), new Exception("add/run")); - + if (_log.shouldLog(Log.DEBUG)) { + // just for logging + String name; + if (metainfo == null) + name = "Magnet"; + else + name = metainfo.getName(); + _log.debug("Adding a peer " + peer.getPeerID().toString() + " for " + name, new Exception("add/run")); + } // Run the peer with us as listener and the current bitfield. final PeerListener listener = this; - final BitField bitfield = storage.getBitField(); + final BitField bitfield; + if (storage != null) + bitfield = storage.getBitField(); + else + bitfield = null; Runnable r = new Runnable() { public void run() @@ -506,11 +545,6 @@ public class PeerCoordinator implements PeerListener interestedAndChoking = count; } - public byte[] getBitMap() - { - return storage.getBitField().getFieldBytes(); - } - /** * @return true if we still want the given piece */ @@ -679,6 +713,8 @@ public class PeerCoordinator implements PeerListener * @since 0.8.1 */ public void updatePiecePriorities() { + if (storage == null) + return; int[] pri = storage.getPiecePriorities(); if (pri == null) { _log.debug("Updated piece priorities called but no priorities to set?"); @@ -745,6 +781,8 @@ public class PeerCoordinator implements PeerListener { if (halted) return null; + if (metainfo == null || storage == null) + return null; try { @@ -787,6 +825,8 @@ public class PeerCoordinator implements PeerListener */ public boolean gotPiece(Peer peer, int piece, byte[] bs) { + if (metainfo == null || storage == null) + return true; if (halted) { _log.info("Got while-halted piece " + piece + "/" + metainfo.getPieces() +" from " + peer + " for " + metainfo.getName()); return true; // We don't actually care anymore. @@ -983,6 +1023,8 @@ public class PeerCoordinator implements PeerListener * @since 0.8.2 */ public PartialPiece getPartialPiece(Peer peer, BitField havePieces) { + if (metainfo == null) + return null; synchronized(wantedPieces) { // sorts by remaining bytes, least first Collections.sort(partialPieces); diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerState.java b/apps/i2psnark/java/src/org/klomp/snark/PeerState.java index ad70df9dc..3ec3d219f 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerState.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerState.java @@ -71,6 +71,9 @@ class PeerState implements DataLoader public final static int PARTSIZE = 16*1024; // outbound request private final static int MAX_PARTSIZE = 64*1024; // Don't let anybody request more than this + /** + * @param metainfo null if in magnet mode + */ PeerState(Peer peer, PeerListener listener, MetaInfo metainfo, PeerConnectionIn in, PeerConnectionOut out) { @@ -132,6 +135,9 @@ class PeerState implements DataLoader { if (_log.shouldLog(Log.DEBUG)) _log.debug(peer + " rcv have(" + piece + ")"); + // FIXME we will lose these until we get the metainfo + if (metainfo == null) + return; // Sanity check if (piece < 0 || piece >= metainfo.getPieces()) { @@ -169,8 +175,15 @@ class PeerState implements DataLoader } // XXX - Check for weird bitfield and disconnect? - bitfield = new BitField(bitmap, metainfo.getPieces()); + // FIXME will have to regenerate the bitfield after we know exactly + // how many pieces there are, as we don't know how many spare bits there are. + if (metainfo == null) + bitfield = new BitField(bitmap, bitmap.length * 8); + else + bitfield = new BitField(bitmap, metainfo.getPieces()); } + if (metainfo == null) + return; boolean interest = listener.gotBitField(peer, bitfield); setInteresting(interest); if (bitfield.complete() && !interest) { @@ -188,6 +201,8 @@ class PeerState implements DataLoader if (_log.shouldLog(Log.DEBUG)) _log.debug(peer + " rcv request(" + piece + ", " + begin + ", " + length + ") "); + if (metainfo == null) + return; if (choking) { if (_log.shouldLog(Log.INFO)) @@ -606,6 +621,8 @@ class PeerState implements DataLoader // no bitfield yet? nothing to request then. if (bitfield == null) return; + if (metainfo == null) + return; boolean more_pieces = true; while (more_pieces) { diff --git a/apps/i2psnark/java/src/org/klomp/snark/Snark.java b/apps/i2psnark/java/src/org/klomp/snark/Snark.java index 79807d68f..2460e9f53 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Snark.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Snark.java @@ -317,31 +317,7 @@ public class Snark stopped = true; activity = "Network setup"; - // "Taking Three as the subject to reason about-- - // A convenient number to state-- - // We add Seven, and Ten, and then multiply out - // By One Thousand diminished by Eight. - // - // "The result we proceed to divide, as you see, - // By Nine Hundred and Ninety Two: - // Then subtract Seventeen, and the answer must be - // Exactly and perfectly true. - - // Create a new ID and fill it with something random. First nine - // zeros bytes, then three bytes filled with snark and then - // sixteen random bytes. - byte snark = (((3 + 7 + 10) * (1000 - 8)) / 992) - 17; - id = new byte[20]; - Random random = I2PAppContext.getGlobalContext().random(); - int i; - for (i = 0; i < 9; i++) - id[i] = 0; - id[i++] = snark; - id[i++] = snark; - id[i++] = snark; - while (i < 20) - id[i++] = (byte)random.nextInt(256); - + id = generateID(); debug("My peer id: " + PeerID.idencode(id), Snark.INFO); int port; @@ -468,6 +444,64 @@ public class Snark if (start) startTorrent(); } + + /** + * multitorrent, magnet + * + * @param torrent a fake name for now (not a file name) + * @param ih 20-byte info hash + * @since 0.8.4 + */ + public Snark(I2PSnarkUtil util, String torrent, byte[] ih, + CompleteListener complistener, PeerCoordinatorSet peerCoordinatorSet, + ConnectionAcceptor connectionAcceptor, boolean start, String rootDir) + { + completeListener = complistener; + _util = util; + _peerCoordinatorSet = peerCoordinatorSet; + acceptor = connectionAcceptor; + this.torrent = torrent; + this.infoHash = ih; + this.rootDataDir = rootDir; + stopped = true; + id = generateID(); + + // All we have is an infoHash + // meta remains null + // storage remains null + + if (start) + startTorrent(); + } + + private static byte[] generateID() { + // "Taking Three as the subject to reason about-- + // A convenient number to state-- + // We add Seven, and Ten, and then multiply out + // By One Thousand diminished by Eight. + // + // "The result we proceed to divide, as you see, + // By Nine Hundred and Ninety Two: + // Then subtract Seventeen, and the answer must be + // Exactly and perfectly true. + + // Create a new ID and fill it with something random. First nine + // zeros bytes, then three bytes filled with snark and then + // sixteen random bytes. + byte snark = (((3 + 7 + 10) * (1000 - 8)) / 992) - 17; + byte[] rv = new byte[20]; + Random random = I2PAppContext.getGlobalContext().random(); + int i; + for (i = 0; i < 9; i++) + rv[i] = 0; + rv[i++] = snark; + rv[i++] = snark; + rv[i++] = snark; + while (i < 20) + rv[i++] = (byte)random.nextInt(256); + return rv; + } + /** * Start up contacting peers and querying the tracker */ @@ -484,7 +518,7 @@ public class Snark } debug("Starting PeerCoordinator, ConnectionAcceptor, and TrackerClient", NOTICE); activity = "Collecting pieces"; - coordinator = new PeerCoordinator(_util, id, meta, storage, this, this); + coordinator = new PeerCoordinator(_util, id, infoHash, meta, storage, this, this); if (_peerCoordinatorSet != null) { // multitorrent _peerCoordinatorSet.add(coordinator); @@ -507,7 +541,7 @@ public class Snark // restart safely, so lets build a new one to replace the old if (_peerCoordinatorSet != null) _peerCoordinatorSet.remove(coordinator); - PeerCoordinator newCoord = new PeerCoordinator(_util, id, meta, storage, this, this); + PeerCoordinator newCoord = new PeerCoordinator(_util, id, infoHash, meta, storage, this, this); if (_peerCoordinatorSet != null) _peerCoordinatorSet.add(newCoord); coordinator = newCoord; @@ -516,18 +550,17 @@ public class Snark if (!trackerclient.started() && !coordinatorChanged) { trackerclient.start(); } else if (trackerclient.halted() || coordinatorChanged) { - try - { - storage.reopen(rootDataDir); - } - catch (IOException ioe) - { - try { storage.close(); } catch (IOException ioee) { - ioee.printStackTrace(); - } - fatal("Could not reopen storage", ioe); - } - TrackerClient newClient = new TrackerClient(_util, coordinator.getMetaInfo(), coordinator, this); + if (storage != null) { + try { + storage.reopen(rootDataDir); + } catch (IOException ioe) { + try { storage.close(); } catch (IOException ioee) { + ioee.printStackTrace(); + } + fatal("Could not reopen storage", ioe); + } + } + TrackerClient newClient = new TrackerClient(_util, meta, coordinator, this); if (!trackerclient.halted()) trackerclient.halt(); trackerclient = newClient; @@ -601,6 +634,7 @@ public class Snark * @since 0.8.4 */ public byte[] getInfoHash() { + // should always be the same if (meta != null) return meta.getInfoHash(); return infoHash; diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index 6a4eb4c7c..270937688 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -578,6 +578,44 @@ public class SnarkManager implements Snark.CompleteListener { } } + /** + * Add a torrent with the info hash alone (magnet / maggot) + * + * @param name hex or b32 name from the magnet link + * @param ih 20 byte info hash + * @since 0.8.4 + */ + public void addMagnet(String name, byte[] ih) { + Snark torrent = new Snark(_util, name, ih, this, + _peerCoordinatorSet, _connectionAcceptor, + false, getDataDir().getPath()); + + // TODO tell the dir monitor not to delete us + synchronized (_snarks) { + _snarks.put(name, torrent); + } + if (shouldAutoStart()) { + torrent.startTorrent(); + addMessage(_("Fetching {0}", name)); + boolean haveSavedPeers = false; + if ((!util().connected()) && !haveSavedPeers) { + addMessage(_("We have no saved peers and no other torrents are running. " + + "Fetch of {0} will not succeed until you start another torrent.", name)); + } + } else { + addMessage(_("Adding {0}", name)); + } + } + + /** + * Delete a torrent with the info hash alone (magnet / maggot) + * + * @param ih 20 byte info hash + * @since 0.8.4 + */ + public void deleteMagnet(byte[] ih) { + } + /** * Get the timestamp for a torrent from the config file */ diff --git a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java index 6bded2100..d14abaa0c 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java +++ b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java @@ -38,6 +38,7 @@ import net.i2p.data.Hash; import net.i2p.util.I2PAppThread; import net.i2p.util.Log; +import org.klomp.snark.dht.KRPC; /** * Informs metainfo tracker of events and gets new peers for peer @@ -73,6 +74,9 @@ public class TrackerClient extends I2PAppThread private List trackers; + /** + * @param meta null if in magnet mode + */ public TrackerClient(I2PSnarkUtil util, MetaInfo meta, PeerCoordinator coordinator, Snark snark) { super(); @@ -173,6 +177,7 @@ public class TrackerClient extends I2PAppThread // FIXME really need to get this message to the gui stop = true; _log.error("No valid trackers for infoHash: " + infoHash); + // FIXME keep going if DHT enabled return; } @@ -192,6 +197,9 @@ public class TrackerClient extends I2PAppThread Random r = I2PAppContext.getGlobalContext().random(); while(!stop) { + // Local DHT tracker announce + if (_util.getDHT() != null) + _util.getDHT().announce(snark.getInfoHash()); try { // Sleep some minutes... @@ -319,6 +327,45 @@ public class TrackerClient extends I2PAppThread maxSeenPeers = tr.seenPeers; } // *** end of trackers loop here + // Get peers from DHT + // FIXME this needs to be in its own thread + if (_util.getDHT() != null && !stop) { + int numwant; + if (left <= 0 || event.equals(STOPPED_EVENT) || !coordinator.needPeers()) + numwant = 1; + else + numwant = _util.getMaxConnections(); + List<Hash> hashes = _util.getDHT().getPeers(snark.getInfoHash(), numwant, 2*60*1000); + _util.debug("Got " + hashes + " from DHT", Snark.INFO); + // announce ourselves while the token is still good + // FIXME this needs to be in its own thread + if (!stop) { + int good = _util.getDHT().announce(snark.getInfoHash(), 8, 5*60*1000); + _util.debug("Sent " + good + " good announces to DHT", Snark.INFO); + } + + // now try these peers + if ((!stop) && !hashes.isEmpty()) { + List<Peer> peers = new ArrayList(hashes.size()); + for (Hash h : hashes) { + PeerID pID = new PeerID(h.getData()); + peers.add(new Peer(pID, snark.getID(), snark.getInfoHash(), meta)); + } + Collections.shuffle(peers, r); + Iterator<Peer> it = peers.iterator(); + while ((!stop) && it.hasNext()) { + Peer cur = it.next(); + if (coordinator.addPeer(cur)) { + int delay = DELAY_MUL; + delay *= ((int)cur.getPeerID().getAddress().calculateHash().toBase64().charAt(0)) % 10; + delay += DELAY_MIN; + try { Thread.sleep(delay); } catch (InterruptedException ie) {} + } + } + } + } + + // we could try and total the unique peers but that's too hard for now snark.setTrackerSeenPeers(maxSeenPeers); if (!runStarted) @@ -333,6 +380,9 @@ public class TrackerClient extends I2PAppThread } finally { + // Local DHT tracker unannounce + if (_util.getDHT() != null) + _util.getDHT().unannounce(snark.getInfoHash()); try { // try to contact everybody we can diff --git a/apps/i2psnark/java/src/org/klomp/snark/TrackerInfo.java b/apps/i2psnark/java/src/org/klomp/snark/TrackerInfo.java index 360a4f47e..ef67fc58b 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/TrackerInfo.java +++ b/apps/i2psnark/java/src/org/klomp/snark/TrackerInfo.java @@ -144,7 +144,7 @@ public class TrackerInfo continue; } } - peers.add(new Peer(peerID, my_id, metainfo)); + peers.add(new Peer(peerID, my_id, metainfo.getInfoHash(), metainfo)); } return peers; @@ -172,7 +172,7 @@ public class TrackerInfo // won't happen continue; } - peers.add(new Peer(peerID, my_id, metainfo)); + peers.add(new Peer(peerID, my_id, metainfo.getInfoHash(), metainfo)); } return peers; diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 57e8bd446..917652bc0 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -61,6 +61,10 @@ public class I2PSnarkServlet extends Default { private String _imgPath; public static final String PROP_CONFIG_FILE = "i2psnark.configFile"; + /** BEP 9 */ + private static final String MAGNET = "magnet:?xt=urn:btih:"; + /** http://sponge.i2p/files/maggotspec.txt */ + private static final String MAGGOT = "maggot://"; @Override public void init(ServletConfig cfg) throws ServletException { @@ -455,8 +459,10 @@ public class I2PSnarkServlet extends Default { _manager.addMessage(_("Fetching {0}", urlify(newURL))); I2PAppThread fetch = new I2PAppThread(new FetchAndAdd(_manager, newURL), "Fetch and add", true); fetch.start(); + } else if (newURL.startsWith(MAGNET) || newURL.startsWith(MAGGOT)) { + addMagnet(newURL); } else { - _manager.addMessage(_("Invalid URL - must start with http://")); + _manager.addMessage(_("Invalid URL - must start with http://, {0} or {1}", MAGNET, MAGGOT)); } } else { // no file or URL specified @@ -503,6 +509,8 @@ public class I2PSnarkServlet extends Default { _manager.stopTorrent(name, true); MetaInfo meta = snark.getMetaInfo(); if (meta == null) { + // magnet + _manager.deleteMagnet(snark.getInfoHash()); return; } // should we delete the torrent file? @@ -527,6 +535,8 @@ public class I2PSnarkServlet extends Default { _manager.stopTorrent(name, true); MetaInfo meta = snark.getMetaInfo(); if (meta == null) { + // magnet + _manager.deleteMagnet(snark.getInfoHash()); return; } File f = new File(name); @@ -1314,6 +1324,48 @@ public class I2PSnarkServlet extends Default { out.write("</a></span></span></div>\n"); } + /** + * @param url in base32 or hex, xt must be first magnet param + * @since 0.8.4 + */ + private void addMagnet(String url) { + String ihash; + String name; + if (url.startsWith(MAGNET)) { + ihash = url.substring(MAGNET.length()).trim(); + int amp = ihash.indexOf('&'); + if (amp >= 0) + ihash = url.substring(0, amp); + name = "Magnet " + ihash; + } else if (url.startsWith(MAGGOT)) { + ihash = url.substring(MAGGOT.length()).trim(); + int col = ihash.indexOf(':'); + if (col >= 0) + ihash = url.substring(0, col); + name = "Maggot " + ihash; + } else { + return; + } + byte[] ih = null; + if (ihash.length() == 32) { + ih = Base32.decode(ihash); + } else if (ihash.length() == 40) { + ih = new byte[20]; + try { + for (int i = 0; i < 20; i++) { + ih[i] = (byte) (Integer.parseInt(ihash.substring(i*2, (i*2) + 2), 16) & 0xff); + } + } catch (NumberFormatException nfe) { + ih = null; + } + } + if (ih == null || ih.length != 20) { + _manager.addMessage(_("Invalid info hash in magnet URL {0}", url)); + return; + } + _manager.addMagnet(ihash, ih); + } + /** copied from ConfigTunnelsHelper */ private static final String HOP = "hop"; private static final String TUNNEL = "tunnel"; From ebe7f3b127f81049c7e71351d06fdc770c91e8e6 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Mon, 20 Dec 2010 18:55:10 +0000 Subject: [PATCH 011/463] UI adjustments when no metainfo yet --- .../java/src/org/klomp/snark/Snark.java | 8 +- .../src/org/klomp/snark/SnarkManager.java | 66 ++++++--- .../src/org/klomp/snark/TrackerClient.java | 17 ++- .../org/klomp/snark/web/I2PSnarkServlet.java | 126 ++++++++++-------- 4 files changed, 140 insertions(+), 77 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/Snark.java b/apps/i2psnark/java/src/org/klomp/snark/Snark.java index 2460e9f53..27e38b5ca 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Snark.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Snark.java @@ -531,6 +531,7 @@ public class Snark // single torrent acceptor = new ConnectionAcceptor(_util, serversocket, new PeerAcceptor(coordinator)); } + // TODO pass saved closest DHT nodes to the tracker? or direct to the coordinator? trackerclient = new TrackerClient(_util, meta, coordinator, this); } @@ -781,8 +782,11 @@ public class Snark public long getNeeded() { if (storage != null) return storage.needed(); - // FIXME else return metainfo length if available - return -1; + if (meta != null) + // FIXME subtract chunks we have + return meta.getTotalLength(); + // FIXME fake + return 16 * 16 * 1024; } /** diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index 270937688..24e8ebc7f 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -20,6 +20,7 @@ import java.util.Collection; import net.i2p.I2PAppContext; import net.i2p.data.Base64; import net.i2p.data.DataHelper; +import net.i2p.util.ConcurrentHashSet; import net.i2p.util.I2PAppThread; import net.i2p.util.Log; import net.i2p.util.OrderedProperties; @@ -34,6 +35,8 @@ public class SnarkManager implements Snark.CompleteListener { /** map of (canonical) filename of the .torrent file to Snark instance (unsynchronized) */ private final Map<String, Snark> _snarks; + /** used to prevent DirMonitor from deleting torrents that don't have a torrent file yet */ + private final Set<String> _magnets; private final Object _addSnarkLock; private /* FIXME final FIXME */ File _configFile; private Properties _config; @@ -72,6 +75,7 @@ public class SnarkManager implements Snark.CompleteListener { public static final int DEFAULT_STARTUP_DELAY = 3; private SnarkManager() { _snarks = new HashMap(); + _magnets = new ConcurrentHashSet(); _addSnarkLock = new Object(); _context = I2PAppContext.getGlobalContext(); _log = _context.logManager().getLog(SnarkManager.class); @@ -90,8 +94,6 @@ public class SnarkManager implements Snark.CompleteListener { _running = true; _peerCoordinatorSet = new PeerCoordinatorSet(); _connectionAcceptor = new ConnectionAcceptor(_util); - int minutes = getStartupDelayMinutes(); - _messages.add(_("Adding torrents in {0} minutes", minutes)); _monitor = new I2PAppThread(new DirMonitor(), "Snark DirMonitor", true); _monitor.start(); _context.addShutdownTask(new SnarkManagerShutdown()); @@ -321,7 +323,7 @@ public class SnarkManager implements Snark.CompleteListener { _util.setStartupDelay(minutes); changed = true; _config.setProperty(PROP_STARTUP_DELAY, "" + minutes); - addMessage(_("Startup delay limit changed to {0} minutes", minutes)); + addMessage(_("Startup delay changed to {0}", DataHelper.formatDuration2(minutes * 60 * 1000))); } } @@ -549,6 +551,7 @@ public class SnarkManager implements Snark.CompleteListener { addMessage(rejectMessage); return; } else { + // TODO load saved closest DHT nodes and pass to the Snark ? torrent = new Snark(_util, filename, null, -1, null, null, this, _peerCoordinatorSet, _connectionAcceptor, false, dataDir.getPath()); @@ -583,6 +586,7 @@ public class SnarkManager implements Snark.CompleteListener { * * @param name hex or b32 name from the magnet link * @param ih 20 byte info hash + * @throws RuntimeException via Snark.fatal() * @since 0.8.4 */ public void addMagnet(String name, byte[] ih) { @@ -590,7 +594,8 @@ public class SnarkManager implements Snark.CompleteListener { _peerCoordinatorSet, _connectionAcceptor, false, getDataDir().getPath()); - // TODO tell the dir monitor not to delete us + // Tell the dir monitor not to delete us + _magnets.add(name); synchronized (_snarks) { _snarks.put(name, torrent); } @@ -608,12 +613,17 @@ public class SnarkManager implements Snark.CompleteListener { } /** - * Delete a torrent with the info hash alone (magnet / maggot) + * Stop and delete a torrent running in magnet mode * - * @param ih 20 byte info hash + * @param snark a torrent with a fake file name ("Magnet xxxx") * @since 0.8.4 */ - public void deleteMagnet(byte[] ih) { + public void deleteMagnet(Snark snark) { + synchronized (_snarks) { + _snarks.remove(snark.getName()); + } + snark.stopTorrent(); + _magnets.remove(snark.getName()); } /** @@ -748,6 +758,8 @@ public class SnarkManager implements Snark.CompleteListener { _config.remove(prop); } + // TODO save closest DHT nodes too + saveConfig(); } @@ -828,6 +840,23 @@ public class SnarkManager implements Snark.CompleteListener { } return torrent; } + + /** + * Stop the torrent, leaving it on the list of torrents unless told to remove it + * @since 0.8.4 + */ + public void stopTorrent(Snark torrent, boolean shouldRemove) { + if (shouldRemove) { + synchronized (_snarks) { + _snarks.remove(torrent.getName()); + } + } + boolean wasStopped = torrent.isStopped(); + torrent.stopTorrent(); + if (!wasStopped) + addMessage(_("Torrent stopped: \"{0}\"", torrent.getBaseName())); + } + /** * Stop the torrent and delete the torrent file itself, but leaving the data * behind. @@ -846,11 +875,16 @@ public class SnarkManager implements Snark.CompleteListener { private class DirMonitor implements Runnable { public void run() { - try { Thread.sleep(60*1000*getStartupDelayMinutes()); } catch (InterruptedException ie) {} - // the first message was a "We are starting up in 1m" - synchronized (_messages) { - if (_messages.size() == 1) - _messages.remove(0); + // don't bother delaying if auto start is false + long delay = 60 * 1000 * getStartupDelayMinutes(); + if (delay > 0 && shouldAutoStart()) { + _messages.add(_("Adding torrents in {0}", DataHelper.formatDuration2(delay))); + try { Thread.sleep(delay); } catch (InterruptedException ie) {} + // the first message was a "We are starting up in 1m" + synchronized (_messages) { + if (_messages.size() == 1) + _messages.remove(0); + } } // here because we need to delay until I2CP is up @@ -922,6 +956,8 @@ public class SnarkManager implements Snark.CompleteListener { } } } + // Don't remove magnet torrents that don't have a torrent file yet + existingNames.removeAll(_magnets); // now lets see which ones have been removed... for (Iterator iter = existingNames.iterator(); iter.hasNext(); ) { String name = (String)iter.next(); @@ -975,12 +1011,12 @@ public class SnarkManager implements Snark.CompleteListener { /** comma delimited list of name=announceURL=baseURL for the trackers to be displayed */ public static final String PROP_TRACKERS = "i2psnark.trackers"; - private static Map trackerMap = null; + private static Map<String, String> trackerMap = null; /** sorted map of name to announceURL=baseURL */ - public Map getTrackers() { + public Map<String, String> getTrackers() { if (trackerMap != null) // only do this once, can't be updated while running return trackerMap; - Map rv = new TreeMap(); + Map<String, String> rv = new TreeMap(); String trackers = _config.getProperty(PROP_TRACKERS); if ( (trackers == null) || (trackers.trim().length() <= 0) ) trackers = _context.getProperty(PROP_TRACKERS); diff --git a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java index d14abaa0c..f437beeeb 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java +++ b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java @@ -126,10 +126,9 @@ public class TrackerClient extends I2PAppThread @Override public void run() { - String infoHash = urlencode(meta.getInfoHash()); + String infoHash = urlencode(snark.getInfoHash()); String peerID = urlencode(snark.getID()); - _log.debug("Announce: [" + meta.getAnnounce() + "] infoHash: " + infoHash); // Construct the list of trackers for this torrent, // starting with the primary one listed in the metainfo, @@ -138,12 +137,18 @@ public class TrackerClient extends I2PAppThread // the primary tracker, that we don't add it twice. // todo: check for b32 matches as well trackers = new ArrayList(2); - String primary = meta.getAnnounce(); - if (isValidAnnounce(primary)) { - trackers.add(new Tracker(meta.getAnnounce(), true)); + String primary; + if (meta != null) { + primary = meta.getAnnounce(); + if (isValidAnnounce(primary)) { + trackers.add(new Tracker(meta.getAnnounce(), true)); + } else { + _log.warn("Skipping invalid or non-i2p announce: " + primary); + } } else { - _log.warn("Skipping invalid or non-i2p announce: " + primary); + primary = ""; } + _log.debug("Announce: [" + primary + "] infoHash: " + infoHash); List tlist = _util.getOpenTrackers(); if (tlist != null) { for (int i = 0; i < tlist.size(); i++) { diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 917652bc0..c6ba8b9fd 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -462,7 +462,7 @@ public class I2PSnarkServlet extends Default { } else if (newURL.startsWith(MAGNET) || newURL.startsWith(MAGGOT)) { addMagnet(newURL); } else { - _manager.addMessage(_("Invalid URL - must start with http://, {0} or {1}", MAGNET, MAGGOT)); + _manager.addMessage(_("Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"", MAGNET, MAGGOT)); } } else { // no file or URL specified @@ -476,7 +476,7 @@ public class I2PSnarkServlet extends Default { String name = (String)iter.next(); Snark snark = _manager.getTorrent(name); if ( (snark != null) && (DataHelper.eq(infoHash, snark.getInfoHash())) ) { - _manager.stopTorrent(name, false); + _manager.stopTorrent(snark, false); break; } } @@ -506,13 +506,14 @@ public class I2PSnarkServlet extends Default { String name = (String)iter.next(); Snark snark = _manager.getTorrent(name); if ( (snark != null) && (DataHelper.eq(infoHash, snark.getInfoHash())) ) { - _manager.stopTorrent(name, true); MetaInfo meta = snark.getMetaInfo(); if (meta == null) { - // magnet - _manager.deleteMagnet(snark.getInfoHash()); + // magnet - remove and delete are the same thing + _manager.deleteMagnet(snark); + _manager.addMessage(_("Magnet deleted: {0}", name)); return; } + _manager.stopTorrent(snark, true); // should we delete the torrent file? // yeah, need to, otherwise it'll get autoadded again (at the moment File f = new File(name); @@ -532,13 +533,14 @@ public class I2PSnarkServlet extends Default { String name = (String)iter.next(); Snark snark = _manager.getTorrent(name); if ( (snark != null) && (DataHelper.eq(infoHash, snark.getInfoHash())) ) { - _manager.stopTorrent(name, true); MetaInfo meta = snark.getMetaInfo(); if (meta == null) { - // magnet - _manager.deleteMagnet(snark.getInfoHash()); + // magnet - remove and delete are the same thing + _manager.deleteMagnet(snark); + _manager.addMessage(_("Magnet deleted: {0}", name)); return; } + _manager.stopTorrent(snark, true); File f = new File(name); f.delete(); _manager.addMessage(_("Torrent file deleted: {0}", f.getAbsolutePath())); @@ -635,7 +637,7 @@ public class I2PSnarkServlet extends Default { for (int i = 0; i < snarks.size(); i++) { Snark snark = (Snark)snarks.get(i); if (!snark.isStopped()) - _manager.stopTorrent(snark.getName(), false); + _manager.stopTorrent(snark, false); } if (_manager.util().connected()) { // Give the stopped announces time to get out @@ -750,8 +752,9 @@ public class I2PSnarkServlet extends Default { stats[5] += total; MetaInfo meta = snark.getMetaInfo(); + // isValid means isNotMagnet boolean isValid = meta != null; - boolean singleFile = (!isValid) || meta.getFiles() == null; + boolean isMultiFile = isValid && meta.getFiles() != null; String err = snark.getTrackerProblems(); int curPeers = snark.getPeerCount(); @@ -776,7 +779,7 @@ public class I2PSnarkServlet extends Default { statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + "trackererror.png\" title=\"" + err + "\"></td><td class=\"snarkTorrentStatus " + rowClass + "\">" + _("Tracker Error") + "<br>" + err; } - } else if (remaining <= 0) { + } else if (remaining == 0) { // < 0 means no meta size yet if (isRunning && curPeers > 0 && !showPeers) statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + "seeding.png\" ></td><td class=\"snarkTorrentStatus " + rowClass + "\">" + _("Seeding") + ": <a href=\"" + uri + "?p=" + Base64.encode(snark.getInfoHash()) + "\">" + @@ -822,9 +825,12 @@ public class I2PSnarkServlet extends Default { out.write("<td class=\"" + rowClass + "\">"); // temporarily hardcoded for postman* and anonymity, requires bytemonsoon patch for lookup by info_hash - String announce = meta.getAnnounce(); - if (announce.startsWith("http://YRgrgTLG") || announce.startsWith("http://8EoJZIKr") || - announce.startsWith("http://lnQ6yoBT") || announce.startsWith("http://tracker2.postman.i2p/") || announce.startsWith("http://ahsplxkbhemefwvvml7qovzl5a2b5xo5i7lyai7ntdunvcyfdtna.b32.i2p/")) { + String announce = null; + if (isValid) + announce = meta.getAnnounce(); + if (announce != null && (announce.startsWith("http://YRgrgTLG") || announce.startsWith("http://8EoJZIKr") || + announce.startsWith("http://lnQ6yoBT") || announce.startsWith("http://tracker2.postman.i2p/") || + announce.startsWith("http://ahsplxkbhemefwvvml7qovzl5a2b5xo5i7lyai7ntdunvcyfdtna.b32.i2p/"))) { Map trackers = _manager.getTrackers(); for (Iterator iter = trackers.entrySet().iterator(); iter.hasNext(); ) { Map.Entry entry = (Map.Entry)iter.next(); @@ -849,13 +855,13 @@ public class I2PSnarkServlet extends Default { out.write("</td>\n<td class=\"" + rowClass + "\">"); StringBuilder buf = null; - if (remaining == 0 || meta.getFiles() != null) { + if (remaining == 0 || isMultiFile) { buf = new StringBuilder(128); buf.append("<a href=\"").append(snark.getBaseName()); - if (meta.getFiles() != null) + if (isMultiFile) buf.append('/'); buf.append("\" title=\""); - if (meta.getFiles() != null) + if (isMultiFile) buf.append(_("View files")); else buf.append(_("Open file")); @@ -863,21 +869,24 @@ public class I2PSnarkServlet extends Default { out.write(buf.toString()); } String icon; - if (meta.getFiles() != null) + if (isMultiFile) icon = "folder"; - else + else if (isValid) icon = toIcon(meta.getName()); - if (remaining == 0 || meta.getFiles() != null) { + else + // todo get a nice magnet icon? + icon = "page_white"; + if (remaining == 0 || isMultiFile) { out.write(toImg(icon, _("Open"))); out.write("</a>"); } else { out.write(toImg(icon)); } out.write("</td><td class=\"snarkTorrentName " + rowClass + "\">"); - if (remaining == 0 || meta.getFiles() != null) + if (remaining == 0 || isMultiFile) out.write(buf.toString()); out.write(filename); - if (remaining == 0 || meta.getFiles() != null) + if (remaining == 0 || isMultiFile) out.write("</a>"); out.write("<td align=\"right\" class=\"snarkTorrentETA " + rowClass + "\">"); @@ -887,19 +896,21 @@ public class I2PSnarkServlet extends Default { out.write("<td align=\"right\" class=\"snarkTorrentDownloaded " + rowClass + "\">"); if (remaining > 0) out.write(formatSize(total-remaining) + thinsp(isDegraded) + formatSize(total)); - else + else if (remaining == 0) out.write(formatSize(total)); // 3GB + else + out.write("??"); // no meta size yet out.write("</td>\n\t"); out.write("<td align=\"right\" class=\"snarkTorrentUploaded " + rowClass + "\">"); - if(isRunning) + if(isRunning && isValid) out.write(formatSize(uploaded)); out.write("</td>\n\t"); out.write("<td align=\"right\" class=\"snarkTorrentRateDown\">"); - if(isRunning && remaining > 0) + if(isRunning && remaining != 0) out.write(formatSize(downBps) + "ps"); out.write("</td>\n\t"); out.write("<td align=\"right\" class=\"snarkTorrentRateUp\">"); - if(isRunning) + if(isRunning && isValid) out.write(formatSize(upBps) + "ps"); out.write("</td>\n\t"); out.write("<td align=\"center\" class=\"snarkTorrentAction " + rowClass + "\">"); @@ -919,7 +930,6 @@ public class I2PSnarkServlet extends Default { if (isDegraded) out.write("</a>"); } else { - if (isValid) { if (isDegraded) out.write("<a href=\"/i2psnark/?action=Start_" + b64 + "&nonce=" + _nonce + "\"><img title=\""); else @@ -930,24 +940,25 @@ public class I2PSnarkServlet extends Default { out.write("\">"); if (isDegraded) out.write("</a>"); - } - if (isDegraded) - out.write("<a href=\"/i2psnark/?action=Remove_" + b64 + "&nonce=" + _nonce + "\"><img title=\""); - else - out.write("<input type=\"image\" name=\"action\" value=\"Remove_" + b64 + "\" title=\""); - out.write(_("Remove the torrent from the active list, deleting the .torrent file")); - out.write("\" onclick=\"if (!confirm('"); - // 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 - out.write(_("Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?", fullFilename)); - out.write("')) { return false; }\""); - out.write(" src=\"" + _imgPath + "remove.png\" alt=\""); - out.write(_("Remove")); - out.write("\">"); - if (isDegraded) - out.write("</a>"); + if (isValid) { + if (isDegraded) + out.write("<a href=\"/i2psnark/?action=Remove_" + b64 + "&nonce=" + _nonce + "\"><img title=\""); + else + out.write("<input type=\"image\" name=\"action\" value=\"Remove_" + b64 + "\" title=\""); + out.write(_("Remove the torrent from the active list, deleting the .torrent file")); + out.write("\" onclick=\"if (!confirm('"); + // 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 + out.write(_("Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?", fullFilename)); + out.write("')) { return false; }\""); + out.write(" src=\"" + _imgPath + "remove.png\" alt=\""); + out.write(_("Remove")); + out.write("\">"); + if (isDegraded) + out.write("</a>"); + } if (isDegraded) out.write("<a href=\"/i2psnark/?action=Delete_" + b64 + "&nonce=" + _nonce + "\"><img title=\""); @@ -1002,14 +1013,21 @@ public class I2PSnarkServlet extends Default { out.write("<td class=\"snarkTorrentStatus " + rowClass + "\">"); out.write("</td>\n\t"); out.write("<td align=\"right\" class=\"snarkTorrentStatus " + rowClass + "\">"); - float pct = (float) (100.0 * (float) peer.completed() / meta.getPieces()); - if (pct == 100.0) - out.write(_("Seed")); - else { - String ps = String.valueOf(pct); - if (ps.length() > 5) - ps = ps.substring(0, 5); - out.write(ps + "%"); + float pct; + if (isValid) { + pct = (float) (100.0 * (float) peer.completed() / meta.getPieces()); + if (pct == 100.0) + out.write(_("Seed")); + else { + String ps = String.valueOf(pct); + if (ps.length() > 5) + ps = ps.substring(0, 5); + out.write(ps + "%"); + } + } else { + pct = (float) 101.0; + // until we get the metainfo we don't know how many pieces there are + out.write("??"); } out.write("</td>\n\t"); out.write("<td class=\"snarkTorrentStatus " + rowClass + "\">"); @@ -1031,7 +1049,7 @@ public class I2PSnarkServlet extends Default { } out.write("</td>\n\t"); out.write("<td align=\"right\" class=\"snarkTorrentStatus " + rowClass + "\">"); - if (pct != 100.0) { + if (isValid && pct < 100.0) { if (peer.isInterested() && !peer.isChoking()) { out.write("<span class=\"unchoked\">"); out.write(formatSize(peer.getUploadRate()) + "ps</span>"); @@ -1363,7 +1381,7 @@ public class I2PSnarkServlet extends Default { _manager.addMessage(_("Invalid info hash in magnet URL {0}", url)); return; } - _manager.addMagnet(ihash, ih); + _manager.addMagnet(name, ih); } /** copied from ConfigTunnelsHelper */ From ad00c16f857ef80929cb466601c60600c3763d53 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Mon, 20 Dec 2010 19:36:49 +0000 Subject: [PATCH 012/463] fix NPE --- .../i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java index d6e2c6089..65a869845 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java @@ -244,8 +244,9 @@ class PeerCheckerTask extends TimerTask coordinator.setRateHistory(uploaded, downloaded); // close out unused files, but we don't need to do it every time - if (random.nextInt(4) == 0) - coordinator.getStorage().cleanRAFs(); - + Storage storage = coordinator.getStorage(); + if (storage != null && random.nextInt(4) == 0) { + storage.cleanRAFs(); + } } } From 8451610737e5577aff530d2c1567a17eaea566a5 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Mon, 20 Dec 2010 19:37:38 +0000 Subject: [PATCH 013/463] Several connect-to-self checks --- .../org/klomp/snark/ConnectionAcceptor.java | 5 ++++ .../src/org/klomp/snark/I2PSnarkUtil.java | 26 +++++++++++++------ .../java/src/org/klomp/snark/Peer.java | 4 +++ 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/ConnectionAcceptor.java b/apps/i2psnark/java/src/org/klomp/snark/ConnectionAcceptor.java index 52099d1d2..34fa5054e 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/ConnectionAcceptor.java +++ b/apps/i2psnark/java/src/org/klomp/snark/ConnectionAcceptor.java @@ -137,6 +137,11 @@ public class ConnectionAcceptor implements Runnable } } } else { + if (socket.getPeerDestination().equals(_util.getMyDestination())) { + _util.debug("Incoming connection from myself", Snark.ERROR); + try { socket.close(); } catch (IOException ioe) {} + continue; + } Thread t = new I2PAppThread(new Handler(socket), "I2PSnark incoming connection"); t.start(); } diff --git a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java index e8ff0881f..c0c272ae7 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java +++ b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java @@ -227,6 +227,8 @@ public class I2PSnarkUtil { Destination addr = peer.getAddress(); if (addr == null) throw new IOException("Null address"); + if (addr.equals(getMyDestination())) + throw new IOException("Attempt to connect to myself"); Hash dest = addr.calculateHash(); if (_shitlist.contains(dest)) throw new IOException("Not trying to contact " + dest.toBase64() + ", as they are shitlisted"); @@ -300,17 +302,25 @@ public class I2PSnarkUtil { } String getOurIPString() { - if (_manager == null) - return "unknown"; - I2PSession sess = _manager.getSession(); - if (sess != null) { - Destination dest = sess.getMyDestination(); - if (dest != null) - return dest.toBase64(); - } + Destination dest = getMyDestination(); + if (dest != null) + return dest.toBase64(); return "unknown"; } + /** + * @return dest or null + * @since 0.8.4 + */ + Destination getMyDestination() { + if (_manager == null) + return null; + I2PSession sess = _manager.getSession(); + if (sess != null) + return sess.getMyDestination(); + return null; + } + /** Base64 only - static (no naming service) */ static Destination getDestinationFromBase64(String ip) { if (ip == null) return null; diff --git a/apps/i2psnark/java/src/org/klomp/snark/Peer.java b/apps/i2psnark/java/src/org/klomp/snark/Peer.java index a65e45887..f5d200fda 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Peer.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Peer.java @@ -30,6 +30,7 @@ import java.util.Arrays; import java.util.List; import net.i2p.client.streaming.I2PSocket; +import net.i2p.data.DataHelper; import net.i2p.util.Log; public class Peer implements Comparable @@ -353,6 +354,9 @@ public class Peer implements Comparable if (_log.shouldLog(Log.DEBUG)) _log.debug("Read the remote side's hash and peerID fully from " + toString()); + if (DataHelper.eq(my_id, bs)) + throw new IOException("Connected to myself"); + if (options != 0) { // send them something in runConnection() above if (_log.shouldLog(Log.DEBUG)) From 867286b47b8e4adce9218f0b204bf0c5e42514fc Mon Sep 17 00:00:00 2001 From: mathiasdm <mathiasdm@mail.i2p> Date: Mon, 20 Dec 2010 21:31:17 +0000 Subject: [PATCH 014/463] - Replaced RouterContext with I2PAppContext. - Detect I2P location using I2PAppContext. --- apps/desktopgui/TODO | 2 +- .../i2p/desktopgui/i18n/DesktopguiTranslator.java | 12 ++++++------ .../src/net/i2p/desktopgui/router/RouterManager.java | 8 +++----- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/apps/desktopgui/TODO b/apps/desktopgui/TODO index 98e768db9..2a98b7f4f 100644 --- a/apps/desktopgui/TODO +++ b/apps/desktopgui/TODO @@ -3,7 +3,7 @@ HIGH PRIORITY: - Correct logging system - DONE - Internationalisation: * Add strings - DONE - * Add Windows support + * Add Windows support - NEED TO CHECK * Might need some kind of trigger to reload the menu (for live language switching) * Language choice is not actually set as a parameter in I2P config? As a result, desktopgui always starts with the default, unless you manually set the language. diff --git a/apps/desktopgui/src/net/i2p/desktopgui/i18n/DesktopguiTranslator.java b/apps/desktopgui/src/net/i2p/desktopgui/i18n/DesktopguiTranslator.java index e6b091eb0..3568ba6e0 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/i18n/DesktopguiTranslator.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/i18n/DesktopguiTranslator.java @@ -1,26 +1,26 @@ package net.i2p.desktopgui.i18n; -import net.i2p.router.RouterContext; +import net.i2p.I2PAppContext; import net.i2p.util.Translate; public class DesktopguiTranslator { private static final String BUNDLE_NAME = "net.i2p.desktopgui.messages"; - private static RouterContext ctx; + private static I2PAppContext ctx; - private static RouterContext getRouterContext() { + private static I2PAppContext getRouterContext() { if(ctx == null) { - ctx = RouterContext.listContexts().get(0); + ctx = I2PAppContext.getCurrentContext(); } return ctx; } public static String _(String s) { - return Translate.getString(s, getRouterContext(), BUNDLE_NAME); + return Translate.getString(s, getRouterContext(), BUNDLE_NAME); } public static String _(String s, Object o) { - return Translate.getString(s, o, getRouterContext(), BUNDLE_NAME); + return Translate.getString(s, o, getRouterContext(), BUNDLE_NAME); } } diff --git a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java index d838eef27..031c38d7c 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java @@ -2,6 +2,7 @@ package net.i2p.desktopgui.router; import java.io.IOException; +import net.i2p.I2PAppContext; import net.i2p.desktopgui.i18n.DesktopguiTranslator; import net.i2p.desktopgui.util.ConfigurationManager; import net.i2p.router.Router; @@ -31,14 +32,11 @@ public class RouterManager { */ public static void start() { try { - //TODO: detect I2P directory //TODO: set/get PID String separator = System.getProperty("file.separator"); - String homeDirectory = System.getProperty("user.home"); - String location = ConfigurationManager.getInstance() - .getStringConfiguration("I2PLocation", homeDirectory + separator + "i2p"); + String location = I2PAppContext.getCurrentContext().getBaseDir().getAbsolutePath(); - Runtime.getRuntime().exec(location + separator + "i2psvc" + location + separator + "wrapper.config"); + Runtime.getRuntime().exec(location + separator + "i2psvc " + location + separator + "wrapper.config"); } catch (IOException e) { log.log(Log.WARN, "Failed to start I2P", e); } From 8e40b35210254719ee14dd085a65817d1bba8558 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Tue, 21 Dec 2010 03:04:10 +0000 Subject: [PATCH 015/463] metadata handling - untested, still some stubs --- .../src/org/klomp/snark/ExtensionHandler.java | 224 ++++++++++++++++++ .../org/klomp/snark/ExtensionHandshake.java | 36 --- .../java/src/org/klomp/snark/MagnetState.java | 204 ++++++++++++++++ .../java/src/org/klomp/snark/MetaInfo.java | 56 +++-- .../java/src/org/klomp/snark/Peer.java | 51 +++- .../src/org/klomp/snark/PeerConnectionIn.java | 28 +-- .../org/klomp/snark/PeerConnectionOut.java | 2 +- .../src/org/klomp/snark/PeerCoordinator.java | 28 ++- .../java/src/org/klomp/snark/PeerState.java | 12 + .../src/org/klomp/snark/SnarkManager.java | 10 +- 10 files changed, 572 insertions(+), 79 deletions(-) create mode 100644 apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java delete mode 100644 apps/i2psnark/java/src/org/klomp/snark/ExtensionHandshake.java create mode 100644 apps/i2psnark/java/src/org/klomp/snark/MagnetState.java diff --git a/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java b/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java new file mode 100644 index 000000000..41cfcdf8d --- /dev/null +++ b/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java @@ -0,0 +1,224 @@ +package org.klomp.snark; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; + +import net.i2p.I2PAppContext; +import net.i2p.util.Log; + +import org.klomp.snark.bencode.BDecoder; +import org.klomp.snark.bencode.BEncoder; +import org.klomp.snark.bencode.BEValue; +import org.klomp.snark.bencode.InvalidBEncodingException; + +/** + * REF: BEP 10 Extension Protocol + * @since 0.8.2 + * @author zzz + */ +abstract class ExtensionHandler { + + private static final byte[] _handshake = buildHandshake(); + private static final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(ExtensionHandler.class); + + public static final int ID_METADATA = 3; + private static final String TYPE_METADATA = "ut_metadata"; + private static final int MAX_METADATA_SIZE = Storage.MAX_PIECES * 32 * 5 / 4; + private static final int PARALLEL_REQUESTS = 3; + + + /** + * @return bencoded outgoing handshake message + */ + public static byte[] getHandshake() { + return _handshake; + } + + /** outgoing handshake message */ + private static byte[] buildHandshake() { + Map<String, Object> handshake = new HashMap(); + Map<String, Integer> m = new HashMap(); + m.put(TYPE_METADATA, Integer.valueOf(ID_METADATA)); + handshake.put("m", m); + handshake.put("p", Integer.valueOf(6881)); + handshake.put("v", "I2PSnark"); + handshake.put("reqq", Integer.valueOf(5)); + return BEncoder.bencode(handshake); + } + + public static void handleMessage(Peer peer, int id, byte[] bs) { + if (id == 0) + handleHandshake(peer, bs); + else if (id == ID_METADATA) + handleMetadata(peer, bs); + else if (_log.shouldLog(Log.INFO)) + _log.info("Unknown extension msg " + id + " from " + peer); + } + + private static void handleHandshake(Peer peer, byte[] bs) { + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Got handshake msg from " + peer); + try { + // this throws NPE on missing keys + InputStream is = new ByteArrayInputStream(bs); + BDecoder dec = new BDecoder(is); + BEValue bev = dec.bdecodeMap(); + Map<String, BEValue> map = bev.getMap(); + Map<String, BEValue> msgmap = map.get("m").getMap(); + peer.setHandshakeMap(map); + + // not used, just to throw out of here + int hisMsgCode = peer.getHandshakeMap().get("m").getMap().get(TYPE_METADATA).getInt(); + + int metaSize = map.get("metadata_size").getInt(); + MagnetState state = peer.getMagnetState(); + int remaining; + synchronized(state) { + if (state.isComplete()) + return; + + if (state.isInitialized()) { + if (state.getSize() != metaSize) { + peer.disconnect(); + return; + } + } else { + // initialize it + if (metaSize > MAX_METADATA_SIZE) { + peer.disconnect(false); + return; + } + if (_log.shouldLog(Log.INFO)) + _log.info("Initialized state, metadata size = " + metaSize + " from " + peer); + state.initialize(metaSize); + } + remaining = state.chunksRemaining(); + } + + // send requests for chunks + int count = Math.min(remaining, PARALLEL_REQUESTS); + for (int i = 0; i < count; i++) { + int chk; + synchronized(state) { + chk = state.getNextRequest(); + } + if (_log.shouldLog(Log.INFO)) + _log.info("Request chunk " + chk + " from " + peer); + sendRequest(peer, chk); + } + } catch (Exception e) { + if (_log.shouldLog(Log.WARN)) + _log.info("Handshake exception from " + peer, e); + //peer.disconnect(false); + } + } + + private static final int TYPE_REQUEST = 0; + private static final int TYPE_DATA = 1; + private static final int TYPE_REJECT = 2; + + private static final int CHUNK_SIZE = 16*1024; + /** 25% extra for file names, benconding overhead, etc */ + + /** + * REF: BEP 9 + * @since 0.8.4 + */ + private static void handleMetadata(Peer peer, byte[] bs) { + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Got metadata msg from " + peer); + try { + InputStream is = new ByteArrayInputStream(bs); + BDecoder dec = new BDecoder(is); + BEValue bev = dec.bdecodeMap(); + Map<String, BEValue> map = bev.getMap(); + int type = map.get("msg_type").getInt(); + int piece = map.get("piece").getInt(); + + MagnetState state = peer.getMagnetState(); + if (type == TYPE_REQUEST) { + byte[] pc; + synchronized(state) { + pc = state.getChunk(piece); + } + sendPiece(peer, piece, pc); + } else if (type == TYPE_DATA) { + int size = map.get("total_size").getInt(); + boolean done; + int chk = -1; + synchronized(state) { + if (state.isComplete()) + return; + int len = is.available(); + done = state.saveChunk(piece, bs, bs.length - len, len); + if (_log.shouldLog(Log.INFO)) + _log.info("Got chunk " + piece + " from " + peer); + if (!done) + chk = state.getNextRequest(); + } + // out of the lock + if (done) { + // Done! + // PeerState will call the listener (peer coord), who will + // check to see if the MagnetState has it + if (_log.shouldLog(Log.WARN)) + _log.warn("Got last chunk from " + peer); + } else { + // get the next chunk + if (_log.shouldLog(Log.INFO)) + _log.info("Request chunk " + chk + " from " + peer); + sendRequest(peer, chk); + } + } else if (type == TYPE_REJECT) { + if (_log.shouldLog(Log.WARN)) + _log.warn("Got reject msg from " + peer); + peer.disconnect(false); + } else { + if (_log.shouldLog(Log.WARN)) + _log.warn("Got unknown metadata msg from " + peer); + peer.disconnect(false); + } + } catch (Exception e) { + if (_log.shouldLog(Log.WARN)) + _log.info("Metadata ext. msg. exception from " + peer, e); + peer.disconnect(false); + } + } + + private static void sendRequest(Peer peer, int piece) { + Map<String, Object> map = new HashMap(); + map.put("msg_type", TYPE_REQUEST); + map.put("piece", Integer.valueOf(piece)); + byte[] payload = BEncoder.bencode(map); + try { + int hisMsgCode = peer.getHandshakeMap().get("m").getMap().get(TYPE_METADATA).getInt(); + peer.sendExtension(hisMsgCode, payload); + } catch (Exception e) { + // NPE, no metadata capability + if (_log.shouldLog(Log.WARN)) + _log.info("Metadata send req msg exception to " + peer, e); + } + } + + private static void sendPiece(Peer peer, int piece, byte[] data) { + Map<String, Object> map = new HashMap(); + map.put("msg_type", TYPE_REQUEST); + map.put("piece", Integer.valueOf(piece)); + map.put("total_size", Integer.valueOf(data.length)); + byte[] dict = BEncoder.bencode(map); + byte[] payload = new byte[dict.length + data.length]; + System.arraycopy(dict, 0, payload, 0, dict.length); + System.arraycopy(data, 0, payload, dict.length, payload.length); + try { + int hisMsgCode = peer.getHandshakeMap().get("m").getMap().get("METADATA").getInt(); + peer.sendExtension(hisMsgCode, payload); + } catch (Exception e) { + // NPE, no metadata caps + if (_log.shouldLog(Log.WARN)) + _log.info("Metadata send piece msg exception to " + peer, e); + } + } +} diff --git a/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandshake.java b/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandshake.java deleted file mode 100644 index fb69b044d..000000000 --- a/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandshake.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.klomp.snark; - -import java.util.HashMap; -import java.util.Map; - -import org.klomp.snark.bencode.BEncoder; -import org.klomp.snark.bencode.BEValue; - -/** - * REF: BEP 10 Extension Protocol - * @since 0.8.2 - */ -class ExtensionHandshake { - - private static final byte[] _payload = buildPayload(); - - /** - * @return bencoded data - */ - static byte[] getPayload() { - return _payload; - } - - /** just a test for now */ - private static byte[] buildPayload() { - Map<String, Object> handshake = new HashMap(); - Map<String, Integer> m = new HashMap(); - m.put("foo", Integer.valueOf(99)); - m.put("bar", Integer.valueOf(101)); - handshake.put("m", m); - handshake.put("p", Integer.valueOf(6881)); - handshake.put("v", "I2PSnark"); - handshake.put("reqq", Integer.valueOf(5)); - return BEncoder.bencode(handshake); - } -} diff --git a/apps/i2psnark/java/src/org/klomp/snark/MagnetState.java b/apps/i2psnark/java/src/org/klomp/snark/MagnetState.java new file mode 100644 index 000000000..fb7e5a542 --- /dev/null +++ b/apps/i2psnark/java/src/org/klomp/snark/MagnetState.java @@ -0,0 +1,204 @@ +package org.klomp.snark; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; + +import net.i2p.I2PAppContext; +import net.i2p.data.DataHelper; + +import org.klomp.snark.bencode.BDecoder; +import org.klomp.snark.bencode.BEValue; + +/** + * Simple state for the download of the metainfo, shared between + * Peer and ExtensionHandler. + * + * Nothing is synchronized here! + * Caller must synchronize on this for everything! + * + * Reference: BEP 9 + * + * @since 0.8.4 + * author zzz + */ +class MagnetState { + public static final int CHUNK_SIZE = 16*1024; + private static final Random random = I2PAppContext.getGlobalContext().random(); + + private final byte[] infohash; + private boolean complete; + /** if false, nothing below is valid */ + private boolean isInitialized; + + private int metaSize; + private int totalChunks; + /** bitfield for the metainfo chunks - will remain null if we start out complete */ + private BitField requested; + private BitField have; + /** bitfield for the metainfo */ + private byte[] metainfoBytes; + /** only valid when finished */ + private MetaInfo metainfo; + + /** + * @param meta null for new magnet + */ + public MagnetState(byte[] iHash, MetaInfo meta) { + infohash = iHash; + if (meta != null) { + metainfo = meta; + initialize(meta.getInfoBytes().length); + complete = true; + } else { + metainfoBytes = new byte[metaSize]; + } + } + + /** + * @param call this for a new magnet when you have the size + * @throws IllegalArgumentException + */ + public void initialize(int size) { + if (isInitialized) + throw new IllegalArgumentException("already set"); + isInitialized = true; + metaSize = size; + totalChunks = (size + (CHUNK_SIZE - 1)) / CHUNK_SIZE; + if (metainfo == null) { + // we don't need these if complete + have = new BitField(totalChunks); + requested = new BitField(totalChunks); + } + } + + /** + * @param Call this for a new magnet when the download is complete. + * @throws IllegalArgumentException + */ + public void setMetaInfo(MetaInfo meta) { + metainfo = meta; + } + + /** + * @throws IllegalArgumentException + */ + public MetaInfo getMetaInfo() { + if (!complete) + throw new IllegalArgumentException("not complete"); + return metainfo; + } + + /** + * @throws IllegalArgumentException + */ + public int getSize() { + if (!isInitialized) + throw new IllegalArgumentException("not initialized"); + return metaSize; + } + + public boolean isInitialized() { + return isInitialized; + } + + public boolean isComplete() { + return complete; + } + + public int chunkSize(int chunk) { + return Math.min(CHUNK_SIZE, metaSize - (chunk * CHUNK_SIZE)); + } + + /** @return chunk count */ + public int chunksRemaining() { + if (!isInitialized) + throw new IllegalArgumentException("not initialized"); + if (complete) + return 0; + return totalChunks - have.count(); + } + + /** @return chunk number */ + public int getNextRequest() { + if (!isInitialized) + throw new IllegalArgumentException("not initialized"); + if (complete) + throw new IllegalArgumentException("complete"); + int rand = random.nextInt(totalChunks); + for (int i = 0; i < totalChunks; i++) { + int chk = (i + rand) % totalChunks; + if (!(have.get(chk) || requested.get(chk))) { + requested.set(chk); + return chk; + } + } + // all requested - end game + for (int i = 0; i < totalChunks; i++) { + int chk = (i + rand) % totalChunks; + if (!have.get(chk)) + return chk; + } + throw new IllegalArgumentException("complete"); + } + + /** + * @throws IllegalArgumentException + */ + public byte[] getChunk(int chunk) { + if (!complete) + throw new IllegalArgumentException("not complete"); + if (chunk < 0 || chunk >= totalChunks) + throw new IllegalArgumentException("bad chunk number"); + int size = chunkSize(chunk); + byte[] rv = new byte[size]; + System.arraycopy(metainfoBytes, chunk * CHUNK_SIZE, rv, 0, size); + // use meta.getInfoBytes() so we don't save it in memory + return rv; + } + + /** + * @return true if this was the last piece + * @throws NPE, IllegalArgumentException, IOException, ... + */ + public boolean saveChunk(int chunk, byte[] data, int off, int length) throws Exception { + if (!isInitialized) + throw new IllegalArgumentException("not initialized"); + if (chunk < 0 || chunk >= totalChunks) + throw new IllegalArgumentException("bad chunk number"); + if (have.get(chunk)) + return false; // shouldn't happen if synced + int size = chunkSize(chunk); + if (size != length) + throw new IllegalArgumentException("bad chunk length"); + System.arraycopy(data, off, metainfoBytes, chunk * CHUNK_SIZE, size); + have.set(chunk); + boolean done = have.complete(); + if (done) { + metainfo = buildMetaInfo(); + complete = true; + } + return done; + } + + /** + * @return true if this was the last piece + * @throws NPE, IllegalArgumentException, IOException, ... + */ + public MetaInfo buildMetaInfo() throws Exception { + // top map has nothing in it but the info map (no announce) + Map<String, Object> map = new HashMap(); + InputStream is = new ByteArrayInputStream(metainfoBytes); + BDecoder dec = new BDecoder(is); + BEValue bev = dec.bdecodeMap(); + Map<String, BEValue> info = bev.getMap(); + map.put("info", info); + MetaInfo newmeta = new MetaInfo(map); + if (!DataHelper.eq(newmeta.getInfoHash(), infohash)) + throw new IOException("info hash mismatch"); + return newmeta; + } +} diff --git a/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java b/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java index 140d3cb46..a2522cfc4 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java +++ b/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java @@ -25,6 +25,7 @@ import java.io.InputStream; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -59,10 +60,11 @@ public class MetaInfo private final int piece_length; private final byte[] piece_hashes; private final long length; - private final Map infoMap; - - private byte[] torrentdata; + private Map infoMap; + /** + * Called by Storage when creating a new torrent from local data + */ MetaInfo(String announce, String name, String name_utf8, List files, List lengths, int piece_length, byte[] piece_hashes, long length) { @@ -77,7 +79,7 @@ public class MetaInfo this.length = length; this.info_hash = calculateInfoHash(); - infoMap = null; + //infoMap = null; } /** @@ -104,7 +106,7 @@ public class MetaInfo * Creates a new MetaInfo from a Map of BEValues and the SHA1 over * the original bencoded info dictonary (this is a hack, we could * reconstruct the bencoded stream and recalculate the hash). Will - * throw a InvalidBEncodingException if the given map does not + * NOT throw a InvalidBEncodingException if the given map does not * contain a valid announce string or info dictonary. */ public MetaInfo(Map m) throws InvalidBEncodingException @@ -112,9 +114,13 @@ public class MetaInfo if (_log.shouldLog(Log.DEBUG)) _log.debug("Creating a metaInfo: " + m, new Exception("source")); BEValue val = (BEValue)m.get("announce"); - if (val == null) - throw new InvalidBEncodingException("Missing announce string"); - this.announce = val.getString(); + // Disabled check, we can get info from a magnet now + if (val == null) { + //throw new InvalidBEncodingException("Missing announce string"); + this.announce = null; + } else { + this.announce = val.getString(); + } val = (BEValue)m.get("info"); if (val == null) @@ -215,6 +221,7 @@ public class MetaInfo /** * Returns the string representing the URL of the tracker for this torrent. + * @return may be null! */ public String getAnnounce() { @@ -388,26 +395,34 @@ public class MetaInfo piece_hashes, length); } - public byte[] getTorrentData() + /** + * Called by servlet to save a new torrent file generated from local data + */ + public synchronized byte[] getTorrentData() { - if (torrentdata == null) - { Map m = new HashMap(); m.put("announce", announce); Map info = createInfoMap(); m.put("info", info); - torrentdata = BEncoder.bencode(m); - } - return torrentdata; + // don't save this locally, we should only do this once + return BEncoder.bencode(m); } - private Map createInfoMap() + /** @since 0.8.4 */ + public synchronized byte[] getInfoBytes() { + if (infoMap == null) + createInfoMap(); + return BEncoder.bencode(infoMap); + } + + /** @return an unmodifiable view of the Map */ + private Map<String, BEValue> createInfoMap() { + // if we loaded this metainfo from a file, we have the map + if (infoMap != null) + return Collections.unmodifiableMap(infoMap); + // otherwise we must create it Map info = new HashMap(); - if (infoMap != null) { - info.putAll(infoMap); - return info; - } info.put("name", name); if (name_utf8 != null) info.put("name.utf-8", name_utf8); @@ -429,7 +444,8 @@ public class MetaInfo } info.put("files", l); } - return info; + infoMap = info; + return Collections.unmodifiableMap(infoMap); } private byte[] calculateInfoHash() diff --git a/apps/i2psnark/java/src/org/klomp/snark/Peer.java b/apps/i2psnark/java/src/org/klomp/snark/Peer.java index f5d200fda..681a1a580 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Peer.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Peer.java @@ -28,11 +28,14 @@ import java.io.InputStream; import java.io.OutputStream; import java.util.Arrays; import java.util.List; +import java.util.Map; import net.i2p.client.streaming.I2PSocket; import net.i2p.data.DataHelper; import net.i2p.util.Log; +import org.klomp.snark.bencode.BEValue; + public class Peer implements Comparable { private Log _log = new Log(Peer.class); @@ -41,7 +44,9 @@ public class Peer implements Comparable private final byte[] my_id; private final byte[] infohash; - final MetaInfo metainfo; + /** will start out null in magnet mode */ + private MetaInfo metainfo; + private Map<String, BEValue> handshakeMap; // The data in/output streams set during the handshake and used by // the actual connections. @@ -52,6 +57,9 @@ public class Peer implements Comparable // was successful, the connection setup and runs PeerState state; + /** shared across all peers on this torrent */ + MagnetState magnetState; + private I2PSocket sock; private boolean deregister = true; @@ -197,7 +205,7 @@ public class Peer implements Comparable * If the given BitField is non-null it is send to the peer as first * message. */ - public void runConnection(I2PSnarkUtil util, PeerListener listener, BitField bitfield) + public void runConnection(I2PSnarkUtil util, PeerListener listener, BitField bitfield, MagnetState mState) { if (state != null) throw new IllegalStateException("Peer already started"); @@ -255,7 +263,7 @@ public class Peer implements Comparable if ((options & OPTION_EXTENSION) != 0) { if (_log.shouldLog(Log.DEBUG)) _log.debug("Peer supports extensions, sending test message"); - out.sendExtension(0, ExtensionHandshake.getPayload()); + out.sendExtension(0, ExtensionHandler.getHandshake()); } if ((options & OPTION_DHT) != 0 && util.getDHT() != null) { @@ -271,6 +279,7 @@ public class Peer implements Comparable // We are up and running! state = s; + magnetState = mState; listener.connected(this); if (_log.shouldLog(Log.DEBUG)) @@ -371,6 +380,42 @@ public class Peer implements Comparable return options; } + /** + * Shared state across all peers, callers must sync on returned object + * @return non-null + * @since 0.8.4 + */ + public MagnetState getMagnetState() { + return magnetState; + } + + /** @return could be null @since 0.8.4 */ + public Map<String, BEValue> getHandshakeMap() { + return handshakeMap; + } + + /** @since 0.8.4 */ + public void setHandshakeMap(Map<String, BEValue> map) { + handshakeMap = map; + } + + /** @since 0.8.4 */ + public void sendExtension(int type, byte[] payload) { + PeerState s = state; + if (s != null) + s.out.sendExtension(type, payload); + } + + /** + * Switch from magnet mode to normal mode + * @since 0.8.4 + */ + public void gotMetaInfo(MetaInfo meta) { + PeerState s = state; + if (s != null) + s.gotMetaInfo(meta); + } + public boolean isConnected() { return state != null; diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionIn.java b/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionIn.java index 90755a937..a27fc1c9d 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionIn.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionIn.java @@ -90,7 +90,7 @@ class PeerConnectionIn implements Runnable { ps.keepAliveMessage(); if (_log.shouldLog(Log.DEBUG)) - _log.debug("Received keepalive from " + peer + " on " + peer.metainfo.getName()); + _log.debug("Received keepalive from " + peer); continue; } @@ -102,35 +102,35 @@ class PeerConnectionIn implements Runnable case 0: ps.chokeMessage(true); if (_log.shouldLog(Log.DEBUG)) - _log.debug("Received choke from " + peer + " on " + peer.metainfo.getName()); + _log.debug("Received choke from " + peer); break; case 1: ps.chokeMessage(false); if (_log.shouldLog(Log.DEBUG)) - _log.debug("Received unchoke from " + peer + " on " + peer.metainfo.getName()); + _log.debug("Received unchoke from " + peer); break; case 2: ps.interestedMessage(true); if (_log.shouldLog(Log.DEBUG)) - _log.debug("Received interested from " + peer + " on " + peer.metainfo.getName()); + _log.debug("Received interested from " + peer); break; case 3: ps.interestedMessage(false); if (_log.shouldLog(Log.DEBUG)) - _log.debug("Received not interested from " + peer + " on " + peer.metainfo.getName()); + _log.debug("Received not interested from " + peer); break; case 4: piece = din.readInt(); ps.haveMessage(piece); if (_log.shouldLog(Log.DEBUG)) - _log.debug("Received havePiece(" + piece + ") from " + peer + " on " + peer.metainfo.getName()); + _log.debug("Received havePiece(" + piece + ") from " + peer); break; case 5: byte[] bitmap = new byte[i-1]; din.readFully(bitmap); ps.bitfieldMessage(bitmap); if (_log.shouldLog(Log.DEBUG)) - _log.debug("Received bitmap from " + peer + " on " + peer.metainfo.getName() + ": size=" + (i-1) /* + ": " + ps.bitfield */ ); + _log.debug("Received bitmap from " + peer + ": size=" + (i-1) /* + ": " + ps.bitfield */ ); break; case 6: piece = din.readInt(); @@ -138,7 +138,7 @@ class PeerConnectionIn implements Runnable len = din.readInt(); ps.requestMessage(piece, begin, len); if (_log.shouldLog(Log.DEBUG)) - _log.debug("Received request(" + piece + "," + begin + ") from " + peer + " on " + peer.metainfo.getName()); + _log.debug("Received request(" + piece + "," + begin + ") from " + peer); break; case 7: piece = din.readInt(); @@ -152,7 +152,7 @@ class PeerConnectionIn implements Runnable din.readFully(piece_bytes, begin, len); ps.pieceMessage(req); if (_log.shouldLog(Log.DEBUG)) - _log.debug("Received data(" + piece + "," + begin + ") from " + peer + " on " + peer.metainfo.getName()); + _log.debug("Received data(" + piece + "," + begin + ") from " + peer); } else { @@ -160,7 +160,7 @@ class PeerConnectionIn implements Runnable piece_bytes = new byte[len]; din.readFully(piece_bytes); if (_log.shouldLog(Log.DEBUG)) - _log.debug("Received UNWANTED data(" + piece + "," + begin + ") from " + peer + " on " + peer.metainfo.getName()); + _log.debug("Received UNWANTED data(" + piece + "," + begin + ") from " + peer); } break; case 8: @@ -169,27 +169,27 @@ class PeerConnectionIn implements Runnable len = din.readInt(); ps.cancelMessage(piece, begin, len); if (_log.shouldLog(Log.DEBUG)) - _log.debug("Received cancel(" + piece + "," + begin + ") from " + peer + " on " + peer.metainfo.getName()); + _log.debug("Received cancel(" + piece + "," + begin + ") from " + peer); break; case 9: // PORT message int port = din.readUnsignedShort(); ps.portMessage(port); if (_log.shouldLog(Log.DEBUG)) - _log.debug("Received port message from " + peer + " on " + peer.metainfo.getName()); + _log.debug("Received port message from " + peer); case 20: // Extension message int id = din.readUnsignedByte(); byte[] payload = new byte[i-2]; din.readFully(payload); ps.extensionMessage(id, payload); if (_log.shouldLog(Log.DEBUG)) - _log.debug("Received extension message from " + peer + " on " + peer.metainfo.getName()); + _log.debug("Received extension message from " + peer); break; default: byte[] bs = new byte[i-1]; din.readFully(bs); ps.unknownMessage(b, bs); if (_log.shouldLog(Log.DEBUG)) - _log.debug("Received unknown message from " + peer + " on " + peer.metainfo.getName()); + _log.debug("Received unknown message from " + peer); } } } diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionOut.java b/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionOut.java index 19614bc52..181ca4969 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionOut.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionOut.java @@ -151,7 +151,7 @@ class PeerConnectionOut implements Runnable if (m != null) { if (_log.shouldLog(Log.DEBUG)) - _log.debug("Send " + peer + ": " + m + " on " + peer.metainfo.getName()); + _log.debug("Send " + peer + ": " + m); // This can block for quite a while. // To help get slow peers going, and track the bandwidth better, diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java index f7a3a42fc..6eb730fc9 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java @@ -105,6 +105,7 @@ public class PeerCoordinator implements PeerListener private boolean halted = false; + private final MagnetState magnetState; private final CoordinatorListener listener; private final I2PSnarkUtil _util; private static final Random _random = I2PAppContext.getGlobalContext().random(); @@ -128,6 +129,7 @@ public class PeerCoordinator implements PeerListener setWantedPieces(); partialPieces = new ArrayList(getMaxConnections() + 1); peers = new LinkedBlockingQueue(); + magnetState = new MagnetState(infohash, metainfo); // Install a timer to check the uploaders. // Randomize the first start time so multiple tasks are spread out, @@ -484,7 +486,7 @@ public class PeerCoordinator implements PeerListener { public void run() { - peer.runConnection(_util, listener, bitfield); + peer.runConnection(_util, listener, bitfield, magnetState); } }; String threadName = "Snark peer " + peer.toString(); @@ -1149,10 +1151,30 @@ public class PeerCoordinator implements PeerListener } /** @since 0.8.4 */ - public void gotExtension(Peer peer, int id, byte[] bs) {} + public void gotExtension(Peer peer, int id, byte[] bs) { + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Got extension message " + id + " from " + peer); + // basic handling done in PeerState... here we just check if we are done + if (metainfo == null && id == ExtensionHandler.ID_METADATA) { + synchronized (magnetState) { + if (magnetState.isComplete()) { + if (_log.shouldLog(Log.WARN)) + _log.warn("Got completed metainfo via extension"); + MetaInfo newinfo = magnetState.getMetaInfo(); + // more validation + // set global + // instantiate storage + // tell Snark listener + // tell all peers + } + } + } + } /** @since 0.8.4 */ - public void gotPort(Peer peer, int port) {} + public void gotPort(Peer peer, int port) { + // send to DHT + } /** Return number of allowed uploaders for this torrent. ** Check with Snark to see if we are over the total upload limit. diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerState.java b/apps/i2psnark/java/src/org/klomp/snark/PeerState.java index 3ec3d219f..a85207476 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerState.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerState.java @@ -497,9 +497,21 @@ class PeerState implements DataLoader /** @since 0.8.2 */ void extensionMessage(int id, byte[] bs) { + ExtensionHandler.handleMessage(peer, id, bs); + // Peer coord will get metadata from MagnetState, + // verify, and then call gotMetaInfo() listener.gotExtension(peer, id, bs); } + /** + * Switch from magnet mode to normal mode + * @since 0.8.4 + */ + public void gotMetaInfo(MetaInfo meta) { + // set metainfo + // fix bitfield + } + /** @since 0.8.4 */ void portMessage(int port) { diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index 24e8ebc7f..dca9c8324 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -594,9 +594,15 @@ public class SnarkManager implements Snark.CompleteListener { _peerCoordinatorSet, _connectionAcceptor, false, getDataDir().getPath()); - // Tell the dir monitor not to delete us - _magnets.add(name); synchronized (_snarks) { + for (Snark snark : _snarks.values()) { + if (DataHelper.eq(ih, snark.getInfoHash())) { + addMessage(_("Torrent already running: {0}", snark.getBaseName())); + return; + } + } + // Tell the dir monitor not to delete us + _magnets.add(name); _snarks.put(name, torrent); } if (shouldAutoStart()) { From f15b32987406785f555ef556b909d38a1e826663 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Tue, 21 Dec 2010 16:36:08 +0000 Subject: [PATCH 016/463] - Move some torrent file creation code from the servlet to the manager, to allow locking and prevent interference by the DirMonitor - More checks for whether torrent is already running - Consistent filename filtering in all cases - Allow null announce string - Move snarks map to a CHM - Remember last tracker selection - Add callback for reception of metainfo --- .../java/src/org/klomp/snark/MetaInfo.java | 10 +- .../java/src/org/klomp/snark/Snark.java | 10 + .../src/org/klomp/snark/SnarkManager.java | 223 ++++++++++++++++-- .../java/src/org/klomp/snark/Storage.java | 5 +- .../org/klomp/snark/web/I2PSnarkServlet.java | 59 ++--- 5 files changed, 255 insertions(+), 52 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java b/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java index a2522cfc4..2f01fe62c 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java +++ b/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java @@ -64,6 +64,8 @@ public class MetaInfo /** * Called by Storage when creating a new torrent from local data + * + * @param announce may be null */ MetaInfo(String announce, String name, String name_utf8, List files, List lengths, int piece_length, byte[] piece_hashes, long length) @@ -86,6 +88,7 @@ public class MetaInfo * Creates a new MetaInfo from the given InputStream. The * InputStream must start with a correctly bencoded dictonary * describing the torrent. + * Caller must close the stream. */ public MetaInfo(InputStream in) throws IOException { @@ -107,7 +110,9 @@ public class MetaInfo * the original bencoded info dictonary (this is a hack, we could * reconstruct the bencoded stream and recalculate the hash). Will * NOT throw a InvalidBEncodingException if the given map does not - * contain a valid announce string or info dictonary. + * contain a valid announce string. + * WILL throw a InvalidBEncodingException if the given map does not + * contain a valid info dictionary. */ public MetaInfo(Map m) throws InvalidBEncodingException { @@ -401,7 +406,8 @@ public class MetaInfo public synchronized byte[] getTorrentData() { Map m = new HashMap(); - m.put("announce", announce); + if (announce != null) + m.put("announce", announce); Map info = createInfoMap(); m.put("info", info); // don't save this locally, we should only do this once diff --git a/apps/i2psnark/java/src/org/klomp/snark/Snark.java b/apps/i2psnark/java/src/org/klomp/snark/Snark.java index 27e38b5ca..fd7a88b57 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Snark.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Snark.java @@ -1084,6 +1084,16 @@ public class Snark public interface CompleteListener { public void torrentComplete(Snark snark); public void updateStatus(Snark snark); + + /** + * We transitioned from magnet mode, we have now initialized our + * metainfo and storage. The listener should now call getMetaInfo() + * and save the data to disk. + * + * @since 0.8.4 + */ + public void gotMetaInfo(Snark snark); + // not really listeners but the easiest way to get back to an optional SnarkManager public long getSavedTorrentTime(Snark snark); public BitField getSavedTorrentBitField(Snark snark); diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index dca9c8324..d5a51c584 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -5,6 +5,7 @@ import java.io.FileFilter; import java.io.FileInputStream; import java.io.FilenameFilter; import java.io.IOException; +import java.io.OutputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -16,15 +17,18 @@ import java.util.Set; import java.util.StringTokenizer; import java.util.TreeMap; import java.util.Collection; +import java.util.concurrent.ConcurrentHashMap; import net.i2p.I2PAppContext; import net.i2p.data.Base64; import net.i2p.data.DataHelper; import net.i2p.util.ConcurrentHashSet; +import net.i2p.util.FileUtil; import net.i2p.util.I2PAppThread; import net.i2p.util.Log; import net.i2p.util.OrderedProperties; import net.i2p.util.SecureDirectory; +import net.i2p.util.SecureFileOutputStream; /** * Manage multiple snarks @@ -33,7 +37,11 @@ public class SnarkManager implements Snark.CompleteListener { private static SnarkManager _instance = new SnarkManager(); public static SnarkManager instance() { return _instance; } - /** map of (canonical) filename of the .torrent file to Snark instance (unsynchronized) */ + /** + * Map of (canonical) filename of the .torrent file to Snark instance. + * This is a CHM so listTorrentFiles() need not be synced, but + * all adds, deletes, and the DirMonitor should sync on it. + */ private final Map<String, Snark> _snarks; /** used to prevent DirMonitor from deleting torrents that don't have a torrent file yet */ private final Set<String> _magnets; @@ -74,7 +82,7 @@ public class SnarkManager implements Snark.CompleteListener { public static final int DEFAULT_MAX_UP_BW = 10; public static final int DEFAULT_STARTUP_DELAY = 3; private SnarkManager() { - _snarks = new HashMap(); + _snarks = new ConcurrentHashMap(); _magnets = new ConcurrentHashSet(); _addSnarkLock = new Object(); _context = I2PAppContext.getGlobalContext(); @@ -462,8 +470,13 @@ public class SnarkManager implements Snark.CompleteListener { /** hardcoded for sanity. perhaps this should be customizable, for people who increase their ulimit, etc. */ private static final int MAX_FILES_PER_TORRENT = 512; - /** set of canonical .torrent filenames that we are dealing with */ - public Set<String> listTorrentFiles() { synchronized (_snarks) { return new HashSet(_snarks.keySet()); } } + /** + * Set of canonical .torrent filenames that we are dealing with. + * An unsynchronized copy. + */ + public Set<String> listTorrentFiles() { + return new HashSet(_snarks.keySet()); + } /** * Grab the torrent given the (canonical) filename of the .torrent file @@ -486,10 +499,31 @@ public class SnarkManager implements Snark.CompleteListener { return null; } - /** @throws RuntimeException via Snark.fatal() */ + /** + * Grab the torrent given the info hash + * @return Snark or null + * @since 0.8.4 + */ + public Snark getTorrentByInfoHash(byte[] infohash) { + synchronized (_snarks) { + for (Snark s : _snarks.values()) { + if (DataHelper.eq(infohash, s.getInfoHash())) + return s; + } + } + return null; + } + + /** + * Caller must verify this torrent is not already added. + * @throws RuntimeException via Snark.fatal() + */ public void addTorrent(String filename) { addTorrent(filename, false); } - /** @throws RuntimeException via Snark.fatal() */ + /** + * Caller must verify this torrent is not already added. + * @throws RuntimeException via Snark.fatal() + */ public void addTorrent(String filename, boolean dontAutoStart) { if ((!dontAutoStart) && !_util.connected()) { addMessage(_("Connecting to I2P")); @@ -545,13 +579,14 @@ public class SnarkManager implements Snark.CompleteListener { dontAutoStart = true; } } - String rejectMessage = locked_validateTorrent(info); + String rejectMessage = validateTorrent(info); if (rejectMessage != null) { sfile.delete(); addMessage(rejectMessage); return; } else { // TODO load saved closest DHT nodes and pass to the Snark ? + // This may take a LONG time torrent = new Snark(_util, filename, null, -1, null, null, this, _peerCoordinatorSet, _connectionAcceptor, false, dataDir.getPath()); @@ -595,11 +630,10 @@ public class SnarkManager implements Snark.CompleteListener { false, getDataDir().getPath()); synchronized (_snarks) { - for (Snark snark : _snarks.values()) { - if (DataHelper.eq(ih, snark.getInfoHash())) { - addMessage(_("Torrent already running: {0}", snark.getBaseName())); - return; - } + Snark snark = getTorrentByInfoHash(ih); + if (snark != null) { + addMessage(_("Torrent with this info hash is already running: {0}", snark.getBaseName())); + return; } // Tell the dir monitor not to delete us _magnets.add(name); @@ -633,7 +667,99 @@ public class SnarkManager implements Snark.CompleteListener { } /** - * Get the timestamp for a torrent from the config file + * Add a torrent from a MetaInfo. Save the MetaInfo data to filename. + * Holds the snarks lock to prevent interference from the DirMonitor. + * This verifies that a torrent with this infohash is not already added. + * This may take a LONG time to create or check the storage. + * + * @param metainfo the metainfo for the torrent + * @param bitfield the current completion status of the torrent + * @param filename the absolute path to save the metainfo to, generally ending in ".torrent", which is also the name of the torrent + * Must be a filesystem-safe name. + * @throws RuntimeException via Snark.fatal() + * @since 0.8.4 + */ + public void addTorrent(MetaInfo metainfo, BitField bitfield, String filename, boolean dontAutoStart) throws IOException { + // prevent interference by DirMonitor + synchronized (_snarks) { + Snark snark = getTorrentByInfoHash(metainfo.getInfoHash()); + if (snark != null) { + addMessage(_("Torrent with this info hash is already running: {0}", snark.getBaseName())); + return; + } + // so addTorrent won't recheck + saveTorrentStatus(metainfo, bitfield, null); // no file priorities + try { + locked_writeMetaInfo(metainfo, filename); + // hold the lock for a long time + addTorrent(filename, dontAutoStart); + } catch (IOException ioe) { + addMessage(_("Failed to copy torrent file to {0}", filename)); + _log.error("Failed to write torrent file", ioe); + } + } + } + + /** + * Add a torrent from a file not in the torrent directory. Copy the file to filename. + * Holds the snarks lock to prevent interference from the DirMonitor. + * Caller must verify this torrent is not already added. + * This may take a LONG time to create or check the storage. + * + * @param fromfile where the file is now, presumably in a temp directory somewhere + * @param filename the absolute path to save the metainfo to, generally ending in ".torrent", which is also the name of the torrent + * Must be a filesystem-safe name. + * @throws RuntimeException via Snark.fatal() + * @since 0.8.4 + */ + public void copyAndAddTorrent(File fromfile, String filename) throws IOException { + // prevent interference by DirMonitor + synchronized (_snarks) { + boolean success = FileUtil.copy(fromfile.getAbsolutePath(), filename, false); + if (!success) { + addMessage(_("Failed to copy torrent file to {0}", filename)); + _log.error("Failed to write torrent file to " + filename); + return; + } + SecureFileOutputStream.setPerms(new File(filename)); + // hold the lock for a long time + addTorrent(filename); + } + } + + /** + * Write the metainfo to the file, caller must hold the snarks lock + * to prevent interference from the DirMonitor. + * + * @param metainfo The metainfo for the torrent + * @param filename The absolute path to save the metainfo to, generally ending in ".torrent". + * Must be a filesystem-safe name. + * @since 0.8.4 + */ + private void locked_writeMetaInfo(MetaInfo metainfo, String filename) throws IOException { + // prevent interference by DirMonitor + File file = new File(filename); + if (file.exists()) + throw new IOException("Cannot overwrite an existing .torrent file: " + file.getPath()); + OutputStream out = null; + try { + out = new SecureFileOutputStream(filename); + out.write(metainfo.getTorrentData()); + } catch (IOException ioe) { + // remove any partial + file.delete(); + throw ioe; + } finally { + try { + if (out == null) + out.close(); + } catch (IOException ioe) {} + } + } + + /** + * Get the timestamp for a torrent from the config file. + * A Snark.CompleteListener method. */ public long getSavedTorrentTime(Snark snark) { byte[] ih = snark.getInfoHash(); @@ -653,6 +779,7 @@ public class SnarkManager implements Snark.CompleteListener { /** * Get the saved bitfield for a torrent from the config file. * Convert "." to a full bitfield. + * A Snark.CompleteListener method. */ public BitField getSavedTorrentBitField(Snark snark) { MetaInfo metainfo = snark.getMetaInfo(); @@ -721,6 +848,8 @@ public class SnarkManager implements Snark.CompleteListener { * The time is a standard long converted to string. * The status is either a bitfield converted to Base64 or "." for a completed * torrent to save space in the config file and in memory. + * + * @param bitfield non-null * @param priorities may be null */ public void saveTorrentStatus(MetaInfo metainfo, BitField bitfield, int[] priorities) { @@ -783,9 +912,11 @@ public class SnarkManager implements Snark.CompleteListener { } /** + * Does not really delete on failure, that's the caller's responsibility. * Warning - does not validate announce URL - use TrackerClient.isValidAnnounce() + * @return failure message or null on success */ - private String locked_validateTorrent(MetaInfo info) throws IOException { + private String validateTorrent(MetaInfo info) { List files = info.getFiles(); if ( (files != null) && (files.size() > MAX_FILES_PER_TORRENT) ) { return _("Too many files in \"{0}\" ({1}), deleting it!", info.getName(), files.size()); @@ -866,17 +997,22 @@ public class SnarkManager implements Snark.CompleteListener { /** * Stop the torrent and delete the torrent file itself, but leaving the data * behind. + * Holds the snarks lock to prevent interference from the DirMonitor. */ public void removeTorrent(String filename) { - Snark torrent = stopTorrent(filename, true); - if (torrent != null) { + Snark torrent; + // prevent interference by DirMonitor + synchronized (_snarks) { + torrent = stopTorrent(filename, true); + if (torrent == null) + return; File torrentFile = new File(filename); torrentFile.delete(); - Storage storage = torrent.getStorage(); - if (storage != null) - removeTorrentStatus(storage.getMetaInfo()); - addMessage(_("Torrent removed: \"{0}\"", torrent.getBaseName())); } + Storage storage = torrent.getStorage(); + if (storage != null) + removeTorrentStatus(storage.getMetaInfo()); + addMessage(_("Torrent removed: \"{0}\"", torrent.getBaseName())); } private class DirMonitor implements Runnable { @@ -901,7 +1037,10 @@ public class SnarkManager implements Snark.CompleteListener { if (_log.shouldLog(Log.DEBUG)) _log.debug("Directory Monitor loop over " + dir.getAbsolutePath()); try { - monitorTorrents(dir); + // Don't let this interfere with .torrent files being added or deleted + synchronized (_snarks) { + monitorTorrents(dir); + } } catch (Exception e) { _log.error("Error in the DirectoryMonitor", e); } @@ -910,7 +1049,11 @@ public class SnarkManager implements Snark.CompleteListener { } } - /** two listeners */ + // Begin Snark.CompleteListeners + + /** + * A Snark.CompleteListener method. + */ public void torrentComplete(Snark snark) { MetaInfo meta = snark.getMetaInfo(); Storage storage = snark.getStorage(); @@ -925,6 +1068,9 @@ public class SnarkManager implements Snark.CompleteListener { updateStatus(snark); } + /** + * A Snark.CompleteListener method. + */ public void updateStatus(Snark snark) { MetaInfo meta = snark.getMetaInfo(); Storage storage = snark.getStorage(); @@ -932,6 +1078,39 @@ public class SnarkManager implements Snark.CompleteListener { saveTorrentStatus(meta, storage.getBitField(), storage.getFilePriorities()); } + /** + * We transitioned from magnet mode, we have now initialized our + * metainfo and storage. The listener should now call getMetaInfo() + * and save the data to disk. + * A Snark.CompleteListener method. + * + * @since 0.8.4 + */ + public void gotMetaInfo(Snark snark) { + MetaInfo meta = snark.getMetaInfo(); + Storage storage = snark.getStorage(); + if (meta != null && storage != null) { + String rejectMessage = validateTorrent(meta); + if (rejectMessage != null) { + addMessage(rejectMessage); + snark.stopTorrent(); + return; + } + saveTorrentStatus(meta, storage.getBitField(), null); // no file priorities + String name = (new File(getDataDir(), storage.getBaseName() + ".torrent")).getAbsolutePath(); + try { + synchronized (_snarks) { + locked_writeMetaInfo(meta, name); + } + } catch (IOException ioe) { + addMessage(_("Failed to copy torrent file to {0}", name)); + _log.error("Failed to write torrent file", ioe); + } + } + } + + // End Snark.CompleteListeners + private void monitorTorrents(File dir) { String fileNames[] = dir.list(TorrentFilenameFilter.instance()); List<String> foundNames = new ArrayList(0); diff --git a/apps/i2psnark/java/src/org/klomp/snark/Storage.java b/apps/i2psnark/java/src/org/klomp/snark/Storage.java index 17fae5235..dcd78620d 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Storage.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Storage.java @@ -87,6 +87,9 @@ public class Storage * Creates a storage from the existing file or directory together * with an appropriate MetaInfo file as can be announced on the * given announce String location. + * + * @param announce may be null + * @param listener may be null */ public Storage(I2PSnarkUtil util, File baseFile, String announce, StorageListener listener) throws IOException @@ -590,7 +593,7 @@ public class Storage * Removes 'suspicious' characters from the given file name. * http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx */ - private static String filterName(String name) + public static String filterName(String name) { if (name.equals(".") || name.equals(" ")) return "_"; diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index c6ba8b9fd..fefc80848 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -59,6 +59,7 @@ public class I2PSnarkServlet extends Default { private Resource _resourceBase; private String _themePath; private String _imgPath; + private String _lastAnnounceURL = ""; public static final String PROP_CONFIG_FILE = "i2psnark.configFile"; /** BEP 9 */ @@ -605,23 +606,23 @@ public class I2PSnarkServlet extends Default { if (announceURL == null || announceURL.length() <= 0) _manager.addMessage(_("Error creating torrent - you must select a tracker")); else if (baseFile.exists()) { + _lastAnnounceURL = announceURL; + if (announceURL.equals("none")) + announceURL = null; try { + // This may take a long time to check the storage, but since it already exists, + // it shouldn't be THAT bad, so keep it in this thread. Storage s = new Storage(_manager.util(), baseFile, announceURL, null); s.create(); s.close(); // close the files... maybe need a way to pass this Storage to addTorrent rather than starting over MetaInfo info = s.getMetaInfo(); - File torrentFile = new File(baseFile.getParent(), baseFile.getName() + ".torrent"); - if (torrentFile.exists()) - throw new IOException("Cannot overwrite an existing .torrent file: " + torrentFile.getPath()); - _manager.saveTorrentStatus(info, s.getBitField(), null); // so addTorrent won't recheck - // DirMonitor could grab this first, maybe hold _snarks lock? - FileOutputStream out = new FileOutputStream(torrentFile); - out.write(info.getTorrentData()); - out.close(); + File torrentFile = new File(_manager.getDataDir(), s.getBaseName() + ".torrent"); + // FIXME is the storage going to stay around thanks to the info reference? + // now add it, but don't automatically start it + _manager.addTorrent(info, s.getBitField(), torrentFile.getAbsolutePath(), true); _manager.addMessage(_("Torrent created for \"{0}\"", baseFile.getName()) + ": " + torrentFile.getAbsolutePath()); - // now fire it up, but don't automatically seed it - _manager.addTorrent(torrentFile.getCanonicalPath(), true); - _manager.addMessage(_("Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\"", baseFile.getName())); + if (announceURL != null) + _manager.addMessage(_("Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\"", baseFile.getName())); } catch (IOException ioe) { _manager.addMessage(_("Error creating a torrent for \"{0}\"", baseFile.getAbsolutePath()) + ": " + ioe.getMessage()); } @@ -1165,6 +1166,10 @@ public class I2PSnarkServlet extends Default { out.write(":<td><select name=\"announceURL\"><option value=\"\">"); out.write(_("Select a tracker")); out.write("</option>\n"); + // todo remember this one with _lastAnnounceURL also + out.write("<option value=\"none\">"); + out.write(_("Open trackers and DHT only")); + out.write("</option>\n"); Map trackers = _manager.getTrackers(); for (Iterator iter = trackers.entrySet().iterator(); iter.hasNext(); ) { Map.Entry entry = (Map.Entry)iter.next(); @@ -1173,6 +1178,8 @@ public class I2PSnarkServlet extends Default { int e = announceURL.indexOf('='); if (e > 0) announceURL = announceURL.substring(0, e); + if (announceURL.equals(_lastAnnounceURL)) + announceURL += "\" selected=\"selected"; out.write("\t<option value=\"" + announceURL + "\">" + name + "</option>\n"); } out.write("</select>\n"); @@ -1801,15 +1808,18 @@ private static class FetchAndAdd implements Runnable { FileInputStream in = null; try { in = new FileInputStream(file); + // we do not retain this MetaInfo object, hopefully it will go away quickly MetaInfo info = new MetaInfo(in); - String name = info.getName(); - name = DataHelper.stripHTML(name); // XSS - name = name.replace('/', '_'); - name = name.replace('\\', '_'); - name = name.replace('&', '+'); - name = name.replace('\'', '_'); - name = name.replace('"', '_'); - name = name.replace('`', '_'); + try { in.close(); } catch (IOException ioe) {} + Snark snark = _manager.getTorrentByInfoHash(info.getInfoHash()); + if (snark != null) { + _manager.addMessage(_("Torrent with this info hash is already running: {0}", snark.getBaseName())); + return; + } + + // don't hold object from this MetaInfo + String name = new String(info.getName()); + name = Storage.filterName(name); name = name + ".torrent"; File torrentFile = new File(_manager.getDataDir(), name); @@ -1821,18 +1831,13 @@ private static class FetchAndAdd implements Runnable { else _manager.addMessage(_("Torrent already in the queue: {0}", name)); } else { - boolean success = FileUtil.copy(file.getAbsolutePath(), canonical, false); - if (success) { - SecureFileOutputStream.setPerms(torrentFile); - _manager.addTorrent(canonical); - } else { - _manager.addMessage(_("Failed to copy torrent file to {0}", canonical)); - } + // This may take a LONG time to create the storage. + _manager.copyAndAddTorrent(file, canonical); } } catch (IOException ioe) { _manager.addMessage(_("Torrent at {0} was not valid", urlify(_url)) + ": " + ioe.getMessage()); } finally { - try { in.close(); } catch (IOException ioe) {} + try { if (in != null) in.close(); } catch (IOException ioe) {} } } else { _manager.addMessage(_("Torrent was not retrieved from {0}", urlify(_url))); From 690aea255b03ef4cd29f8be3a20c3777a38c375b Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Tue, 21 Dec 2010 23:43:13 +0000 Subject: [PATCH 017/463] - Rework traffic counters - Record the metadata bandwidth - More null announce handling - Callbacks for got MetaInfo event - Cleanups --- .../org/klomp/snark/CoordinatorListener.java | 6 +++ .../src/org/klomp/snark/ExtensionHandler.java | 38 +++++++++++++------ .../java/src/org/klomp/snark/Peer.java | 38 +++++++++++++------ .../src/org/klomp/snark/PeerCoordinator.java | 36 +++++++++++++----- .../java/src/org/klomp/snark/PeerState.java | 33 ++++++++-------- .../java/src/org/klomp/snark/Snark.java | 24 ++++++++++++ .../src/org/klomp/snark/SnarkManager.java | 6 ++- 7 files changed, 129 insertions(+), 52 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/CoordinatorListener.java b/apps/i2psnark/java/src/org/klomp/snark/CoordinatorListener.java index a86afa781..478c17bb5 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/CoordinatorListener.java +++ b/apps/i2psnark/java/src/org/klomp/snark/CoordinatorListener.java @@ -31,6 +31,12 @@ public interface CoordinatorListener */ void peerChange(PeerCoordinator coordinator, Peer peer); + /** + * Called when the PeerCoordinator got the MetaInfo via magnet. + * @since 0.8.4 + */ + void gotMetaInfo(PeerCoordinator coordinator, MetaInfo metainfo); + public boolean overUploadLimit(int uploaders); public boolean overUpBWLimit(); public boolean overUpBWLimit(long total); diff --git a/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java b/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java index 41cfcdf8d..e212f6f61 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java +++ b/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java @@ -26,7 +26,8 @@ abstract class ExtensionHandler { public static final int ID_METADATA = 3; private static final String TYPE_METADATA = "ut_metadata"; - private static final int MAX_METADATA_SIZE = Storage.MAX_PIECES * 32 * 5 / 4; + /** Pieces * SHA1 Hash length, + 25% extra for file names, benconding overhead, etc */ + private static final int MAX_METADATA_SIZE = Storage.MAX_PIECES * 20 * 5 / 4; private static final int PARALLEL_REQUESTS = 3; @@ -49,16 +50,16 @@ abstract class ExtensionHandler { return BEncoder.bencode(handshake); } - public static void handleMessage(Peer peer, int id, byte[] bs) { + public static void handleMessage(Peer peer, PeerListener listener, int id, byte[] bs) { if (id == 0) - handleHandshake(peer, bs); + handleHandshake(peer, listener, bs); else if (id == ID_METADATA) - handleMetadata(peer, bs); + handleMetadata(peer, listener, bs); else if (_log.shouldLog(Log.INFO)) _log.info("Unknown extension msg " + id + " from " + peer); } - private static void handleHandshake(Peer peer, byte[] bs) { + private static void handleHandshake(Peer peer, PeerListener listener, byte[] bs) { if (_log.shouldLog(Log.DEBUG)) _log.debug("Got handshake msg from " + peer); try { @@ -67,11 +68,11 @@ abstract class ExtensionHandler { BDecoder dec = new BDecoder(is); BEValue bev = dec.bdecodeMap(); Map<String, BEValue> map = bev.getMap(); - Map<String, BEValue> msgmap = map.get("m").getMap(); peer.setHandshakeMap(map); + Map<String, BEValue> msgmap = map.get("m").getMap(); - // not used, just to throw out of here - int hisMsgCode = peer.getHandshakeMap().get("m").getMap().get(TYPE_METADATA).getInt(); + // rv not used, just to throw an NPE to get out of here + msgmap.get(TYPE_METADATA).getInt(); int metaSize = map.get("metadata_size").getInt(); MagnetState state = peer.getMagnetState(); @@ -121,13 +122,12 @@ abstract class ExtensionHandler { private static final int TYPE_REJECT = 2; private static final int CHUNK_SIZE = 16*1024; - /** 25% extra for file names, benconding overhead, etc */ /** * REF: BEP 9 * @since 0.8.4 */ - private static void handleMetadata(Peer peer, byte[] bs) { + private static void handleMetadata(Peer peer, PeerListener listener, byte[] bs) { if (_log.shouldLog(Log.DEBUG)) _log.debug("Got metadata msg from " + peer); try { @@ -145,6 +145,9 @@ abstract class ExtensionHandler { pc = state.getChunk(piece); } sendPiece(peer, piece, pc); + // Do this here because PeerConnectionOut only reports for PIECE messages + peer.uploaded(pc.length); + listener.uploaded(peer, pc.length); } else if (type == TYPE_DATA) { int size = map.get("total_size").getInt(); boolean done; @@ -153,6 +156,8 @@ abstract class ExtensionHandler { if (state.isComplete()) return; int len = is.available(); + peer.downloaded(len); + listener.downloaded(peer, len); done = state.saveChunk(piece, bs, bs.length - len, len); if (_log.shouldLog(Log.INFO)) _log.info("Got chunk " + piece + " from " + peer); @@ -189,8 +194,17 @@ abstract class ExtensionHandler { } private static void sendRequest(Peer peer, int piece) { + sendMessage(peer, TYPE_REQUEST, piece); + } + + private static void sendReject(Peer peer, int piece) { + sendMessage(peer, TYPE_REJECT, piece); + } + + /** REQUEST and REJECT are the same except for message type */ + private static void sendMessage(Peer peer, int type, int piece) { Map<String, Object> map = new HashMap(); - map.put("msg_type", TYPE_REQUEST); + map.put("msg_type", Integer.valueOf(type)); map.put("piece", Integer.valueOf(piece)); byte[] payload = BEncoder.bencode(map); try { @@ -205,7 +219,7 @@ abstract class ExtensionHandler { private static void sendPiece(Peer peer, int piece, byte[] data) { Map<String, Object> map = new HashMap(); - map.put("msg_type", TYPE_REQUEST); + map.put("msg_type", Integer.valueOf(TYPE_REQUEST)); map.put("piece", Integer.valueOf(piece)); map.put("total_size", Integer.valueOf(data.length)); byte[] dict = BEncoder.bencode(map); diff --git a/apps/i2psnark/java/src/org/klomp/snark/Peer.java b/apps/i2psnark/java/src/org/klomp/snark/Peer.java index 681a1a580..0f13d1470 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Peer.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Peer.java @@ -53,6 +53,10 @@ public class Peer implements Comparable private DataInputStream din; private DataOutputStream dout; + /** running counters */ + private long downloaded; + private long uploaded; + // Keeps state for in/out connections. Non-null when the handshake // was successful, the connection setup and runs PeerState state; @@ -410,10 +414,10 @@ public class Peer implements Comparable * Switch from magnet mode to normal mode * @since 0.8.4 */ - public void gotMetaInfo(MetaInfo meta) { + public void setMetaInfo(MetaInfo meta) { PeerState s = state; if (s != null) - s.gotMetaInfo(meta); + s.setMetaInfo(meta); } public boolean isConnected() @@ -577,14 +581,29 @@ public class Peer implements Comparable return (s == null) || s.choked; } + /** + * Increment the counter. + * @since 0.8.4 + */ + public void downloaded(int size) { + downloaded += size; + } + + /** + * Increment the counter. + * @since 0.8.4 + */ + public void uploaded(int size) { + uploaded += size; + } + /** * Returns the number of bytes that have been downloaded. * Can be reset to zero with <code>resetCounters()</code>/ */ public long getDownloaded() { - PeerState s = state; - return (s != null) ? s.downloaded : 0; + return downloaded; } /** @@ -593,8 +612,7 @@ public class Peer implements Comparable */ public long getUploaded() { - PeerState s = state; - return (s != null) ? s.uploaded : 0; + return uploaded; } /** @@ -602,12 +620,8 @@ public class Peer implements Comparable */ public void resetCounters() { - PeerState s = state; - if (s != null) - { - s.downloaded = 0; - s.uploaded = 0; - } + downloaded = 0; + uploaded = 0; } public long getInactiveTime() { diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java index 6eb730fc9..0ad2c1e37 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java @@ -45,13 +45,15 @@ public class PeerCoordinator implements PeerListener /** * External use by PeerMonitorTask only. + * Will be null when in magnet mode. */ - final MetaInfo metainfo; + MetaInfo metainfo; /** * External use by PeerMonitorTask only. + * Will be null when in magnet mode. */ - final Storage storage; + Storage storage; private final Snark snark; // package local for access by CheckDownLoadersTask @@ -1150,7 +1152,10 @@ public class PeerCoordinator implements PeerListener } } - /** @since 0.8.4 */ + /** + * PeerListener callback + * @since 0.8.4 + */ public void gotExtension(Peer peer, int id, byte[] bs) { if (_log.shouldLog(Log.DEBUG)) _log.debug("Got extension message " + id + " from " + peer); @@ -1160,18 +1165,29 @@ public class PeerCoordinator implements PeerListener if (magnetState.isComplete()) { if (_log.shouldLog(Log.WARN)) _log.warn("Got completed metainfo via extension"); - MetaInfo newinfo = magnetState.getMetaInfo(); - // more validation - // set global - // instantiate storage - // tell Snark listener - // tell all peers + metainfo = magnetState.getMetaInfo(); + listener.gotMetaInfo(this, metainfo); + for (Peer p : peers) { + p.setMetaInfo(metainfo); + } } } } } - /** @since 0.8.4 */ + /** + * Sets the storage after transition out of magnet mode + * Snark calls this after we call gotMetaInfo() + * @since 0.8.4 + */ + public void setStorage(Storage stg) { + storage = stg; + } + + /** + * PeerListener callback + * @since 0.8.4 + */ public void gotPort(Peer peer, int port) { // send to DHT } diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerState.java b/apps/i2psnark/java/src/org/klomp/snark/PeerState.java index a85207476..4164e310a 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerState.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerState.java @@ -36,8 +36,9 @@ class PeerState implements DataLoader { private final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(PeerState.class); private final Peer peer; + /** Fixme, used by Peer.disconnect() to get to the coordinator */ final PeerListener listener; - private final MetaInfo metainfo; + private MetaInfo metainfo; // Interesting and choking describes whether we are interested in or // are choking the other side. @@ -49,10 +50,6 @@ class PeerState implements DataLoader boolean interested = false; boolean choked = true; - // Package local for use by Peer. - long downloaded; - long uploaded; - /** the pieces the peer has */ BitField bitfield; @@ -285,7 +282,7 @@ class PeerState implements DataLoader */ void uploaded(int size) { - uploaded += size; + peer.uploaded(size); listener.uploaded(peer, size); } @@ -305,7 +302,7 @@ class PeerState implements DataLoader void pieceMessage(Request req) { int size = req.len; - downloaded += size; + peer.downloaded(size); listener.downloaded(peer, size); if (_log.shouldLog(Log.DEBUG)) @@ -326,9 +323,6 @@ class PeerState implements DataLoader { if (_log.shouldLog(Log.WARN)) _log.warn("Got BAD " + req.piece + " from " + peer); - // XXX ARGH What now !?! - // FIXME Why would we set downloaded to 0? - downloaded = 0; } } @@ -372,7 +366,6 @@ class PeerState implements DataLoader _log.info("Unrequested 'piece: " + piece + ", " + begin + ", " + length + "' received from " + peer); - downloaded = 0; // XXX - punishment? return null; } @@ -397,7 +390,6 @@ class PeerState implements DataLoader + begin + ", " + length + "' received from " + peer); - downloaded = 0; // XXX - punishment? return null; } @@ -497,7 +489,7 @@ class PeerState implements DataLoader /** @since 0.8.2 */ void extensionMessage(int id, byte[] bs) { - ExtensionHandler.handleMessage(peer, id, bs); + ExtensionHandler.handleMessage(peer, listener, id, bs); // Peer coord will get metadata from MagnetState, // verify, and then call gotMetaInfo() listener.gotExtension(peer, id, bs); @@ -507,9 +499,18 @@ class PeerState implements DataLoader * Switch from magnet mode to normal mode * @since 0.8.4 */ - public void gotMetaInfo(MetaInfo meta) { - // set metainfo - // fix bitfield + public void setMetaInfo(MetaInfo meta) { + BitField oldBF = bitfield; + if (oldBF != null) { + if (oldBF.size() != meta.getPieces()) + // fix bitfield, it was too big by 1-7 bits + bitfield = new BitField(oldBF.getFieldBytes(), meta.getPieces()); + // else no extra + } else { + // it will be initialized later + //bitfield = new BitField(meta.getPieces()); + } + metainfo = meta; } /** @since 0.8.4 */ diff --git a/apps/i2psnark/java/src/org/klomp/snark/Snark.java b/apps/i2psnark/java/src/org/klomp/snark/Snark.java index fd7a88b57..bd3d0d20d 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Snark.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Snark.java @@ -1004,6 +1004,30 @@ public class Snark // System.out.println(peer.toString()); } + /** + * Called when the PeerCoordinator got the MetaInfo via magnet. + * CoordinatorListener. + * Create the storage, tell SnarkManager, and give the storage + * back to the coordinator. + * + * @throws RuntimeException via fatal() + * @since 0.8.4 + */ + public void gotMetaInfo(PeerCoordinator coordinator, MetaInfo metainfo) { + meta = metainfo; + try { + storage = new Storage(_util, meta, this); + if (completeListener != null) + completeListener.gotMetaInfo(this); + coordinator.setStorage(storage); + } catch (IOException ioe) { + if (storage != null) { + try { storage.close(); } catch (IOException ioee) {} + } + fatal("Could not check or create storage", ioe); + } + } + private boolean allocating = false; public void storageCreateFile(Storage storage, String name, long length) { diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index d5a51c584..c1410e7fa 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -573,9 +573,11 @@ public class SnarkManager implements Snark.CompleteListener { if (!TrackerClient.isValidAnnounce(info.getAnnounce())) { if (_util.shouldUseOpenTrackers() && _util.getOpenTrackers() != null) { - addMessage(_("Warning - Ignoring non-i2p tracker in \"{0}\", will announce to i2p open trackers only", info.getName())); + addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); + } else if (_util.getDHT() != null) { + addMessage(_("Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will announce to DHT only.", info.getName())); } else { - addMessage(_("Warning - Ignoring non-i2p tracker in \"{0}\", and open trackers are disabled, you must enable open trackers before starting the torrent!", info.getName())); + addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); dontAutoStart = true; } } From 973407498b74489d1aeb836cacc6f49b1f01bc16 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Wed, 22 Dec 2010 21:45:09 +0000 Subject: [PATCH 018/463] Magnet icon from http://findicons.com/icon/178214/magnet Courtesy led24.de Freeware --- apps/i2psnark/_icons/magnet.png | Bin 0 -> 591 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/i2psnark/_icons/magnet.png diff --git a/apps/i2psnark/_icons/magnet.png b/apps/i2psnark/_icons/magnet.png new file mode 100644 index 0000000000000000000000000000000000000000..3430f2e5a9c08050cb90248f42315876fd04cb6a GIT binary patch literal 591 zcmV-V0<iswP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW zd<bNS00068Nkl<ZIE{6ZJ!q3r6o#LBzjMDNO=;4kB{ABHVk_;Y7AZ<_P)f0m4&6F9 z1w@46<Wz8SC?Y~Z=p=$>DY!e-pP^Qvt5!>}3Z-d&8th+eay!Hi^4a8_-r+sZeb3=4 zYc0)s5{nH38Q?aM1oFTFFn7OLT;V^dX28>U?6E8AL2uX+4S{Glti$#`<o_rR4(;r{ zLUFn!;90!;VP}UtI@<#sC;RBSbQRMT<!_}-<;zEQf3K6<vQ&0!vv&)nX&+!N-hED7 zSv{Z9boTY5hela_`+=Q8k#Ic5;Ego(ub<dm&+%;o_ID00WD2Df01e<MGN)2uLLGwY zA7Xj_C8f38WOci8y0n&?TzdXu(ViH<4LGEF12~F|*FXRq>_jZ$AlmZd-7>mfpS-hG ze*G`=bG|29{l2(#Z6G0ZJMarT;Q=&&D3ZajL0n;PV-ry<G#^S7Z}vC05LXC>1W_b? z00$7)AVGtw)tJhctIdF^e7UCUbtGsoA%oKx@vVRf2-;d4{Qts}m+`z0APU3?S}R1s z%*@O&z_0>w#aqb_aIi=~qaDG)R$bR^*+AMgD2(3<Wd|<;5E(y%G3FScFm{tygCmX1 z*k?arZ)DWHo=yYs-fi_h>|MS>Q^pT4#t?}_@O(S9$~2BBLL!mC^X=3s;{oQf*=)x1 dZRT5MjsQ}{qk5&)8Mgoc002ovPDHLkV1mRJ2SES; literal 0 HcmV?d00001 From 97f0c13c159147769752e9091a826a232a498cde Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Wed, 22 Dec 2010 22:22:38 +0000 Subject: [PATCH 019/463] - Protection against modifying metainfos - Announce peers to local tracker - Ping node on port reception - More info on directory pages - Cleanups --- .../java/src/org/klomp/snark/MetaInfo.java | 55 +++++++++--------- .../java/src/org/klomp/snark/Peer.java | 8 +++ .../src/org/klomp/snark/PeerCheckerTask.java | 15 ++++- .../src/org/klomp/snark/PeerCoordinator.java | 7 ++- .../java/src/org/klomp/snark/Snark.java | 15 ++++- .../src/org/klomp/snark/SnarkManager.java | 5 ++ .../java/src/org/klomp/snark/Storage.java | 6 +- .../src/org/klomp/snark/TrackerClient.java | 16 ++++-- .../org/klomp/snark/web/I2PSnarkServlet.java | 57 +++++++++++++++++-- 9 files changed, 141 insertions(+), 43 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java b/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java index 2f01fe62c..3fc4977f6 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java +++ b/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java @@ -54,28 +54,30 @@ public class MetaInfo private final byte[] info_hash; private final String name; private final String name_utf8; - private final List files; - private final List files_utf8; - private final List lengths; + private final List<List<String>> files; + private final List<List<String>> files_utf8; + private final List<Long> lengths; private final int piece_length; private final byte[] piece_hashes; private final long length; - private Map infoMap; + private Map<String, BEValue> infoMap; /** * Called by Storage when creating a new torrent from local data * * @param announce may be null + * @param files null for single-file torrent + * @param lengths null for single-file torrent */ - MetaInfo(String announce, String name, String name_utf8, List files, List lengths, + MetaInfo(String announce, String name, String name_utf8, List<List<String>> files, List<Long> lengths, int piece_length, byte[] piece_hashes, long length) { this.announce = announce; this.name = name; this.name_utf8 = name_utf8; - this.files = files; + this.files = files == null ? null : Collections.unmodifiableList(files); this.files_utf8 = null; - this.lengths = lengths; + this.lengths = lengths == null ? null : Collections.unmodifiableList(lengths); this.piece_length = piece_length; this.piece_hashes = piece_hashes; this.length = length; @@ -131,7 +133,7 @@ public class MetaInfo if (val == null) throw new InvalidBEncodingException("Missing info map"); Map info = val.getMap(); - infoMap = info; + infoMap = Collections.unmodifiableMap(info); val = (BEValue)info.get("name"); if (val == null) @@ -171,39 +173,39 @@ public class MetaInfo throw new InvalidBEncodingException ("Missing length number and/or files list"); - List list = val.getList(); + List<BEValue> list = val.getList(); int size = list.size(); if (size == 0) throw new InvalidBEncodingException("zero size files list"); - files = new ArrayList(size); - files_utf8 = new ArrayList(size); - lengths = new ArrayList(size); + List<List<String>> m_files = new ArrayList(size); + List<List<String>> m_files_utf8 = new ArrayList(size); + List<Long> m_lengths = new ArrayList(size); long l = 0; for (int i = 0; i < list.size(); i++) { - Map desc = ((BEValue)list.get(i)).getMap(); - val = (BEValue)desc.get("length"); + Map<String, BEValue> desc = list.get(i).getMap(); + val = desc.get("length"); if (val == null) throw new InvalidBEncodingException("Missing length number"); long len = val.getLong(); - lengths.add(new Long(len)); + m_lengths.add(new Long(len)); l += len; val = (BEValue)desc.get("path"); if (val == null) throw new InvalidBEncodingException("Missing path list"); - List path_list = val.getList(); + List<BEValue> path_list = val.getList(); int path_length = path_list.size(); if (path_length == 0) throw new InvalidBEncodingException("zero size file path list"); - List file = new ArrayList(path_length); - Iterator it = path_list.iterator(); + List<String> file = new ArrayList(path_length); + Iterator<BEValue> it = path_list.iterator(); while (it.hasNext()) - file.add(((BEValue)it.next()).getString()); + file.add(it.next().getString()); - files.add(file); + m_files.add(Collections.unmodifiableList(file)); val = (BEValue)desc.get("path.utf-8"); if (val != null) { @@ -213,11 +215,14 @@ public class MetaInfo file = new ArrayList(path_length); it = path_list.iterator(); while (it.hasNext()) - file.add(((BEValue)it.next()).getString()); - files_utf8.add(file); + file.add(it.next().getString()); + m_files_utf8.add(Collections.unmodifiableList(file)); } } } + files = Collections.unmodifiableList(m_files); + files_utf8 = Collections.unmodifiableList(m_files_utf8); + lengths = Collections.unmodifiableList(m_lengths); length = l; } @@ -265,9 +270,8 @@ public class MetaInfo * a single name. It has the same size as the list returned by * getLengths(). */ - public List getFiles() + public List<List<String>> getFiles() { - // XXX - Immutable? return files; } @@ -276,9 +280,8 @@ public class MetaInfo * files, or null if it is a single file. It has the same size as * the list returned by getFiles(). */ - public List getLengths() + public List<Long> getLengths() { - // XXX - Immutable? return lengths; } diff --git a/apps/i2psnark/java/src/org/klomp/snark/Peer.java b/apps/i2psnark/java/src/org/klomp/snark/Peer.java index 0f13d1470..b31ba65e2 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Peer.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Peer.java @@ -32,6 +32,7 @@ import java.util.Map; import net.i2p.client.streaming.I2PSocket; import net.i2p.data.DataHelper; +import net.i2p.data.Destination; import net.i2p.util.Log; import org.klomp.snark.bencode.BEValue; @@ -384,6 +385,13 @@ public class Peer implements Comparable return options; } + /** @since 0.8.4 */ + public Destination getDestination() { + if (sock == null) + return null; + return sock.getPeerDestination(); + } + /** * Shared state across all peers, callers must sync on returned object * @return non-null diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java index 65a869845..6370eaca6 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java @@ -37,7 +37,8 @@ class PeerCheckerTask extends TimerTask private static final long KILOPERSECOND = 1024*(PeerCoordinator.CHECK_PERIOD/1000); private final PeerCoordinator coordinator; - public I2PSnarkUtil _util; + private final I2PSnarkUtil _util; + private int _runCount; PeerCheckerTask(I2PSnarkUtil util, PeerCoordinator coordinator) { @@ -49,6 +50,7 @@ class PeerCheckerTask extends TimerTask public void run() { + _runCount++; List<Peer> peerList = coordinator.peerList(); if (peerList.isEmpty() || coordinator.halted()) { coordinator.setRateHistory(0, 0); @@ -204,6 +206,10 @@ class PeerCheckerTask extends TimerTask } peer.retransmitRequests(); peer.keepAlive(); + // announce them to local tracker (TrackerClient does this too) + if (_util.getDHT() != null && (_runCount % 5) == 0) { + _util.getDHT().announce(coordinator.getInfoHash(), peer.getPeerID().getDestHash()); + } } // Resync actual uploaders value @@ -245,8 +251,13 @@ class PeerCheckerTask extends TimerTask // close out unused files, but we don't need to do it every time Storage storage = coordinator.getStorage(); - if (storage != null && random.nextInt(4) == 0) { + if (storage != null && (_runCount % 4) == 0) { storage.cleanRAFs(); } + + // announce ourselves to local tracker (TrackerClient does this too) + if (_util.getDHT() != null && (_runCount % 16) == 0) { + _util.getDHT().announce(coordinator.getInfoHash()); + } } } diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java index 0ad2c1e37..504749b62 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java @@ -36,6 +36,8 @@ import net.i2p.util.I2PAppThread; import net.i2p.util.Log; import net.i2p.util.SimpleTimer2; +import org.klomp.snark.dht.KRPC; + /** * Coordinates what peer does what. */ @@ -1186,10 +1188,13 @@ public class PeerCoordinator implements PeerListener /** * PeerListener callback + * Tell the DHT to ping it, this will get back the node info * @since 0.8.4 */ public void gotPort(Peer peer, int port) { - // send to DHT + KRPC krpc = _util.getDHT(); + if (krpc != null) + krpc.ping(peer.getDestination(), port); } /** Return number of allowed uploaders for this torrent. diff --git a/apps/i2psnark/java/src/org/klomp/snark/Snark.java b/apps/i2psnark/java/src/org/klomp/snark/Snark.java index bd3d0d20d..45231965f 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Snark.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Snark.java @@ -776,7 +776,7 @@ public class Snark } /** - * @return needed of all torrent files, or total of metainfo file if fetching magnet, or -1 + * @return number of pieces still needed (magnet mode or not), or -1 if unknown * @since 0.8.4 */ public long getNeeded() { @@ -786,7 +786,7 @@ public class Snark // FIXME subtract chunks we have return meta.getTotalLength(); // FIXME fake - return 16 * 16 * 1024; + return -1; } /** @@ -800,6 +800,17 @@ public class Snark return 16*1024; } + /** + * @return number of pieces + * @since 0.8.4 + */ + public int getPieces() { + if (meta != null) + return meta.getPieces(); + // FIXME else return metainfo pieces if available + return -1; + } + /** * @return true if restarted * @since 0.8.4 diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index c1410e7fa..27640d53b 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -68,6 +68,7 @@ public class SnarkManager implements Snark.CompleteListener { public static final String PROP_META_PREFIX = "i2psnark.zmeta."; public static final String PROP_META_BITFIELD_SUFFIX = ".bitfield"; public static final String PROP_META_PRIORITY_SUFFIX = ".priority"; + public static final String PROP_META_MAGNET_SUFFIX = ".magnet"; private static final String CONFIG_FILE = "i2psnark.config"; public static final String PROP_AUTO_START = "i2snark.autoStart"; // oops @@ -1031,6 +1032,9 @@ public class SnarkManager implements Snark.CompleteListener { } } +//start magnets + + // here because we need to delay until I2CP is up // although the user will see the default until then getBWLimit(); @@ -1245,6 +1249,7 @@ public class SnarkManager implements Snark.CompleteListener { if ( (snark != null) && (!snark.isStopped()) ) snark.stopTorrent(); } +//save magnets } } } diff --git a/apps/i2psnark/java/src/org/klomp/snark/Storage.java b/apps/i2psnark/java/src/org/klomp/snark/Storage.java index dcd78620d..77012de77 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Storage.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Storage.java @@ -100,7 +100,7 @@ public class Storage getFiles(baseFile); long total = 0; - ArrayList lengthsList = new ArrayList(); + ArrayList<Long> lengthsList = new ArrayList(); for (int i = 0; i < lengths.length; i++) { long length = lengths[i]; @@ -122,10 +122,10 @@ public class Storage bitfield = new BitField(pieces); needed = 0; - List files = new ArrayList(); + List<List<String>> files = new ArrayList(); for (int i = 0; i < names.length; i++) { - List file = new ArrayList(); + List<String> file = new ArrayList(); StringTokenizer st = new StringTokenizer(names[i], File.separator); while (st.hasMoreTokens()) { diff --git a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java index f437beeeb..720a662b3 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java +++ b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java @@ -277,18 +277,26 @@ public class TrackerClient extends I2PAppThread runStarted = true; tr.started = true; - Set peers = info.getPeers(); + Set<Peer> peers = info.getPeers(); tr.seenPeers = info.getPeerCount(); if (snark.getTrackerSeenPeers() < tr.seenPeers) // update rising number quickly snark.setTrackerSeenPeers(tr.seenPeers); + + // pass everybody over to our tracker + if (_util.getDHT() != null) { + for (Peer peer : peers) { + _util.getDHT().announce(snark.getInfoHash(), peer.getPeerID().getDestHash()); + } + } + if ( (left > 0) && (!completed) ) { // we only want to talk to new people if we need things // from them (duh) - List ordered = new ArrayList(peers); + List<Peer> ordered = new ArrayList(peers); Collections.shuffle(ordered, r); - Iterator it = ordered.iterator(); + Iterator<Peer> it = ordered.iterator(); while ((!stop) && it.hasNext()) { - Peer cur = (Peer)it.next(); + Peer cur = it.next(); // FIXME if id == us || dest == us continue; // only delay if we actually make an attempt to add peer if(coordinator.addPeer(cur)) { diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index fefc80848..61c9c8e57 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -6,6 +6,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.text.Collator; +import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -875,8 +876,7 @@ public class I2PSnarkServlet extends Default { else if (isValid) icon = toIcon(meta.getName()); else - // todo get a nice magnet icon? - icon = "page_white"; + icon = "magnet"; if (remaining == 0 || isMultiFile) { out.write(toImg(icon, _("Open"))); out.write("</a>"); @@ -1375,6 +1375,7 @@ public class I2PSnarkServlet extends Default { if (ihash.length() == 32) { ih = Base32.decode(ihash); } else if (ihash.length() == 40) { + // Like DataHelper.fromHexString() but ensures no loss of leading zero bytes ih = new byte[20]; try { for (int i = 0; i < 20; i++) { @@ -1539,6 +1540,7 @@ public class I2PSnarkServlet extends Default { if (title.endsWith("/")) title = title.substring(0, title.length() - 1); + String directory = title; title = _("Torrent") + ": " + title; buf.append(title); buf.append("").append(HEADER_A).append(_themePath).append(HEADER_B).append("" + @@ -1550,10 +1552,40 @@ public class I2PSnarkServlet extends Default { boolean showPriority = snark != null && snark.getStorage() != null && !snark.getStorage().complete(); if (showPriority) buf.append("\n"); - buf.append("" + - ""); else buf.append(""); - buf.append(""); buf.append(""); long time; time = now - prof.getLastHeardAbout(); @@ -261,7 +260,7 @@ class ProfileOrganizerRenderer { buf.append("
  • ").append(_("capacity")).append(": ").append(_("how many tunnels can we ask them to join in an hour?")).append("
  • "); buf.append("
  • ").append(_("integration")).append(": ").append(_("how many new peers have they told us about lately?")).append("
  • "); buf.append("
  • ").append(_("status")).append(": ").append(_("is the peer banned, or unreachable, or failing tunnel tests?")).append("
  • "); - buf.append(""); + buf.append(""); out.write(buf.toString()); out.flush(); } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java b/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java index 20d7da9bf..b5569962c 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java @@ -93,6 +93,7 @@ public class StatsGenerator { } out.write("
    \n"); } + out.write(""); out.flush(); } @@ -167,7 +168,7 @@ public class StatsGenerator { buf.append("
  • "); renderPeriod(buf, periods[i], _("rate")); if (curRate.getLastEventCount() > 0) { - buf.append(_("Average")).append(": "); + buf.append(_("Average")).append(": "); buf.append(num(curRate.getAverageValue())); buf.append("; "); buf.append(_("Highest average")); diff --git a/installer/resources/themes/console/classic/console.css b/installer/resources/themes/console/classic/console.css index 00a23c5f0..d7484ad14 100644 --- a/installer/resources/themes/console/classic/console.css +++ b/installer/resources/themes/console/classic/console.css @@ -516,11 +516,11 @@ div.messages li, div.messages ul { margin: -10px 0 0 0; } -div.messages span.error { +div.error { color: #d00000; } -div.messages span.notice { +div.notice { font-style: italic; } diff --git a/installer/resources/themes/console/dark/console.css b/installer/resources/themes/console/dark/console.css index ecfc828ec..b1af23e74 100644 --- a/installer/resources/themes/console/dark/console.css +++ b/installer/resources/themes/console/dark/console.css @@ -421,11 +421,11 @@ div.messages { color: #4f4; } -div.messages span.error { +div.error { color: #d90; } -div.messages span.notice { +div.notice { font-style: italic; } diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 41990b4b2..426086518 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -508,11 +508,11 @@ div.messages { box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); } -div.messages span.error { +div.error { color: #d00000; } -div.messages span.notice { +div.notice { font-style: italic; } diff --git a/installer/resources/themes/console/midnight/console.css b/installer/resources/themes/console/midnight/console.css index 2bb77952e..def9fad6d 100644 --- a/installer/resources/themes/console/midnight/console.css +++ b/installer/resources/themes/console/midnight/console.css @@ -533,11 +533,11 @@ div.main li b{ font-size: 9.5pt; } -div.messages span.error { +div.error { color: #d00000; } -div.messages span.notice { +div.notice { font-style: italic; } From e47afffd0936abf68b3f244f07872fd954989615 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 12 Mar 2011 17:32:15 +0000 Subject: [PATCH 295/463] * Console: Fix HTML errors in configpeer.jsp, configtunnels.jsp, configupdate.jsp --- .../i2p/router/web/ConfigTunnelsHelper.java | 21 +++++++----- .../i2p/router/web/ConfigUpdateHelper.java | 2 +- .../net/i2p/router/web/ShitlistRenderer.java | 5 +++ apps/routerconsole/jsp/configstats.jsp | 32 +++++++++++-------- apps/routerconsole/jsp/configtunnels.jsp | 2 +- 5 files changed, 38 insertions(+), 24 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHelper.java index d3579f17c..de988279f 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHelper.java @@ -18,17 +18,24 @@ public class ConfigTunnelsHelper extends HelperBase { public String getForm() { StringBuilder buf = new StringBuilder(1024); + // HTML: cannot be inside a
  • ") + buf.append(""); + if (snark != null) { + // first row - torrent info + // FIXME center + buf.append(""); + } + // second row - dir info + buf.append("\n\t"); out.write("\n\t"); out.write("\n\t"); out.write("\n\n"); #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:787 -#, fuzzy msgid "peers" msgstr "نظير" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1883 -#, fuzzy msgid "UDP connections" msgstr "اتصال UDP" @@ -1549,12 +1537,12 @@ msgstr "تثبيت الملحق" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:82 #, java-format msgid "Deleted plugin {0}" -msgstr "حذف الملحق" +msgstr "تم حذف الملحق {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:84 #, java-format msgid "Error deleting plugin {0}" -msgstr "خطأ في حذف الملحق" +msgstr "خطأ في حذف الملحق {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:96 #, java-format @@ -1584,9 +1572,7 @@ msgstr "اضافة مستخدم جديد" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:188 msgid "Client configuration saved successfully - restart required to take effect." -msgstr "" -"La configuration du client a été sauvegardé avec succès - redémarrer pour " -"prendre effet. " +msgstr "La configuration du client a été sauvegardé avec succès - redémarrer pour prendre effet. " #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:202 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:213 @@ -1615,7 +1601,6 @@ msgid "WebApp configuration saved." msgstr "تم حفظ اعدادات تطبيق ويب." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:251 -#, fuzzy msgid "Plugin configuration saved." msgstr "تم حفظ اعدادات الملحق ويب." @@ -1655,9 +1640,9 @@ msgid "Downloading plugin from {0}" msgstr "تحميل الملحق من {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:324 -#, fuzzy, java-format +#, java-format msgid "Checking plugin {0} for updates" -msgstr "بحث عن اصدارات جديدة للملحق" +msgstr "بحث عن اصدارات جديدة للملحق{0} " #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:334 #, java-format @@ -1732,7 +1717,6 @@ msgid "Website" msgstr "موقع" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:146 -#, fuzzy msgid "Update link" msgstr "وصلة الترقية" @@ -1759,7 +1743,6 @@ msgid "Are you sure you want to delete {0}?" msgstr "هل انت متأكد أنك ترغب في حذف {0}؟" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:204 -#, fuzzy msgid "Delete" msgstr "حذف" @@ -1812,9 +1795,8 @@ msgid "Log overrides updated" msgstr "" #: ../java/src/net/i2p/router/web/ConfigLoggingHandler.java:160 -#, fuzzy msgid "Log configuration saved" -msgstr "Aide avec la configuration" +msgstr "" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 msgid "Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" @@ -1849,7 +1831,6 @@ msgid "WARN" msgstr "" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:88 -#, fuzzy msgid "Remove" msgstr "حذف" @@ -2078,7 +2059,6 @@ msgid "Cancel shutdown" msgstr "الغاء التوقيف" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:37 -#, fuzzy msgid "Cancel restart" msgstr "الغاء اعادة التشغيل" @@ -2279,8 +2259,8 @@ msgstr "" #, java-format msgid "1 hop" msgid_plural "{0} hops" -msgstr[0] "1 saut" -msgstr[1] "{0} sauts" +msgstr[0] "" +msgstr[1] "" msgstr[2] "" msgstr[3] "" msgstr[4] "" @@ -2537,7 +2517,7 @@ msgstr "اعد رسم" #: ../java/src/net/i2p/router/web/LogsHelper.java:13 #: ../java/src/net/i2p/router/web/LogsHelper.java:37 msgid "File location" -msgstr "" +msgstr "عنوان الملف" #: ../java/src/net/i2p/router/web/LogsHelper.java:34 msgid "File not found" @@ -2570,9 +2550,8 @@ msgid "View RouterInfo" msgstr "" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:109 -#, fuzzy msgid "LeaseSets" -msgstr "Bail" +msgstr "" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:131 msgid "LeaseSet" @@ -2624,18 +2603,17 @@ msgstr "" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:226 msgid "Routers" -msgstr "" +msgstr "الموجه" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:228 msgid "Show all routers" -msgstr "" +msgstr "أظهر جميع الموجهات" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:230 msgid "Show all routers with full stats" msgstr "" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:265 -#, fuzzy msgid "Network Database Router Statistics" msgstr "احصائيات قاعدة البيانات I2P" @@ -2677,9 +2655,9 @@ msgstr "Mise à jour fini" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:355 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:358 -#, fuzzy, java-format +#, java-format msgid "{0} ago" -msgstr "Périmé il y a {0}" +msgstr "" #. shouldnt happen #: ../java/src/net/i2p/router/web/NetDbRenderer.java:357 @@ -2735,9 +2713,9 @@ msgid "Cannot check, plugin {0} is not installed" msgstr "لا يمكن التفعيل، الملحق {0} غير مثبت" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:129 -#, fuzzy, java-format +#, java-format msgid "Checking for update of plugin {0}" -msgstr "يبحث عن تحديثات للملحق {0}" +msgstr "" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:154 #, java-format @@ -2811,17 +2789,17 @@ msgstr "الملحق {0} له اصدار او اسم غير مقبول" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:257 #, java-format msgid "Plugin {0} has mismatched versions" -msgstr "" +msgstr "الملحق {0} له اصدار غير متوافق" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:265 #, java-format msgid "This plugin requires I2P version {0} or higher" -msgstr "" +msgstr "هذا الملحق يحتاج الى اصدار {0} أو اكبر" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:273 #, java-format msgid "This plugin requires Java version {0} or higher" -msgstr "" +msgstr "هذا الملحق يحتاج الى اصدار جافا {0} او أعلى" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:281 msgid "Downloaded plugin is for new installs only, but the plugin is already installed" @@ -2904,9 +2882,9 @@ msgid "Hiding {0} older profiles." msgstr "Cachant {0} profiles anciens" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:77 -#, fuzzy, java-format +#, java-format msgid "Hiding {0} standard profiles." -msgstr "Cachant {0} profiles anciens" +msgstr "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:82 msgid "Groups (Caps)" @@ -2965,23 +2943,20 @@ msgid "Test Fails" msgstr "فشل التجربة" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:175 -#, fuzzy msgid "profile" -msgstr "Profiles" +msgstr "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:184 msgid "Floodfill and Integrated Peers" msgstr "Floodfill et pairs intégrés" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:188 -#, fuzzy msgid "Caps" -msgstr "graphes" +msgstr "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:189 -#, fuzzy msgid "Integ. Value" -msgstr "Intégré" +msgstr "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190 msgid "Last Heard About" @@ -3110,29 +3085,25 @@ msgstr "" #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:59 #, fuzzy, java-format msgid "Banned until restart or in {0}" -msgstr "interdit jusqu'au rédémarrage" +msgstr "" #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:71 -#, fuzzy msgid "unban now" -msgstr "plus interdit" +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 -#, fuzzy msgid "Bandwidth usage" -msgstr "Bande passante entrante/sortante" +msgstr "" #: ../java/src/net/i2p/router/web/StatSummarizer.java:181 -#, fuzzy msgid "Outbound bytes/sec" -msgstr "Options Sortants" +msgstr "" #. def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3); #: ../java/src/net/i2p/router/web/StatSummarizer.java:183 -#, fuzzy msgid "Inbound bytes/sec" -msgstr "Options Entrants" +msgstr "" #: ../java/src/net/i2p/router/web/StatSummarizer.java:186 #: ../java/src/net/i2p/router/web/StatSummarizer.java:187 @@ -3142,9 +3113,8 @@ msgid "bytes/sec" msgstr "" #: ../java/src/net/i2p/router/web/StatSummarizer.java:186 -#, fuzzy msgid "out average" -msgstr "Tracer les moyennes" +msgstr "متوسط الاتصال الخارجي" #: ../java/src/net/i2p/router/web/StatSummarizer.java:187 #: ../java/src/net/i2p/router/web/StatSummarizer.java:189 @@ -3153,9 +3123,8 @@ msgid "max" msgstr "" #: ../java/src/net/i2p/router/web/StatSummarizer.java:188 -#, fuzzy msgid "in average" -msgstr "Tracer les moyennes" +msgstr "متوسط الاتصال الداخلي" #: ../java/src/net/i2p/router/web/StatsGenerator.java:57 msgid "GO" @@ -3175,14 +3144,12 @@ msgstr "" #: ../java/src/net/i2p/router/web/StatsGenerator.java:105 #: ../java/src/net/i2p/router/web/StatsGenerator.java:156 -#, fuzzy msgid "No lifetime events" -msgstr "tracer les événements" +msgstr "" #: ../java/src/net/i2p/router/web/StatsGenerator.java:116 -#, fuzzy msgid "frequency" -msgstr "Fréquence d'actualisation" +msgstr "التردد" #: ../java/src/net/i2p/router/web/StatsGenerator.java:120 msgid "Rolling average events per period" @@ -3205,14 +3172,12 @@ msgstr "" #. Display the strict average #: ../java/src/net/i2p/router/web/StatsGenerator.java:140 -#, fuzzy msgid "Lifetime average frequency" -msgstr "Fréquence d'actualisation" +msgstr "" #: ../java/src/net/i2p/router/web/StatsGenerator.java:168 -#, fuzzy msgid "rate" -msgstr "Taux" +msgstr "النسبة" #: ../java/src/net/i2p/router/web/StatsGenerator.java:170 msgid "Average" @@ -3228,9 +3193,8 @@ msgid "in this period which ended {0} ago." msgstr "" #: ../java/src/net/i2p/router/web/StatsGenerator.java:204 -#, fuzzy msgid "No events" -msgstr "tracer les événements" +msgstr "" #: ../java/src/net/i2p/router/web/StatsGenerator.java:210 msgid "Average event count" @@ -3258,7 +3222,6 @@ msgid "Lifetime average value" msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:41 -#, fuzzy msgid "I2P Router Help & FAQ" msgstr "مساعدة حول I2P" @@ -3367,9 +3330,8 @@ msgstr "Destinations locales" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:149 #: ../java/strings/Strings.java:62 -#, fuzzy msgid "I2PTunnel" -msgstr "فهرس الأنفاق I2P" +msgstr "الأنفاق I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:160 msgid "I2P Router Help" @@ -3502,7 +3464,7 @@ msgstr "" #: ../java/src/net/i2p/router/web/SummaryHelper.java:108 #, fuzzy, java-format msgid "ERR-Clock Skew of {0}" -msgstr "ERR - horloge décalé" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryHelper.java:117 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:576 @@ -3557,7 +3519,7 @@ msgstr "Test en cours" #: ../java/src/net/i2p/router/web/SummaryHelper.java:365 msgid "Add/remove/edit & control your client and server tunnels" -msgstr "Ajouter/enlever/éditer & contrôler vos tunnels client et serveur" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryHelper.java:377 msgid "Server" @@ -3610,9 +3572,9 @@ msgstr "clients partagés" #. Note to translators: all runtime zh translation disabled in this file, no font available in RRD #: ../java/src/net/i2p/router/web/SummaryRenderer.java:89 -#, fuzzy, java-format +#, java-format msgid "events in {0}" -msgstr "Redémarrage en {0}" +msgstr "أعادة التشغيل في {0}" #: ../java/src/net/i2p/router/web/SummaryRenderer.java:91 #, java-format @@ -3620,26 +3582,22 @@ msgid "averaged for {0}" msgstr "" #: ../java/src/net/i2p/router/web/SummaryRenderer.java:101 -#, fuzzy msgid "Events per period" -msgstr "bits par seconde" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryRenderer.java:114 -#, fuzzy msgid "avg" -msgstr ":" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryRenderer.java:116 -#, fuzzy msgid "now" -msgstr "Connu" +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 -#, fuzzy msgid "configure" -msgstr "configuration" +msgstr "إعدادات" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:65 msgid "dead" @@ -3762,7 +3720,6 @@ msgid "Participating Tunnels" msgstr "الأنفاق المشاركة" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:256 -#, fuzzy msgid "Totals" msgstr "المجموع" @@ -3805,12 +3762,12 @@ msgstr "انقر زر التوقف وأعد التشغيل للتثبيت" #: ../java/src/net/i2p/router/web/UpdateHandler.java:220 #, java-format msgid "Version {0}" -msgstr "الإصدار" +msgstr "" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:126 #, java-format msgid "Failed copy to {0}" -msgstr "فشل في النقل الى" +msgstr "" #: ../java/src/net/i2p/router/web/UpdateHandler.java:209 msgid "Update verified" @@ -3950,7 +3907,6 @@ msgid "ClientMessages" msgstr "" #: ../java/strings/Strings.java:60 -#, fuzzy msgid "Encryption" msgstr "التشفير" @@ -4002,7 +3958,6 @@ msgid "key" msgstr "مفتاح" #: ../java/strings/Strings.java:79 -#, fuzzy msgid "port" msgstr "منفذ" @@ -4076,7 +4031,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:106 msgid "config networking" -msgstr "Interconnexion configuration" +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 @@ -4108,7 +4063,7 @@ msgstr "Interconnexion configuration" #: ../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 "Actualiser (s)" +msgstr "أنعش" #. ditto #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:221 @@ -4291,15 +4246,15 @@ msgstr "تجريبي" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:442 msgid "UDP Configuration:" -msgstr "Configuration UDP :" +msgstr "اعدادات UDP :" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:444 msgid "UDP port:" -msgstr "Port UDP :" +msgstr "منفذ UDP :" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:458 msgid "TCP Configuration" -msgstr "Configuration TCP" +msgstr "اعدادات TCP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:464 msgid "Use auto-detected IP address" @@ -4308,11 +4263,11 @@ msgstr "Utiliser l'adresse IP qui a été auto-détectée" #: ../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 "actuellement" +msgstr "حاليا" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:470 msgid "if we are not firewalled" -msgstr "s'il n'y a pas de pare-feu" +msgstr "لايوجد جدار ناري" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:474 msgid "Always use auto-detected IP address (Not firewalled)" @@ -4346,7 +4301,7 @@ msgstr "إختر المنفذ" #: ../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 "Noter" +msgstr "ملاحظة" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:511 msgid "Changing these settings will restart your router." @@ -4358,12 +4313,8 @@ 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 -#, fuzzy 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 fonctionnera derrière le plupart des pares-feu, mais votre vitesse et " -"votre intégration avec le réseau s'améliorera s'il y a la redirection du " -"port I2P pour UDP et 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." @@ -4435,10 +4386,7 @@ msgstr "En plus, ne saisissez pas une adresse IP privée tel que 127.0.0. #: ../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 "" -"Si vous saisissez une mauvaise adresse IP ou nom d'hôte, ou configurer votre " -"NAT ou pare-feu incorrectement, votre intégration avec le réseau I2P " -"dégradera substantiellement." +msgstr "Si vous saisissez une mauvaise adresse IP ou nom d'hôte, ou configurer votre NAT ou pare-feu incorrectement, votre intégration avec le réseau I2P dégradera substantiellement." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:564 msgid "When in doubt, leave the settings at the defaults." @@ -4642,11 +4590,11 @@ msgstr "configuration avancé" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:242 msgid "I2P Advanced Configuration" -msgstr "Configuration I2P avancé" +msgstr "اعدادات I2P متقدمة" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:299 msgid "Advanced I2P Configuration" -msgstr "Configuration I2P avancé" +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." @@ -4654,11 +4602,11 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:106 msgid "config clients" -msgstr "Clients configuration" +msgstr "إعدادات المستخدم" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:244 msgid "I2P Client Configuration" -msgstr "Client I2P configuration" +msgstr "اعدادات I2P " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:311 msgid "Client Configuration" @@ -4690,9 +4638,8 @@ msgid "A web app may also be disabled by removing the .war file from the webapps msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:350 -#, fuzzy msgid "Plugin Configuration" -msgstr "Configuration Client" +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." @@ -4708,7 +4655,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:106 msgid "config keyring" -msgstr "Configuration porte-clés" +msgstr "اعدادات المفاتيح" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:228 msgid "I2P Keyring Configuration" @@ -4857,7 +4804,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:284 msgid "Shutdown the router" -msgstr "Fermer le routeur" +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." @@ -4881,7 +4828,7 @@ msgstr "Une redémarrage gracieux prendra quelques minutes (mais vos pairs appr #: ../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 "Après la rédemmarage du routeur, il attendra 1 minute avant de se relancer." +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:314 msgid "Systray integration" @@ -4934,7 +4881,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:358 msgid "Launch browser on router startup?" -msgstr "Lancer explorateur internet pendant le démarrage du routeur ?" +msgstr "أطلق المتصفح عند البداية؟" #: ../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" @@ -4971,7 +4918,7 @@ 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 "basculer tous" +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:328 msgid "Log" @@ -4983,7 +4930,7 @@ msgstr "رسم بياني" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:369 msgid "Advanced filter" -msgstr "Filtre avancé" +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:106 msgid "config tunnels" @@ -4995,7 +4942,7 @@ msgstr "اعدادات أنفاق I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:305 msgid "The default settings work for most people." -msgstr "La configuration défaut fonctionne pour le plupart des utilisateurs" +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:309 msgid "There is a fundamental tradeoff between anonymity and performance." @@ -5055,8 +5002,7 @@ 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 لطلب المساعدة." +msgstr "ساهم في ترجمة واجهة الاستخدام بالاتصال بالمطورين على IRC #i2p لطلب المساعدة." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:323 msgid "Apply" @@ -5064,11 +5010,11 @@ msgstr "طبق" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:106 msgid "config update" -msgstr "Mettre à jour la configuration" +msgstr "ترقية الاعدادات" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:228 msgid "I2P Update Configuration" -msgstr "Configuration du mise à jour I2P" +msgstr "اعدادات الترقية I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:302 msgid "Check for I2P and news updates" @@ -5088,7 +5034,7 @@ msgstr "عنوان الأخبار" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:320 msgid "Refresh frequency" -msgstr "Fréquence d'actualisation" +msgstr "تردد الانعاش" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:326 msgid "Update policy" @@ -5117,11 +5063,10 @@ msgstr "المفاتيح الموثوقة" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:350 msgid "Update with unsigned development builds?" msgstr "" -"Mettre à jour avec une version de développement d'i2p qui n'a pas été signée" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:354 msgid "Unsigned Build URL" -msgstr "L'URL de la version d'i2p qui n'a pas été signée" +msgstr "" #: ../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." @@ -5209,7 +5154,6 @@ msgid "I2P Network Database Summary" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:109 -#, fuzzy msgid "WebApp Not Found" msgstr "صفحة غير موجودة" @@ -5235,7 +5179,7 @@ msgstr "I2P شبكة المستخدمين" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:105 msgid "peer profiles" -msgstr "profile des pairs" +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:227 msgid "I2P Network Peer Profiles" @@ -5252,7 +5196,7 @@ msgstr "احصائيات شبكة I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:244 #, java-format msgid "Disable {0} Refresh" -msgstr "Désactiver {0} actualisation" +msgstr "الغاء {0} الانعاش" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:105 msgid "tunnel summary" From bfb74f718130e6d856bb67ad7d838bb1b1a8532d Mon Sep 17 00:00:00 2001 From: walking Date: Tue, 22 Feb 2011 16:08:16 +0000 Subject: [PATCH 244/463] reveal the secret protable target --- build.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build.xml b/build.xml index beb8451b7..25ed6e7d6 100644 --- a/build.xml +++ b/build.xml @@ -42,7 +42,8 @@ - + + From e93a3ed908904899755875db05eff77846d8aacf Mon Sep 17 00:00:00 2001 From: hamada Date: Tue, 22 Feb 2011 16:38:44 +0000 Subject: [PATCH 245/463] Used Arabic language flag as requested and fixed language name --- installer/resources/readme/readme.html | 2 +- installer/resources/readme/readme_ar.html | 2 +- installer/resources/readme/readme_de.html | 2 +- installer/resources/readme/readme_es.html | 2 +- installer/resources/readme/readme_fr.html | 2 +- installer/resources/readme/readme_nl.html | 2 +- installer/resources/readme/readme_pt.html | 2 +- installer/resources/readme/readme_ru.html | 2 +- installer/resources/readme/readme_sv.html | 2 +- installer/resources/readme/readme_zh.html | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/installer/resources/readme/readme.html b/installer/resources/readme/readme.html index fcae55e5d..f9865e672 100644 --- a/installer/resources/readme/readme.html +++ b/installer/resources/readme/readme.html @@ -2,7 +2,7 @@
    English - Arabic + عربية 中文 Deutsch Français diff --git a/installer/resources/readme/readme_ar.html b/installer/resources/readme/readme_ar.html index 680b2744b..a136d6701 100644 --- a/installer/resources/readme/readme_ar.html +++ b/installer/resources/readme/readme_ar.html @@ -3,7 +3,7 @@
    English - Arabic + عربية 中文 Deutsch Français diff --git a/installer/resources/readme/readme_de.html b/installer/resources/readme/readme_de.html index 4cccdfc43..e6c3b5530 100644 --- a/installer/resources/readme/readme_de.html +++ b/installer/resources/readme/readme_de.html @@ -2,7 +2,7 @@
    English - Arabic + عربية 中文 Deutsch Français diff --git a/installer/resources/readme/readme_es.html b/installer/resources/readme/readme_es.html index 9bb594de4..e65eae26e 100644 --- a/installer/resources/readme/readme_es.html +++ b/installer/resources/readme/readme_es.html @@ -2,7 +2,7 @@
    English - Arabic + عربية 中文 Deutsch Français diff --git a/installer/resources/readme/readme_fr.html b/installer/resources/readme/readme_fr.html index fbac8c293..daf8f958d 100644 --- a/installer/resources/readme/readme_fr.html +++ b/installer/resources/readme/readme_fr.html @@ -2,7 +2,7 @@
    English - Arabic + عربية 中文 Deutsch Français diff --git a/installer/resources/readme/readme_nl.html b/installer/resources/readme/readme_nl.html index 57854ea70..b5770dcf3 100644 --- a/installer/resources/readme/readme_nl.html +++ b/installer/resources/readme/readme_nl.html @@ -1,7 +1,7 @@
    English - Arabic
    + عربية
    中文 Deutsch Français diff --git a/installer/resources/readme/readme_pt.html b/installer/resources/readme/readme_pt.html index e9f9e8cc0..1b555e632 100644 --- a/installer/resources/readme/readme_pt.html +++ b/installer/resources/readme/readme_pt.html @@ -2,7 +2,7 @@ English - Arabic + عربية 中文 Deutsch Français diff --git a/installer/resources/readme/readme_ru.html b/installer/resources/readme/readme_ru.html index 5eaff38d3..18a437e75 100644 --- a/installer/resources/readme/readme_ru.html +++ b/installer/resources/readme/readme_ru.html @@ -2,7 +2,7 @@
    English - Arabic + عربية 中文 Deutsch Français diff --git a/installer/resources/readme/readme_sv.html b/installer/resources/readme/readme_sv.html index 033ea71de..597f45ca8 100644 --- a/installer/resources/readme/readme_sv.html +++ b/installer/resources/readme/readme_sv.html @@ -2,7 +2,7 @@
    English - Arabic + عربية 中文 Deutsch Français diff --git a/installer/resources/readme/readme_zh.html b/installer/resources/readme/readme_zh.html index 2b0f43eb2..dbda3c488 100644 --- a/installer/resources/readme/readme_zh.html +++ b/installer/resources/readme/readme_zh.html @@ -2,7 +2,7 @@
    English 中文 - Arabic
    + عربية
    Deutsch Français Español From 99f3969b54038e24132b9cc64e47067a64bb5243 Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 22 Feb 2011 23:31:44 +0000 Subject: [PATCH 246/463] - Fix HTML error in server-side 503 error page --- .../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java index 4e8fdf6c9..0f750ad74 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java @@ -53,7 +53,7 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer { "Connection: close\r\n"+ "Proxy-Connection: close\r\n"+ "\r\n"+ - "503 Service Unavailable<title></head>\n"+ + "<html><head><title>503 Service Unavailable\n"+ "

    503 Service Unavailable

    \n" + "

    This I2P eepsite is unavailable. It may be down or undergoing maintenance.

    \n" + "") From 4967f8de3cee447a57af492eee63001b4c95b976 Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 22 Feb 2011 23:32:37 +0000 Subject: [PATCH 247/463] - Add spellcheck=false to textareas --- apps/i2ptunnel/jsp/editClient.jsp | 4 ++-- apps/i2ptunnel/jsp/editServer.jsp | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/i2ptunnel/jsp/editClient.jsp b/apps/i2ptunnel/jsp/editClient.jsp index cabfb2946..b95452b12 100644 --- a/apps/i2ptunnel/jsp/editClient.jsp +++ b/apps/i2ptunnel/jsp/editClient.jsp @@ -400,7 +400,7 @@ - + <%=intl._("(if known)")%>
    @@ -465,7 +465,7 @@
    - +

    diff --git a/apps/i2ptunnel/jsp/editServer.jsp b/apps/i2ptunnel/jsp/editServer.jsp index 3849c8609..e7a28bcd3 100644 --- a/apps/i2ptunnel/jsp/editServer.jsp +++ b/apps/i2ptunnel/jsp/editServer.jsp @@ -186,7 +186,7 @@ - + <% if (!"".equals(editBean.getDestinationBase64(curTunnel))) { %> <%=intl._("Add to local addressbook")%> <% } %> @@ -334,7 +334,7 @@ - +
    From 79c68c5636bb1c061a6e4a06d3ed947be9de4481 Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 22 Feb 2011 23:34:02 +0000 Subject: [PATCH 248/463] * BuildHandler: Prelmiinary participating tunnel throttler --- history.txt | 6 ++ .../src/net/i2p/router/RouterVersion.java | 2 +- .../i2p/router/tunnel/pool/BuildHandler.java | 39 ++++++++++--- .../tunnel/pool/ParticpatingThrottler.java | 57 +++++++++++++++++++ 4 files changed, 96 insertions(+), 8 deletions(-) create mode 100644 router/java/src/net/i2p/router/tunnel/pool/ParticpatingThrottler.java diff --git a/history.txt b/history.txt index 1e4e7de60..3eaea4745 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,9 @@ +2011-02-22 zzz + * BuildHandler: Prelmiinary participating tunnel throttler + * I2PTunnel: + - Add spellcheck=false to textareas + - Fix HTML error in 503 error page + 2011-02-19 zzz * I2PTunnel: Fix standalone server tunnels http://forum.i2p/viewtopic.php?t=5376 diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 421ff4f63..098e16d49 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 = 16; + public final static long BUILD = 17; /** for example "-test" */ public final static String EXTRA = "-rc"; 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 7be46e0c7..ca9c6ad63 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java +++ b/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java @@ -37,18 +37,19 @@ import net.i2p.util.Log; * */ class BuildHandler { - private RouterContext _context; - private Log _log; - private BuildExecutor _exec; - private Job _buildMessageHandlerJob; - private Job _buildReplyMessageHandlerJob; + private final RouterContext _context; + private final Log _log; + private final BuildExecutor _exec; + private final Job _buildMessageHandlerJob; + private final Job _buildReplyMessageHandlerJob; /** list of BuildMessageState, oldest first */ private final List _inboundBuildMessages; /** list of BuildReplyMessageState, oldest first - unused unless HANDLE_REPLIES_INLINE == false */ private final List _inboundBuildReplyMessages; /** list of BuildEndMessageState, oldest first - unused unless HANDLE_REPLIES_INLINE == false */ private final List _inboundBuildEndMessages; - private BuildMessageProcessor _processor; + private final BuildMessageProcessor _processor; + private final ParticipatingThrottler _throttler; private static final boolean HANDLE_REPLIES_INLINE = true; @@ -101,6 +102,7 @@ class BuildHandler { ctx.inNetMessagePool().registerHandlerJobBuilder(TunnelBuildReplyMessage.MESSAGE_TYPE, tbrmhjb); ctx.inNetMessagePool().registerHandlerJobBuilder(VariableTunnelBuildMessage.MESSAGE_TYPE, tbmhjb); ctx.inNetMessagePool().registerHandlerJobBuilder(VariableTunnelBuildReplyMessage.MESSAGE_TYPE, tbrmhjb); + _throttler = new ParticipatingThrottler(ctx); } private static final int MAX_HANDLE_AT_ONCE = 2; @@ -498,6 +500,7 @@ 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(); @@ -531,7 +534,7 @@ class BuildHandler { _context.statManager().addRateData("tunnel.acceptLoad", recvDelay, recvDelay); } } - + /* * Being a IBGW or OBEP generally leads to more connections, so if we are * approaching our connection limit (i.e. !haveCapacity()), @@ -550,6 +553,28 @@ class BuildHandler { _context.throttle().setTunnelStatus(_x("Rejecting tunnels: Connection limit")); response = TunnelHistory.TUNNEL_REJECT_BANDWIDTH; } + + // Check participating throttle counters for previous and next hops + // This is at the end as it compares to a percentage of created tunnels. + // We may need another counter above for requests. + if (response == 0 && !isInGW) { + Hash from = state.fromHash; + if (from == null) + from = state.from.calculateHash(); + if (_throttler.shouldThrottle(from)) { + if (_log.shouldLog(Log.WARN)) + _log.warn("Rejecting tunnel (hop throttle), previous hop: " + from); + // no setTunnelStatus() indication + response = TunnelHistory.TUNNEL_REJECT_BANDWIDTH; + } + } + if (response == 0 && (!isOutEnd) && + _throttler.shouldThrottle(req.readNextIdentity())) { + if (_log.shouldLog(Log.WARN)) + _log.warn("Rejecting tunnel (hop throttle), next hop: " + req.readNextIdentity()); + // no setTunnelStatus() indication + response = TunnelHistory.TUNNEL_REJECT_BANDWIDTH; + } if (_log.shouldLog(Log.DEBUG)) _log.debug("Responding to " + state.msg.getUniqueId() + "/" + ourId diff --git a/router/java/src/net/i2p/router/tunnel/pool/ParticpatingThrottler.java b/router/java/src/net/i2p/router/tunnel/pool/ParticpatingThrottler.java new file mode 100644 index 000000000..06d682679 --- /dev/null +++ b/router/java/src/net/i2p/router/tunnel/pool/ParticpatingThrottler.java @@ -0,0 +1,57 @@ +package net.i2p.router.tunnel.pool; + +import net.i2p.data.Hash; +import net.i2p.router.RouterContext; +import net.i2p.util.ObjectCounter; +import net.i2p.util.SimpleScheduler; +import net.i2p.util.SimpleTimer; + +/** + * Count how often we have accepted a tunnel with the peer + * as the previous or next hop. + * We limit each peer to a percentage of all participating tunnels, + * subject to minimum and maximum values for the limit. + * + * This offers basic protection against simple attacks + * but is not a complete solution, as by design, we don't know + * the originator of a tunnel request. + * + * This also effectively limits the number of tunnels between + * any given pair of routers, which probably isn't a bad thing. + * + * Note that the counts are of previous + next hops, so the total will + * be higher than the participating tunnel count, and will also grow + * as the network uses more 3-hop tunnels. + * + * @since 0.8.4 + */ +class ParticipatingThrottler { + private final RouterContext context; + private final ObjectCounter counter; + + /** portion of the tunnel lifetime */ + private static final int LIFETIME_PORTION = 3; + private static final int MIN_LIMIT = 18 / LIFETIME_PORTION; + private static final int MAX_LIMIT = 81 / LIFETIME_PORTION; + private static final int PERCENT_LIMIT = 12 / LIFETIME_PORTION; + private static final long CLEAN_TIME = 10*60*1000 / LIFETIME_PORTION; + + ParticipatingThrottler(RouterContext ctx) { + this.context = ctx; + this.counter = new ObjectCounter(); + SimpleScheduler.getInstance().addPeriodicEvent(new Cleaner(), CLEAN_TIME); + } + + /** increments before checking */ + boolean shouldThrottle(Hash h) { + int numTunnels = this.context.tunnelManager().getParticipatingCount(); + int limit = Math.max(MIN_LIMIT, Math.min(MAX_LIMIT, numTunnels * PERCENT_LIMIT / 100)); + return this.counter.increment(h) > limit; + } + + private class Cleaner implements SimpleTimer.TimedEvent { + public void timeReached() { + ParticipatingThrottler.this.counter.clear(); + } + } +} From 102d9183d8f5c5a2acbd03c384f4903eecef5500 Mon Sep 17 00:00:00 2001 From: hiddenz Date: Wed, 23 Feb 2011 05:23:36 +0000 Subject: [PATCH 249/463] desktopgui: update russian translation --- apps/desktopgui/locale/messages_ru.po | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/apps/desktopgui/locale/messages_ru.po b/apps/desktopgui/locale/messages_ru.po index 1ac45bc1b..aa5a21a62 100644 --- a/apps/desktopgui/locale/messages_ru.po +++ b/apps/desktopgui/locale/messages_ru.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: I2P desktopgui\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-16 17:10+0000\n" -"PO-Revision-Date: 2011-02-15 00:18+0500\n" +"POT-Creation-Date: 2011-02-19 17:26+0000\n" +"PO-Revision-Date: 2011-02-23 10:23+0500\n" "Last-Translator: Hidden Z \n" "Language-Team: duck \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: src/net/i2p/desktopgui/ExternalTrayManager.java:23 @@ -27,7 +27,6 @@ msgid "I2P is starting!" msgstr "I2P запускается!" #: src/net/i2p/desktopgui/ExternalTrayManager.java:38 -#, fuzzy msgid "Starting" msgstr "Запускается" @@ -37,7 +36,7 @@ msgstr "Запустить I2P браузер" #: src/net/i2p/desktopgui/InternalTrayManager.java:50 msgid "Configure desktopgui" -msgstr "" +msgstr "Настроить desktopgui" #: src/net/i2p/desktopgui/InternalTrayManager.java:67 msgid "Restart I2P" @@ -47,7 +46,11 @@ msgstr "Перезапустить I2P" msgid "Stop I2P" msgstr "Остановить I2P" -#. Translate interface -#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:26 +#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:44 +msgid "Tray icon configuration" +msgstr "Настройка иконки в трее" + +#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47 msgid "Should tray icon be enabled?" -msgstr "" +msgstr "Отображать ли иконку в трее?" + From da41096115a26c8b9c615d2e6de19899c4a0e6de Mon Sep 17 00:00:00 2001 From: hamada Date: Wed, 23 Feb 2011 14:33:42 +0000 Subject: [PATCH 250/463] Added susidns arabic and removed french entry from Arabic translation file --- apps/routerconsole/locale/messages_ar.po | 300 +++++++-------- apps/susidns/locale/messages_ar.po | 434 ++++++++++++++++++++++ installer/resources/readme/readme_ar.html | 3 +- installer/resources/readme/readme_nl.html | 2 +- 4 files changed, 586 insertions(+), 153 deletions(-) create mode 100644 apps/susidns/locale/messages_ar.po diff --git a/apps/routerconsole/locale/messages_ar.po b/apps/routerconsole/locale/messages_ar.po index 656375b75..9c7735269 100644 --- a/apps/routerconsole/locale/messages_ar.po +++ b/apps/routerconsole/locale/messages_ar.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-11-19 18:16+0000\n" -"PO-Revision-Date: 2011-02-22 12:09-0000\n" +"PO-Revision-Date: 2011-02-23 14:26-0000\n" "Last-Translator: hamada \n" "Language-Team: hamada@mail.i2p\n" "Language: ar\n" @@ -228,7 +228,7 @@ msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 msgid "Definitions" -msgstr "Définitions" +msgstr "التعاريف" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:520 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:715 @@ -240,7 +240,7 @@ msgstr "Définitions" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:187 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:238 msgid "Peer" -msgstr "Pair" +msgstr "مستخدم" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:520 msgid "The remote peer, identified by router hash" @@ -1564,7 +1564,7 @@ msgstr "إبدأ" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:49 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:61 msgid "Unsupported" -msgstr "Non supportée" +msgstr "غير مدعومة" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:184 msgid "New client added" @@ -1572,7 +1572,7 @@ msgstr "اضافة مستخدم جديد" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:188 msgid "Client configuration saved successfully - restart required to take effect." -msgstr "La configuration du client a été sauvegardé avec succès - redémarrer pour prendre effet. " +msgstr "تم حفظ العدادات بنجاح - يجب اعادة التشغيل لأخذها بالاعتبار" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:202 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:213 @@ -1758,11 +1758,11 @@ msgstr "حذف مفتاح" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:21 msgid "You must enter a destination" -msgstr "Vous devez saisir une destination" +msgstr "" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:23 msgid "You must enter a key" -msgstr "Vous devez saisir une clé" +msgstr "عليك ادخال مفتاح" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:34 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:41 @@ -1776,7 +1776,7 @@ msgstr "أضف الى المفاتيح" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:36 msgid "Invalid destination or key" -msgstr "Destination ou clé pas valable" +msgstr "" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:41 msgid "removed from keyring" @@ -1976,11 +1976,11 @@ msgstr "" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:314 msgid "Updating bandwidth share percentage" -msgstr "Mise à jour du pourcentage de bande passante partagée" +msgstr "" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:397 msgid "Updated bandwidth limits" -msgstr "Limitations mises à jour de la bande passante " +msgstr "" #: ../java/src/net/i2p/router/web/ConfigNetHelper.java:39 #: ../java/src/net/i2p/router/web/ConfigNetHelper.java:47 @@ -2017,7 +2017,7 @@ msgstr "ممنوع حتى إعادة التشغيل" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:38 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:59 msgid "Invalid peer" -msgstr "Pair pas valable" +msgstr "" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:28 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:316 @@ -2123,7 +2123,7 @@ msgstr "أعد التشغيل التدريجي" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:67 msgid "Graceful restart requested" -msgstr "Redémarrage gracieux demandé" +msgstr "اعادة التشغبل تدريجية" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:68 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:308 @@ -2163,7 +2163,7 @@ 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 "Dump fils d'exécution" +msgstr "" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:91 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:322 @@ -2213,7 +2213,7 @@ msgstr "لن يتم إظهار شاشة التحكم عند البداية" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:129 msgid "Service installed" -msgstr "Service installé" +msgstr "تم تثبيت الخدمة" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:131 msgid "Warning: unable to install the service" @@ -2285,7 +2285,7 @@ msgstr "" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:46 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:61 msgid "Client tunnels for" -msgstr "Tunnels clients pour" +msgstr "نفق لـ" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:69 msgid "ANONYMITY WARNING - Settings include 0-hop tunnels." @@ -2322,19 +2322,19 @@ msgstr "الكمية" #. tunnel backup quantity #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:145 msgid "Backup quantity" -msgstr "'Backup' quantité" +msgstr "" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:167 msgid "Inbound options" -msgstr "Options Entrants" +msgstr "" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:180 msgid "Outbound options" -msgstr "Options Sortants" +msgstr "" #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:31 msgid "Theme change saved." -msgstr "Changement de thème sauvegardé." +msgstr "تم حفظ تغيير التيمة." #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:33 msgid "Refresh the page to view." @@ -2374,11 +2374,11 @@ msgstr "السويدية" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:88 msgid "Update available, attempting to download now" -msgstr "Mise à jour disponible, en tentant de la télécharger actuellement" +msgstr "يوجد اصدار جديد " #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:90 msgid "Update available, click button on left to download" -msgstr "Mise à jour disponible, cliquez sur le bouton sur la gauche pour la télécharger" +msgstr "توجد تحديثات، انقر زر على اليسار للتحميل" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:96 msgid "No update available" @@ -2427,11 +2427,11 @@ msgstr "كل" #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:108 msgid "Notify only" -msgstr "Notifier seulement" +msgstr "" #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:115 msgid "Download and verify only" -msgstr "Télécharger et vérifier seulement" +msgstr "حمل فقط" #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:123 msgid "Download, verify, and restart" @@ -2453,7 +2453,7 @@ msgstr "" #: ../java/src/net/i2p/router/web/GraphHelper.java:130 msgid "Configure Graph Display" -msgstr "Graphe affichage configuration" +msgstr "" #: ../java/src/net/i2p/router/web/GraphHelper.java:130 msgid "Select Stats" @@ -2461,11 +2461,11 @@ msgstr "" #: ../java/src/net/i2p/router/web/GraphHelper.java:132 msgid "Periods" -msgstr "Périodes" +msgstr "مدة" #: ../java/src/net/i2p/router/web/GraphHelper.java:133 msgid "Plot averages" -msgstr "Tracer les moyennes" +msgstr "" #: ../java/src/net/i2p/router/web/GraphHelper.java:134 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:416 @@ -2475,7 +2475,7 @@ msgstr "أو" #: ../java/src/net/i2p/router/web/GraphHelper.java:134 msgid "plot events" -msgstr "tracer les événements" +msgstr "" #: ../java/src/net/i2p/router/web/GraphHelper.java:135 msgid "Image sizes" @@ -2573,12 +2573,12 @@ msgstr "الغاية" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:153 #, java-format msgid "Expires in {0}" -msgstr "Expirera en {0}" +msgstr "" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:155 #, java-format msgid "Expired {0} ago" -msgstr "Périmé il y a {0}" +msgstr "" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:167 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 @@ -2637,7 +2637,7 @@ msgstr "المعلومات" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:344 msgid "Peer info for" -msgstr "Mise à jour en cours" +msgstr "" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:348 msgid "Full entry" @@ -2651,7 +2651,7 @@ msgstr "مختفي" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 msgid "Updated" -msgstr "Mise à jour fini" +msgstr "" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:355 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:358 @@ -2663,7 +2663,7 @@ msgstr "" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:357 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:361 msgid "Published" -msgstr "Publié il y a" +msgstr "تم نشره منذ" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:363 msgid "Address(es)" @@ -2700,12 +2700,12 @@ msgstr "" #: ../java/src/net/i2p/router/web/NewsFetcher.java:82 #, java-format msgid "News last updated {0} ago." -msgstr "Actualités mises à jour il y a {0}" +msgstr "" #: ../java/src/net/i2p/router/web/NewsFetcher.java:88 #, java-format msgid "News last checked {0} ago." -msgstr "Actualités vérifiés il y a {0}" +msgstr "" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:77 #, java-format @@ -2869,17 +2869,17 @@ msgstr "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:72 msgid "Peer Profiles" -msgstr "Profils des pairs" +msgstr "بروفايل المستخدمين" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:73 #, java-format msgid "Showing {0} recent profiles." -msgstr "Montrant {0} profiles récents" +msgstr "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:75 #, java-format msgid "Hiding {0} older profiles." -msgstr "Cachant {0} profiles anciens" +msgstr "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:77 #, java-format @@ -2926,16 +2926,16 @@ msgstr "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:129 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:163 msgid "Failing" -msgstr "Défaillant" +msgstr "فشل" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:282 msgid "Integrated" -msgstr "Intégré" +msgstr "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:164 msgid "Unreachable" -msgstr "Inaccessible" +msgstr "" #. hide if < 10% #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:171 @@ -2948,7 +2948,7 @@ msgstr "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:184 msgid "Floodfill and Integrated Peers" -msgstr "Floodfill et pairs intégrés" +msgstr "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:188 msgid "Caps" @@ -3055,7 +3055,7 @@ msgstr "سرعة" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 msgid "capacity" -msgstr "" +msgstr "القدرة" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 msgid "how many tunnels can we ask them to join in an hour?" @@ -3239,7 +3239,7 @@ msgstr "خدمات I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:63 msgid "Manage your I2P hosts file here (I2P domain name resolution)" -msgstr "Gérer votre fichier 'I2P hosts' ici (I2P DNS)" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:65 msgid "Addressbook" @@ -3247,7 +3247,7 @@ msgstr "دفتر العناوين" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:69 msgid "Built-in anonymous BitTorrent Client" -msgstr "Client bittorrent anonyme" +msgstr "برنامج تورنت مجهول" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:71 msgid "Torrents" @@ -3263,7 +3263,7 @@ msgstr "بريد الكتروني" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:81 msgid "Anonymous resident webserver" -msgstr "Serveur web anonyme" +msgstr "خادم ويب مجهول" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:83 msgid "Webserver" @@ -3280,24 +3280,24 @@ msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:99 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:379 msgid "View existing tunnels and tunnel build status" -msgstr "Montrer les tunnels existants et le statut de création des tunnels" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:105 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254 msgid "Show all current peer connections" -msgstr "Montrer toutes les connexions actuelles aux pairs" +msgstr "أظهر اتصالات المشاركين" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:111 msgid "Show recent peer performance profiles" -msgstr "Montrer les profils de la performance récente des pairs" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:113 msgid "Profiles" -msgstr "Profiles" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:117 msgid "Show list of all known I2P routers" -msgstr "Montrer une liste de touts le routeurs I2P connus" +msgstr "أظهر قائمة بكل I2P المعروفة" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:119 msgid "NetDB" @@ -3305,15 +3305,15 @@ msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123 msgid "Health Report" -msgstr "Fichier traces du routeur" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:125 msgid "Logs" -msgstr "Fichier traces" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:135 msgid "Graph router performance" -msgstr "Montrer la performance du routeur avec des graphes" +msgstr "أظهر اشتغال الموجه بريم بياني" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:137 msgid "Graphs" @@ -3321,12 +3321,12 @@ msgstr "رسم بياني" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141 msgid "Textual router performance statistics" -msgstr "La performance statistique du routeur en texte" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147 #: ../java/src/net/i2p/router/web/SummaryHelper.java:365 msgid "Local Destinations" -msgstr "Destinations locales" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:149 #: ../java/strings/Strings.java:62 @@ -3339,15 +3339,15 @@ msgstr "مساعدة روتر I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:162 msgid "General" -msgstr "Général" +msgstr "عام" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:167 msgid "Local Identity" -msgstr "Identité locale" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171 msgid "Your unique I2P router identity is" -msgstr "L'identité unique de votre routeur est" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:175 msgid "never reveal it to anyone" @@ -3363,11 +3363,11 @@ msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191 msgid "Uptime" -msgstr "" +msgstr "مدة الاشتغال" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198 msgid "Help with configuring your firewall and router for optimal I2P performance" -msgstr "Aide avec la configuration du pare-feu et du routeur afin d'optimiser la performance d'I2P" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227 msgid "Download" @@ -3375,7 +3375,7 @@ msgstr "تحميل" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:236 msgid "Download Unsigned" -msgstr "Télécharger pas signé" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:262 msgid "Active" @@ -3387,7 +3387,7 @@ msgstr "سريع" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:276 msgid "High capacity" -msgstr "Haute capacité" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288 msgid "Known" @@ -3395,11 +3395,11 @@ msgstr "معروف" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:303 msgid "Help with firewall configuration" -msgstr "Aide avec la configuration du pare-feu" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:305 msgid "Check NAT/firewall" -msgstr "Vérifier NAT/pare-feu" +msgstr "تأكد من NAT/جدار ناري" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:325 msgid "Reseed" @@ -3407,11 +3407,11 @@ msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:342 msgid "Configure router bandwidth allocation" -msgstr "Configurer la bande passante du routeur" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:344 msgid "Bandwidth in/out" -msgstr "Bande passante entrante/sortante" +msgstr "الاتصال الداخلي/خارجي" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:364 msgid "Total" @@ -3435,27 +3435,27 @@ msgstr "نسبة المشاركة" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:410 msgid "What's in the router's job queue?" -msgstr "Montrer les tâches du routeur qui sont à traiter " +msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412 msgid "Congestion" -msgstr "Saturation réseau" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 msgid "Job lag" -msgstr "Tâche décalage" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:423 msgid "Message delay" -msgstr "Message retard" +msgstr "تأخر الرسالة" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:429 msgid "Tunnel lag" -msgstr "Tunnel décalage" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435 msgid "Backlog" -msgstr "Retard accumulé" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryHelper.java:101 msgid "ERR-Client Manager I2CP Error - check logs" @@ -3473,23 +3473,23 @@ msgstr "موافق" #: ../java/src/net/i2p/router/web/SummaryHelper.java:118 msgid "ERR-Private TCP Address" -msgstr "ERR - Adresse TCP privée" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryHelper.java:120 msgid "ERR-SymmetricNAT" -msgstr "ERR - NAT symétrique" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryHelper.java:123 msgid "WARN-Firewalled with Inbound TCP Enabled" -msgstr "WARN - pare-feu avec TCP entrant activé" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryHelper.java:125 msgid "WARN-Firewalled and Floodfill" -msgstr "WARN - Pare-feu et Floodfill" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryHelper.java:127 msgid "WARN-Firewalled and Fast" -msgstr "WARN - Pare-feu et Rapide" +msgstr "" #: ../java/src/net/i2p/router/web/SummaryHelper.java:128 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:580 @@ -3510,12 +3510,12 @@ msgstr "" #: ../java/src/net/i2p/router/web/SummaryHelper.java:141 msgid "WARN-Firewalled with UDP Disabled" -msgstr "WARN - Pare-feu avec UDP desactivé" +msgstr "" #: ../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 "Test en cours" +msgstr "جاري التجريب" #: ../java/src/net/i2p/router/web/SummaryHelper.java:365 msgid "Add/remove/edit & control your client and server tunnels" @@ -3531,7 +3531,7 @@ msgstr "أظهر الانفاق" #: ../java/src/net/i2p/router/web/SummaryHelper.java:392 msgid "Leases expired" -msgstr "Bails périmés" +msgstr "" #. red or yellow light #: ../java/src/net/i2p/router/web/SummaryHelper.java:392 @@ -3568,7 +3568,7 @@ msgstr "" #: ../java/src/net/i2p/router/web/SummaryHelper.java:416 #: ../java/strings/Strings.java:36 msgid "shared clients" -msgstr "clients partagés" +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:89 @@ -3613,15 +3613,15 @@ msgstr "من" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:72 msgid "Receive on" -msgstr "Réception active" +msgstr "" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 msgid "Expiration" -msgstr "Expiration" +msgstr "" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 msgid "Send on" -msgstr "Envoyer activé" +msgstr "" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 msgid "To" @@ -3629,7 +3629,7 @@ msgstr "إلى" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:74 msgid "Rate" -msgstr "Taux" +msgstr "" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:74 msgid "Role" @@ -3847,7 +3847,7 @@ msgstr "" #: ../java/strings/Strings.java:39 msgid "I2P webserver" -msgstr "" +msgstr "I2P خادم ويب" #: ../java/strings/Strings.java:40 msgid "HTTP Proxy" @@ -4103,19 +4103,19 @@ msgstr "اعدادات شبكة I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:297 msgid "Bandwidth limiter" -msgstr "Limiteur de bande passante" +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 fonctionnera mieux si vous configurez le débit de transmission et réception pour qu'ils soient égales à ceux de votre connexion internet." +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:303 msgid "KBps In" -msgstr "KOps entrant" +msgstr "KBps الداخلة" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:317 msgid "KBps Out" -msgstr "KOps sortant" +msgstr "KBps الخارجة" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:333 msgid "Share" @@ -4130,28 +4130,28 @@ 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 "Vous avez configuré I2P à partager que {0} KOps." +msgstr "لقد قمت باعداد I2P لمشاركة {0} KOps." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:345 msgid "I2P requires at least 12KBps to enable sharing. " -msgstr "I2P a besoin de plus de 12KOps afin d'activer le partage de bande passante" +msgstr "" #: ../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 "Veuillez activer le partage de bande passante (tunnels participants) en augmentant votre bande passante." +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 "Cela aidera votre anonymat en cachant vos données parmi les données des autres, et cela améliorera le réseau." +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 "Vous avez configuré I2P à partager {0} KOps." +msgstr "قمت باعداد I2P لمشاركة {0} KOps." #: ../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 "En partageant plus de votre bande passante, vous améliorerez votre anonymat et le réseau." +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 @@ -4172,7 +4172,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:376 msgid "The default settings will work for most people." -msgstr "La configuration par défaut marchera pour la plupart des gens." +msgstr "الاعدادات التي تشتغل غالبية الوقت." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:378 msgid "There is help below." @@ -4180,53 +4180,53 @@ msgstr "أنظر التعليمات أسفله." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:380 msgid "UPnP Configuration" -msgstr "Configuration UPnP" +msgstr "اعدادات UPnP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:384 msgid "Enable UPnP to open firewall ports" -msgstr "Activer UPnP afin d'ouvrir les ports du pare-feu" +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:386 msgid "UPnP status" -msgstr "Statut UPnP" +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:388 msgid "IP Configuration" -msgstr "Configuration IP" +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 "Adresse IP ou nom d'hôte qui est joignable depuis l'exterieur" +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:394 msgid "Use all auto-detect methods" -msgstr "Utiliser toute méthode d'auto-détection" +msgstr "استعمال جميع طرق الاكتشاف التلقائي" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:398 msgid "Disable UPnP IP address detection" -msgstr "Desactiver la détection de l'adresse IP par UPnP" +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:402 msgid "Ignore local interface IP address" -msgstr "Ignorer l'adresse IP de l'interface locale" +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:406 msgid "Use SSU IP address detection only" -msgstr "Utiliser seulement SSU pour détecter l'adresse IP" +msgstr "" #: ../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 "Saisir l'adresse IP ou le nom de l'hôte" +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:416 msgid "Select Interface" -msgstr "Choisir l'interface" +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:430 msgid "Hidden mode - do not publish IP" -msgstr "Mode caché - ne pas publier l'adresse IP" +msgstr "لا تنشر عنوان IP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:432 msgid "(prevents participating traffic)" @@ -4258,7 +4258,7 @@ msgstr "اعدادات TCP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:464 msgid "Use auto-detected IP address" -msgstr "Utiliser l'adresse IP qui a été auto-détectée" +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 @@ -4271,19 +4271,19 @@ msgstr "لايوجد جدار ناري" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:474 msgid "Always use auto-detected IP address (Not firewalled)" -msgstr "Utiliser toujours l'adresse IP qui a été auto-détectée (pas de pare-feu)" +msgstr "استعمل دائما عنوان IP المكتشف (لا يوجد جدار ناري)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:484 msgid "Disable inbound (Firewalled)" -msgstr "Desactiver les connexions entrantes (derrière un pare-feu)" +msgstr "الغاء الاتصال الداخلي (وراء جدار ناري)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:488 msgid "Completely disable" -msgstr "Desactiver complètement" +msgstr "الغاء" #: ../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 "(selectionner seulement si derrière un pare-feu qui limite les connexions sortantes TCP)" +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:492 msgid "Externally reachable TCP port" @@ -4291,7 +4291,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:496 msgid "Use the same port configured for UDP" -msgstr "Utiliser le même port qui a été configuré pour UDP" +msgstr "استعمل نفس المنفذ المخصص لمنفذ UDP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:504 msgid "Specify Port" @@ -4318,79 +4318,79 @@ msgstr "" #: ../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 "Si vous pouvez, ouvrez un port dans votre pare-feu afin de permettre la réception des les paquets TCP et UDP non sollicités." +msgstr "ان توفرت الامكانية قم بفتح منفذ في الجدار الناري لسماح بوصول اتصال UDP و TCP" #: ../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 "Si vous ne pouvez pas, I2P est compatible avec UPnp (Universal Plug and Play) et \"UDP hole punching\" avec \"SSU introductions\" afin de relayer le trafic I2P." +msgstr "" #: ../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 "Le plupart des possibilités décrites ci-avant sont pour les situtations particulieres, par exemple le cas où UPnP ne fonctionne pas correctement, ou un pare-feu empeche la connexion au réseau I2P." +msgstr "" #: ../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 "Il y a des certains types de pare-feu (tel que les NAT symétriques) qui ne fonctionnent pas bien avec I2P." +msgstr "" #: ../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 est utilisé pour communiquer avec des \"Internet Gateway Devices (IGDs)\" afin de détecter l'adresse IP extérieure et de contrôler la redirection des ports." +msgstr "" #: ../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 est toujours en développement, et il peut arrêter de fonctionner correctement à cause de " +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:540 msgid "No UPnP-compatible device present" -msgstr "Il n'y a pas d'appareil qui est compatible avec UPnP" +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:542 msgid "UPnP disabled on the device" -msgstr "UPnP est desactivé sur l'appareil" +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:544 msgid "Software firewall interference with UPnP" -msgstr "Il y a de l'intérference entre un pare-feu en software et UPnP" +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:546 msgid "Bugs in the device's UPnP implementation" -msgstr "Il y a des bogues dans l'implementation d'UPnP dans l'appareil" +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:548 msgid "Multiple firewall/routers in the internet connection path" -msgstr "Il y a plusieurs routeurs/pare-feux entre le routeur I2P et l'internet" +msgstr "هناك عدة موجهات و جدار ناري في طريق الاتصال بالانترنت" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:550 msgid "UPnP device change, reset, or address change" -msgstr "Un changement de l'appareil UPnP, une redémarrage, ou une changement d'adresse IP" +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:552 msgid "Review the UPnP status here." -msgstr "Consulter le statut de UPnP ici." +msgstr "" #: ../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 peut être activé ou desactivé au-dessus, mais afin de prendre en compte la changement il faut rédemarrer le routeur I2P." +msgstr "" #: ../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 "Les noms d'hôtes qui ont été saisis au-dessus seront publié dans la base de données du réseau I2P." +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:558 msgid "They are not private." -msgstr "Ils ne sont pas privés." +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 "En plus, ne saisissez pas une adresse IP privée tel que 127.0.0.1 ou 192.168.1.1." +msgstr "" #: ../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 "Si vous saisissez une mauvaise adresse IP ou nom d'hôte, ou configurer votre NAT ou pare-feu incorrectement, votre intégration avec le réseau I2P dégradera substantiellement." +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:564 msgid "When in doubt, leave the settings at the defaults." -msgstr "Si vous n'êtes pas sûr de vous, laisser la configuration par défaut." +msgstr "ان لم تكن متأكدا دع الاعدادات كما هي." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:566 msgid "Reachability Help" @@ -4586,7 +4586,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:107 msgid "config advanced" -msgstr "configuration avancé" +msgstr "اعدادات متقدمة" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:242 msgid "I2P Advanced Configuration" @@ -4627,7 +4627,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:336 msgid "WebApp Configuration" -msgstr "Configuration WebApp" +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)." @@ -4687,7 +4687,7 @@ msgstr "صفحة النفق I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:316 msgid "Dest. name, hash, or full key" -msgstr "Nom de destination, empreinte, ou clé complète" +msgstr "نقطة الوصول، اسم، بصمة، او مفتاح كامل" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:318 msgid "Encryption Key" @@ -4695,7 +4695,7 @@ msgstr "مفتاح التشفير" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:107 msgid "config logging" -msgstr "configuration enregistrements" +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:242 msgid "I2P Logging Configuration" @@ -4719,7 +4719,7 @@ 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 "(use 'd' = date, 'c' = classe, 't' = fil d'exécution, 'p' = priorité, 'm' = message)" +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 msgid "Log date format" @@ -4727,7 +4727,7 @@ 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' = mois, 'dd' = jour, 'HH' = heure, 'mm' = minute, 'ss' = seconde, 'SSS' = milliseconde)" +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 msgid "Max log file size" @@ -4755,7 +4755,7 @@ msgstr "اعدادات النظائر" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:228 msgid "I2P Peer Configuration" -msgstr "Configuration des pairs I2P" +msgstr "اعدادات مستخدمي I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:304 msgid "Manual Peer Controls" @@ -4763,7 +4763,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:306 msgid "Router Hash" -msgstr "Routeur empreinte" +msgstr "بصمة الموجه" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:310 msgid "Manually Ban / Unban a Peer" @@ -4779,7 +4779,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:326 msgid "profiles page" -msgstr "page des profiles" +msgstr "صفحة البروفايل" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:342 msgid "Adjust peer bonuses" @@ -4788,7 +4788,7 @@ 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 "Pairs interdits" +msgstr "مستخدمون ممنوعون" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:366 msgid "Banned IPs" @@ -4824,7 +4824,7 @@ msgstr "" #: ../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 "Une redémarrage gracieux prendra quelques minutes (mais vos pairs apprécieront votre patience), une redémarrage immédiate est quasi instantané." +msgstr "" #: ../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." @@ -4974,7 +4974,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:339 msgid "i2ptunnel page" -msgstr "" +msgstr "i2ptunnel صفحة" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:106 msgid "config UI" @@ -5050,7 +5050,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:338 msgid "eepProxy port" -msgstr "" +msgstr "eepProxy منفذ" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:342 msgid "Update URLs" @@ -5094,7 +5094,7 @@ msgstr "غير موجود" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:106 msgid "graphs" -msgstr "" +msgstr "رسم بياني" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:228 msgid "I2P Performance Graphs" @@ -5159,7 +5159,7 @@ msgstr "صفحة غير موجودة" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:231 msgid "Web Application Not Running" -msgstr "Tunnels d'application" +msgstr "تطبيق الويب لا يشتغل" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:233 msgid "The requested web application is not running." @@ -5179,7 +5179,7 @@ msgstr "I2P شبكة المستخدمين" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:105 msgid "peer profiles" -msgstr "" +msgstr "بروفايل المستخدمين" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:227 msgid "I2P Network Peer Profiles" diff --git a/apps/susidns/locale/messages_ar.po b/apps/susidns/locale/messages_ar.po new file mode 100644 index 000000000..93a22d3e1 --- /dev/null +++ b/apps/susidns/locale/messages_ar.po @@ -0,0 +1,434 @@ +# 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: 2011-02-13 11:54+0000\n" +"PO-Revision-Date: 2011-02-22 17:54-0000\n" +"Last-Translator: hamada \n" +"Language-Team: duck \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:200 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:193 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:197 +msgid "Search" +msgstr "بحث" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:204 +msgid "Search within filtered list" +msgstr "بحث ضمن القائمة" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206 +msgid "Filtered list" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:210 +msgid "no matches" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:213 +msgid "Addressbook" +msgstr "دفتر العناوين" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:215 +msgid "contains no entries" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:217 +msgid "contains 1 entry" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:219 +#, java-format +msgid "contains {0} entries" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:229 +#, java-format +msgid "Showing {0} of {1}" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:368 +msgid "Add" +msgstr "أضف" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:265 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:366 +msgid "Replace" +msgstr "عوض" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264 +#, java-format +msgid "Host name {0} is already in addressbook, unchanged." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266 +#, java-format +msgid "Host name {0} is already in addressbook with a different destination. Click \"Replace\" to overwrite." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278 +#, java-format +msgid "Destination added for {0}." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:280 +#, java-format +msgid "Destination changed for {0}." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:285 +msgid "Invalid Base 64 destination." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:289 +msgid "Please enter a host name and destination" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:293 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314 +msgid "Delete Selected" +msgstr "حذف" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:303 +#, java-format +msgid "Destination {0} deleted." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305 +#, java-format +msgid "{0} destinations deleted." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:311 +msgid "Addressbook saved." +msgstr "تم حفظ دفتر العناوين" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:314 +msgid "ERROR: Could not write addressbook file." +msgstr "خطأ: لم يتم حفظ دفتر العناوين" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319 +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151 +msgid "Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:130 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:130 +msgid "Save" +msgstr "حفظ" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:141 +msgid "Configuration saved." +msgstr "حفظ الخيارات" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:128 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:128 +msgid "Reload" +msgstr "أعد تشغيل" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:144 +msgid "Configuration reloaded." +msgstr "" + +#. Yes this is a hack. +#. No it doesn't work on a text-mode browser. +#. Fetching from the addressbook servlet +#. with the correct parameters will kick off a +#. config reload and fetch. +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:139 +msgid "Subscriptions saved, updating addressbook from subscription sources now." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143 +msgid "Subscriptions saved." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147 +msgid "Subscriptions reloaded." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145 +msgid "addressbook" +msgstr "دفتر العناوين" + +#: ../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 "دفتر العناوين" + +#: ../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 "خاص" + +#: ../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 "رئيسي" + +#: ../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 "موجه" + +#: ../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 "منشور" + +#: ../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 "اشتراك" + +#: ../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 "خيارات" + +#: ../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 "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:163 +msgid "Filter" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:166 +msgid "all" +msgstr "جمبع" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:177 +msgid "Current filter" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:182 +msgid "clear filter" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:224 +msgid "Name" +msgstr "الإسم" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:226 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:362 +msgid "Destination" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:257 +msgid "Mark for deletion" +msgstr "اختر للحذف" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:279 +msgid "address helper link" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:312 +msgid "Cancel" +msgstr "الغاء" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345 +msgid "This addressbook is empty." +msgstr "هذا دفتر العناوين فارغ" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:356 +msgid "Add new destination" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:358 +msgid "Hostname" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:132 +msgid "Hints" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134 +msgid "File and directory paths here are relative to the addressbook's working directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P\\addressbook\\ (Windows)." +msgstr "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142 +msgid "Use the private addressbook for private destinations, these are not published." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144 +msgid "Options" +msgstr "خيارات" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146 +msgid "File containing the list of subscriptions URLs (no need to change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148 +msgid "Update interval in hours" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150 +msgid "Your public hosts.txt file (choose a path within your webserver document root)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152 +msgid "Your hosts.txt (don't change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:154 +msgid "Your personal addressbook, these hosts will be published" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:156 +msgid "Your private addressbook, it is never published" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158 +msgid "Port for your eepProxy (no need to change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160 +msgid "Hostname for your eepProxy (no need to change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162 +msgid "Whether to update the published addressbook" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164 +msgid "File containing the etags header from the fetched subscription URLs (no need to change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:166 +msgid "File containing the modification timestamp for each fetched subscription URL (no need to change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168 +msgid "File to log activity to (change to /dev/null if you like)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:91 +msgid "Introduction" +msgstr "تقديم" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:109 +msgid "What is the addressbook?" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:111 +msgid "The addressbook application is part of your i2p installation." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113 +msgid "It regularly updates your hosts.txt file from distributed sources or \"subscriptions\"." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115 +msgid "In the default configuration, the addressbook is only subscribed to www.i2p2.i2p." +msgstr "" + +#: ../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 "" + +#: ../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 "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121 +msgid "How does the addressbook work?" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123 +msgid "The addressbook application regularly polls your subscriptions and merges their content into your \"router\" addressbook, stored in the hosts.txt file." +msgstr "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132 +msgid "The subscription file contains a list of i2p URLs." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134 +msgid "The addressbook application regularly checks this list for new eepsites." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136 +msgid "Those URLs refer to published hosts.txt files." +msgstr "" + +#: ../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 "" + +#: ../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 "" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142 +msgid "See the FAQ for a list of subscription URLs." +msgstr "" + diff --git a/installer/resources/readme/readme_ar.html b/installer/resources/readme/readme_ar.html index a136d6701..961f376a0 100644 --- a/installer/resources/readme/readme_ar.html +++ b/installer/resources/readme/readme_ar.html @@ -1,5 +1,4 @@ - -
    +
    English diff --git a/installer/resources/readme/readme_nl.html b/installer/resources/readme/readme_nl.html index b5770dcf3..7392623cc 100644 --- a/installer/resources/readme/readme_nl.html +++ b/installer/resources/readme/readme_nl.html @@ -1,7 +1,7 @@
    English - عربية
    + عربية 中文 Deutsch Français From 6789df50f3b94a790886dbe024821b1c88d2eca1 Mon Sep 17 00:00:00 2001 From: zzz Date: Wed, 23 Feb 2011 15:58:46 +0000 Subject: [PATCH 251/463] lower the max limit --- history.txt | 3 +++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- .../net/i2p/router/tunnel/pool/ParticpatingThrottler.java | 7 +++++-- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/history.txt b/history.txt index 3eaea4745..d3d016b01 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,6 @@ +2011-02-23 zzz + * BuildHandler: Lower participating throttler max limit + 2011-02-22 zzz * BuildHandler: Prelmiinary participating tunnel throttler * I2PTunnel: diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 098e16d49..14408f1ed 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 = 17; + public final static long BUILD = 18; /** for example "-test" */ public final static String EXTRA = "-rc"; diff --git a/router/java/src/net/i2p/router/tunnel/pool/ParticpatingThrottler.java b/router/java/src/net/i2p/router/tunnel/pool/ParticpatingThrottler.java index 06d682679..cf07ec954 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/ParticpatingThrottler.java +++ b/router/java/src/net/i2p/router/tunnel/pool/ParticpatingThrottler.java @@ -19,6 +19,9 @@ import net.i2p.util.SimpleTimer; * This also effectively limits the number of tunnels between * any given pair of routers, which probably isn't a bad thing. * + * Note that the actual limits will be higher than specified + * by up to 1 / LIFETIME_PORTION because the counter window resets. + * * Note that the counts are of previous + next hops, so the total will * be higher than the participating tunnel count, and will also grow * as the network uses more 3-hop tunnels. @@ -32,9 +35,9 @@ class ParticipatingThrottler { /** portion of the tunnel lifetime */ private static final int LIFETIME_PORTION = 3; private static final int MIN_LIMIT = 18 / LIFETIME_PORTION; - private static final int MAX_LIMIT = 81 / LIFETIME_PORTION; + private static final int MAX_LIMIT = 66 / LIFETIME_PORTION; private static final int PERCENT_LIMIT = 12 / LIFETIME_PORTION; - private static final long CLEAN_TIME = 10*60*1000 / LIFETIME_PORTION; + private static final long CLEAN_TIME = 11*60*1000 / LIFETIME_PORTION; ParticipatingThrottler(RouterContext ctx) { this.context = ctx; From 7bf8b46049841f9937f427c44139f28c15e9c825 Mon Sep 17 00:00:00 2001 From: zzz Date: Wed, 23 Feb 2011 19:34:52 +0000 Subject: [PATCH 252/463] fix html error --- apps/routerconsole/jsp/summaryframe.jsp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/apps/routerconsole/jsp/summaryframe.jsp b/apps/routerconsole/jsp/summaryframe.jsp index 4b8d6b69e..e59fbd44f 100644 --- a/apps/routerconsole/jsp/summaryframe.jsp +++ b/apps/routerconsole/jsp/summaryframe.jsp @@ -59,7 +59,6 @@ out.print(": \n"); out.print("
    \n"); } else { // this will load in the iframe but subsequent pages will not have the iframe out.print("\n"); @@ -70,9 +69,8 @@ } catch (NumberFormatException nfe) {} String refreshTime = net.i2p.data.DataHelper.formatDuration2(refreshMS); out.print(intl._("Disable {0} Refresh", refreshTime)); - out.print("
    \n"); } - out.print("\n"); + out.print("
    \n"); } %>
    From f03064ac710fffbbc6dcf26d0aa84e7334d311f4 Mon Sep 17 00:00:00 2001 From: zzz Date: Wed, 23 Feb 2011 19:36:29 +0000 Subject: [PATCH 253/463] * BuildHandler: Cleanups and loop checks --- history.txt | 5 +++- .../src/net/i2p/router/RouterVersion.java | 2 +- .../i2p/router/tunnel/pool/BuildHandler.java | 27 ++++++++++++++++--- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/history.txt b/history.txt index d3d016b01..03891b8fc 100644 --- a/history.txt +++ b/history.txt @@ -1,5 +1,8 @@ 2011-02-23 zzz - * BuildHandler: Lower participating throttler max limit + * BuildHandler: + - Lower participating throttler max limit + - Cleanups and loop checks + * Console: Fix summary bar HTML error 2011-02-22 zzz * BuildHandler: Prelmiinary participating tunnel throttler diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 14408f1ed..987fc2f75 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 = 18; + public final static long BUILD = 19; /** for example "-test" */ public final static String EXTRA = "-rc"; 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 ca9c6ad63..618395576 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java +++ b/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java @@ -501,6 +501,25 @@ class BuildHandler { boolean isInGW = req.readIsInboundGateway(); boolean isOutEnd = req.readIsOutboundEndpoint(); + // Loop checks + if ((!isOutEnd) && _context.routerHash().equals(nextPeer)) { + // We are 2 hops in a row? Drop it without a reply. + // No way to recognize if we are every other hop, but see below + _log.error("Dropping build request where we are in two consecutive hops"); + return; + } + if ((!isOutEnd) && (!isInGW)) { + Hash from = state.fromHash; + if (from == null) + from = state.from.calculateHash(); + // Previous and next hop the same? Don't help somebody be evil. Drop it without a reply. + // A-B-C-A is not preventable + if (nextPeer.equals(from)) { + _log.error("Dropping build request with the same previous and next hop"); + return; + } + } + // 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(); @@ -569,9 +588,9 @@ class BuildHandler { } } if (response == 0 && (!isOutEnd) && - _throttler.shouldThrottle(req.readNextIdentity())) { + _throttler.shouldThrottle(nextPeer)) { if (_log.shouldLog(Log.WARN)) - _log.warn("Rejecting tunnel (hop throttle), next hop: " + req.readNextIdentity()); + _log.warn("Rejecting tunnel (hop throttle), next hop: " + nextPeer); // no setTunnelStatus() indication response = TunnelHistory.TUNNEL_REJECT_BANDWIDTH; } @@ -606,7 +625,7 @@ class BuildHandler { cfg.setSendTo(null); cfg.setSendTunnelId(null); } else { - cfg.setSendTo(req.readNextIdentity()); + cfg.setSendTo(nextPeer); cfg.setSendTunnelId(DataHelper.toLong(4, nextId)); } @@ -622,7 +641,7 @@ class BuildHandler { _context.tunnelDispatcher().joinParticipant(cfg); } else { _context.statManager().addRateData("tunnel.reject." + response, 1, 1); - _context.messageHistory().tunnelRejected(state.fromHash, new TunnelId(ourId), req.readNextIdentity(), + _context.messageHistory().tunnelRejected(state.fromHash, new TunnelId(ourId), nextPeer, "rejecting for " + response + ": " + state.msg.getUniqueId() + "/" + ourId + "/" + req.readNextTunnelId() + " delay " + recvDelay + " as " + From fde783b15601fa929e27316438e4dae1f9cb7724 Mon Sep 17 00:00:00 2001 From: hamada Date: Thu, 24 Feb 2011 00:29:29 +0000 Subject: [PATCH 254/463] Fixed router console flag problem --- installer/resources/readme/readme_de.html | 3 ++- installer/resources/readme/readme_nl.html | 2 +- installer/resources/readme/readme_pt.html | 2 +- installer/resources/readme/readme_zh.html | 5 +++-- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/installer/resources/readme/readme_de.html b/installer/resources/readme/readme_de.html index e6c3b5530..17f937aa4 100644 --- a/installer/resources/readme/readme_de.html +++ b/installer/resources/readme/readme_de.html @@ -1,5 +1,5 @@
    -
    +
    English عربية @@ -11,6 +11,7 @@ Nederlands Русский Svenska +

    Willkommen im I2P!

    Wenn Du I2P gerade gestartet hast, sollten die "Aktiv:"-Zahlen links in den nächsten Minuten anwachsen. Du siehst dann dort ein als "versch. Klienten" bezeichnetes lokales Ziel gelistet (falls nicht, siehe unten). Sobald dieses erscheint, kannst Du:

      diff --git a/installer/resources/readme/readme_nl.html b/installer/resources/readme/readme_nl.html index 7392623cc..3c0556905 100644 --- a/installer/resources/readme/readme_nl.html +++ b/installer/resources/readme/readme_nl.html @@ -1,5 +1,5 @@
      -
      +
      English عربية 中文 diff --git a/installer/resources/readme/readme_pt.html b/installer/resources/readme/readme_pt.html index 1b555e632..5c8a4136b 100644 --- a/installer/resources/readme/readme_pt.html +++ b/installer/resources/readme/readme_pt.html @@ -1,4 +1,4 @@ -
      +
      English diff --git a/installer/resources/readme/readme_zh.html b/installer/resources/readme/readme_zh.html index dbda3c488..f6bb7acf4 100644 --- a/installer/resources/readme/readme_zh.html +++ b/installer/resources/readme/readme_zh.html @@ -1,8 +1,9 @@
      -
      English +
      + English 中文 - عربية
      + عربية Deutsch Français Español From f8e647796b1a5cc296f1bc0bb1f47824b10ffe73 Mon Sep 17 00:00:00 2001 From: hamada Date: Thu, 24 Feb 2011 14:53:33 +0000 Subject: [PATCH 255/463] Add Arabic translation of i2psnark --- apps/i2psnark/locale/messages_ar.po | 893 ++++++++++++++++++++++++++++ 1 file changed, 893 insertions(+) create mode 100644 apps/i2psnark/locale/messages_ar.po diff --git a/apps/i2psnark/locale/messages_ar.po b/apps/i2psnark/locale/messages_ar.po new file mode 100644 index 000000000..077173ab7 --- /dev/null +++ b/apps/i2psnark/locale/messages_ar.po @@ -0,0 +1,893 @@ +# 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: 2011-02-20 11:53+0000\n" +"PO-Revision-Date: 2011-02-24 14:50-0000\n" +"Last-Translator: hamada \n" +"Language-Team: duck \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ../java/src/org/klomp/snark/SnarkManager.java:307 +#, java-format +msgid "Total uploaders limit changed to {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:309 +#, java-format +msgid "Minimum total uploaders limit is {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:321 +#, java-format +msgid "Up BW limit changed to {0}KBps" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:323 +#, java-format +msgid "Minimum up bandwidth limit is {0}KBps" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:335 +#, java-format +msgid "Startup delay changed to {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:386 +msgid "I2CP and tunnel changes will take effect after stopping all torrents" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:393 +msgid "Disconnecting old I2CP destination" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:397 +#, java-format +msgid "I2CP settings changed to {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:402 +msgid "Unable to connect with the new settings, reverting to the old I2CP settings" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:406 +msgid "Unable to reconnect with the old settings!" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:408 +msgid "Reconnected on the new I2CP destination" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:418 +#, java-format +msgid "I2CP listener restarted for \"{0}\"" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:429 +msgid "Enabled autostart" +msgstr "تشغيل عند البداية" + +#: ../java/src/org/klomp/snark/SnarkManager.java:431 +msgid "Disabled autostart" +msgstr "الغاء التشغيل عند البداية" + +#: ../java/src/org/klomp/snark/SnarkManager.java:437 +msgid "Enabled open trackers - torrent restart required to take effect." +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:439 +msgid "Disabled open trackers - torrent restart required to take effect." +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:447 +msgid "Open Tracker list changed - torrent restart required to take effect." +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:454 +#, java-format +msgid "{0} theme loaded, return to main i2psnark page to view." +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:461 +msgid "Configuration unchanged." +msgstr "لم تتغير الاعدادات" + +#: ../java/src/org/klomp/snark/SnarkManager.java:471 +#, java-format +msgid "Unable to save the config to {0}" +msgstr "فشل في حفظ الاعدادات {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:536 +msgid "Connecting to I2P" +msgstr "جاري الاتصال بشبكة I2P" + +#: ../java/src/org/klomp/snark/SnarkManager.java:539 +msgid "Error connecting to I2P - check your I2CP settings!" +msgstr "فشل في الاتصال ب I2P - تخقق من اعدادات I2CP !" + +#: ../java/src/org/klomp/snark/SnarkManager.java:548 +#, java-format +msgid "Error: Could not add the torrent {0}" +msgstr "خطأ: فشل في اضافة التورنت {0}" + +#. catch this here so we don't try do delete it below +#: ../java/src/org/klomp/snark/SnarkManager.java:570 +#, java-format +msgid "Cannot open \"{0}\"" +msgstr "فشل في فتح \"{0}\"" + +#. TODO - if the existing one is a magnet, delete it and add the metainfo instead? +#: ../java/src/org/klomp/snark/SnarkManager.java:586 +#: ../java/src/org/klomp/snark/SnarkManager.java:661 +#: ../java/src/org/klomp/snark/SnarkManager.java:716 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971 +#, java-format +msgid "Torrent with this info hash is already running: {0}" +msgstr "" + +#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); +#: ../java/src/org/klomp/snark/SnarkManager.java:593 +#, java-format +msgid "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers only." +msgstr "" + +#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); +#: ../java/src/org/klomp/snark/SnarkManager.java:598 +#, java-format +msgid "Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is enabled before starting this torrent." +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:619 +#, java-format +msgid "Torrent in \"{0}\" is invalid" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:624 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1994 +#, java-format +msgid "ERROR - Out of memory, cannot create torrent from {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:635 +#, java-format +msgid "Torrent added and started: \"{0}\"" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:637 +#, java-format +msgid "Torrent added: \"{0}\"" +msgstr "تمت اضافة: \"{0}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:489 +#, java-format +msgid "Fetching {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:675 +#, java-format +msgid "We have no saved peers and no other torrents are running. Fetch of {0} will not succeed until you start another torrent." +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:679 +#, java-format +msgid "Adding {0}" +msgstr "اضافة {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:726 +#: ../java/src/org/klomp/snark/SnarkManager.java:749 +#: ../java/src/org/klomp/snark/SnarkManager.java:1174 +#, java-format +msgid "Failed to copy torrent file to {0}" +msgstr "فشل في نسخ التورنت الى {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:972 +#, java-format +msgid "Too many files in \"{0}\" ({1}), deleting it!" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:974 +#, java-format +msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:976 +#, java-format +msgid "No pieces in \"{0}\", deleting it!" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:978 +#, java-format +msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:980 +#, java-format +msgid "Pieces are too large in \"{0}\" ({1}B), deleting it." +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:981 +#, java-format +msgid "Limit is {0}B" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:989 +#, java-format +msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1005 +#, java-format +msgid "Error: Could not remove the torrent {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1026 +#: ../java/src/org/klomp/snark/SnarkManager.java:1044 +#, java-format +msgid "Torrent stopped: \"{0}\"" +msgstr "تورنت متوقف: \"{0}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1065 +#, java-format +msgid "Torrent removed: \"{0}\"" +msgstr "تورنت محذوف: \"{0}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1073 +#, java-format +msgid "Adding torrents in {0}" +msgstr "اضف تورنت في {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1122 +#, java-format +msgid "Download finished: {0}" +msgstr "انتهى التحميل: {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1170 +#, java-format +msgid "Metainfo received for {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1171 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:524 +#, java-format +msgid "Starting up torrent {0}" +msgstr "بداية التورنت {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1225 +msgid "Unable to connect to I2P!" +msgstr "فشل في اضافة I2P!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1231 +#, java-format +msgid "Unable to add {0}" +msgstr "فشل في اضافة {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:205 +msgid "I2PSnark - Anonymous BitTorrent Client" +msgstr "I2PSnark - برنامج مشاركة ملفات التورنت المجهول" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:218 +msgid "Torrents" +msgstr "تورنت" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1024 +msgid "I2PSnark" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:225 +msgid "Refresh page" +msgstr "أنعش الصفحة" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:230 +msgid "Forum" +msgstr "منتدى" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1715 +msgid "Status" +msgstr "الحالة" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:292 +msgid "Hide Peers" +msgstr "اخفاء النظائر" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:299 +msgid "Show Peers" +msgstr "أظهر النظائر" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1639 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1655 +msgid "Torrent" +msgstr "تورنت" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310 +msgid "Estimated time remaining" +msgstr "تقدير للوقت الباقي" + +#. Translators: Please keep short or translate as " " +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:313 +msgid "ETA" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317 +msgid "Downloaded" +msgstr "محمل" + +#. Translators: Please keep short or translate as " " +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:320 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +msgid "RX" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:324 +msgid "Uploaded" +msgstr "رفع" + +#. Translators: Please keep short or translate as " " +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344 +msgid "TX" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:332 +msgid "Down Rate" +msgstr "" + +#. Translators: Please keep short or translate as " " +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:337 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 +msgid "Rate" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342 +msgid "Up Rate" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:364 +msgid "Stop all torrents and the I2P tunnel" +msgstr "توقيف جمبع التورنت و النفق I2P" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:366 +msgid "Stop All" +msgstr "توقيف الجمبع" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:375 +msgid "Start all torrents and the I2P tunnel" +msgstr "شغل جمبع التورنت و النفق I2P" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377 +msgid "Start All" +msgstr "شغل الجمبع" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:396 +msgid "No torrents loaded." +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:401 +msgid "Totals" +msgstr "مجموع" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403 +#, java-format +msgid "1 torrent" +msgid_plural "{0} torrents" +msgstr[0] "" +msgstr[1] "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:406 +#, java-format +msgid "1 connected peer" +msgid_plural "{0} connected peers" +msgstr[0] "" +msgstr[1] "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:495 +#, java-format +msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:543 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 +#, java-format +msgid "Magnet deleted: {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:551 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:576 +#, java-format +msgid "Torrent file deleted: {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:592 +#, java-format +msgid "Data file deleted: {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#, java-format +msgid "Data file could not be deleted: {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 +#, java-format +msgid "Data dir deleted: {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:636 +msgid "Error creating torrent - you must select a tracker" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:652 +#, java-format +msgid "Torrent created for \"{0}\"" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:654 +#, java-format +msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\"" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:656 +#, java-format +msgid "Error creating a torrent for \"{0}\"" +msgstr "فشل في انشاء تورنت لـ \"{0}\"" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:659 +#, java-format +msgid "Cannot create a torrent for the nonexistent data: {0}" +msgstr "لا يمكن انشاء تورنت لبيانات غير موجودة: {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:662 +msgid "Error creating torrent - you must enter a file or directory" +msgstr "فشل في انشاء تورنت - عليك اختيار ملف أو مجلد" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:665 +msgid "Stopping all torrents and closing the I2P tunnel." +msgstr "توقيف جميع التورنت و قفل النفق I2P" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676 +msgid "I2P tunnel closed." +msgstr "تم قفل النفق" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:679 +msgid "Opening the I2P tunnel and starting all torrents." +msgstr "فتح النفق واطلاق جميع التورنت" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:802 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:807 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:813 +msgid "Tracker Error" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:805 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:825 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:842 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:846 +#, java-format +msgid "1 peer" +msgid_plural "{0} peers" +msgstr[0] "" +msgstr[1] "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:818 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823 +msgid "Seeding" +msgstr "بشارك" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:827 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1661 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766 +msgid "Complete" +msgstr "اكتمل" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:830 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:835 +msgid "OK" +msgstr "موافق" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:844 +msgid "Stalled" +msgstr "متوقف" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:848 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:851 +msgid "No Peers" +msgstr "لا بوجد نظائر" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:853 +msgid "Stopped" +msgstr "متوقف" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:885 +msgid "Torrent details" +msgstr "تفاصيل التورنت" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:897 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1156 +msgid "Info" +msgstr "معلومات" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:912 +msgid "View files" +msgstr "أظهر الملفات" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:914 +msgid "Open file" +msgstr "فتح ملف" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956 +msgid "Stop the torrent" +msgstr "قف التورنت" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958 +msgid "Stop" +msgstr "قف" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +msgid "Start the torrent" +msgstr "ابدأ التورنت" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 +msgid "Start" +msgstr "ابدأ" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:979 +msgid "Remove the torrent from the active list, deleting the .torrent file" +msgstr "حذف التورنت من القائمة، حذف ملف .torrent" + +#. Can't figure out how to escape double quotes inside the onclick string. +#. Single quotes in translate strings with parameters must be doubled. +#. Then the remaining single quite must be escaped +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:984 +#, java-format +msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 +msgid "Remove" +msgstr "حذف" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:997 +msgid "Delete the .torrent file and the associated data file(s)" +msgstr "خذف ملف التورنت و الملفات المرتبطة به" + +#. Can't figure out how to escape double quotes inside the onclick string. +#. Single quotes in translate strings with parameters must be doubled. +#. Then the remaining single quite must be escaped +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1002 +#, java-format +msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1005 +msgid "Delete" +msgstr "حذف" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1038 +msgid "Unknown" +msgstr "غير معروف" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1050 +msgid "Seed" +msgstr "شارك" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +msgid "Uninteresting (The peer has no pieces we need)" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1075 +msgid "Choked (The peer is not allowing us to request pieces)" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1095 +msgid "Uninterested (We have no pieces the peer needs)" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097 +msgid "Choking (We are not allowing the peer to request pieces)" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155 +#, java-format +msgid "Details at {0} tracker" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1184 +msgid "Add Torrent" +msgstr "أضف تورنت" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1186 +msgid "From URL" +msgstr "من عنوان" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1189 +msgid "Enter the torrent file download URL (I2P only), magnet link, or maggot link" +msgstr "ادخل عنوان التورنت لتحميله (فقط على شبكة i2p)" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194 +msgid "Add torrent" +msgstr "أضف تورنت" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1197 +#, java-format +msgid "You can also copy .torrent files to: {0}." +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1199 +msgid "Removing a .torrent will cause it to stop." +msgstr "سيتم القاف التورنت عند حذف الملف torrent." + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1222 +msgid "Create Torrent" +msgstr "أنشئ تورنت" + +#. out.write("From file:
      \n"); +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1225 +msgid "Data to seed" +msgstr "البيانات المشاركة" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229 +msgid "File or directory to seed (must be within the specified path)" +msgstr "الملف او المجلد الذي ترغب في مشاركته " + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1680 +msgid "Tracker" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233 +msgid "Select a tracker" +msgstr "" + +#. out.write(_("Open trackers and DHT only")); +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1238 +msgid "Open trackers only" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253 +msgid "or" +msgstr "أو" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1256 +msgid "Specify custom tracker announce URL" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1259 +msgid "Create torrent" +msgstr "أنشئ تورنت" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1416 +msgid "Configuration" +msgstr "اعدادات" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 +msgid "Data directory" +msgstr "مجلد البيانات" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283 +msgid "Edit i2psnark.config and restart to change" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287 +msgid "Auto start" +msgstr "ابدأ عند البداية" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +msgid "If checked, automatically start torrents that are added" +msgstr "اذا تم تفعيل، يقوم بتشغيل التورنت تلقائيا عند اضافته" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295 +msgid "Theme" +msgstr "تيمة" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1308 +msgid "Startup delay" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1310 +msgid "minutes" +msgstr "دقائق" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1334 +msgid "Total uploader limit" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1337 +msgid "peers" +msgstr "النظائر" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 +msgid "Up bandwidth limit" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +msgid "Half available bandwidth recommended." +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346 +msgid "View or change router bandwidth" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 +msgid "Use open trackers also" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354 +msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 +msgid "Open tracker announce URLs" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1370 +msgid "Inbound Settings" +msgstr "اعدادت الاتصال الداخلي" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1376 +msgid "Outbound Settings" +msgstr "اعدادت الاتصال الخارجي" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1384 +msgid "I2CP host" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1389 +msgid "I2CP port" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1402 +msgid "I2CP options" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1407 +msgid "Save configuration" +msgstr "حفظ الاعدادات" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 +#, java-format +msgid "Invalid magnet URL {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1466 +#, java-format +msgid "Invalid info hash in magnet URL {0}" +msgstr "" + +#. * dummies for translation +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1496 +#, java-format +msgid "1 hop" +msgid_plural "{0} hops" +msgstr[0] "" +msgstr[1] "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1497 +#, java-format +msgid "1 tunnel" +msgid_plural "{0} tunnels" +msgstr[0] "" +msgstr[1] "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659 +msgid "Completion" +msgstr "انتهاء" + +#. else unknown +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712 +msgid "Size" +msgstr "الحجم" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1668 +msgid "Files" +msgstr "الملفات" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1670 +msgid "Pieces" +msgstr "القطع" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671 +msgid "Piece size" +msgstr "حجم القطعة" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1693 +msgid "Magnet link" +msgstr "وصلة مغناطيس" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1710 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +msgid "Directory" +msgstr "المجلد" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 +msgid "Priority" +msgstr "الأولوية" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1724 +msgid "Up to higher level directory" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1754 +msgid "Torrent not found?" +msgstr "تورنت غير موجود؟" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 +msgid "File not found in torrent?" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1776 +msgid "complete" +msgstr "اكتمل" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1777 +msgid "bytes remaining" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1802 +msgid "Open" +msgstr "فتح" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1828 +msgid "High" +msgstr "عالي" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1833 +msgid "Normal" +msgstr "عادي" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838 +msgid "Skip" +msgstr "تجاوز" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1847 +msgid "Save priorities" +msgstr "حفظ الأولويات" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#, java-format +msgid "Torrent fetched from {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1984 +#, java-format +msgid "Torrent already running: {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1986 +#, java-format +msgid "Torrent already in the queue: {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1992 +#, java-format +msgid "Torrent at {0} was not valid" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 +#, java-format +msgid "Torrent was not retrieved from {0}" +msgstr "" + From bb7d0287d99aa76692c1be011e69af9eface5350 Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 24 Feb 2011 15:45:18 +0000 Subject: [PATCH 256/463] * i2psnark: - Fix delete and remove buttons for Opera and w3m (thx xiake) - Stop torrent if no valid trackers - Fix war build dependencies --- apps/i2psnark/java/build.xml | 2 +- .../java/src/org/klomp/snark/TrackerClient.java | 6 ++++-- .../src/org/klomp/snark/web/I2PSnarkServlet.java | 12 ++++++++---- history.txt | 6 ++++++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- 5 files changed, 20 insertions(+), 8 deletions(-) diff --git a/apps/i2psnark/java/build.xml b/apps/i2psnark/java/build.xml index b05b7339a..f2df5bc71 100644 --- a/apps/i2psnark/java/build.xml +++ b/apps/i2psnark/java/build.xml @@ -86,7 +86,7 @@ - + diff --git a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java index ad4cdae39..85a39f748 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java +++ b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java @@ -185,10 +185,12 @@ public class TrackerClient extends I2PAppThread } if (trackers.isEmpty()) { - // FIXME really need to get this message to the gui stop = true; - _log.error("No valid trackers for infoHash: " + infoHash); + // FIXME translate + SnarkManager.instance().addMessage("No valid trackers for " + this.snark.getBaseName() + " - enable opentrackers?"); + _log.error("No valid trackers for " + this.snark.getBaseName()); // FIXME keep going if DHT enabled + this.snark.stopTorrent(); return; } diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 77207ec08..92a82de3e 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -348,8 +348,9 @@ public class I2PSnarkServlet extends Default { out.write("\n
    \n"); -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2107 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2106 msgid "SUMMARY" msgstr "ZUSAMMENFASSUNG" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:145 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:147 msgid "Dropping tunnel requests: Too slow" msgstr "Ignoriere Tunnelanfragen: zu langsam" #. don't even bother, since we are so overloaded locally -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:352 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:354 msgid "Dropping tunnel requests: Overloaded" msgstr "Ignoriere Tunnelanfragen: überlastet" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:525 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:547 msgid "Rejecting tunnels: Request overload" msgstr "Weise Tunnelanfragen zurück: Überlast an Anfragen" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:550 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:572 msgid "Rejecting tunnels: Connection limit" msgstr "Weise Tunnelanfragen zurück: Verbindungslimit erreicht" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:744 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:788 msgid "Dropping tunnel requests: High load" msgstr "Ignoriere Tunnelanfragen: Hohe Last" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:753 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:797 msgid "Dropping tunnel requests: Queue time" msgstr "Ignoriere Tunnelanfragen: zu lange Warteschlange" @@ -1474,10 +1482,11 @@ msgstr "Sambia" msgid "Zimbabwe" msgstr "Simbabwe" -#: ../java/src/net/i2p/router/web/CSSHelper.java:57 +#: ../java/src/net/i2p/router/web/CSSHelper.java:58 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:35 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:37 #: ../java/strings/Strings.java:29 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:119 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:233 msgid "I2P Router Console" msgstr "I2P-Routerkonsole" @@ -1503,9 +1512,8 @@ msgstr "Speichere Klienteneinstellungen" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:39 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:405 -#, fuzzy msgid "Save Interface Configuration" -msgstr "Speichere Klient-Einstellungen" +msgstr "Speichere Interface-Einstellungen" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 @@ -1544,13 +1552,14 @@ msgstr "Fehler beim Stoppen des Zusatzprogramms {0}" #. label (IE) #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:124 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:253 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:255 msgid "Start" msgstr "Starten" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:143 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:49 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:61 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:33 msgid "Unsupported" msgstr "Nicht unterstützt" @@ -1593,7 +1602,7 @@ msgid "Plugin configuration saved." msgstr "Einstellungen des Zusatzprogramms gespeichert." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:271 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:122 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 msgid "WebApp" msgstr "WebApplikation" @@ -1643,12 +1652,11 @@ msgid "Error starting plugin {0}" msgstr "Fehler beim Starten des Zusatzprogramms {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 -#, fuzzy msgid "Interface configuration saved successfully - restart required to take effect." -msgstr "Klient-Einstellungen erfolgreich gespeichert - Neustart zum Übernehmen erforderlich" +msgstr "Interface-Einstellungen erfolgreich gespeichert - Neustart zum Übernehmen erforderlich" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:85 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:256 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258 msgid "Edit" msgstr "Bearbeiten" @@ -1662,80 +1670,80 @@ msgid "Class and arguments" msgstr "Klasse und Argumente" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:122 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:146 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 msgid "Control" msgstr "Kontrolle" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:122 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:146 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 msgid "Run at Startup?" msgstr "Beim Starten des Systems mitstarten?" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:122 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:146 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:195 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:197 msgid "Description" msgstr "Beschreibung" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:146 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 msgid "Plugin" msgstr "Zusatzprogramm" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:159 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:161 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185 msgid "Version" msgstr "Version" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:161 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:163 msgid "Signed by" msgstr "unterschrieben von" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:178 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:180 msgid "Date" msgstr "Datum" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:184 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:186 msgid "Author" msgstr "Autor" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:200 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:202 msgid "License" msgstr "Lizenz" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:205 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:207 msgid "Website" msgstr "Webseite" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:210 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:212 msgid "Update link" msgstr "Adresse des Updates" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:260 msgid "Stop" msgstr "Stopp" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:260 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:262 #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:78 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:313 msgid "Check for updates" msgstr "Auf Aktualisierungen prüfen" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:261 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:263 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:242 msgid "Update" msgstr "Aktualisierung" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:266 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:268 #, java-format msgid "Are you sure you want to delete {0}?" msgstr "Sind Sie sicher, dass Sie {0} löschen wollen?" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:268 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:270 msgid "Delete" msgstr "löschen" @@ -1883,11 +1891,13 @@ msgstr "Erweitert" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:48 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:264 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:29 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:34 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:360 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:516 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:307 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:352 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:377 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:344 msgid "Save changes" @@ -2038,6 +2048,24 @@ msgstr "ungültige Geschwindigkeitsangabe" msgid "Bad capacity value" msgstr "ungültiger Wert für die Kapazität" +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:17 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 +msgid "Save changes and reseed now" +msgstr "Änderungen speichern und Reseed beginnen" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:21 +msgid "Reseeding is already in progress" +msgstr "Reseed läuft bereits" + +#. skip the nonce checking in ReseedHandler +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:24 +msgid "Starting reseed process" +msgstr "Beginne den Reseed" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:66 +msgid "Configuration saved successfully." +msgstr "Einstellungen erfolgreich gespeichert" + #. 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 @@ -2159,64 +2187,36 @@ msgid "Dump threads" msgstr "Threadliste ausgeben" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:91 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 -msgid "Show systray icon" -msgstr "Systemtray-Icon anzeigen" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96 -msgid "System tray icon enabled." -msgstr "Systemtray-Icon aktiviert" - -#: ../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 "Systemtry-Icon wird auf diesem System leider nicht unterstützt." - -#: ../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 "Warnung: kann den Systemtray-Manager nicht erreichen" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:103 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 -msgid "Hide systray icon" -msgstr "Systemtray-Icon deaktivieren" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:108 -msgid "System tray icon disabled." -msgstr "Systemtry-Icon deaktiviert" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:115 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:363 msgid "View console on startup" msgstr "Zeige die Konsole nach dem Starten" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:117 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:93 msgid "Console is to be shown on startup" msgstr "Konsole wird nach dem Starten angezeigt" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:118 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:94 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:365 msgid "Do not view console on startup" msgstr "Zeige Konsole beim Starten nicht" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:120 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96 msgid "Console is not to be shown on startup" msgstr "Konsole wird beim Starten nicht gezeigt" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:129 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:105 msgid "Service installed" msgstr "Service wurde installiert" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:131 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:107 msgid "Warning: unable to install the service" msgstr "Warnung: Service konnte nicht installiert werden" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:137 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:113 msgid "Service removed" msgstr "Service wurde entfernt" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:139 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:115 msgid "Warning: unable to remove the service" msgstr "Warnung: Service konnte nicht entfernt werden" @@ -2328,38 +2328,42 @@ msgid "Refresh the page to view." msgstr "Laden Sie die Seite neu, damit die Änderungen sichtbar werden!" #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +msgid "Arabic" +msgstr "Arabisch" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "English" msgstr "Englisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "French" msgstr "Französisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "German" msgstr "Deutsch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "Spanish" msgstr "Spanisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Dutch" msgstr "Niederländisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Portuguese" msgstr "Portugiesisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Russian" msgstr "Russisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:54 msgid "Chinese" msgstr "Chinesisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:54 msgid "Swedish" msgstr "Schwedisch" @@ -2725,127 +2729,127 @@ msgstr "Lade Zusatzprogramm herunter" msgid "{0}B transferred" msgstr "{0}Bytes übertragen" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:152 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:153 msgid "Plugin downloaded" msgstr "Zusatzprogramm heruntergeladen" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:157 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:344 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:158 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:356 #, java-format msgid "Cannot create plugin directory {0}" msgstr "Kann kein Verzeichnis für das Zusatzprogramm {0} anlegen" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:166 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:167 #: ../java/src/net/i2p/router/web/UpdateHandler.java:298 #, java-format msgid "from {0}" msgstr "von {0}" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:176 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:177 #, java-format msgid "Plugin from {0} is corrupt" msgstr "Zusatzprogramm von {0} ist beschädigt." -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:187 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:188 #, java-format msgid "Plugin from {0} does not contain the required configuration file" msgstr "Zusatzprogramm von {0} enthält nicht die benötigte Konfigurationsdatei" #. updateStatus("" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + ""); -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:200 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:201 #, java-format msgid "Plugin from {0} contains an invalid key" msgstr "Zusatzprogramm von {0} enthält einen ungültigen Schlüssel" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:219 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:228 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:237 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:225 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:235 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:249 #, java-format msgid "Plugin signature verification of {0} failed" msgstr "Überprüfung der Signatur des Zusatzprogramms {0} ist fehlgeschlagen" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:252 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:264 #, java-format msgid "Plugin from {0} has invalid name or version" msgstr "Zusatzprogramm von {0} hat einen ungültigen Namen oder Version" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:257 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:269 #, java-format msgid "Plugin {0} has mismatched versions" msgstr "Zusatzprogramm {0} hat keine passende Version" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:265 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:277 #, java-format msgid "This plugin requires I2P version {0} or higher" msgstr "Dieses Zusatzprogramm benötigt I2P-Version {0} oder höher" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:273 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:285 #, java-format msgid "This plugin requires Java version {0} or higher" msgstr "Dieses Zusatzprogramm benötigt Java-Version {0} oder neuer" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:281 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 msgid "Downloaded plugin is for new installs only, but the plugin is already installed" msgstr "Heruntergeladenes Zusatzprogramm lässt sich nur neu installieren, jedoch ist es ist bereits installiert." -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:305 msgid "Installed plugin does not contain the required configuration file" msgstr "Das installierte Zusatzprogramm enthält nicht die benötigte Konfigurationsdatei" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:301 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:313 msgid "Signature of downloaded plugin does not match installed plugin" msgstr "Die Signatur des heruntergeladenen Zusatzprogramms stimmt nicht mit dem installierten Zusatzprogramm überein." -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:308 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:320 #, java-format msgid "Downloaded plugin version {0} is not newer than installed plugin" msgstr "Version {0} des heruntergeladenen Zusatzprogramms ist nicht neuer als die installierte Version" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:315 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:327 #, java-format msgid "Plugin update requires installed plugin version {0} or higher" msgstr "Aktualisierung des Zusatzprogramms benötigt Version {0} oder höher des Zusatzprogramms" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:322 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:334 #, java-format msgid "Plugin update requires installed plugin version {0} or lower" msgstr "Aktualisierung des Zusatzprogramms benötigt installierte Version {0} oder älter des Zusatzprogramms" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:339 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351 msgid "Plugin is for upgrades only, but the plugin is not installed" msgstr "Dieses Zusatzprogramm ist nur für Aktualisierungen, aber das Zusatzprogramm ist noch nicht installiert" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:352 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:364 #, java-format msgid "Failed to install plugin in {0}" msgstr "Installation des Zusatzprogramms in {0} ist fehlgeschlagen" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:359 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:371 #, java-format msgid "Plugin {0} installed, router restart required" msgstr "Zusatzprogramm {0} installiert, Neustart des Routers erforderlich" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:361 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:373 #, java-format msgid "Plugin {0} installed" msgstr "Zusatzprogramm {0} wurde installiert" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:379 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:391 #, java-format msgid "Plugin {0} installed and started" msgstr "Zusatzprogramm {0} installiert und gestartet" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:382 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:394 #, java-format msgid "Plugin {0} installed but failed to start, check logs" msgstr "Zusatzprogramm {0} wurde installiert konnte jedoch nicht gestartet werden. Überprüfen Sie die Berichte!" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:384 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:396 #, java-format msgid "Plugin {0} installed but failed to start" msgstr "Zusatzprogramm {0} ist installiert, startet jedoch nicht" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:394 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:406 #, java-format msgid "Failed to download plugin from {0}" msgstr "Konnte Zusatzprogramm von {0} nicht herunterladen" @@ -3169,37 +3173,44 @@ msgstr "Mittelwert" msgid "Highest average" msgstr "höchster Durchscnittslwert" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:202 +#. breaking the sentence like before makes translation in my language impossible. +#: ../java/src/net/i2p/router/web/StatsGenerator.java:201 #, java-format -msgid "in this period which ended {0} ago." -msgstr "innerhalb dieser Periode, welche vor {0} endete." +msgid "There were {0} event(s) in this period" +msgstr "Es gab {0} Vorkommnis(se) in dieser Zeitspanne" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:204 +#. buf.append(' '); +#: ../java/src/net/i2p/router/web/StatsGenerator.java:203 +#, java-format +msgid " which ended {0} ago." +msgstr ", welche vor {0} endete." + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:205 msgid "No events" msgstr "keine Ereignisse" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:210 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:211 msgid "Average event count" msgstr "druchschnittliche Anzahl an Ereignissen" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:212 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:213 msgid "Events in peak period" msgstr "Ereignisse im Spitzen-Zeitintervall" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:220 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:221 msgid "Graph Data" msgstr "Daten graphisch darstellen" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:222 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:223 msgid "Graph Event Count" msgstr "Ereignisse graphisch darstellen" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:225 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:226 msgid "Export Data as XML" msgstr "Daten als XML exportieren" #. Display the strict average -#: ../java/src/net/i2p/router/web/StatsGenerator.java:230 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:231 msgid "Lifetime average value" msgstr "Durchschnitt über Lebenszeit" @@ -3754,23 +3765,23 @@ msgid "Failed copy to {0}" msgstr "Kopieren nach {0} fehlgeschlagen" #: ../java/src/net/i2p/router/web/UpdateHandler.java:184 -#, fuzzy, java-format +#, java-format msgid "Updating from {0}" -msgstr "Aktualisiere UDP-Port von" +msgstr "Aktualisiere von {0}" #: ../java/src/net/i2p/router/web/UpdateHandler.java:253 -#, fuzzy, java-format +#, java-format msgid "No new version found at {0}" -msgstr "Keine neue Version des Zusatzprogrammes {0} verfügbar" +msgstr "Keine neue Version unter {0} gefunden" #: ../java/src/net/i2p/router/web/UpdateHandler.java:281 msgid "Update verified" msgstr "Aktualisierung verifiziert" #: ../java/src/net/i2p/router/web/UpdateHandler.java:307 -#, fuzzy, java-format +#, java-format msgid "Transfer failed from {0}" -msgstr "Übertragung fehlgeschlagen" +msgstr "Übertragung von {0} fehlgeschlagen" #. wars for ConfigClientsHelper #: ../java/strings/Strings.java:12 @@ -4030,6 +4041,7 @@ msgstr "Netzwerkeinstellungen" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:216 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:230 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:216 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:216 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:217 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:216 @@ -4038,6 +4050,7 @@ msgstr "Netzwerkeinstellungen" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:227 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:219 @@ -4062,6 +4075,7 @@ msgstr "Auffrischen {s}" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:234 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:221 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:220 @@ -4070,6 +4084,7 @@ msgstr "Auffrischen {s}" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:231 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:223 @@ -4158,6 +4173,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:403 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:321 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:348 #: ../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:342 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:322 @@ -4171,6 +4187,7 @@ msgstr "IP- und Transport-Einstellungen" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:377 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:306 msgid "The default settings will work for most people." msgstr "Die Standardeinstellungen funktionieren für die meisten Anwender." @@ -4662,60 +4679,56 @@ msgid "All changes require restart to take effect." msgstr "Alle Änderungen erfordern einen Neustart, um aktiv zu werden." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:337 -#, fuzzy msgid "Advanced Client Interface Configuration" -msgstr "Erweiterte I2P-Einstellungen" +msgstr "Erweiterte Einstellungen des Klienten-Interfaces" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:339 msgid "External I2CP (I2P Client Protocol) Interface Configuration" -msgstr "" +msgstr "Eintellungen des externen I2CP-Interfaces (I2P-Klienten-Protokoll)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 msgid "Enabled without SSL" -msgstr "" +msgstr "Aktiviert; ohne SSL" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351 msgid "Enabled with SSL required" -msgstr "" +msgstr "Aktiviert, SSL erforderlich" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 msgid "Disabled - Clients outside this Java process may not connect" -msgstr "" +msgstr "Deaktiviert - Klienten außerhalb dieses Javaprozesses können sich nicht verbinden" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:359 msgid "I2CP Port" -msgstr "" +msgstr "I2CP-Port" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:363 -#, fuzzy msgid "I2CP Interface" -msgstr "Einstellungen" +msgstr "I2CP-Interface" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:379 -#, fuzzy msgid "Authorization" -msgstr "Autor" +msgstr "Autorisation" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:385 -msgid "Requre username and password" -msgstr "" +msgid "Require username and password" +msgstr "Zugangskontrolle per Benutzername und Passwort aktivieren" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:387 -#, fuzzy msgid "Username" -msgstr "Surinam" +msgstr "Benutzername" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:391 msgid "Password" -msgstr "" +msgstr "Passwort" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:397 msgid "Any changes made here must also be configured in the external client." -msgstr "" +msgstr "Alle hier vorgenommenen Änderungen müssen auch in den externen Klienten vorgenommen werden." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:399 msgid "Many clients do not support SSL or authorization." -msgstr "" +msgstr "Vielle Klienten unterstützen kein SSL und/oder keine Authentifikation." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:407 msgid "WebApp Configuration" @@ -4886,6 +4899,71 @@ msgstr "Gesperrte Teilnehmer" msgid "Banned IPs" msgstr "Gesperrte IPs" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:106 +msgid "config reseeding" +msgstr "Reseed-Einstellungen" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:240 +msgid "I2P Reseeding Configuration" +msgstr "I2P-Reseed-Einstellungen" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:300 +msgid "Reseeding Configuration" +msgstr "Reseed-Einstellungen" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:302 +msgid "Reseeding is the bootstrapping process used to find other routers when you first install I2P, or when your router has too few router references remaining." +msgstr "Der Reseed ist ein \"bootstrapping\"-Prozess, der das erstmalige Verbinden mit dem Netzwerk ermöglicht. Hierbei werden andere Netzwerkteilnehmer gefunden. Dies ist nötig nach der Installation oder wenn der Router aus anderen Gründen nur noch sehr wenige Kontakte gespeichert hat." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304 +msgid "If reseeding has failed, you should first check your network connection." +msgstr "Schlägt der Reseed fehl, solltest du zuallererst deine Internetverbindung überprüfen." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:308 +msgid "Change these only if HTTP is blocked by a restrictive firewall, reseed has failed, and you have access to an HTTP proxy." +msgstr "Ändere diese Einstellungen nur wenn HTTP von einer restriktiven Firewall blockiert wird, der Reseed fehlschlägt, und dir ein HTTP-Proxy zur Verfügung steht." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +#, java-format +msgid "See {0} for instructions on reseeding manually." +msgstr "Für einen manuellen Reseed, lies die Anleitung unter {0}!" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +msgid "the FAQ" +msgstr "die FAQ" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:312 +msgid "Reseed URL Selection" +msgstr "Auswahl der Reseed-URL" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 +msgid "Try SSL first then non-SSL" +msgstr "Probiere zunächst SSL, dann nicht-SSL" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:324 +msgid "Use SSL only" +msgstr "nur SSL verwenden" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:330 +msgid "Use non-SSL only" +msgstr "kein SSL verwenden" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:332 +msgid "Reseed URLs" +msgstr "Reseed-URLs" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:336 +msgid "Enable HTTP proxy (not used for SSL)" +msgstr "HTTP-Proxy aktivieren (nicht für SSL)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:340 +msgid "HTTP Proxy Host" +msgstr "IP der HTTP-Brücke" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:344 +msgid "HTTP Proxy Port" +msgstr "Port der HTTP-Brücke" + #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:106 msgid "config service" msgstr "Dienste einrichten" @@ -4938,6 +5016,14 @@ msgstr "(Später werden I2P-Anwendungen auch ihre eigenen Funktionen in den Syst msgid "If you are on windows, you can either enable or disable that icon here." msgstr "Falls Sie Windows nutzen, können Sie hier dieses Symbol aktiveren oder deaktivieren." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 +msgid "Show systray icon" +msgstr "Systemtray-Icon anzeigen" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 +msgid "Hide systray icon" +msgstr "Systemtray-Icon deaktivieren" + #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 msgid "Run on startup" msgstr "Beim Hochfahren starten" @@ -5169,6 +5255,58 @@ msgstr "Aktualisierungen für I2P sind deaktiviert, da Sie (I2P) keine Schreibbe msgid "Save" msgstr "Speichern" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:115 +msgid "Internal Error" +msgstr "interner Fehler" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:117 +msgid "Router Console" +msgstr "I2P-Routerkonsole" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:121 +msgid "Configuration" +msgstr "Einstellungen" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129 +msgid "Sorry! There has been an internal error." +msgstr "Entschuldigung! es gab einen internen Fehler." + +#. note to translators - both parameters are URLs +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:133 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:232 +#, java-format +msgid "Please report bugs on {0} or {1}." +msgstr "Bitte melden Sie Fehler unter {0} oder {1}!" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 +msgid "You may use the username \"guest\" and password \"guest\" if you do not wish to register." +msgstr "Sie können hierfür den Benutzernamen \"guest\" und das Passwort \"guest\" verwenden, wenn Sie sich nicht registrieren wollen." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 +msgid "Please include this information in bug reports" +msgstr "Bitte fügen Sie folgende Informationen dem Bugreport bei!" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:141 +msgid "Error Details" +msgstr "Fehlerdetails" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:143 +#, java-format +msgid "Error {0}" +msgstr "Fehler {0}" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:163 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:228 +msgid "I2P Version and Running Environment" +msgstr "I2P-Version & Laufzeitumgebung" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 +msgid "Note that system information, log timestamps, and log messages may provide clues to your location; please review everything you include in a bug report." +msgstr "Beachten Sie, dass Systeminformationen, Zeitstempel der Berichte sowie die Fehlerberichte selbst Hinweise auf Ihren Standort enthalten können. Bitte überprüfen Sie Fehlerberichte, die Sie einreichen wollen, diesbezüglich!" + #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:117 msgid "Page Not Found" msgstr "Seite nicht gefunden" @@ -5215,28 +5353,6 @@ msgstr "Protokolle" msgid "I2P Router Logs" msgstr "I2P-Router-Protokolle" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:228 -msgid "I2P Version & Running Environment" -msgstr "I2P-Version & Laufzeitumgebung" - -#. note to translators - both parameters are URLs -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:232 -#, java-format -msgid "Please report bugs on {0} or {1}." -msgstr "Bitte melden Sie Fehler unter {0} oder {1}!" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 -msgid "You may use the username \"guest\" and password \"guest\" if you do not wish to register." -msgstr "Sie können hierfür den Benutzernamen \"guest\" und das Passwort \"guest\" verwenden, wenn Sie sich nicht registrieren wollen." - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 -msgid "Please include this information in bug reports" -msgstr "Bitte fügen Sie folgende Informationen dem Bugreport bei!" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 -msgid "Note that system information, log timestamps, and log messages may provide clues to your location; please review everything you include in a bug report." -msgstr "Beachten Sie, dass Systeminformationen, Zeitstempel der Berichte sowie die Fehlerberichte selbst Hinweise auf Ihren Standort enthalten können. Bitte überprüfen Sie Fehlerberichte, die Sie einreichen wollen, diesbezüglich!" - #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:281 msgid "Critical Logs" msgstr "Berichte kritischer Ereignisse" @@ -5297,7 +5413,7 @@ msgstr "Statistiken" msgid "I2P Router Statistics" msgstr "I2P-Router-Statistiken" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:248 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:247 #, java-format msgid "Disable {0} Refresh" msgstr "Alle-{0}-Auffrischen
    ausschalten" @@ -5310,6 +5426,24 @@ msgstr "Tunnel Zusammenfassung" msgid "I2P Tunnel Summary" msgstr "I2P-Tunnel Zusammenfassung" +#~ msgid "" +#~ "Ensure that nothing blocks outbound HTTP, check logs and if nothing helps, read the FAQ about reseeding manually." +#~ msgstr "" +#~ "Stellen Sie bitte sicher, dass nichts ausgehenden HTTP-Transfer " +#~ "blockiert, überprüfen Sie die Berichte, und wenn gar nichts hilft, lesen Sie die FAQ über das manuelle " +#~ "Reseeden." +#~ msgid "System tray icon enabled." +#~ msgstr "Systemtray-Icon aktiviert" +#~ msgid "System tray icon feature not supported on this platform. Sorry!" +#~ msgstr "Systemtry-Icon wird auf diesem System leider nicht unterstützt." +#~ msgid "Warning: unable to contact the systray manager" +#~ msgstr "Warnung: kann den Systemtray-Manager nicht erreichen" +#~ msgid "System tray icon disabled." +#~ msgstr "Systemtry-Icon deaktiviert" #~ msgid "hour" #~ msgstr "Stunde" #~ msgid "minute" From 9cd0e53d0f4bde4c0d03de90d215b35a62dcbda3 Mon Sep 17 00:00:00 2001 From: hamada Date: Sun, 27 Feb 2011 20:02:11 +0000 Subject: [PATCH 265/463] update Arabic translation --- apps/desktopgui/locale/messages_ar.po | 55 ++ apps/i2psnark/locale/messages_ar.po | 54 +- apps/i2ptunnel/locale/messages_ar.po | 762 +++++++++++++++++++++++ apps/routerconsole/locale/messages_ar.po | 10 +- 4 files changed, 849 insertions(+), 32 deletions(-) create mode 100644 apps/desktopgui/locale/messages_ar.po create mode 100644 apps/i2ptunnel/locale/messages_ar.po diff --git a/apps/desktopgui/locale/messages_ar.po b/apps/desktopgui/locale/messages_ar.po new file mode 100644 index 000000000..e908adb70 --- /dev/null +++ b/apps/desktopgui/locale/messages_ar.po @@ -0,0 +1,55 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the desktopgui package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P desktopgui\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-20 11:53+0000\n" +"PO-Revision-Date: 2011-02-26 19:46-0000\n" +"Last-Translator: hamada \n" +"Language-Team: duck \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:23 +msgid "Start I2P" +msgstr "ابدأ I2P" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 +msgid "I2P is starting!" +msgstr "جاري تشغيل I2P" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 +msgid "Starting" +msgstr "جاري البدأ" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:26 +msgid "Launch I2P Browser" +msgstr " تشغيل متصفح I2P" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:50 +msgid "Configure desktopgui" +msgstr "اعدادات" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:67 +msgid "Restart I2P" +msgstr "اعادة تشغيل" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:85 +msgid "Stop I2P" +msgstr "توقيف I2P" + +#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:44 +msgid "Tray icon configuration" +msgstr "اعدادات الأيقونة" + +#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47 +msgid "Should tray icon be enabled?" +msgstr "هل ترغب في تفعيل الأيقونة؟" + diff --git a/apps/i2psnark/locale/messages_ar.po b/apps/i2psnark/locale/messages_ar.po index 077173ab7..da8c690c1 100644 --- a/apps/i2psnark/locale/messages_ar.po +++ b/apps/i2psnark/locale/messages_ar.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-02-20 11:53+0000\n" -"PO-Revision-Date: 2011-02-24 14:50-0000\n" +"PO-Revision-Date: 2011-02-25 21:06-0000\n" "Last-Translator: hamada \n" "Language-Team: duck \n" "MIME-Version: 1.0\n" @@ -61,7 +61,7 @@ msgstr "" #: ../java/src/org/klomp/snark/SnarkManager.java:406 msgid "Unable to reconnect with the old settings!" -msgstr "" +msgstr "فشل في اعادة الاتصال بالاعدادات القديمة!" #: ../java/src/org/klomp/snark/SnarkManager.java:408 msgid "Reconnected on the new I2CP destination" @@ -149,7 +149,7 @@ msgstr "" #: ../java/src/org/klomp/snark/SnarkManager.java:619 #, java-format msgid "Torrent in \"{0}\" is invalid" -msgstr "" +msgstr "تورنت في \"{0}\"غير صحيح" #: ../java/src/org/klomp/snark/SnarkManager.java:624 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1994 @@ -171,7 +171,7 @@ msgstr "تمت اضافة: \"{0}\"" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:489 #, java-format msgid "Fetching {0}" -msgstr "" +msgstr "يحمل {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:675 #, java-format @@ -193,7 +193,7 @@ msgstr "فشل في نسخ التورنت الى {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:972 #, java-format msgid "Too many files in \"{0}\" ({1}), deleting it!" -msgstr "" +msgstr "ملفات كثيرة في \"{0}\" ({1}) تم حذف" #: ../java/src/org/klomp/snark/SnarkManager.java:974 #, java-format @@ -218,12 +218,12 @@ msgstr "" #: ../java/src/org/klomp/snark/SnarkManager.java:981 #, java-format msgid "Limit is {0}B" -msgstr "" +msgstr "حدود {0}B" #: ../java/src/org/klomp/snark/SnarkManager.java:989 #, java-format msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" -msgstr "" +msgstr "تورنت أكبر من {0}B غير مدعومة سيحذف \"{1}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:1005 #, java-format @@ -345,13 +345,13 @@ msgstr "" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:332 msgid "Down Rate" -msgstr "" +msgstr "معدل التحميل" #. Translators: Please keep short or translate as " " #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:337 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 msgid "Rate" -msgstr "" +msgstr "معدل" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342 msgid "Up Rate" @@ -410,19 +410,19 @@ msgstr "" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:576 #, java-format msgid "Torrent file deleted: {0}" -msgstr "" +msgstr "تم خذف ملف التورنت: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:592 #, java-format msgid "Data file deleted: {0}" -msgstr "" +msgstr "خذف ملف البيانات: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 #, java-format msgid "Data file could not be deleted: {0}" -msgstr "" +msgstr "فشل في حذف الملف: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 #, java-format @@ -431,12 +431,12 @@ msgstr "" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:636 msgid "Error creating torrent - you must select a tracker" -msgstr "" +msgstr "فشل في انشاء تورنت - عليك اختيار tracker" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:652 #, java-format msgid "Torrent created for \"{0}\"" -msgstr "" +msgstr "تم انشاء تورنت لـ \"{0}\"" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:654 #, java-format @@ -473,7 +473,7 @@ msgstr "فتح النفق واطلاق جميع التورنت" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:807 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:813 msgid "Tracker Error" -msgstr "" +msgstr "Tracker خطأ" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:805 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809 @@ -562,7 +562,7 @@ msgstr "حذف التورنت من القائمة، حذف ملف .torrent" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:984 #, java-format msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?" -msgstr "" +msgstr "هل أنت متأكد من حذف الملف \\''{0}.تورنت\\'' (سيتم خذف ايضا الملفات التي تم تحميلها) ?" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 msgid "Remove" @@ -632,7 +632,7 @@ msgstr "أضف تورنت" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1197 #, java-format msgid "You can also copy .torrent files to: {0}." -msgstr "" +msgstr "يمكن ايضا .نقل ملفات تورنت الى: {0}." #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1199 msgid "Removing a .torrent will cause it to stop." @@ -658,12 +658,12 @@ msgstr "" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233 msgid "Select a tracker" -msgstr "" +msgstr "اختر tracker" #. out.write(_("Open trackers and DHT only")); #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1238 msgid "Open trackers only" -msgstr "" +msgstr "trackers المفتوحة فقط" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253 msgid "or" @@ -704,7 +704,7 @@ msgstr "تيمة" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1308 msgid "Startup delay" -msgstr "" +msgstr "تأخر البداية" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1310 msgid "minutes" @@ -769,7 +769,7 @@ msgstr "حفظ الاعدادات" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 #, java-format msgid "Invalid magnet URL {0}" -msgstr "" +msgstr "غنوان مغناطيس غير صحيح {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1466 #, java-format @@ -836,7 +836,7 @@ msgstr "تورنت غير موجود؟" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 msgid "File not found in torrent?" -msgstr "" +msgstr "الملف غير موجود في التورنت؟" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1776 msgid "complete" @@ -844,7 +844,7 @@ msgstr "اكتمل" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1777 msgid "bytes remaining" -msgstr "" +msgstr "البايت المتبقية" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1802 msgid "Open" @@ -869,22 +869,22 @@ msgstr "حفظ الأولويات" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 #, java-format msgid "Torrent fetched from {0}" -msgstr "" +msgstr "تم تحميل الملف من {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1984 #, java-format msgid "Torrent already running: {0}" -msgstr "" +msgstr "تورنت مفعل: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1986 #, java-format msgid "Torrent already in the queue: {0}" -msgstr "" +msgstr "تورنت في قائمة الانتظار: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1992 #, java-format msgid "Torrent at {0} was not valid" -msgstr "" +msgstr "تورنت غير صحيح {0} " #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 #, java-format diff --git a/apps/i2ptunnel/locale/messages_ar.po b/apps/i2ptunnel/locale/messages_ar.po new file mode 100644 index 000000000..f5b42006d --- /dev/null +++ b/apps/i2ptunnel/locale/messages_ar.po @@ -0,0 +1,762 @@ +# 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: 2011-02-13 19:26+0000\n" +"PO-Revision-Date: 2011-02-27 18:41-0000\n" +"Last-Translator: hamada \n" +"Language-Team: duck \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474 +#, java-format +msgid "To visit the destination in your host database, click here. To visit the conflicting addresshelper destination, click here." +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931 +msgid "Click a link below to look for an address helper by using a \"jump\" service:" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336 +msgid "internal" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:171 +msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit." +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218 +msgid "Configuration reloaded for all tunnels" +msgstr "" + +#. and give them something to look at in any case +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:230 +msgid "Starting tunnel" +msgstr "ابدأ النفق" + +#. and give them something to look at in any case +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:243 +msgid "Stopping tunnel" +msgstr "توقيف النفق" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:311 +msgid "Configuration changes saved" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314 +msgid "Failed to save configuration" +msgstr "فشل في حفظ الاعدادات" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398 +msgid "New Tunnel" +msgstr "نفق جديد" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418 +msgid "Standard client" +msgstr "مستخدم عادي" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419 +msgid "HTTP client" +msgstr "HTTP client" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420 +msgid "IRC client" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:421 +msgid "Standard server" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:422 +msgid "HTTP server" +msgstr "HTTP خادم" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:423 +msgid "SOCKS 4/4a/5 proxy" +msgstr "SOCKS 4/4a/5 بروكسي" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:424 +msgid "SOCKS IRC proxy" +msgstr "SOCKS IRC بروكسي دردشة" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:425 +msgid "CONNECT/SSL/HTTPS proxy" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:426 +msgid "IRC server" +msgstr "IRC خادم" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:427 +msgid "Streamr client" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:428 +msgid "Streamr server" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:429 +msgid "HTTP bidir" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290 +msgid "Host not set" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:521 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:272 +msgid "Port not set" +msgstr "منفذ غير محدد" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:73 +msgid "I2P Tunnel Manager - Edit Client Tunnel" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:93 +msgid "Edit proxy settings" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:101 +msgid "New proxy settings" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:112 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:112 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:107 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:121 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:242 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:257 +msgid "Name" +msgstr "اسم " + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:116 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:116 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:246 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:279 +msgid "Type" +msgstr "نوع" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:120 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:120 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:386 +msgid "Description" +msgstr "وصف" + +#: ../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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:130 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:132 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:162 +msgid "Access Point" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:150 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:192 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:153 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:167 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:213 +msgid "required" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:159 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:178 +msgid "Reachable by" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:180 +msgid "Outproxies" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:187 +msgid "Tunnel Destination" +msgstr "وجهة النفق" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:199 +msgid "name or destination" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202 +msgid "b32 not recommended" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208 +msgid "Shared Client" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:212 +msgid "(Share tunnels with other clients and irc/httpclients? Change requires restart of client proxy)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:124 +msgid "Auto Start" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:128 +msgid "(Check the Box for 'YES')" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:243 +msgid "Advanced networking options" +msgstr "اعدادات متقدمة للشبكة" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224 +msgid "(NOTE: when this client proxy is configured to share tunnels, then these options are for all the shared proxy clients!)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245 +msgid "Tunnel Options" +msgstr "اعدادات النفق" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:247 +msgid "Length" +msgstr "طول" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:254 +msgid "0 hop tunnel (low anonymity, low latency)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:258 +msgid "1 hop tunnel (medium anonymity, medium latency)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:262 +msgid "2 hop tunnel (high anonymity, high latency)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:266 +msgid "3 hop tunnel (very high anonymity, poor performance)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:256 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:275 +msgid "hop tunnel (very poor performance)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:261 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:280 +msgid "Variance" +msgstr "فرق" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:268 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:287 +msgid "0 hop variance (no randomisation, consistant performance)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:272 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:291 +msgid "+ 0-1 hop variance (medium additive randomisation, subtractive performance)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295 +msgid "+ 0-2 hop variance (high additive randomisation, subtractive performance)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:299 +msgid "+/- 0-1 hop variance (standard randomisation, standard performance)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:284 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:303 +msgid "+/- 0-2 hop variance (not recommended)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:315 +msgid "hop variance" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:320 +msgid "Count" +msgstr "عد" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:327 +msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:331 +msgid "2 inbound, 2 outbound tunnels (standard bandwidth usage, standard reliability)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335 +msgid "3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:344 +msgid "tunnels" +msgstr "أنفاق" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349 +msgid "Backup Count" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:356 +msgid "0 backup tunnels (0 redundancy, no added resource usage)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:360 +msgid "1 backup tunnel each direction (low redundancy, low resource usage)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364 +msgid "2 backup tunnels each direction (medium redundancy, medium resource usage)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:349 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:368 +msgid "3 backup tunnels each direction (high redundancy, high resource usage)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:358 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377 +msgid "backup tunnels" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:384 +msgid "Profile" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:372 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:391 +msgid "interactive connection" +msgstr "اتصال تفاعلي" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:376 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:395 +msgid "bulk connection (downloads/websites/BT)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:378 +msgid "Delay Connect" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:382 +msgid "for request/response connections" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399 +msgid "Router I2CP Address" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401 +msgid "Host" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:396 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:148 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:244 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:266 +msgid "Port" +msgstr "منفذ" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:406 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479 +msgid "Reduce tunnel quantity when idle" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:408 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:422 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:430 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:442 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:452 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:472 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:419 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481 +msgid "Enable" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:412 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:485 +msgid "Reduced tunnel count" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:416 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:489 +msgid "Idle minutes" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420 +msgid "Close tunnels when idle" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:426 +msgid "New Keys on Reopen" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435 +msgid "Disable" +msgstr "ألغي" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440 +msgid "Delay tunnel open until required" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:450 +msgid "Persistent private key" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:456 +msgid "File" +msgstr "ملف" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:460 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:220 +msgid "Local destination" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464 +msgid "(if known)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:470 +msgid "Local Authorization" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490 +msgid "Username" +msgstr "اسم مستخدم" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:480 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:494 +msgid "Password" +msgstr "كلمة السر" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484 +msgid "Outproxy Authorization" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502 +msgid "Jump URL List" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:508 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525 +msgid "Custom options" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:512 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:529 +msgid "NOTE: If tunnel is currently running, most changes will not take effect until tunnel is stopped and restarted." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:514 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531 +msgid "Cancel" +msgstr "الغاء" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535 +msgid "Delete" +msgstr "خذف" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:520 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537 +msgid "Save" +msgstr "حفظ" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:73 +msgid "I2P Tunnel Manager - Edit Server Tunnel" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:93 +msgid "Edit server settings" +msgstr "حرر اعدادات الخادم" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:101 +msgid "New server settings" +msgstr "اعدادت خادم جديد" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:199 +msgid "Website name" +msgstr "اسم موقع جديد" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:203 +msgid "(leave blank for outproxies)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:208 +msgid "Private key file" +msgstr "ملف مفتاح الخاص" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:230 +msgid "Add to local addressbook" +msgstr "أضف الى دفتر العناوين" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:237 +msgid "Hostname Signature" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417 +msgid "Encrypt Leaseset" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423 +msgid "Encryption Key" +msgstr "مفتاح التشفير" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427 +msgid "Generate New Key" +msgstr "أنشئ مفتاح جديد" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429 +msgid "Generate" +msgstr "أنشئ" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:523 +msgid "(Tunnel must be stopped first)" +msgstr "(يجب ايقاف النفق)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433 +msgid "Restricted Access List" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439 +msgid "Whitelist" +msgstr "قائمة بيضاء" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443 +msgid "Blacklist" +msgstr "قائمة سوداء" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447 +msgid "Access List" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451 +msgid "Inbound connection limits (0=unlimited)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453 +msgid "Per client" +msgstr "لكل مستخدم" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455 +msgid "Per minute" +msgstr "لكل دقيقة" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459 +msgid "Per hour" +msgstr "لكل ساعة" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463 +msgid "Per day" +msgstr "لكل يوم" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467 +msgid "Total" +msgstr "المجموع" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475 +msgid "Max concurrent connections (0=unlimited)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493 +msgid "New Certificate type" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495 +msgid "None" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499 +msgid "Hashcash (effort)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505 +msgid "Hashcash Calc Time" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507 +msgid "Estimate" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509 +msgid "Hidden" +msgstr "مخبئ" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513 +msgid "Signed (signed by)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519 +msgid "Modify Certificate" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521 +msgid "Modify" +msgstr "غير" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:71 +msgid "I2P Tunnel Manager - List" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:83 +msgid "Status Messages" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:87 +msgid "Refresh" +msgstr "أنعش" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:91 +msgid "Stop All" +msgstr "أوقف الجمبع" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:95 +msgid "Start All" +msgstr "ابدأ الجميع" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:99 +msgid "Restart All" +msgstr "أعد تشغيل الجمبع" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:103 +msgid "Reload Config" +msgstr "أعد تحميل الاعدادات" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:105 +msgid "I2P Server Tunnels" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:109 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:130 +msgid "Points at" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:111 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:153 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:157 +msgid "Preview" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:113 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:177 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:250 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:297 +msgid "Status" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:163 +msgid "Base32 Address" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:171 +msgid "No Preview" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:184 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:304 +msgid "Starting..." +msgstr "يبدأ..." + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:191 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:205 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:339 +msgid "Stop" +msgstr "أوقف" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:198 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:332 +msgid "Running" +msgstr "يشتغل" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:212 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:346 +msgid "Stopped" +msgstr "متوقف" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:353 +msgid "Start" +msgstr "أبدأ" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:234 +msgid "New server tunnel" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:396 +msgid "Standard" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:238 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:398 +msgid "Create" +msgstr "أنشئ" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:240 +msgid "I2P Client Tunnels" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:248 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:283 +msgid "Interface" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:318 +msgid "Standby" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:363 +msgid "Outproxy" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:367 +msgid "Destination" +msgstr "اتجاه" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:381 +msgid "none" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394 +msgid "New client tunnel" +msgstr "نفق مستخدم جديد" + diff --git a/apps/routerconsole/locale/messages_ar.po b/apps/routerconsole/locale/messages_ar.po index 9c7735269..f80dd6091 100644 --- a/apps/routerconsole/locale/messages_ar.po +++ b/apps/routerconsole/locale/messages_ar.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-11-19 18:16+0000\n" -"PO-Revision-Date: 2011-02-23 14:26-0000\n" +"PO-Revision-Date: 2011-02-26 18:15-0000\n" "Last-Translator: hamada \n" "Language-Team: hamada@mail.i2p\n" "Language: ar\n" @@ -2573,12 +2573,12 @@ msgstr "الغاية" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:153 #, java-format msgid "Expires in {0}" -msgstr "" +msgstr "ينتهي في مدة {0}" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:155 #, java-format msgid "Expired {0} ago" -msgstr "" +msgstr "انتهى {0} منذ" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:167 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 @@ -2621,7 +2621,7 @@ msgstr "احصائيات قاعدة البيانات I2P" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 msgid "Count" -msgstr "" +msgstr "عدد" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 msgid "Transports" @@ -4998,7 +4998,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:315 msgid "Router Console Language" -msgstr "" +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." From 7b294811249cff2cce3ac4166a97719383f72d09 Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 1 Mar 2011 13:37:40 +0000 Subject: [PATCH 266/463] updates after review --- apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java | 2 +- apps/i2psnark/java/src/org/klomp/snark/MagnetState.java | 4 ++-- apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java | 2 +- apps/i2psnark/java/src/org/klomp/snark/dht/DHT.java | 2 +- .../java/src/org/klomp/snark/web/I2PSnarkServlet.java | 5 +++-- core/java/src/net/i2p/stat/StatManager.java | 2 +- 6 files changed, 9 insertions(+), 8 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java index 13bda2e55..6f35f66bd 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java +++ b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java @@ -134,7 +134,7 @@ public class I2PSnarkUtil { } /** - * @param KBps + * @param limit KBps */ public void setMaxUpBW(int limit) { _maxUpBW = limit; diff --git a/apps/i2psnark/java/src/org/klomp/snark/MagnetState.java b/apps/i2psnark/java/src/org/klomp/snark/MagnetState.java index e9eb56389..f19f1091a 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/MagnetState.java +++ b/apps/i2psnark/java/src/org/klomp/snark/MagnetState.java @@ -57,7 +57,7 @@ class MagnetState { } /** - * @param call this for a new magnet when you have the size + * Call this for a new magnet when you have the size * @throws IllegalArgumentException */ public void initialize(int size) { @@ -77,7 +77,7 @@ class MagnetState { } /** - * @param Call this for a new magnet when the download is complete. + * Call this for a new magnet when the download is complete. * @throws IllegalArgumentException */ public void setMetaInfo(MetaInfo meta) { diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index 29c6a1ed2..e47ffcc0c 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -644,7 +644,7 @@ public class SnarkManager implements Snark.CompleteListener { * @param name hex or b32 name from the magnet link * @param ih 20 byte info hash * @param trackerURL may be null - * @param udpateStatus should we add this magnet to the config file, + * @param updateStatus should we add this magnet to the config file, * to save it across restarts, in case we don't get * the metadata before shutdown? * @throws RuntimeException via Snark.fatal() diff --git a/apps/i2psnark/java/src/org/klomp/snark/dht/DHT.java b/apps/i2psnark/java/src/org/klomp/snark/dht/DHT.java index a074890b9..6a16e4e60 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/dht/DHT.java +++ b/apps/i2psnark/java/src/org/klomp/snark/dht/DHT.java @@ -54,7 +54,7 @@ public interface DHT { * Non-blocking. * * @param ih the Info Hash (torrent) - * @param peer the peer's Hash + * @param peerHash the peer's Hash */ public void announce(byte[] ih, byte[] peerHash); diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 92a82de3e..788741bd8 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -353,7 +353,7 @@ public class I2PSnarkServlet extends Default { boolean isDegraded = ua != null && (ua.startsWith("Lynx") || ua.startsWith("w3m") || ua.startsWith("ELinks") || ua.startsWith("Dillo")); - boolean noThinsp = isDegraded || ua.startsWith("Opera"); + boolean noThinsp = isDegraded || (ua != null && ua.startsWith("Opera")); if (_manager.util().connected()) { if (isDegraded) out.write(" Date: Tue, 1 Mar 2011 19:32:42 +0000 Subject: [PATCH 267/463] cleanup/fix console build dependencies --- apps/routerconsole/java/build.xml | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/apps/routerconsole/java/build.xml b/apps/routerconsole/java/build.xml index 346fe8ffe..dc686d29c 100644 --- a/apps/routerconsole/java/build.xml +++ b/apps/routerconsole/java/build.xml @@ -63,11 +63,16 @@ - + + + + + + @@ -85,15 +90,16 @@ - - - + + + @@ -117,8 +123,7 @@ - - + @@ -135,6 +140,7 @@ + @@ -164,7 +170,7 @@ - + @@ -265,7 +271,7 @@ - + From 28bd1802b42ae0dccf916a8dad557a4abfbdfe9c Mon Sep 17 00:00:00 2001 From: zzz Date: Wed, 2 Mar 2011 15:41:34 +0000 Subject: [PATCH 268/463] 0.8.4 --- core/java/src/net/i2p/CoreVersion.java | 2 +- history.txt | 2 ++ installer/install.xml | 2 +- installer/resources/news.xml | 25 ++++++------------- .../src/net/i2p/router/RouterVersion.java | 4 +-- 5 files changed, 13 insertions(+), 22 deletions(-) diff --git a/core/java/src/net/i2p/CoreVersion.java b/core/java/src/net/i2p/CoreVersion.java index 1d05325c7..230f55eae 100644 --- a/core/java/src/net/i2p/CoreVersion.java +++ b/core/java/src/net/i2p/CoreVersion.java @@ -16,7 +16,7 @@ package net.i2p; public class CoreVersion { /** deprecated */ public final static String ID = "Monotone"; - public final static String VERSION = "0.8.3"; + public final static String VERSION = "0.8.4"; public static void main(String args[]) { System.out.println("I2P Core version: " + VERSION); diff --git a/history.txt b/history.txt index 590cd5457..44c8a9288 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,5 @@ +* 2011-03-02 0.8.4 released + 2011-02-27 zzz * Console: - Fix numerous readme HTML errors diff --git a/installer/install.xml b/installer/install.xml index e48aa9164..7c28ad1ce 100644 --- a/installer/install.xml +++ b/installer/install.xml @@ -4,7 +4,7 @@ i2p - 0.8.3 + 0.8.4 diff --git a/installer/resources/news.xml b/installer/resources/news.xml index b33b74b3d..c8a740085 100644 --- a/installer/resources/news.xml +++ b/installer/resources/news.xml @@ -1,24 +1,13 @@
    -

    2011-01-24: 0.8.3 Released

    +

    2011-03-02: 0.8.4 Released

    -The 0.8.3 release contains several performance improvements, including reduction of threads and -memory usage, and faster I2CP (client-router) communication. -

    -There is also new SSL router console support -(instructions here), -a new reseed configuration page including HTTP proxy support for those behind restrictive firewalls, -a new I2CP configuration section including I2CP-over-SSL support for remote clients, -a new server connection limits and blacklist configuration section for enhanced DoS protection, -and a new -HTTP proxy jump server configuration section so you may easily add alternative jump servers. -Statistics are now limited by default to reduce memory usage; the full set of statistics may be re-enabled on the -stats configuration page. -There are also bug fixes, of course, so -as usual, upgrading is recommended. +The 0.8.4 release contains some performance improvements and important bug fixes. +Also, i2psnark now supports magnet links. +As usual, upgrading is recommended.

    Please help grow the network. Say hello to the volunteers on the #i2p-help IRC channel. @@ -27,6 +16,6 @@ spread the word, and donate! If you find a bug, please enter a report on trac. We are still looking for volunteers to work on new and existing translations. -Please volunteer on IRC #i2p. +Please volunteer on IRC #i2p-dev.

    diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 601535dbe..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 = 21; + 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 f938cc7b0c5ac6d4d31e04cdbe7149d11c056415 Mon Sep 17 00:00:00 2001 From: zzz Date: Wed, 2 Mar 2011 17:18:37 +0000 Subject: [PATCH 269/463] * BuildHandler: - Limit request queue size - Concurrent request queue - Remove dead code for queued rely handling --- .../i2p/router/tunnel/TunnelDispatcher.java | 3 +- .../i2p/router/tunnel/pool/BuildExecutor.java | 23 +- .../i2p/router/tunnel/pool/BuildHandler.java | 285 ++++++------------ 3 files changed, 100 insertions(+), 211 deletions(-) diff --git a/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java b/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java index 48305513a..8669f8cb5 100644 --- a/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java +++ b/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java @@ -709,7 +709,8 @@ public class TunnelDispatcher implements Service { _validator = new BloomFilterIVValidator(_context, getShareBandwidth(_context)); } - private static int getShareBandwidth(RouterContext ctx) { + /** @return in KBps */ + public static int getShareBandwidth(RouterContext ctx) { int irateKBps = ctx.bandwidthLimiter().getInboundKBytesPerSecond(); int orateKBps = ctx.bandwidthLimiter().getOutboundKBytesPerSecond(); double pct = ctx.router().getSharePercentage(); diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java b/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java index 19505c0c7..b6394dc5c 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java +++ b/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java @@ -27,9 +27,9 @@ import net.i2p.util.Log; */ class BuildExecutor implements Runnable { private final ArrayList _recentBuildIds = new ArrayList(100); - private RouterContext _context; - private Log _log; - private TunnelPoolManager _manager; + private final RouterContext _context; + private final Log _log; + private final TunnelPoolManager _manager; /** list of TunnelCreatorConfig elements of tunnels currently being built */ private final Object _currentlyBuilding; /** indexed by ptcc.getReplyMessageId() */ @@ -37,7 +37,7 @@ class BuildExecutor implements Runnable { /** indexed by ptcc.getReplyMessageId() */ private final ConcurrentHashMap _recentlyBuildingMap; private boolean _isRunning; - private BuildHandler _handler; + private final BuildHandler _handler; private boolean _repoll; private static final int MAX_CONCURRENT_BUILDS = 10; /** accept replies up to a minute after we gave up on them */ @@ -248,8 +248,6 @@ class BuildExecutor implements Runnable { int pendingRemaining = 0; //long loopBegin = 0; - //long beforeHandleInboundReplies = 0; - //long afterHandleInboundReplies = 0; //long afterBuildZeroHop = 0; long afterBuildReal = 0; long afterHandleInbound = 0; @@ -268,10 +266,6 @@ class BuildExecutor implements Runnable { wanted.add(pool); } - //beforeHandleInboundReplies = System.currentTimeMillis(); - _handler.handleInboundReplies(); - //afterHandleInboundReplies = System.currentTimeMillis(); - // allowed() also expires timed out requests (for new style requests) int allowed = allowed(); @@ -327,9 +321,6 @@ class BuildExecutor implements Runnable { _log.debug("Configuring new tunnel " + i + " for " + pool + ": " + cfg); buildTunnel(pool, cfg); realBuilt++; - - // we want replies to go to the top of the queue - _handler.handleInboundReplies(); } else { i--; } @@ -391,10 +382,8 @@ class BuildExecutor implements Runnable { * This prevents a large number of client pools from starving the exploratory pool. * */ - private static class TunnelPoolComparator implements Comparator { - public int compare(Object l, Object r) { - TunnelPool tpl = (TunnelPool) l; - TunnelPool tpr = (TunnelPool) r; + private static class TunnelPoolComparator implements Comparator { + public int compare(TunnelPool tpl, TunnelPool tpr) { if (tpl.getSettings().isExploratory() && !tpr.getSettings().isExploratory()) return -1; if (tpr.getSettings().isExploratory() && !tpl.getSettings().isExploratory()) 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 618395576..afdd0600b 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java +++ b/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java @@ -1,7 +1,7 @@ package net.i2p.router.tunnel.pool; -import java.util.ArrayList; import java.util.List; +import java.util.concurrent.LinkedBlockingQueue; import net.i2p.data.Base64; import net.i2p.data.ByteArray; @@ -27,14 +27,20 @@ import net.i2p.router.peermanager.TunnelHistory; import net.i2p.router.tunnel.BuildMessageProcessor; import net.i2p.router.tunnel.BuildReplyHandler; import net.i2p.router.tunnel.HopConfig; +import net.i2p.router.tunnel.TunnelDispatcher; import net.i2p.stat.Rate; import net.i2p.stat.RateStat; import net.i2p.util.Log; /** + * Handle the received tunnel build message requests and replies, + * including sending responsses to requests, updating the + * lists of our tunnels and participating tunnels, + * and updating stats. + * + * Replies are handled immediately on reception; requests are queued. * * Note that 10 minute tunnel expiration is hardcoded in here. - * */ class BuildHandler { private final RouterContext _context; @@ -42,29 +48,21 @@ class BuildHandler { private final BuildExecutor _exec; private final Job _buildMessageHandlerJob; private final Job _buildReplyMessageHandlerJob; - /** list of BuildMessageState, oldest first */ - private final List _inboundBuildMessages; - /** list of BuildReplyMessageState, oldest first - unused unless HANDLE_REPLIES_INLINE == false */ - private final List _inboundBuildReplyMessages; - /** list of BuildEndMessageState, oldest first - unused unless HANDLE_REPLIES_INLINE == false */ - private final List _inboundBuildEndMessages; + private final LinkedBlockingQueue _inboundBuildMessages; private final BuildMessageProcessor _processor; private final ParticipatingThrottler _throttler; - private static final boolean HANDLE_REPLIES_INLINE = true; - + /** TODO these may be too high, review and adjust */ + private static final int MIN_QUEUE = 12; + private static final int MAX_QUEUE = 96; + public BuildHandler(RouterContext ctx, BuildExecutor exec) { _context = ctx; _log = ctx.logManager().getLog(getClass()); _exec = exec; - _inboundBuildMessages = new ArrayList(16); - if (HANDLE_REPLIES_INLINE) { - _inboundBuildEndMessages = null; - _inboundBuildReplyMessages = null; - } else { - _inboundBuildEndMessages = new ArrayList(16); - _inboundBuildReplyMessages = new ArrayList(16); - } + // Queue size = 12 * share BW / 48K + int sz = Math.min(MAX_QUEUE, Math.max(MIN_QUEUE, TunnelDispatcher.getShareBandwidth(ctx) * MIN_QUEUE / 48)); + _inboundBuildMessages = new LinkedBlockingQueue(sz); _context.statManager().createRateStat("tunnel.reject.10", "How often we reject a tunnel probabalistically", "Tunnels", new long[] { 60*1000, 10*60*1000 }); _context.statManager().createRateStat("tunnel.reject.20", "How often we reject a tunnel because of transient overload", "Tunnels", new long[] { 60*1000, 10*60*1000 }); @@ -94,6 +92,7 @@ class BuildHandler { _context.statManager().createRateStat("tunnel.corruptBuildReply", "", "Tunnels", new long[] { 24*60*60*1000l }); _processor = new BuildMessageProcessor(ctx); + _throttler = new ParticipatingThrottler(ctx); _buildMessageHandlerJob = new TunnelBuildMessageHandlerJob(ctx); _buildReplyMessageHandlerJob = new TunnelBuildReplyMessageHandlerJob(ctx); TunnelBuildMessageHandlerJobBuilder tbmhjb = new TunnelBuildMessageHandlerJobBuilder(); @@ -102,7 +101,6 @@ class BuildHandler { ctx.inNetMessagePool().registerHandlerJobBuilder(TunnelBuildReplyMessage.MESSAGE_TYPE, tbrmhjb); ctx.inNetMessagePool().registerHandlerJobBuilder(VariableTunnelBuildMessage.MESSAGE_TYPE, tbmhjb); ctx.inNetMessagePool().registerHandlerJobBuilder(VariableTunnelBuildReplyMessage.MESSAGE_TYPE, tbrmhjb); - _throttler = new ParticipatingThrottler(ctx); } private static final int MAX_HANDLE_AT_ONCE = 2; @@ -110,122 +108,37 @@ class BuildHandler { /** * Blocking call to handle a few of the pending inbound requests, returning how many - * requests remain after this pass + * requests remain after this pass. This is called by BuildExecutor. */ int handleInboundRequests() { - int dropExpired = 0; - int remaining = 0; - List handled = null; - long beforeFindHandled = System.currentTimeMillis(); - synchronized (_inboundBuildMessages) { - int toHandle = _inboundBuildMessages.size(); - if (toHandle > 0) { - if (toHandle > MAX_HANDLE_AT_ONCE) - toHandle = MAX_HANDLE_AT_ONCE; - handled = new ArrayList(toHandle); - //if (false) { - // for (int i = 0; i < toHandle; i++) // LIFO for lower response time (should we RED it for DoS?) - // handled.add(_inboundBuildMessages.remove(_inboundBuildMessages.size()-1)); - //} else { - // drop any expired messages - long dropBefore = System.currentTimeMillis() - (BuildRequestor.REQUEST_TIMEOUT/4); - do { - BuildMessageState state = (BuildMessageState)_inboundBuildMessages.get(0); - if (state.recvTime <= dropBefore) { - _inboundBuildMessages.remove(0); - dropExpired++; - if (_log.shouldLog(Log.WARN)) - _log.warn("Not even trying to handle/decrypt the request " + state.msg.getUniqueId() - + ", since we received it a long time ago: " + (System.currentTimeMillis() - state.recvTime)); - _context.statManager().addRateData("tunnel.dropLoadDelay", System.currentTimeMillis() - state.recvTime, 0); - } else { - break; - } - } while (!_inboundBuildMessages.isEmpty()); - - if (dropExpired > 0) - _context.throttle().setTunnelStatus(_x("Dropping tunnel requests: Too slow")); + for (int i = 0; i < MAX_HANDLE_AT_ONCE; ) { + BuildMessageState state = _inboundBuildMessages.poll(); + if (state == null) + return 0; + long dropBefore = System.currentTimeMillis() - (BuildRequestor.REQUEST_TIMEOUT/4); + if (state.recvTime <= dropBefore) { + if (_log.shouldLog(Log.WARN)) + _log.warn("Not even trying to handle/decrypt the request " + state.msg.getUniqueId() + + ", since we received it a long time ago: " + (System.currentTimeMillis() - state.recvTime)); + _context.statManager().addRateData("tunnel.dropLoadDelay", System.currentTimeMillis() - state.recvTime, 0); + _context.throttle().setTunnelStatus(_x("Dropping tunnel requests: Too slow")); + continue; + } - // now pull off the oldest requests first (we're doing a tail-drop - // when adding) - for (int i = 0; i < toHandle && !_inboundBuildMessages.isEmpty(); i++) - handled.add(_inboundBuildMessages.remove(0)); - //} - } - remaining = _inboundBuildMessages.size(); - } - if (handled != null) { + i++; + long beforeHandle = System.currentTimeMillis(); + long actualTime = handleRequest(state); if (_log.shouldLog(Log.DEBUG)) - _log.debug("Handling " + handled.size() + " requests (took " + (System.currentTimeMillis()-beforeFindHandled) + "ms to find them)"); - - for (int i = 0; i < handled.size(); i++) { - BuildMessageState state = (BuildMessageState)handled.get(i); - long beforeHandle = System.currentTimeMillis(); - long actualTime = handleRequest(state); - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Handle took " + (System.currentTimeMillis()-beforeHandle) + "/" + actualTime + " (" + i + " out of " + handled.size() + " with " + remaining + " remaining)"); - } - handled.clear(); + _log.debug("Handle took " + (System.currentTimeMillis()-beforeHandle) + "/" + actualTime + + " (" + i + " with " + _inboundBuildMessages.size() + " remaining)"); } - if (!HANDLE_REPLIES_INLINE) { - synchronized (_inboundBuildEndMessages) { - int toHandle = _inboundBuildEndMessages.size(); - if (toHandle > 0) { - if (handled == null) - handled = new ArrayList(_inboundBuildEndMessages); - else - handled.addAll(_inboundBuildEndMessages); - _inboundBuildEndMessages.clear(); - } - } - } - if (handled != null) { - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Handling " + handled.size() + " requests that are actually replies"); - // these are inbound build messages that actually contain the full replies, since - // they are for inbound tunnels we have created - for (int i = 0; i < handled.size(); i++) { - BuildEndMessageState state = (BuildEndMessageState)handled.get(i); - handleRequestAsInboundEndpoint(state); - } - } - - // anything else? - /* - synchronized (_inboundBuildMessages) { - int remaining = _inboundBuildMessages.size(); - return remaining; - } - */ + + int remaining = _inboundBuildMessages.size(); if (remaining > 0) _context.statManager().addRateData("tunnel.handleRemaining", remaining, 0); return remaining; } - /** Warning - noop if HANDLE_REPLIES_INLINE == true */ - void handleInboundReplies() { - if (HANDLE_REPLIES_INLINE) - return; - List handled = null; - synchronized (_inboundBuildReplyMessages) { - int toHandle = _inboundBuildReplyMessages.size(); - if (toHandle > 0) { - // always handle all of them - they're replies that we were waiting for! - handled = new ArrayList(_inboundBuildReplyMessages); - _inboundBuildReplyMessages.clear(); - } - } - if (handled != null) { - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Handling " + handled.size() + " replies"); - - for (int i = 0; i < handled.size(); i++) { - BuildReplyMessageState state = (BuildReplyMessageState)handled.get(i); - handleReply(state); - } - } - } - private void handleReply(BuildReplyMessageState state) { // search through the tunnels for a reply long replyMessageId = state.msg.getUniqueId(); @@ -343,7 +256,7 @@ class BuildHandler { } } - /** @return handle time or -1 */ + /** @return handle time or -1 if it wasn't completely handled */ private long handleRequest(BuildMessageState state) { long timeSinceReceived = System.currentTimeMillis()-state.recvTime; if (_log.shouldLog(Log.DEBUG)) @@ -365,7 +278,7 @@ class BuildHandler { BuildRequestRecord req = _processor.decrypt(_context, state.msg, _context.routerHash(), _context.keyManager().getPrivateKey()); long decryptTime = System.currentTimeMillis() - beforeDecrypt; _context.statManager().addRateData("tunnel.decryptRequestTime", decryptTime, decryptTime); - if (decryptTime > 500) + if (decryptTime > 500 && _log.shouldLog(Log.WARN)) _log.warn("Took too long to decrypt the request: " + decryptTime + " for message " + state.msg.getUniqueId() + " received " + (timeSinceReceived+decryptTime) + " ago"); if (req == null) { // no records matched, or the decryption failed. bah @@ -379,7 +292,7 @@ class BuildHandler { long readPeerTime = System.currentTimeMillis()-beforeLookup; RouterInfo nextPeerInfo = _context.netDb().lookupRouterInfoLocally(nextPeer); long lookupTime = System.currentTimeMillis()-beforeLookup; - if (lookupTime > 500) + if (lookupTime > 500 && _log.shouldLog(Log.WARN)) _log.warn("Took too long to lookup the request: " + lookupTime + "/" + readPeerTime + " for message " + state.msg.getUniqueId() + " received " + (timeSinceReceived+decryptTime) + " ago"); if (nextPeerInfo == null) { if (_log.shouldLog(Log.DEBUG)) @@ -416,9 +329,9 @@ class BuildHandler { } private class HandleReq extends JobImpl { - private BuildMessageState _state; - private BuildRequestRecord _req; - private Hash _nextPeer; + private final BuildMessageState _state; + private final BuildRequestRecord _req; + private final Hash _nextPeer; HandleReq(RouterContext ctx, BuildMessageState state, BuildRequestRecord req, Hash nextPeer) { super(ctx); _state = state; @@ -439,9 +352,9 @@ class BuildHandler { } private static class TimeoutReq extends JobImpl { - private BuildMessageState _state; - private BuildRequestRecord _req; - private Hash _nextPeer; + private final BuildMessageState _state; + private final BuildRequestRecord _req; + private final Hash _nextPeer; TimeoutReq(RouterContext ctx, BuildMessageState state, BuildRequestRecord req, Hash nextPeer) { super(ctx); _state = state; @@ -580,7 +493,7 @@ class BuildHandler { Hash from = state.fromHash; if (from == null) from = state.from.calculateHash(); - if (_throttler.shouldThrottle(from)) { + if (from != null && _throttler.shouldThrottle(from)) { if (_log.shouldLog(Log.WARN)) _log.warn("Rejecting tunnel (hop throttle), previous hop: " + from); // no setTunnelStatus() indication @@ -731,9 +644,7 @@ class BuildHandler { } public int getInboundBuildQueueSize() { - synchronized (_inboundBuildMessages) { return _inboundBuildMessages.size(); - } } /** @@ -756,14 +667,7 @@ class BuildHandler { _log.error("received it, but its not inbound? " + cfg); } BuildEndMessageState state = new BuildEndMessageState(cfg, receivedMessage); - if (HANDLE_REPLIES_INLINE) { - handleRequestAsInboundEndpoint(state); - } else { - synchronized (_inboundBuildEndMessages) { - _inboundBuildEndMessages.add(state); - } - _exec.repoll(); - } + handleRequestAsInboundEndpoint(state); } else { if (_exec.wasRecentlyBuilding(reqId)) { // we are the IBEP but we already gave up? @@ -771,52 +675,53 @@ class BuildHandler { _log.warn("Dropping the reply " + reqId + ", as we used to be building that"); _context.statManager().addRateData("tunnel.buildReplyTooSlow", 1, 0); } else { - synchronized (_inboundBuildMessages) { - boolean removed = false; - int dropped = 0; - for (int i = 0; i < _inboundBuildMessages.size(); i++) { - BuildMessageState cur = (BuildMessageState)_inboundBuildMessages.get(i); - long age = System.currentTimeMillis() - cur.recvTime; - if (age >= BuildRequestor.REQUEST_TIMEOUT/4) { - _inboundBuildMessages.remove(i); - i--; - dropped++; - _context.statManager().addRateData("tunnel.dropLoad", age, _inboundBuildMessages.size()); - } - } - if (dropped > 0) { + int sz = _inboundBuildMessages.size(); + BuildMessageState cur = _inboundBuildMessages.peek(); + boolean accept = true; + if (cur != null) { + long age = System.currentTimeMillis() - cur.recvTime; + if (age >= BuildRequestor.REQUEST_TIMEOUT/4) { + _context.statManager().addRateData("tunnel.dropLoad", age, sz); _context.throttle().setTunnelStatus(_x("Dropping tunnel requests: High load")); // if the queue is backlogged, stop adding new messages - _context.statManager().addRateData("tunnel.dropLoadBacklog", _inboundBuildMessages.size(), _inboundBuildMessages.size()); + _context.statManager().addRateData("tunnel.dropLoadBacklog", sz, sz); + accept = false; + } + } + if (accept) { + int queueTime = estimateQueueTime(sz); + float pDrop = queueTime/((float)BuildRequestor.REQUEST_TIMEOUT*3); + pDrop = (float)Math.pow(pDrop, 16); // steeeep + float f = _context.random().nextFloat(); + //if ( (pDrop > f) && (allowProactiveDrop()) ) { + if (pDrop > f) { + _context.throttle().setTunnelStatus(_x("Dropping tunnel requests: Queue time")); + _context.statManager().addRateData("tunnel.dropLoadProactive", queueTime, sz); } else { - int queueTime = estimateQueueTime(_inboundBuildMessages.size()); - float pDrop = queueTime/((float)BuildRequestor.REQUEST_TIMEOUT*3); - pDrop = (float)Math.pow(pDrop, 16); // steeeep - float f = _context.random().nextFloat(); - if ( (pDrop > f) && (allowProactiveDrop()) ) { - _context.throttle().setTunnelStatus(_x("Dropping tunnel requests: Queue time")); - _context.statManager().addRateData("tunnel.dropLoadProactive", queueTime, _inboundBuildMessages.size()); + accept = _inboundBuildMessages.offer(new BuildMessageState(receivedMessage, from, fromHash)); + if (accept) { + // wake up the Executor to call handleInboundRequests() + _exec.repoll(); } else { - _inboundBuildMessages.add(new BuildMessageState(receivedMessage, from, fromHash)); + _context.throttle().setTunnelStatus(_x("Dropping tunnel requests: High load")); + _context.statManager().addRateData("tunnel.dropLoadBacklog", sz, sz); } } } - _exec.repoll(); } } return _buildMessageHandlerJob; } } +/**** private boolean allowProactiveDrop() { - String allow = _context.getProperty("router.allowProactiveDrop", "true"); - boolean rv = false; - if ( (allow == null) || (Boolean.valueOf(allow).booleanValue()) ) - rv = true; + boolean rv = _context.getBooleanPropertyDefaultTrue("router.allowProactiveDrop"); if (!rv) _context.statManager().addRateData("tunnel.dropLoadProactiveAbort", 1, 0); return rv; } +****/ private int estimateQueueTime(int numPendingMessages) { int decryptTime = 200; @@ -845,24 +750,17 @@ class BuildHandler { if (_log.shouldLog(Log.DEBUG)) _log.debug("Receive tunnel build reply message " + receivedMessage.getUniqueId() + " from " + (fromHash != null ? fromHash.toBase64() : from != null ? from.calculateHash().toBase64() : "a tunnel")); - if (HANDLE_REPLIES_INLINE) { - handleReply(new BuildReplyMessageState(receivedMessage)); - } else { - synchronized (_inboundBuildReplyMessages) { - _inboundBuildReplyMessages.add(new BuildReplyMessageState(receivedMessage)); - } - _exec.repoll(); - } + handleReply(new BuildReplyMessageState(receivedMessage)); return _buildReplyMessageHandlerJob; } } /** normal inbound requests from other people */ private static class BuildMessageState { - TunnelBuildMessage msg; - RouterIdentity from; - Hash fromHash; - long recvTime; + final TunnelBuildMessage msg; + final RouterIdentity from; + final Hash fromHash; + final long recvTime; public BuildMessageState(I2NPMessage m, RouterIdentity f, Hash h) { msg = (TunnelBuildMessage)m; from = f; @@ -872,8 +770,8 @@ class BuildHandler { } /** replies for outbound tunnels that we have created */ private static class BuildReplyMessageState { - TunnelBuildReplyMessage msg; - long recvTime; + final TunnelBuildReplyMessage msg; + final long recvTime; public BuildReplyMessageState(I2NPMessage m) { msg = (TunnelBuildReplyMessage)m; recvTime = System.currentTimeMillis(); @@ -881,9 +779,9 @@ class BuildHandler { } /** replies for inbound tunnels we have created */ private static class BuildEndMessageState { - TunnelBuildMessage msg; - PooledTunnelCreatorConfig cfg; - long recvTime; + final TunnelBuildMessage msg; + final PooledTunnelCreatorConfig cfg; + final long recvTime; public BuildEndMessageState(PooledTunnelCreatorConfig c, I2NPMessage m) { cfg = c; msg = (TunnelBuildMessage)m; @@ -891,13 +789,14 @@ class BuildHandler { } } - // noop + /** noop */ private static class TunnelBuildMessageHandlerJob extends JobImpl { private TunnelBuildMessageHandlerJob(RouterContext ctx) { super(ctx); } public void runJob() {} public String getName() { return "Receive tunnel build message"; } } - // noop + + /** noop */ private static class TunnelBuildReplyMessageHandlerJob extends JobImpl { private TunnelBuildReplyMessageHandlerJob(RouterContext ctx) { super(ctx); } public void runJob() {} @@ -910,7 +809,7 @@ class BuildHandler { * but it affects capacity calculations */ private static class TunnelBuildNextHopFailJob extends JobImpl { - HopConfig _cfg; + final HopConfig _cfg; private TunnelBuildNextHopFailJob(RouterContext ctx, HopConfig cfg) { super(ctx); _cfg = cfg; From cb707785cc4a14738b58585d0b1de91673efe569 Mon Sep 17 00:00:00 2001 From: zzz Date: Wed, 2 Mar 2011 17:27:02 +0000 Subject: [PATCH 270/463] * OutNetMessage: Remove dead code * Tunnel cleanups, final, javadoc --- history.txt | 8 +++ .../src/net/i2p/router/InNetMessagePool.java | 15 ++++-- .../src/net/i2p/router/OutNetMessage.java | 6 +-- .../src/net/i2p/router/OutNetMessagePool.java | 54 +++---------------- .../src/net/i2p/router/RouterVersion.java | 2 +- .../router/transport/TransportManager.java | 4 +- .../router/tunnel/pool/BuildRequestor.java | 26 +++++---- .../net/i2p/router/tunnel/pool/ExpireJob.java | 15 ++++-- .../net/i2p/router/tunnel/pool/TestJob.java | 32 +++++++---- .../i2p/router/tunnel/pool/TunnelPool.java | 27 +++++----- .../router/tunnel/pool/TunnelPoolManager.java | 5 +- 11 files changed, 96 insertions(+), 98 deletions(-) diff --git a/history.txt b/history.txt index 44c8a9288..fba494287 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,11 @@ +2011-03-02 zzz + * BuildHandler: + - Limit request queue size + - Concurrent request queue + - Remove dead code for queued rely handling + * OutNetMessage: Remove dead code + * Tunnel cleanups, final, javadoc + * 2011-03-02 0.8.4 released 2011-02-27 zzz diff --git a/router/java/src/net/i2p/router/InNetMessagePool.java b/router/java/src/net/i2p/router/InNetMessagePool.java index 4e6846b46..d6067b2b3 100644 --- a/router/java/src/net/i2p/router/InNetMessagePool.java +++ b/router/java/src/net/i2p/router/InNetMessagePool.java @@ -81,7 +81,6 @@ public class InNetMessagePool implements Service { _shortCircuitGatewayJob = new SharedShortCircuitGatewayJob(context); } _log = _context.logManager().getLog(InNetMessagePool.class); - _alive = false; _context.statManager().createRateStat("inNetPool.dropped", "How often do we drop a message", "InNetPool", new long[] { 60*60*1000l }); _context.statManager().createRateStat("inNetPool.droppedDeliveryStatusDelay", "How long after a delivery status message is created do we receive it back again (for messages that are too slow to be handled)", "InNetPool", new long[] { 60*60*1000l }); _context.statManager().createRateStat("inNetPool.duplicate", "How often do we receive a duplicate message", "InNetPool", new long[] { 60*60*1000l }); @@ -89,12 +88,20 @@ public class InNetMessagePool implements Service { _context.statManager().createRateStat("inNetPool.droppedDbLookupResponseMessage", "How often we drop a slow-to-arrive db search response", "InNetPool", new long[] { 60*60*1000l }); } + /** + * @return previous builder for this message type, or null + * @throws AIOOBE if i2npMessageType is greater than MAX_I2NP_MESSAGE_TYPE + */ public HandlerJobBuilder registerHandlerJobBuilder(int i2npMessageType, HandlerJobBuilder builder) { HandlerJobBuilder old = _handlerJobBuilders[i2npMessageType]; _handlerJobBuilders[i2npMessageType] = builder; return old; } + /** + * @return previous builder for this message type, or null + * @throws AIOOBE if i2npMessageType is greater than MAX_I2NP_MESSAGE_TYPE + */ public HandlerJobBuilder unregisterHandlerJobBuilder(int i2npMessageType) { HandlerJobBuilder old = _handlerJobBuilders[i2npMessageType]; _handlerJobBuilders[i2npMessageType] = null; @@ -102,12 +109,14 @@ public class InNetMessagePool implements Service { } /** - * Add a new message to the pool, returning the number of messages in the - * pool so that the comm system can throttle inbound messages. If there is + * Add a new message to the pool. + * If there is * a HandlerJobBuilder for the inbound message type, the message is loaded * into a job created by that builder and queued up for processing instead * (though if the builder doesn't create a job, it is added to the pool) * + * @return -1 for some types of errors but not all; 0 otherwise + * (was queue length, long ago) */ public int add(I2NPMessage messageBody, RouterIdentity fromRouter, Hash fromRouterHash) { long exp = messageBody.getMessageExpiration(); diff --git a/router/java/src/net/i2p/router/OutNetMessage.java b/router/java/src/net/i2p/router/OutNetMessage.java index 0c430b07e..07fd8259c 100644 --- a/router/java/src/net/i2p/router/OutNetMessage.java +++ b/router/java/src/net/i2p/router/OutNetMessage.java @@ -29,8 +29,8 @@ import net.i2p.util.Log; * */ public class OutNetMessage { - private Log _log; - private RouterContext _context; + private final Log _log; + private final RouterContext _context; private RouterInfo _target; private I2NPMessage _message; /** cached message class name, for use after we discard the message */ @@ -50,7 +50,7 @@ public class OutNetMessage { private long _sendBegin; private long _transmitBegin; private Exception _createdBy; - private long _created; + private final long _created; /** for debugging, contains a mapping of even name to Long (e.g. "begin sending", "handleOutbound", etc) */ private HashMap _timestamps; /** diff --git a/router/java/src/net/i2p/router/OutNetMessagePool.java b/router/java/src/net/i2p/router/OutNetMessagePool.java index 8e057ff49..6b5ddfaab 100644 --- a/router/java/src/net/i2p/router/OutNetMessagePool.java +++ b/router/java/src/net/i2p/router/OutNetMessagePool.java @@ -18,24 +18,18 @@ import net.i2p.util.Log; * that wants to send a message, and the communication subsystem periodically * retrieves messages for delivery. * + * Actually, this doesn't 'pool' anything, it calls the comm system directly. + * Nor does it organize by priority. But perhaps it could someday. */ public class OutNetMessagePool { - private Log _log; - private RouterContext _context; + private final Log _log; + private final RouterContext _context; public OutNetMessagePool(RouterContext context) { _context = context; _log = _context.logManager().getLog(OutNetMessagePool.class); } - /** - * Remove the highest priority message, or null if none are available. - * - */ - public OutNetMessage getNext() { - return null; - } - /** * Add a new message to the pool * @@ -47,8 +41,8 @@ public class OutNetMessagePool { return; } - if (_log.shouldLog(Log.INFO)) - _log.info("Adding outbound message to " + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Adding outbound message to " + msg.getTarget().getIdentity().getHash().toBase64().substring(0,6) + " with id " + msg.getMessage().getUniqueId() + " expiring on " + msg.getMessage().getMessageExpiration() @@ -70,7 +64,7 @@ public class OutNetMessagePool { return false; } if (msg.getTarget() == null) { - _log.error("No target in the OutNetMessage: " + msg, new Exception("Definitely a fuckup")); + _log.error("No target in the OutNetMessage: " + msg, new Exception()); return false; } if (msg.getPriority() < 0) { @@ -83,38 +77,4 @@ public class OutNetMessagePool { } return true; } - - /** - * Clear any messages that have expired, enqueuing any appropriate jobs - * - */ - public void clearExpired() { - // noop - } - - /** - * Retrieve the number of messages, regardless of priority. - * - */ - public int getCount() { return 0; } - - /** - * Retrieve the number of messages at the given priority. This can be used for - * subsystems that maintain a pool of messages to be sent whenever there is spare time, - * where all of these 'spare' messages are of the same priority. - * - */ - public int getCount(int priority) { return 0; } - - public void dumpPoolInfo() { return; } - - private static class ReverseIntegerComparator implements Comparator { - public int compare(Object lhs, Object rhs) { - if ( (lhs == null) || (rhs == null) ) return 0; // invalid, but never used - if ( !(lhs instanceof Integer) || !(rhs instanceof Integer)) return 0; - Integer lv = (Integer)lhs; - Integer rv = (Integer)rhs; - return - (lv.compareTo(rv)); - } - } } diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index a411b0099..87e5bffca 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 = 0; + public final static long BUILD = 1; /** for example "-test" */ public final static String EXTRA = ""; diff --git a/router/java/src/net/i2p/router/transport/TransportManager.java b/router/java/src/net/i2p/router/transport/TransportManager.java index 266561cbc..81cf89340 100644 --- a/router/java/src/net/i2p/router/transport/TransportManager.java +++ b/router/java/src/net/i2p/router/transport/TransportManager.java @@ -459,9 +459,9 @@ public class TransportManager implements TransportEventListener { if (_log.shouldLog(Log.DEBUG)) _log.debug("I2NPMessage received: " + message.getClass().getName(), new Exception("Where did I come from again?")); try { - int num = _context.inNetMessagePool().add(message, fromRouter, fromRouterHash); + _context.inNetMessagePool().add(message, fromRouter, fromRouterHash); if (_log.shouldLog(Log.DEBUG)) - _log.debug("Added to in pool: "+ num); + _log.debug("Added to in pool"); } catch (IllegalArgumentException iae) { if (_log.shouldLog(Log.WARN)) _log.warn("Error receiving message", iae); diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java b/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java index 0ccb53fbd..6d1099410 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java +++ b/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java @@ -22,9 +22,9 @@ import net.i2p.util.Log; import net.i2p.util.VersionComparator; /** - * + * Methods for creating Tunnel Build Messages, i.e. requests */ -class BuildRequestor { +abstract class BuildRequestor { private static final List ORDER = new ArrayList(TunnelBuildMessage.MAX_RECORD_COUNT); static { for (int i = 0; i < TunnelBuildMessage.MAX_RECORD_COUNT; i++) @@ -37,7 +37,7 @@ class BuildRequestor { * expl. vs. client, uptime, and network conditions. * Put the expiration in the PTCC. * - * Also, perhaps, save the PTCC even after expiration for an extended time, + * Also, we now save the PTCC even after expiration for an extended time, * so can we use a successfully built tunnel anyway. * */ @@ -49,12 +49,16 @@ class BuildRequestor { /** some randomization is added on to this */ private static final int BUILD_MSG_TIMEOUT = 60*1000; + /** + * "paired tunnels" means using a client's own inbound tunnel to receive the + * reply for an outbound build request, and using a client's own outbound tunnel + * to send an inbound build request. + * This is more secure than using the router's exploratory tunnels, as it + * makes correlation of multiple clients more difficult. + */ private static boolean usePairedTunnels(RouterContext ctx) { - String val = ctx.getProperty("router.usePairedTunnels"); - if ( (val == null) || (Boolean.valueOf(val).booleanValue()) ) - return true; - else - return false; + return true; + //return ctx.getBooleanPropertyDefaultTrue("router.usePairedTunnels"); } /** new style requests need to fill in the tunnel IDs before hand */ @@ -321,9 +325,9 @@ class BuildRequestor { * Can't do this for inbound tunnels since the msg goes out an expl. tunnel. */ private static class TunnelBuildFirstHopFailJob extends JobImpl { - TunnelPool _pool; - PooledTunnelCreatorConfig _cfg; - BuildExecutor _exec; + final TunnelPool _pool; + final PooledTunnelCreatorConfig _cfg; + final BuildExecutor _exec; private TunnelBuildFirstHopFailJob(RouterContext ctx, TunnelPool pool, PooledTunnelCreatorConfig cfg, BuildExecutor exec) { super(ctx); _cfg = cfg; diff --git a/router/java/src/net/i2p/router/tunnel/pool/ExpireJob.java b/router/java/src/net/i2p/router/tunnel/pool/ExpireJob.java index e2271ec90..e82c4a8b0 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/ExpireJob.java +++ b/router/java/src/net/i2p/router/tunnel/pool/ExpireJob.java @@ -5,16 +5,21 @@ import net.i2p.router.Router; import net.i2p.router.RouterContext; import net.i2p.router.tunnel.TunnelCreatorConfig; +/** + * This runs twice for each tunnel. + * The first time, remove it from the LeaseSet. + * The second time, stop accepting data for it. + */ class ExpireJob extends JobImpl { - private TunnelPool _pool; - private TunnelCreatorConfig _cfg; + private final TunnelPool _pool; + private final TunnelCreatorConfig _cfg; private boolean _leaseUpdated; - private long _dropAfter; + private final long _dropAfter; + public ExpireJob(RouterContext ctx, TunnelCreatorConfig cfg, TunnelPool pool) { super(ctx); _pool = pool; _cfg = cfg; - _leaseUpdated = false; // we act as if this tunnel expires a random skew before it actually does // so we rebuild out of sync. otoh, we will honor tunnel messages on it // up through the full lifetime of the tunnel, plus a clock skew, since @@ -28,9 +33,11 @@ class ExpireJob extends JobImpl { cfg.setExpiration(expire); getTiming().setStartAfter(expire); } + public String getName() { return "Expire tunnel"; } + public void runJob() { if (!_leaseUpdated) { _pool.removeTunnel(_cfg); diff --git a/router/java/src/net/i2p/router/tunnel/pool/TestJob.java b/router/java/src/net/i2p/router/tunnel/pool/TestJob.java index 7c64df958..e63e681b3 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TestJob.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TestJob.java @@ -22,9 +22,9 @@ import net.i2p.router.message.PayloadGarlicConfig; import net.i2p.util.Log; class TestJob extends JobImpl { - private Log _log; - private TunnelPool _pool; - private PooledTunnelCreatorConfig _cfg; + private final Log _log; + private final TunnelPool _pool; + private final PooledTunnelCreatorConfig _cfg; private boolean _found; private TunnelInfo _outTunnel; private TunnelInfo _replyTunnel; @@ -39,9 +39,10 @@ class TestJob extends JobImpl { public TestJob(RouterContext ctx, PooledTunnelCreatorConfig cfg, TunnelPool pool) { super(ctx); _log = ctx.logManager().getLog(TestJob.class); - _pool = pool; _cfg = cfg; - if (_pool == null) + if (pool != null) + _pool = pool; + else _pool = cfg.getTunnelPool(); if ( (_pool == null) && (_log.shouldLog(Log.ERROR)) ) _log.error("Invalid tunnel test configuration: no pool for " + cfg, new Exception("origin")); @@ -61,7 +62,9 @@ class TestJob extends JobImpl { ctx.statManager().createRateStat("tunnel.testAborted", "Tunnel test could not occur, since there weren't any tunnels to test with", "Tunnels", RATES); } + public String getName() { return "Test tunnel"; } + public void runJob() { if (_pool == null) return; @@ -246,9 +249,10 @@ class TestJob extends JobImpl { } private class ReplySelector implements MessageSelector { - private RouterContext _context; - private long _id; - private long _expiration; + private final RouterContext _context; + private final long _id; + private final long _expiration; + public ReplySelector(RouterContext ctx, long id, long expiration) { _context = ctx; _id = id; @@ -257,7 +261,9 @@ class TestJob extends JobImpl { } public boolean continueMatching() { return !_found && _context.clock().now() < _expiration; } + public long getExpiration() { return _expiration; } + public boolean isMatch(I2NPMessage message) { if (message instanceof DeliveryStatusMessage) { return ((DeliveryStatusMessage)message).getMessageId() == _id; @@ -280,9 +286,13 @@ class TestJob extends JobImpl { private class OnTestReply extends JobImpl implements ReplyJob { private long _successTime; private OutNetMessage _sentMessage; + public OnTestReply(RouterContext ctx) { super(ctx); } + public String getName() { return "Tunnel test success"; } + public void setSentMessage(OutNetMessage m) { _sentMessage = m; } + public void runJob() { if (_sentMessage != null) getContext().messageRegistry().unregisterPending(_sentMessage); @@ -292,6 +302,7 @@ class TestJob extends JobImpl { testFailed(_successTime); _found = true; } + // who cares about the details... public void setMessage(I2NPMessage message) { _successTime = getContext().clock().now() - ((DeliveryStatusMessage)message).getArrival(); @@ -310,12 +321,15 @@ class TestJob extends JobImpl { * Test failed (boo, hiss) */ private class OnTestTimeout extends JobImpl { - private long _started; + private final long _started; + public OnTestTimeout(RouterContext ctx) { super(ctx); _started = ctx.clock().now(); } + public String getName() { return "Tunnel test timeout"; } + public void runJob() { if (_log.shouldLog(Log.WARN)) _log.warn("Timeout: found? " + _found); diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java index 03fa5bd71..c432bfe9e 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java @@ -22,21 +22,21 @@ import net.i2p.stat.RateStat; import net.i2p.util.Log; /** - * + * A group of tunnels for the router or a particular client, in a single direction. */ public class TunnelPool { private final List _inProgress = new ArrayList(); - private RouterContext _context; - private Log _log; + private final RouterContext _context; + private final Log _log; private TunnelPoolSettings _settings; private final ArrayList _tunnels; - private TunnelPeerSelector _peerSelector; - private TunnelPoolManager _manager; + private final TunnelPeerSelector _peerSelector; + private final TunnelPoolManager _manager; private boolean _alive; private long _lifetimeProcessed; private TunnelInfo _lastSelected; private long _lastSelectionPeriod; - private int _expireSkew; + private final int _expireSkew; private long _started; private long _lastRateUpdate; private long _lastLifetimeProcessed; @@ -50,14 +50,9 @@ public class TunnelPool { _settings = settings; _tunnels = new ArrayList(settings.getLength() + settings.getBackupQuantity()); _peerSelector = sel; - _alive = false; - _lastSelectionPeriod = 0; - _lastSelected = null; - _lifetimeProcessed = 0; _expireSkew = _context.random().nextInt(90*1000); _started = System.currentTimeMillis(); _lastRateUpdate = _started; - _lastLifetimeProcessed = 0; _rateName = "tunnel.Bps." + (_settings.isExploratory() ? "exploratory" : _settings.getDestinationNickname()) + (_settings.isInbound() ? ".in" : ".out"); @@ -412,11 +407,12 @@ public class TunnelPool { } } + /** noop for outbound */ void refreshLeaseSet() { - if (_log.shouldLog(Log.DEBUG)) - _log.debug(toString() + ": refreshing leaseSet on tunnel expiration (but prior to grace timeout)"); - LeaseSet ls = null; if (_settings.isInbound() && (_settings.getDestination() != null) ) { + if (_log.shouldLog(Log.DEBUG)) + _log.debug(toString() + ": refreshing leaseSet on tunnel expiration (but prior to grace timeout)"); + LeaseSet ls = null; synchronized (_tunnels) { ls = locked_buildNewLeaseSet(); } @@ -427,7 +423,7 @@ public class TunnelPool { } /** - * Return true if a fallback tunnel is built + * @return true if a fallback tunnel is built * */ boolean buildFallback() { @@ -851,6 +847,7 @@ public class TunnelPool { } PooledTunnelCreatorConfig configureNewTunnel() { return configureNewTunnel(false); } + private PooledTunnelCreatorConfig configureNewTunnel(boolean forceZeroHop) { TunnelPoolSettings settings = getSettings(); List peers = null; diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java index 3a53be552..59eec7d81 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java @@ -37,8 +37,8 @@ import net.i2p.util.SimpleTimer; * */ public class TunnelPoolManager implements TunnelManagerFacade { - private RouterContext _context; - private Log _log; + private final RouterContext _context; + private final Log _log; /** Hash (destination) to TunnelPool */ private final Map _clientInboundPools; /** Hash (destination) to TunnelPool */ @@ -61,7 +61,6 @@ public class TunnelPoolManager implements TunnelManagerFacade { _clientInboundPools = new ConcurrentHashMap(4); _clientOutboundPools = new ConcurrentHashMap(4); - _isShutdown = false; _executor = new BuildExecutor(ctx, this); I2PThread execThread = new I2PThread(_executor, "BuildExecutor"); execThread.setDaemon(true); From b2d4a799d5d64a016f0e102a7a65796e43c566a6 Mon Sep 17 00:00:00 2001 From: zzz Date: Wed, 2 Mar 2011 18:31:48 +0000 Subject: [PATCH 271/463] fix reversions after merge --- installer/resources/readme/readme.html | 4 ++-- installer/resources/themes/console/dark/console.css | 2 +- installer/resources/themes/console/light/console.css | 2 +- router/java/src/net/i2p/router/RouterVersion.java | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/installer/resources/readme/readme.html b/installer/resources/readme/readme.html index 33e137de4..680a6c52b 100644 --- a/installer/resources/readme/readme.html +++ b/installer/resources/readme/readme.html @@ -1,5 +1,5 @@
    - +
    English عربية @@ -11,7 +11,7 @@ Nederlands Русский Svenska - +

    Welcome to the Invisible Internet

    diff --git a/installer/resources/themes/console/dark/console.css b/installer/resources/themes/console/dark/console.css index 5691967d6..9848617be 100644 --- a/installer/resources/themes/console/dark/console.css +++ b/installer/resources/themes/console/dark/console.css @@ -790,7 +790,7 @@ button:active { } .langbox { - margin: 4px 2px 2px 5px; + margin: 8px 2px 2px 5px; padding: 7px 10px 5px 10px; color: #EE9; font-size: 7pt; diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 967350515..953d83e7e 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -851,7 +851,7 @@ button:active{ } .langbox { - margin: 4px 10px 4px 5px; + margin: 7px 10px 4px 5px; padding: 8px 5px; color: #001; font-size: 7pt; diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 87e5bffca..282c18b42 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 = 1; + public final static long BUILD = 2; /** for example "-test" */ public final static String EXTRA = ""; From b30e1f5ba97096cc71ee586851b4fd800a66dc1b Mon Sep 17 00:00:00 2001 From: zzz Date: Wed, 2 Mar 2011 19:31:18 +0000 Subject: [PATCH 272/463] two more simple test scripts --- tests/scripts/checkpo.sh | 35 +++++++++ tests/scripts/checkxml.sh | 144 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 179 insertions(+) create mode 100755 tests/scripts/checkpo.sh create mode 100755 tests/scripts/checkxml.sh diff --git a/tests/scripts/checkpo.sh b/tests/scripts/checkpo.sh new file mode 100755 index 000000000..2e03f8be6 --- /dev/null +++ b/tests/scripts/checkpo.sh @@ -0,0 +1,35 @@ +# +# Run 'msgfmt -c' on all .po files +# Returns nonzero on failure +# +# zzz 2011-02 +# public domain +# + +cd `dirname $0`/../.. + +DIRS="\ + apps/routerconsole/locale \ + apps/i2ptunnel/locale \ + apps/i2psnark/locale \ + apps/susidns/locale \ + apps/desktopgui/locale" + +for i in `find $DIRS -maxdepth 1 -type f -name *.po` +do + echo "Checking $i ..." + msgfmt -c $i + if [ $? -ne 0 ] + then + echo "********* FAILED CHECK FOR $i *************" + FAIL=1 + fi +done + +if [ "$FAIL" != "" ] +then + echo "******** At least one file failed check *********" +else + echo "All files passed" +fi +exit $FAIL diff --git a/tests/scripts/checkxml.sh b/tests/scripts/checkxml.sh new file mode 100755 index 000000000..d6524476d --- /dev/null +++ b/tests/scripts/checkxml.sh @@ -0,0 +1,144 @@ +# +# Validate XML and HTML files using xmllint +# Returns nonzero on failure +# +# Note that the news.xml and initialNews*.xml files are really HTML +# +# zzz 2011-03 +# public domain +# + +cd `dirname $0`/../.. + +XMLFILES="\ +./android/AndroidManifest.xml \ +./android/build.xml \ +./android/res/layout/main.xml \ +./android/res/values/strings.xml \ +./apps/addressbook/build.xml \ +./apps/addressbook/web.xml \ +./apps/BOB/build.xml \ +./apps/BOB/Demos/echo/echoclient/build.xml \ +./apps/BOB/Demos/echo/echoclient/nbproject/build-impl.xml \ +./apps/BOB/Demos/echo/echoclient/nbproject/private/private.xml \ +./apps/BOB/Demos/echo/echoclient/nbproject/project.xml \ +./apps/BOB/Demos/echo/echoserver/build.xml \ +./apps/BOB/Demos/echo/echoserver/nbproject/build-impl.xml \ +./apps/BOB/Demos/echo/echoserver/nbproject/private/private.xml \ +./apps/BOB/Demos/echo/echoserver/nbproject/project.xml \ +./apps/BOB/nbproject/build-impl.xml \ +./apps/BOB/nbproject/project.xml \ +./apps/desktopgui/build.xml \ +./apps/fortuna/build.xml \ +./apps/i2psnark/java/build.xml \ +./apps/i2psnark/jetty-i2psnark.xml \ +./apps/i2psnark/web.xml \ +./apps/i2ptunnel/java/build.xml \ +./apps/i2ptunnel/jsp/web.xml \ +./apps/jetty/build.xml \ +./apps/ministreaming/java/build.xml \ +./apps/routerconsole/java/build.xml \ +./apps/routerconsole/jsp/web.xml \ +./apps/sam/java/build.xml \ +./apps/streaming/java/build.xml \ +./apps/susidns/src/build.xml \ +./apps/susidns/src/WEB-INF/web-template.xml \ +./apps/susimail/build.xml \ +./apps/susimail/src/WEB-INF/web.xml \ +./apps/systray/java/build.xml \ +./build.xml \ +./core/java/build.xml \ +./core/java/nbproject/project.xml \ +./installer/i2pinstaller.xml \ +./installer/i2pstandalone.xml \ +./installer/install.xml \ +./installer/lib/launch4j/build.xml \ +./installer/resources/jetty.xml \ +./installer/resources/shortcutSpec.xml \ +./router/java/build.xml \ +./Slackware/i2p-base/build.xml \ +./Slackware/i2p/build.xml" + +HTMLFILES="\ +./installer/resources/initialNews/*.xml \ +./installer/resources/news.xml \ +./apps/BOB/src/net/i2p/BOB/package.html \ +./apps/desktopgui/src/net/i2p/desktopgui/package.html \ +./apps/ministreaming/java/src/net/i2p/client/streaming/package.html \ +./apps/routerconsole/jsp/i2psnark/index.html \ +./apps/susidns/src/index.html \ +./apps/susimail/src/index.html \ +./core/java/src/net/i2p/client/datagram/package.html \ +./core/java/src/net/i2p/client/naming/package.html \ +./core/java/src/net/i2p/client/package.html \ +./core/java/src/net/i2p/crypto/package.html \ +./core/java/src/net/i2p/data/i2cp/package.html \ +./core/java/src/net/i2p/data/package.html \ +./core/java/src/net/i2p/internal/package.html \ +./core/java/src/net/i2p/package.html \ +./core/java/src/net/i2p/stat/package.html \ +./core/java/src/net/i2p/time/package.html \ +./core/java/src/net/i2p/util/package.html \ +./installer/resources/eepsite.help/help/index_de.html \ +./installer/resources/eepsite.help/help/index_fr.html \ +./installer/resources/eepsite.help/help/index.html \ +./installer/resources/eepsite.help/help/index_na.html \ +./installer/resources/eepsite.help/help/index_nl.html \ +./installer/resources/eepsite.help/help/index_ru.html \ +./installer/resources/eepsite.help/help/index_sv.html \ +./installer/resources/eepsite.help/help/pagetemplate.html \ +./installer/resources/eepsite.help/index.html \ +./installer/resources/readme/readme_ar.html \ +./installer/resources/readme/readme_de.html \ +./installer/resources/readme/readme_es.html \ +./installer/resources/readme/readme_fr.html \ +./installer/resources/readme/readme.html \ +./installer/resources/readme/readme_nl.html \ +./installer/resources/readme/readme_pt.html \ +./installer/resources/readme/readme_ru.html \ +./installer/resources/readme/readme_sv.html \ +./installer/resources/readme/readme_zh.html \ +./installer/resources/small/toolbar.html \ +./installer/resources/startconsole.html \ +./router/java/src/net/i2p/data/i2np/package.html \ +./router/java/src/net/i2p/router/package.html \ +./router/java/src/net/i2p/router/peermanager/package.html \ +./router/java/src/net/i2p/router/startup/package.html \ +./router/java/src/net/i2p/router/transport/ntcp/package.html \ +./router/java/src/net/i2p/router/transport/package.html \ +./router/java/src/net/i2p/router/transport/udp/package.html \ +./router/java/src/net/i2p/router/util/package.html" + +echo 'Checking XML files....................' +for i in $XMLFILES +do + echo "Checking $i ..." + xmllint --noout $i + if [ $? -ne 0 ] + then + echo "********* FAILED CHECK FOR $i *************" + FAIL=1 + fi +done + +echo 'Checking HTML files....................' +for i in $HTMLFILES +do + echo "Checking $i ..." + xmllint --html --noout $i + # FIXME html mode never exits with an error code + # ... but it does output errors + if [ $? -ne 0 ] + then + echo "********* FAILED CHECK FOR $i *************" + FAIL=1 + fi +done + +if [ "$FAIL" != "" ] +then + echo "******** At least one file failed check *********" +else + echo "All files passed" +fi +exit $FAIL From 97c36cc54e3fe94b2dad6e3725164481b2b1a73c Mon Sep 17 00:00:00 2001 From: hamada Date: Wed, 2 Mar 2011 22:39:14 +0000 Subject: [PATCH 273/463] Update Arabic translation of router console --- apps/routerconsole/locale/messages_ar.po | 563 +++++++++++------------ 1 file changed, 280 insertions(+), 283 deletions(-) diff --git a/apps/routerconsole/locale/messages_ar.po b/apps/routerconsole/locale/messages_ar.po index f80dd6091..c14f927f3 100644 --- a/apps/routerconsole/locale/messages_ar.po +++ b/apps/routerconsole/locale/messages_ar.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-11-19 18:16+0000\n" -"PO-Revision-Date: 2011-02-26 18:15-0000\n" +"PO-Revision-Date: 2011-03-02 22:38-0000\n" "Last-Translator: hamada \n" "Language-Team: hamada@mail.i2p\n" "Language: ar\n" @@ -99,11 +99,11 @@ msgstr[5] "" #: ../../../router/java/src/net/i2p/router/Blocklist.java:126 #, java-format msgid "Banned by router hash: {0}" -msgstr "" +msgstr "ممنوع من طرف الموجه: {0}" #: ../../../router/java/src/net/i2p/router/Blocklist.java:128 msgid "Banned by router hash" -msgstr "" +msgstr "ممنوع من طرف الموجه" #. Temporary reason, until the job finishes #: ../../../router/java/src/net/i2p/router/Blocklist.java:673 @@ -113,38 +113,38 @@ msgstr "IP ممنوع" #: ../../../router/java/src/net/i2p/router/Blocklist.java:743 #, java-format msgid "IP banned by blocklist.txt entry {0}" -msgstr "" +msgstr " {0} عنوان ممنوع" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:92 msgid "Rejecting tunnels: Shutting down" -msgstr "" +msgstr "جاري التوقيف" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:141 msgid "Rejecting tunnels: High message delay" -msgstr "" +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 "" +msgstr "توقيف غالبية الأنفاق : " #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:233 msgid "Rejecting tunnels: Limit reached" -msgstr "" +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 "" +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 "" +msgstr "رفض غالبية الانفاق: وصل حد سرعة الاتصال" #. hard to do {0} from here #. setTunnelStatus("Accepting " + (100-(int)(100.0*probReject)) + "% of tunnels"); @@ -170,15 +170,15 @@ msgstr "تحقق من logs and if nothi #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:82 msgid "Reseeding" -msgstr "" +msgstr "اعادة التوزيع" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:146 msgid "Reseeding: fetching seed URL." -msgstr "" +msgstr "اعادة التوزيع: تحميل العنوان" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:152 msgid "Last reseed failed fully (failed reading seed URL)." -msgstr "" +msgstr "فشل آخر توزيع ( تحميل العنوان)" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:178 msgid "Last reseed failed fully (no routerInfo URLs at seed URL)." @@ -201,7 +201,7 @@ msgstr "" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:227 msgid "Last reseed failed fully (exception caught)." -msgstr "" +msgstr "فشل آخر توزيع" #: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:510 msgid "NetDb entry" @@ -210,20 +210,20 @@ msgstr "" #. 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 "" +msgstr "ﻻ وسائل النقل (مخفية أو جاري البدء؟)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:451 msgid "Unreachable on any transport" -msgstr "" +msgstr "صعب الوصول بأية وسيلة" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:500 msgid "Router Transport Addresses" -msgstr "" +msgstr "عموان الموجه للنقل" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:505 #, java-format msgid "{0} is used for outbound connections only" -msgstr "" +msgstr "{0} مستعملة للاتصال الخارجي فقط" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 @@ -244,7 +244,7 @@ msgstr "مستخدم" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:520 msgid "The remote peer, identified by router hash" -msgstr "" +msgstr "النظير البعيد" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:716 @@ -262,21 +262,21 @@ msgstr "اتصال خارجي" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 msgid "They offered to introduce us (help other peers traverse our firewall)" -msgstr "" +msgstr "ساعد المستخدمين الآخرين في عبور الجدار الناري" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 msgid "We offered to introduce them (help other peers traverse their firewall)" -msgstr "" +msgstr "عرضنا لمساعدتهم (مساعدة أقرانه الآخرين من اجتياز جدار الحماية)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 msgid "How long since a packet has been received / sent" -msgstr "" +msgstr "مدة تلقى / بعث حزمة " #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:717 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1893 msgid "Idle" -msgstr "" +msgstr "خامل" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:718 @@ -287,51 +287,51 @@ msgstr "داخل/خارج" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 msgid "The smoothed inbound / outbound transfer rate (KBytes per second)" -msgstr "" +msgstr "سرعة الداخلة / الخارجة للتحويل (KBytes في الثانية)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531 msgid "How long ago this connection was established" -msgstr "" +msgstr "مدة استمرار هذا الاتصال" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:719 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1903 msgid "Up" -msgstr "" +msgstr "فوق" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:720 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905 msgid "Skew" -msgstr "" +msgstr "الانحراف" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 msgid "The difference between the peer's clock and your own" -msgstr "" +msgstr "الفرق بين ساعة النظير و ساعتك" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "The congestion window, which is how many bytes can be sent without an acknowledgement" -msgstr "" +msgstr "نافذة الازدحام، هي كمية المرسلة دون ازدحام" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 msgid "The number of sent messages awaiting acknowledgement" -msgstr "" +msgstr "عدد الرسائل المرسلة التي تنتظر الموافقة" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 msgid "The maximum number of concurrent messages to send" -msgstr "" +msgstr "الحد الأقصى لعدد الرسائل المتزامنة الارسال" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 msgid "The number of pending sends which exceed congestion window" -msgstr "" +msgstr "عدد المرسلات التي تتجاوز إطار الازدحام" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 msgid "The slow start threshold" -msgstr "" +msgstr "عتبة بداية بطيئة" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 msgid "The round trip time in milliseconds" -msgstr "" +msgstr "الوقت الذهاب وإياب في جزء ثانية" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1915 @@ -340,15 +340,15 @@ msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 msgid "The standard deviation of the round trip time in milliseconds" -msgstr "" +msgstr "انحراف الوقت الذهاب وإياب في جزء ثانية" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 msgid "The retransmit timeout in milliseconds" -msgstr "" +msgstr "اعادة الارسال في جزء ثانية" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 msgid "Current maximum send packet size / estimated maximum receive packet size (bytes)" -msgstr "" +msgstr "الحد الأقصى الحالي إرسال حجم الحزمة" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:721 @@ -358,7 +358,7 @@ msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 msgid "The total number of packets sent to the peer" -msgstr "" +msgstr "العدد الاجمالي للحزم المرسلة الى المستخدم" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:722 @@ -368,7 +368,7 @@ msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 msgid "The total number of packets received from the peer" -msgstr "" +msgstr "العدد الاجمالي للحزم المستقبلة" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927 @@ -377,7 +377,7 @@ msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 msgid "The total number of packets retransmitted to the peer" -msgstr "" +msgstr "العدد الاجمالي للحزم المرسلة الى النظائر" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1929 @@ -386,13 +386,13 @@ msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 msgid "The total number of duplicate packets received from the peer" -msgstr "" +msgstr "إجمالي عدد الحزم المكررة الواردة من الزملاء" #: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:409 #: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:627 #, java-format msgid "Excessive clock skew: {0}" -msgstr "" +msgstr "درجة انحراف الساعة: {0}" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:710 msgid "NTCP connections" @@ -414,7 +414,7 @@ msgstr "" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:724 msgid "Backlogged?" -msgstr "" +msgstr "السجلات" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1947 @@ -443,83 +443,83 @@ msgstr "" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1892 msgid "Direction/Introduction" -msgstr "" +msgstr "اتجاه/تقديم" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 msgid "Sort by idle inbound" -msgstr "" +msgstr "حسب الاتصاب الوارد" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1896 msgid "Sort by idle outbound" -msgstr "" +msgstr "حسب الاتصال الخارج" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1899 msgid "Sort by inbound rate" -msgstr "" +msgstr "حسب معدل الداخل" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1901 msgid "Sort by outbound rate" -msgstr "" +msgstr "حسب معدل الصادرة" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1904 msgid "Sort by connection uptime" -msgstr "" +msgstr "حسب مدة الاتصال" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1906 msgid "Sort by clock skew" -msgstr "" +msgstr "حسب انحراف الساعة" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1909 msgid "Sort by congestion window" -msgstr "" +msgstr "حسب نافذة الازدحام" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1911 msgid "Sort by slow start threshold" -msgstr "" +msgstr "حسب مدة الانطلاق" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1914 msgid "Sort by round trip time" -msgstr "" +msgstr "حسب الوقت ذهابا وإيابا" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1916 msgid "Sort by round trip time deviation" -msgstr "" +msgstr "حسب الوقت ذهابا وإيابا" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918 msgid "Sort by retransmission timeout" -msgstr "" +msgstr "حسب مهلة إعادة الإرسال" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1921 msgid "Sort by outbound maximum transmit unit" -msgstr "" +msgstr "حسب أقصى مدة" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1923 msgid "Sort by packets sent" -msgstr "" +msgstr "حسب الحزم المرسلة" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1925 msgid "Sort by packets received" -msgstr "" +msgstr "حسب الحزم المستقبلة" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1928 msgid "Sort by packets retransmitted" -msgstr "" +msgstr "حسب الحزم المعاد ارسالها" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1930 msgid "Sort by packets received more than once" -msgstr "" +msgstr "حسب الحزم المستقبلة اكثر من مرة" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1951 msgid "We offered to introduce them" -msgstr "" +msgstr "عرضنا لتعريفهم" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1953 msgid "They offered to introduce us" -msgstr "" +msgstr "عرصو علينا تقديمهم" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1957 msgid "Choked" -msgstr "" +msgstr "اختنق" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1965 msgid "1 fail" @@ -542,28 +542,28 @@ msgstr "ملخص" #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:145 msgid "Dropping tunnel requests: Too slow" -msgstr "" +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 "" +msgstr "تجاوز النفق: ازدحام" #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:525 msgid "Rejecting tunnels: Request overload" -msgstr "" +msgstr "تجاوز النفق: ازدحام" #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:550 msgid "Rejecting tunnels: Connection limit" -msgstr "" +msgstr "تجاوز النفق: حد الاتصال" #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:744 msgid "Dropping tunnel requests: High load" -msgstr "" +msgstr "تجاوز النفق: ازدحام كبير" #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:753 msgid "Dropping tunnel requests: Queue time" -msgstr "" +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!! @@ -1512,7 +1512,7 @@ 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 "" +msgstr "خطأ في تسجيل الاعدادات" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:34 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:334 @@ -1577,7 +1577,7 @@ msgstr "تم حفظ العدادات بنجاح - يجب اعادة التشغي #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:202 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:213 msgid "Bad client index." -msgstr "" +msgstr " مؤشر سيء للعميل." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 @@ -1624,14 +1624,14 @@ msgstr "لم يحدد عنوان الملحق." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:289 #, java-format msgid "No update URL specified for {0}" -msgstr "" +msgstr "لا توجد تحديثات لـ {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 "" +msgstr "جارية تحميل التحديث" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:306 #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:118 @@ -1666,7 +1666,7 @@ msgstr "أضف مستخدم" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:38 msgid "Class and arguments" -msgstr "" +msgstr "الفئة" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:38 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:58 @@ -1758,7 +1758,7 @@ msgstr "حذف مفتاح" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:21 msgid "You must enter a destination" -msgstr "" +msgstr "يجب ادخال وجهة" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:23 msgid "You must enter a key" @@ -1776,7 +1776,7 @@ msgstr "أضف الى المفاتيح" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:36 msgid "Invalid destination or key" -msgstr "" +msgstr "وجهة أو مفتاح غير صحيح" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:41 msgid "removed from keyring" @@ -1792,19 +1792,19 @@ msgstr "عنوان غير موجود" #: ../java/src/net/i2p/router/web/ConfigLoggingHandler.java:82 msgid "Log overrides updated" -msgstr "" +msgstr "اعدا كتابة السجلات" #: ../java/src/net/i2p/router/web/ConfigLoggingHandler.java:160 msgid "Log configuration saved" -msgstr "" +msgstr "تم حفظ السجلات" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 msgid "Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" -msgstr "" +msgstr "اضف اعدادات سجل اعلاه. مثلا: net.i2p.router.tunnel=WARN" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:49 msgid "Or put entries in the logger.config file. Example: logger.record.net.i2p.router.tunnel=WARN" -msgstr "" +msgstr "أو أضف في ملف logger.config. مثلا logger.record.net.i2p.router.tunnel=WARN" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:50 msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT" @@ -1836,7 +1836,7 @@ msgstr "حذف" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:125 msgid "Select a class to add" -msgstr "" +msgstr "اختر فئة لإضافتها" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:200 @@ -1902,7 +1902,7 @@ msgstr "حفظ التغييرات" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:121 msgid "Rechecking router reachability..." -msgstr "" +msgstr "إعادة تحديد إمكانية الوصول للموجه..." #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:153 msgid "Updating IP address" @@ -1910,31 +1910,31 @@ msgstr "جاري تعديل عنوان IP" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:171 msgid "Disabling TCP completely" -msgstr "" +msgstr "الغاء الكامل TCP " #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:175 msgid "Updating inbound TCP address to" -msgstr "" +msgstr "تحديث عنوان TCP الى" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:179 msgid "Disabling inbound TCP" -msgstr "" +msgstr "الغاء الاتصال TCP الداخلي" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:181 msgid "Updating inbound TCP address to auto" -msgstr "" +msgstr "تحديث عنوان TCP الى ذاتي" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:190 msgid "Updating inbound TCP port to" -msgstr "" +msgstr "تحديث عنوان TCP الى" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:193 msgid "Updating inbound TCP port to auto" -msgstr "" +msgstr "تحديث عنوان TCP الى ذاتي" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:205 msgid "Updating UDP port from" -msgstr "" +msgstr "تحديث عنوان UDP من" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:205 msgid "to" @@ -1942,45 +1942,45 @@ msgstr "إلى" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:221 msgid "Gracefully restarting into Hidden Router Mode" -msgstr "" +msgstr "اعادة التشغيل على نظام الموجه المتخفي" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:223 msgid "Gracefully restarting to exit Hidden Router Mode" -msgstr "" +msgstr "اعادة التشغيل على نظام الموجه المتخفي " #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:232 msgid "Enabling UPnP, restart required to take effect" -msgstr "" +msgstr "تفعيل UPnP، يجب اعادة التشغيل للحصول على النتيجة" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:234 msgid "Disabling UPnP, restart required to take effect" -msgstr "" +msgstr " الغاء تفعيل UPnP، يجب اعادة التشغيل للحصول على النتيجة" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:242 msgid "Enabling laptop mode" -msgstr "" +msgstr "تفعيل نظام الحاسوب المحمول" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:244 msgid "Disabling laptop mode" -msgstr "" +msgstr "الغاء تفعيل نظام الحاسوب المحمول" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:250 msgid "Requiring SSU introducers" -msgstr "" +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 "" +msgstr "إعادة تشغيل جهاز التوجيه I2P لتغيير عنوان النشر" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:314 msgid "Updating bandwidth share percentage" -msgstr "" +msgstr "تحديث سرعة الاتصال المشاركة" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:397 msgid "Updated bandwidth limits" -msgstr "" +msgstr "حد سرعة الاتصال " #: ../java/src/net/i2p/router/web/ConfigNetHelper.java:39 #: ../java/src/net/i2p/router/web/ConfigNetHelper.java:47 @@ -1997,7 +1997,7 @@ msgstr "بايت في الثانية" #: ../java/src/net/i2p/router/web/ConfigNetHelper.java:170 #, java-format msgid "or {0} bytes per month maximum" -msgstr "" +msgstr "أو {0} بايت لكل شهر" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:20 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:314 @@ -2007,7 +2007,7 @@ msgstr "منع حتى اعادة التشغيل" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:23 #, java-format msgid "Manually banned via {0}" -msgstr "" +msgstr "ممنوع يدويا من طرف {0}" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24 msgid "banned until restart" @@ -2017,7 +2017,7 @@ msgstr "ممنوع حتى إعادة التشغيل" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:38 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:59 msgid "Invalid peer" -msgstr "" +msgstr "نظير غير صحيح" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:28 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:316 @@ -2039,11 +2039,11 @@ msgstr "" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:47 msgid "Bad speed value" -msgstr "" +msgstr " سرعة غير جيدة" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:52 msgid "Bad capacity value" -msgstr "" +msgstr "قدرة غير جيدة" #. Normal browsers send value, IE sends button label #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:32 @@ -2136,19 +2136,19 @@ msgstr "طلب إعادة التشغيل فوري" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:72 msgid "Rekey and Restart" -msgstr "" +msgstr "غير المفتاح واعد التشغيل" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:73 msgid "Rekeying after graceful restart" -msgstr "" +msgstr "تغير المفتاح بعد اعادة التشغيل" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:76 msgid "Rekey and Shutdown" -msgstr "" +msgstr "غير المفتاح وتوقف" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:77 msgid "Rekeying after graceful shutdown" -msgstr "" +msgstr "تغير المفتاح بعد التوقف" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:80 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:334 @@ -2168,21 +2168,21 @@ 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 "" +msgstr "أظهر الأيقونة" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96 msgid "System tray icon enabled." -msgstr "" +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 "" +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 "" +msgstr "خطأ: فشل في الاتصال بمتحكم الأيقونة" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:103 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:324 @@ -2191,7 +2191,7 @@ msgstr "إخفاء أيقونة" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:108 msgid "System tray icon disabled." -msgstr "" +msgstr "أيقونة النظام غير مفعلة." #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:115 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:362 @@ -2217,7 +2217,7 @@ msgstr "تم تثبيت الخدمة" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:131 msgid "Warning: unable to install the service" -msgstr "" +msgstr "تحذير: فشل في تثبيت الخدمة" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:137 msgid "Service removed" @@ -2229,21 +2229,21 @@ msgstr "تحذير: فشل في حذف الخدمة" #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:118 msgid "Stat filter and location updated successfully to" -msgstr "" +msgstr "القانون الأساسي لتصفية وتحديث الموقع بنجاح" #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:120 msgid "Failed to update the stat filter and location" -msgstr "" +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 "" +msgstr " لقد تم تحديث الرسم البياني، يستغرق فترة تصل الى 60s أن تنعكس هنا، وعلىصفحة الرسوم البيانية" #. 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 "" +msgstr "تحديث إعدادات للجميع." #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 msgid "Exploratory tunnel configuration saved successfully." @@ -2252,7 +2252,7 @@ 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 "" +msgstr "خطأ في حفظ الاعدادات (مطبقة لكنها غير محفوظة) أنظر الاخطاء." #. * dummies for translation #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:14 @@ -2280,7 +2280,7 @@ msgstr[5] "" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:26 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:41 msgid "Exploratory tunnels" -msgstr "" +msgstr "استكشاف الأنفاق" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:46 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:61 @@ -2289,19 +2289,19 @@ msgstr "نفق لـ" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:69 msgid "ANONYMITY WARNING - Settings include 0-hop tunnels." -msgstr "" +msgstr "تحذير حول درجة المجهولية: تتضمن إعدادات الأنفاق 0 - نظير." #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74 msgid "ANONYMITY WARNING - Settings include 1-hop tunnels." -msgstr "" +msgstr "تحذير حول درجة المجهولية: الاعدادات تحتوي على نفق واحد." #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:77 msgid "PERFORMANCE WARNING - Settings include very long tunnels." -msgstr "" +msgstr "تحذير الأداء: وتتضمن الإعدادات أنفاق طويلة جدا." #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:80 msgid "PERFORMANCE WARNING - Settings include high tunnel quantities." -msgstr "" +msgstr "تحذير الأداء: وتتضمن الإعدادات عدد كبير من أنفاق طويلة جدا." #. buf.append("
    \n"); #. tunnel depth @@ -2322,15 +2322,15 @@ msgstr "الكمية" #. tunnel backup quantity #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:145 msgid "Backup quantity" -msgstr "" +msgstr "قدر نسخ الاحتياط" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:167 msgid "Inbound options" -msgstr "" +msgstr "اتصال داخلي" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:180 msgid "Outbound options" -msgstr "" +msgstr "اتصال خارجي" #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:31 msgid "Theme change saved." @@ -2338,7 +2338,7 @@ msgstr "تم حفظ تغيير التيمة." #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:33 msgid "Refresh the page to view." -msgstr "" +msgstr "أنعش الصفحة" #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 msgid "English" @@ -2386,35 +2386,35 @@ msgstr "ﻻتوجد تحديثات" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:104 msgid "Updating news URL to" -msgstr "" +msgstr "تحديث عنوان جديد الى" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:112 msgid "Updating proxy host to" -msgstr "" +msgstr "تحديث بروكسي الى" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:120 msgid "Updating proxy port to" -msgstr "" +msgstr "تحديث منفذ بروكسي الى" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:133 msgid "Updating refresh frequency to" -msgstr "" +msgstr "تحديث نسبة التردد" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:140 msgid "Updating update policy to" -msgstr "" +msgstr "تحديث لسياسة التحديث" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:149 msgid "Updating update URLs." -msgstr "" +msgstr "تحديث العناوين" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158 msgid "Updating trusted keys." -msgstr "" +msgstr "تحديث المفاتيح الموثوقة." #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:166 msgid "Updating unsigned update URL to" -msgstr "" +msgstr "تحديث العنوان" #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:88 #: ../java/src/net/i2p/router/web/GraphHelper.java:138 @@ -2427,7 +2427,7 @@ msgstr "كل" #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:108 msgid "Notify only" -msgstr "" +msgstr "إعلام فقط" #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:115 msgid "Download and verify only" @@ -2439,25 +2439,25 @@ msgstr "حمل، تحقق و أعد تشغيل" #: ../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 "" +msgstr "خطأ في الارسال، ربما لاستعمالك زر 'الرجوع' او 'انعش' في المتصفح. حاول اعادة الارسال." #: ../java/src/net/i2p/router/web/GraphHelper.java:82 msgid "Combined bandwidth graph" -msgstr "" +msgstr "رسم بياني لسرعة الاتصال" #. e.g. "statname for 60m" #: ../java/src/net/i2p/router/web/GraphHelper.java:96 #, java-format msgid "{0} for {1}" -msgstr "" +msgstr "{0} لكل {1}" #: ../java/src/net/i2p/router/web/GraphHelper.java:130 msgid "Configure Graph Display" -msgstr "" +msgstr "اعدادات الرسم بياني" #: ../java/src/net/i2p/router/web/GraphHelper.java:130 msgid "Select Stats" -msgstr "" +msgstr "حدد الإحصائيات" #: ../java/src/net/i2p/router/web/GraphHelper.java:132 msgid "Periods" @@ -2465,7 +2465,7 @@ msgstr "مدة" #: ../java/src/net/i2p/router/web/GraphHelper.java:133 msgid "Plot averages" -msgstr "" +msgstr "ارسم المتوسط" #: ../java/src/net/i2p/router/web/GraphHelper.java:134 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:416 @@ -2475,7 +2475,7 @@ msgstr "أو" #: ../java/src/net/i2p/router/web/GraphHelper.java:134 msgid "plot events" -msgstr "" +msgstr "ارسم الأحداث" #: ../java/src/net/i2p/router/web/GraphHelper.java:135 msgid "Image sizes" @@ -2492,11 +2492,11 @@ msgstr "الإرتفاع" #: ../java/src/net/i2p/router/web/GraphHelper.java:136 #: ../java/src/net/i2p/router/web/GraphHelper.java:137 msgid "pixels" -msgstr "" +msgstr "البيكسل" #: ../java/src/net/i2p/router/web/GraphHelper.java:138 msgid "Refresh delay" -msgstr "" +msgstr "وثيرة التحديث" #: ../java/src/net/i2p/router/web/GraphHelper.java:138 msgid "hour" @@ -2525,7 +2525,7 @@ msgstr "ملف غير موجود" #: ../java/src/net/i2p/router/web/LogsHelper.java:52 msgid "No log messages" -msgstr "" +msgstr "لا تسجيل الرسائل" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:80 msgid "Network Database RouterInfo Lookup" @@ -2599,7 +2599,7 @@ msgstr "" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:217 msgid "Not initialized" -msgstr "" +msgstr "لم تتم تهيئة" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:226 msgid "Routers" @@ -2611,7 +2611,7 @@ msgstr "أظهر جميع الموجهات" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:230 msgid "Show all routers with full stats" -msgstr "" +msgstr "أظهر جميع الموجهات" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:265 msgid "Network Database Router Statistics" @@ -2637,7 +2637,7 @@ msgstr "المعلومات" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:344 msgid "Peer info for" -msgstr "" +msgstr "معلومات النظائر" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:348 msgid "Full entry" @@ -2651,13 +2651,13 @@ msgstr "مختفي" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 msgid "Updated" -msgstr "" +msgstr "تحديث" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:355 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:358 #, java-format msgid "{0} ago" -msgstr "" +msgstr "{0} مدة" #. shouldnt happen #: ../java/src/net/i2p/router/web/NetDbRenderer.java:357 @@ -2675,7 +2675,7 @@ msgstr "ثمن" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 msgid "Hidden or starting up" -msgstr "" +msgstr "مختفي" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 msgid "SSU" @@ -2700,12 +2700,12 @@ msgstr "" #: ../java/src/net/i2p/router/web/NewsFetcher.java:82 #, java-format msgid "News last updated {0} ago." -msgstr "" +msgstr "آخر تحديث للأخبار {0} " #: ../java/src/net/i2p/router/web/NewsFetcher.java:88 #, java-format msgid "News last checked {0} ago." -msgstr "" +msgstr "آخر تحديث للأخبار {0} " #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:77 #, java-format @@ -2715,7 +2715,7 @@ msgstr "لا يمكن التفعيل، الملحق {0} غير مثبت" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:129 #, java-format msgid "Checking for update of plugin {0}" -msgstr "" +msgstr "تحق من اصداؤ جديد للملحق {0}" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:154 #, java-format @@ -2740,7 +2740,7 @@ msgstr "تحميل ملحق" #: ../java/src/net/i2p/router/web/UpdateHandler.java:185 #, java-format msgid "{0}B transferred" -msgstr "" +msgstr "{0}B منقول" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:152 msgid "Plugin downloaded" @@ -2756,7 +2756,7 @@ msgstr "فشل في انشاء مجلد الملحق {0}" #: ../java/src/net/i2p/router/web/UpdateHandler.java:226 #, java-format msgid "from {0}" -msgstr "" +msgstr "من {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:176 #, java-format @@ -2803,69 +2803,69 @@ msgstr "هذا الملحق يحتاج الى اصدار جافا {0} او أع #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:281 msgid "Downloaded plugin is for new installs only, but the plugin is already installed" -msgstr "" +msgstr "تحميل البرنامج المساعد لتثبيت جديد فقط، ولكن تم بالفعل تثبيت البرنامج المساعد" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 msgid "Installed plugin does not contain the required configuration file" -msgstr "" +msgstr "الملحق لا يحتوي على ملف الاعدادات" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:301 msgid "Signature of downloaded plugin does not match installed plugin" -msgstr "" +msgstr "توقيع الملحق المحمل لا يطابق الملحق المثبت" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:308 #, java-format msgid "Downloaded plugin version {0} is not newer than installed plugin" -msgstr "" +msgstr "اصدار الملحق {0} ليس اكثر حداثة من الملحق المثبت" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:315 #, java-format msgid "Plugin update requires installed plugin version {0} or higher" -msgstr "" +msgstr "تحديث الملحق {0} يحتاج الى اصدار" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:322 #, java-format msgid "Plugin update requires installed plugin version {0} or lower" -msgstr "" +msgstr "تحديث الملحق يحتاج الى اصدار {0} او اقل" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:339 msgid "Plugin is for upgrades only, but the plugin is not installed" -msgstr "" +msgstr "الملحق للتحديث فقط لكنه غير مثبت" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:352 #, java-format msgid "Failed to install plugin in {0}" -msgstr "" +msgstr "فشل في تثبيت الملحق {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:359 #, java-format msgid "Plugin {0} installed, router restart required" -msgstr "" +msgstr "الملحق {0} تم تثبيته" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:361 #, java-format msgid "Plugin {0} installed" -msgstr "" +msgstr "الملحق {0} مثبت" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:370 #, java-format msgid "Plugin {0} installed and started" -msgstr "" +msgstr "الملحق {0} مثبت ومشغل" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:372 #, java-format msgid "Plugin {0} installed but failed to start, check logs" -msgstr "" +msgstr "الملحق {0} مثيت لكن فشل في البداية، تحقق من السجلات" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:374 #, java-format msgid "Plugin {0} installed but failed to start" -msgstr "" +msgstr "الملحق {0} مثبت لكنه فشل في انطلاق" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:384 #, java-format msgid "Failed to download plugin from {0}" -msgstr "" +msgstr "فشل في تحميل الملحق من {0}" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:72 msgid "Peer Profiles" @@ -2874,21 +2874,21 @@ msgstr "بروفايل المستخدمين" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:73 #, java-format msgid "Showing {0} recent profiles." -msgstr "" +msgstr "اظهار {0} البروفايلات الجديدة." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:75 #, java-format msgid "Hiding {0} older profiles." -msgstr "" +msgstr "اخفاء {0} البروفايلات القديمة." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:77 #, java-format msgid "Hiding {0} standard profiles." -msgstr "" +msgstr "اخفاء {0} البروفايل الطبيعي." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:82 msgid "Groups (Caps)" -msgstr "" +msgstr "المجموعات" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:83 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:251 @@ -2905,23 +2905,23 @@ msgstr "القدرة" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:85 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:255 msgid "Integration" -msgstr "" +msgstr "دمج" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:86 msgid "Status" -msgstr "" +msgstr "الحالة" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:126 msgid "Fast, High Capacity" -msgstr "" +msgstr "سريع ، قدرة عالية" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:127 msgid "High Capacity" -msgstr "" +msgstr "قدرة عالية" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:128 msgid "Standard" -msgstr "" +msgstr "عادي" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:129 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:163 @@ -2931,7 +2931,7 @@ msgstr "فشل" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:282 msgid "Integrated" -msgstr "" +msgstr "مدمج" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:164 msgid "Unreachable" @@ -2944,7 +2944,7 @@ msgstr "فشل التجربة" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:175 msgid "profile" -msgstr "" +msgstr "بروفايل" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:184 msgid "Floodfill and Integrated Peers" @@ -2996,11 +2996,11 @@ msgstr "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:199 msgid "Last Good Store" -msgstr "" +msgstr "آخر حفظ جيد" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:200 msgid "Last Bad Store" -msgstr "" +msgstr "آخر حفظ غير جيد" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201 msgid "1h Fail Rate" @@ -3017,15 +3017,15 @@ msgstr "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:252 msgid "fast peers" -msgstr "" +msgstr "نظير سريع" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:254 msgid "high capacity peers" -msgstr "" +msgstr "نظير ذو قدرة عالية" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:256 msgid " well integrated peers" -msgstr "" +msgstr "نظير مندمج" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 msgid "as determined by the profile organizer" @@ -3059,15 +3059,15 @@ msgstr "القدرة" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 msgid "how many tunnels can we ask them to join in an hour?" -msgstr "" +msgstr "كم من الانفاق نطلب منهم الانضمام في ساعة؟" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 msgid "how many new peers have they told us about lately?" -msgstr "" +msgstr "كم من النظائر موجودة مؤخرا؟" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 msgid "integration" -msgstr "" +msgstr "انضمام" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 msgid "is the peer banned, or unreachable, or failing tunnel tests?" @@ -3075,17 +3075,17 @@ msgstr "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 msgid "status" -msgstr "" +msgstr "الحالة" #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:57 #, java-format msgid "Temporary ban expiring in {0}" -msgstr "" +msgstr "منع مؤقت {0}" #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:59 -#, fuzzy, java-format +#, java-format msgid "Banned until restart or in {0}" -msgstr "" +msgstr "ممنوع الى اعادة تشغيل {0}" #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:71 msgid "unban now" @@ -3094,23 +3094,23 @@ 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 "" +msgstr "استعمال الشيكة" #: ../java/src/net/i2p/router/web/StatSummarizer.java:181 msgid "Outbound bytes/sec" -msgstr "" +msgstr "اتصال خارجي 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 "" +msgstr "اتصال داخلي 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 "" +msgstr "بايت/ثانية" #: ../java/src/net/i2p/router/web/StatSummarizer.java:186 msgid "out average" @@ -3132,7 +3132,7 @@ msgstr "اذهب" #: ../java/src/net/i2p/router/web/StatsGenerator.java:60 msgid "Statistics gathered during this router's uptime" -msgstr "" +msgstr "تجمع الاحصاءات العامة خلال خدمة الموجه" #: ../java/src/net/i2p/router/web/StatsGenerator.java:63 msgid "The data gathered is quantized over a 1 minute period, so should just be used as an estimate." @@ -3140,7 +3140,7 @@ msgstr "" #: ../java/src/net/i2p/router/web/StatsGenerator.java:64 msgid "These statistics are primarily used for development and debugging." -msgstr "" +msgstr "هذه الاحصائيات مستعملة في التطوير." #: ../java/src/net/i2p/router/web/StatsGenerator.java:105 #: ../java/src/net/i2p/router/web/StatsGenerator.java:156 @@ -3210,7 +3210,7 @@ msgstr "رسم بياني" #: ../java/src/net/i2p/router/web/StatsGenerator.java:222 msgid "Graph Event Count" -msgstr "" +msgstr "الرسم البياني" #: ../java/src/net/i2p/router/web/StatsGenerator.java:225 msgid "Export Data as XML" @@ -3219,7 +3219,7 @@ msgstr "تصدير البيانات XML" #. Display the strict average #: ../java/src/net/i2p/router/web/StatsGenerator.java:230 msgid "Lifetime average value" -msgstr "" +msgstr "متوسط الحياة" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:41 msgid "I2P Router Help & FAQ" @@ -3280,7 +3280,7 @@ msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:99 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:379 msgid "View existing tunnels and tunnel build status" -msgstr "" +msgstr "أظهر الأنفاق الموجودة وحالة الانفاق " #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:105 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254 @@ -3305,11 +3305,11 @@ msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123 msgid "Health Report" -msgstr "" +msgstr "تقرير" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:125 msgid "Logs" -msgstr "" +msgstr "يجلات" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:135 msgid "Graph router performance" @@ -3321,12 +3321,12 @@ msgstr "رسم بياني" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141 msgid "Textual router performance statistics" -msgstr "" +msgstr "احصائات نصية للموجه" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147 #: ../java/src/net/i2p/router/web/SummaryHelper.java:365 msgid "Local Destinations" -msgstr "" +msgstr "الوجهات المحلية" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:149 #: ../java/strings/Strings.java:62 @@ -3343,11 +3343,11 @@ msgstr "عام" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:167 msgid "Local Identity" -msgstr "" +msgstr "هوية محلية" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171 msgid "Your unique I2P router identity is" -msgstr "" +msgstr "هوية موجهك I2P هو" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:175 msgid "never reveal it to anyone" @@ -3375,7 +3375,7 @@ msgstr "تحميل" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:236 msgid "Download Unsigned" -msgstr "" +msgstr "تحميل" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:262 msgid "Active" @@ -3387,7 +3387,7 @@ msgstr "سريع" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:276 msgid "High capacity" -msgstr "" +msgstr "قدرة عالية" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288 msgid "Known" @@ -3395,7 +3395,7 @@ msgstr "معروف" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:303 msgid "Help with firewall configuration" -msgstr "" +msgstr "مساعدة خول اعدادات الجدار الناري" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:305 msgid "Check NAT/firewall" @@ -3403,7 +3403,7 @@ msgstr "تأكد من NAT/جدار ناري" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:325 msgid "Reseed" -msgstr "" +msgstr "اعادة توزيع" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:342 msgid "Configure router bandwidth allocation" @@ -3439,11 +3439,11 @@ msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412 msgid "Congestion" -msgstr "" +msgstr "ازدحام" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 msgid "Job lag" -msgstr "" +msgstr "تأخر" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:423 msgid "Message delay" @@ -3451,7 +3451,7 @@ msgstr "تأخر الرسالة" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:429 msgid "Tunnel lag" -msgstr "" +msgstr "تأخر النفق" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435 msgid "Backlog" @@ -3519,7 +3519,7 @@ msgstr "جاري التجريب" #: ../java/src/net/i2p/router/web/SummaryHelper.java:365 msgid "Add/remove/edit & control your client and server tunnels" -msgstr "" +msgstr "أضف/حذف/حرر & المستخدم والانفاق" #: ../java/src/net/i2p/router/web/SummaryHelper.java:377 msgid "Server" @@ -3537,7 +3537,7 @@ msgstr "" #: ../java/src/net/i2p/router/web/SummaryHelper.java:392 #: ../java/src/net/i2p/router/web/SummaryHelper.java:393 msgid "Rebuilding" -msgstr "" +msgstr "اعادة بناية" #: ../java/src/net/i2p/router/web/SummaryHelper.java:393 msgid "ago" @@ -3579,7 +3579,7 @@ msgstr "أعادة التشغيل في {0}" #: ../java/src/net/i2p/router/web/SummaryRenderer.java:91 #, java-format msgid "averaged for {0}" -msgstr "" +msgstr "متوسط {0}" #: ../java/src/net/i2p/router/web/SummaryRenderer.java:101 msgid "Events per period" @@ -3617,11 +3617,11 @@ msgstr "" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 msgid "Expiration" -msgstr "" +msgstr "انتهاء" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 msgid "Send on" -msgstr "" +msgstr "ارسال الى" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 msgid "To" @@ -3629,7 +3629,7 @@ msgstr "إلى" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:74 msgid "Rate" -msgstr "" +msgstr "معدل" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:74 msgid "Role" @@ -3642,7 +3642,7 @@ msgstr "استعمال" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:107 msgid "grace period" -msgstr "" +msgstr "فترة السماح" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:117 msgid "Outbound Endpoint" @@ -3664,7 +3664,7 @@ msgstr "انفاق غير مساهمة" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:127 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:218 msgid "Lifetime bandwidth usage" -msgstr "" +msgstr "درجة استعمال الشبكة" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "Expiry" @@ -3741,7 +3741,7 @@ msgstr "طريقة الترقية" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:91 #, java-format msgid "Unsigned update file from {0} is corrupt" -msgstr "" +msgstr "ملف التحديث غير كامل {0} " #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:111 #: ../java/src/net/i2p/router/web/UpdateHandler.java:209 @@ -3762,12 +3762,12 @@ msgstr "انقر زر التوقف وأعد التشغيل للتثبيت" #: ../java/src/net/i2p/router/web/UpdateHandler.java:220 #, java-format msgid "Version {0}" -msgstr "" +msgstr "اصدار {0}" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:126 #, java-format msgid "Failed copy to {0}" -msgstr "" +msgstr "فشل في نسخ {0}" #: ../java/src/net/i2p/router/web/UpdateHandler.java:209 msgid "Update verified" @@ -3784,15 +3784,15 @@ msgstr "دفتر العناوين" #: ../java/strings/Strings.java:13 msgid "i2psnark" -msgstr "" +msgstr "تورنت" #: ../java/strings/Strings.java:14 msgid "i2ptunnel" -msgstr "" +msgstr "نفقi2p" #: ../java/strings/Strings.java:15 msgid "susimail" -msgstr "" +msgstr "البريد" #: ../java/strings/Strings.java:16 msgid "susidns" @@ -3800,7 +3800,7 @@ msgstr "" #: ../java/strings/Strings.java:17 msgid "routerconsole" -msgstr "" +msgstr "موجه" #. clients, taken from clients.config, for ConfigClientsHelper #. note that if the wording changes in clients.config, we have to @@ -3819,11 +3819,11 @@ msgstr "نفق البرامج" #: ../java/strings/Strings.java:25 msgid "My eepsite web server" -msgstr "" +msgstr " eepsite خادم ويب" #: ../java/strings/Strings.java:26 msgid "I2P webserver (eepsite)" -msgstr "" +msgstr "I2P خادم ويب (eepsite)" #: ../java/strings/Strings.java:27 msgid "Browser launch at startup" @@ -3835,11 +3835,11 @@ msgstr "" #: ../java/strings/Strings.java:30 msgid "Open Router Console in web browser at startup" -msgstr "" +msgstr "فتح شاشة التحكم في المتصفح عند البداية" #: ../java/strings/Strings.java:37 msgid "IRC proxy" -msgstr "" +msgstr "IRC بروكسي" #: ../java/strings/Strings.java:38 msgid "eepsite" @@ -3892,14 +3892,12 @@ msgstr "ليل" #. stat groups for stats.jsp #: ../java/strings/Strings.java:57 -#, fuzzy msgid "Bandwidth" -msgstr "" +msgstr "سرعة الاتصال" #: ../java/strings/Strings.java:58 -#, fuzzy msgid "BandwidthLimiter" -msgstr "" +msgstr "تحديد سرعة الاتصال" #: ../java/strings/Strings.java:59 #, fuzzy @@ -4027,11 +4025,11 @@ msgstr "" #. bw.sendRate #: ../java/strings/Strings.java:103 msgid "How many peers we are actively talking with" -msgstr "" +msgstr "كم من المستخدمين نتحاور معهم" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:106 msgid "config networking" -msgstr "" +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 @@ -4103,7 +4101,7 @@ msgstr "اعدادات شبكة I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:297 msgid "Bandwidth limiter" -msgstr "" +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." @@ -4151,7 +4149,7 @@ msgstr "قمت باعداد I2P لمشاركة {0} KOps." #: ../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 "" +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 @@ -4188,7 +4186,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:386 msgid "UPnP status" -msgstr "" +msgstr "UPnP حالة" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:388 msgid "IP Configuration" @@ -4205,11 +4203,11 @@ msgstr "استعمال جميع طرق الاكتشاف التلقائي" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:398 msgid "Disable UPnP IP address detection" -msgstr "" +msgstr "الغاء UPnP IP اكتشاف عنوان " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:402 msgid "Ignore local interface IP address" -msgstr "" +msgstr "تجاهل عنوان IP المحلي" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:406 msgid "Use SSU IP address detection only" @@ -4218,7 +4216,7 @@ msgstr "" #: ../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 "" +msgstr "حدد hostname او IP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:416 msgid "Select Interface" @@ -4234,7 +4232,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:434 msgid "Action when IP changes" -msgstr "" +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" @@ -4287,7 +4285,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:492 msgid "Externally reachable TCP port" -msgstr "" +msgstr "منفذ TCP يمكن الوصول إليها خارجيا" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:496 msgid "Use the same port configured for UDP" @@ -4498,7 +4496,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:630 msgid "Please open your firewall or enable UDP." -msgstr "" +msgstr "غير اعدادات الجدار الناري لفتح منفذ UDP." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:632 msgid "ERR - Clock Skew" @@ -4510,7 +4508,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:636 msgid "Correct your clock setting if this error persists." -msgstr "" +msgstr "غير اعدادات الساعة اذا استمر هذا الخطأ." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:638 msgid "ERR - Private TCP Address" @@ -4546,7 +4544,7 @@ msgstr "" #: ../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 "" +msgstr "تحقق من انه لا يوجد برنامج آخر يستعمل نفس المنفذ. قم بتوقيف البرنامج وتغيير اعدادات I2P." #: ../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." @@ -4554,7 +4552,7 @@ 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 "" +msgstr "اعادة تشغيل ضرورية بعد هذا الخطأ." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:660 msgid "ERR - UDP Disabled and Inbound TCP host/port not set" @@ -4598,7 +4596,7 @@ 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 "" +msgstr "بعض التغييرات تحتاج اعادة التشغيل لتفعيلها" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:106 msgid "config clients" @@ -4618,12 +4616,12 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:317 msgid "To change other client options, edit the file" -msgstr "" +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 "" +msgstr "جيمع التغييرات تحتاج اعادة التشغيل ليتم تطبيقها" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:336 msgid "WebApp Configuration" @@ -4643,11 +4641,11 @@ 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 "" +msgstr "الملحقال التالية يتم تشغيلها من طرف شاشة التحكم" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:358 msgid "Plugin Installation" -msgstr "" +msgstr "تثبيت الملحق" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:360 msgid "To install a plugin, enter the download URL:" @@ -4695,19 +4693,19 @@ msgstr "مفتاح التشفير" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:107 msgid "config logging" -msgstr "" +msgstr "اعدادت السجلات" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:242 msgid "I2P Logging Configuration" -msgstr "" +msgstr "اعدادت السجلات I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:299 msgid "Configure I2P Logging Options" -msgstr "" +msgstr "اعدادت السجلات I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 msgid "Logging filename" -msgstr "" +msgstr "ملف السجل" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:305 msgid "(the symbol '@' will be replaced during log rotation)" @@ -4715,7 +4713,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307 msgid "Log record format" -msgstr "" +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)" @@ -4723,7 +4721,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 msgid "Log date format" -msgstr "" +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)" @@ -4731,11 +4729,11 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 msgid "Max log file size" -msgstr "" +msgstr "أقصى حجم لملف السجل" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:323 msgid "Default log level" -msgstr "" +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)" @@ -4759,7 +4757,7 @@ msgstr "اعدادات مستخدمي I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:304 msgid "Manual Peer Controls" -msgstr "" +msgstr "تحكم يدوي في النظائر" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:306 msgid "Router Hash" @@ -4767,7 +4765,7 @@ msgstr "بصمة الموجه" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:310 msgid "Manually Ban / Unban a Peer" -msgstr "" +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." @@ -4800,7 +4798,7 @@ msgstr "اعدادات الخدمة" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:228 msgid "I2P Service Configuration" -msgstr "" +msgstr "اعدادات خدمة I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:284 msgid "Shutdown the router" @@ -4824,11 +4822,11 @@ msgstr "" #: ../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 "" +msgstr "اعادة التشغيل ستتم بعد بضع دقائق (لمساعدة النظائر)، بينما اعادة التشغبل الفورية تعيد التشغيل فورا." #: ../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 "" +msgstr "عند توقيف الموجه، سيتم تشغيله مرة أخرى بعد دقيقة." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:314 msgid "Systray integration" @@ -4836,7 +4834,7 @@ 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 "" +msgstr "في نظام ويندوز، هناك برنامج صغير يمكنك من خلال ايقونة معرفة حالة اشتغال الموجه" #: ../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)." @@ -4844,7 +4842,7 @@ msgstr "" #: ../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 "" +msgstr "اذا كنت من مستعملي ويندوز يمكنك تفعيل او الغاء تفعيل الايقونة هنا." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:326 msgid "Run on startup" @@ -4922,7 +4920,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:328 msgid "Log" -msgstr "" +msgstr "سجل" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:330 msgid "Graph" @@ -4966,11 +4964,11 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:335 msgid "Client tunnel changes are temporary and are not saved." -msgstr "" +msgstr "تغييرات النفق هي مؤقتة وغير محفوظة" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:337 msgid "To make permanent client tunnel changes see the" -msgstr "" +msgstr "للقيام بتغييرات دائمة أنظر" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:339 msgid "i2ptunnel page" @@ -5082,7 +5080,7 @@ 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 "" +msgstr "معذرة، انت تقوم بطلب صفحة غير موجودة" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:245 msgid "Error 404" @@ -5114,11 +5112,11 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:105 msgid "logs" -msgstr "" +msgstr "السجلات" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:227 msgid "I2P Router Logs" -msgstr "" +msgstr "I2P سجل الموجه" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:229 msgid "I2P Version & Running Environment" @@ -5137,9 +5135,8 @@ msgid "Critical Logs" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:278 -#, fuzzy msgid "Router Logs" -msgstr "" +msgstr "سجلات الموجه" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:284 msgid "Service (Wrapper) Logs" @@ -5147,7 +5144,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:105 msgid "network database summary" -msgstr "" +msgstr "قاعدة البيانات" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:227 msgid "I2P Network Database Summary" From 21c65475f9c9894f0da6515f9dfbe6e465e4e2d9 Mon Sep 17 00:00:00 2001 From: hamada Date: Thu, 3 Mar 2011 21:14:24 +0000 Subject: [PATCH 274/463] Update Arabic translation --- apps/desktopgui/locale/messages_en.po | 3 +- apps/i2psnark/locale/messages_ar.po | 443 ++-- apps/i2psnark/locale/messages_de.po | 149 +- apps/i2psnark/locale/messages_en.po | 299 +-- apps/i2psnark/locale/messages_es.po | 780 ++++--- apps/i2psnark/locale/messages_fr.po | 772 ++++--- apps/i2psnark/locale/messages_nl.po | 300 +-- apps/i2psnark/locale/messages_pt.po | 771 ++++--- apps/i2psnark/locale/messages_ru.po | 413 ++-- apps/i2psnark/locale/messages_zh.po | 382 ++-- apps/i2ptunnel/locale/messages_ar.po | 147 +- apps/i2ptunnel/locale/messages_en.po | 7 +- apps/i2ptunnel/locale/messages_nl.po | 14 +- apps/i2ptunnel/locale/messages_zh.po | 71 +- apps/routerconsole/locale/messages_ar.po | 1923 ++++++++++-------- apps/routerconsole/locale/messages_de.po | 923 ++++++--- apps/routerconsole/locale/messages_en.po | 82 +- apps/routerconsole/locale/messages_es.po | 990 ++++++--- apps/routerconsole/locale/messages_fr.po | 2374 +++++++++++++--------- apps/routerconsole/locale/messages_nl.po | 84 +- apps/routerconsole/locale/messages_ru.po | 1028 +++++++--- apps/routerconsole/locale/messages_zh.po | 640 ++++-- apps/susidns/locale/messages_ar.po | 141 +- apps/susidns/locale/messages_de.po | 205 +- apps/susidns/locale/messages_en.po | 3 +- apps/susidns/locale/messages_nl.po | 4 +- apps/susidns/locale/messages_ru.po | 265 ++- apps/susidns/locale/messages_zh.po | 1001 ++++----- 28 files changed, 8784 insertions(+), 5430 deletions(-) diff --git a/apps/desktopgui/locale/messages_en.po b/apps/desktopgui/locale/messages_en.po index 10f0f81c5..e92250e67 100644 --- a/apps/desktopgui/locale/messages_en.po +++ b/apps/desktopgui/locale/messages_en.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: I2P desktopgui\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 11:53+0000\n" +"POT-Creation-Date: 2011-03-03 18:29+0000\n" "PO-Revision-Date: 2010-06-15 14:09+0100\n" "Last-Translator: duck \n" "Language-Team: duck \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/apps/i2psnark/locale/messages_ar.po b/apps/i2psnark/locale/messages_ar.po index da8c690c1..f0be3b974 100644 --- a/apps/i2psnark/locale/messages_ar.po +++ b/apps/i2psnark/locale/messages_ar.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 11:53+0000\n" -"PO-Revision-Date: 2011-02-25 21:06-0000\n" +"POT-Creation-Date: 2011-03-03 18:28+0000\n" +"PO-Revision-Date: 2011-03-03 17:18-0000\n" "Last-Translator: hamada \n" "Language-Team: duck \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -20,44 +21,45 @@ msgstr "" #: ../java/src/org/klomp/snark/SnarkManager.java:307 #, java-format msgid "Total uploaders limit changed to {0}" -msgstr "" +msgstr "تم تغببر مجموع حد الرفع الى {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:309 #, java-format msgid "Minimum total uploaders limit is {0}" -msgstr "" +msgstr "اقل حد الرفع الى {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:321 #, java-format msgid "Up BW limit changed to {0}KBps" -msgstr "" +msgstr "حولت سرعة الرفع الى {0}KBps" #: ../java/src/org/klomp/snark/SnarkManager.java:323 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" -msgstr "" +msgstr "اقل سرعة رفع هي{0}KBps" #: ../java/src/org/klomp/snark/SnarkManager.java:335 #, java-format msgid "Startup delay changed to {0}" -msgstr "" +msgstr "تغير تأخير البداية الى {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:386 msgid "I2CP and tunnel changes will take effect after stopping all torrents" -msgstr "" +msgstr "سيتم تفعيل التغيير بعد اعادة التشغيل" #: ../java/src/org/klomp/snark/SnarkManager.java:393 msgid "Disconnecting old I2CP destination" -msgstr "" +msgstr "فك الاتصال" #: ../java/src/org/klomp/snark/SnarkManager.java:397 #, java-format msgid "I2CP settings changed to {0}" -msgstr "" +msgstr " تغيرت الاعدادات الى {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:402 -msgid "Unable to connect with the new settings, reverting to the old I2CP settings" -msgstr "" +msgid "" +"Unable to connect with the new settings, reverting to the old I2CP settings" +msgstr "فشل في الاتصال بالاعدادات الجديدة، سيتم الرجوع الى الاعدادات القديمة" #: ../java/src/org/klomp/snark/SnarkManager.java:406 msgid "Unable to reconnect with the old settings!" @@ -65,12 +67,12 @@ msgstr "فشل في اعادة الاتصال بالاعدادات القديم #: ../java/src/org/klomp/snark/SnarkManager.java:408 msgid "Reconnected on the new I2CP destination" -msgstr "" +msgstr "اتصال بوجهة جديدة" #: ../java/src/org/klomp/snark/SnarkManager.java:418 #, java-format msgid "I2CP listener restarted for \"{0}\"" -msgstr "" +msgstr "اعادة التشغيل \"{0}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:429 msgid "Enabled autostart" @@ -82,20 +84,20 @@ msgstr "الغاء التشغيل عند البداية" #: ../java/src/org/klomp/snark/SnarkManager.java:437 msgid "Enabled open trackers - torrent restart required to take effect." -msgstr "" +msgstr "تفعيل open trackers - يجب اعادة تشغيل التورنت لتفعيل التغيير." #: ../java/src/org/klomp/snark/SnarkManager.java:439 msgid "Disabled open trackers - torrent restart required to take effect." -msgstr "" +msgstr "الغاء تفعيل open trackers - يجب اعادة تشغيل التورنت لتفعيل التغيير." #: ../java/src/org/klomp/snark/SnarkManager.java:447 msgid "Open Tracker list changed - torrent restart required to take effect." -msgstr "" +msgstr "تغيير open trackers - يجب اعادة تشغيل التورنت لتفعيل التغيير." #: ../java/src/org/klomp/snark/SnarkManager.java:454 #, java-format msgid "{0} theme loaded, return to main i2psnark page to view." -msgstr "" +msgstr "{0} تم تحميل التيمة ارجع الى صفحة للمشاهدة i2psnark." #: ../java/src/org/klomp/snark/SnarkManager.java:461 msgid "Configuration unchanged." @@ -129,21 +131,25 @@ msgstr "فشل في فتح \"{0}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:586 #: ../java/src/org/klomp/snark/SnarkManager.java:661 #: ../java/src/org/klomp/snark/SnarkManager.java:716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976 #, java-format msgid "Torrent with this info hash is already running: {0}" -msgstr "" +msgstr "تورنت بهذه المعلومات مشغل: {0}" #. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); #: ../java/src/org/klomp/snark/SnarkManager.java:593 #, java-format -msgid "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers only." +msgid "" +"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers " +"only." msgstr "" #. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); #: ../java/src/org/klomp/snark/SnarkManager.java:598 #, java-format -msgid "Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is enabled before starting this torrent." +msgid "" +"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is " +"enabled before starting this torrent." msgstr "" #: ../java/src/org/klomp/snark/SnarkManager.java:619 @@ -152,15 +158,15 @@ msgid "Torrent in \"{0}\" is invalid" msgstr "تورنت في \"{0}\"غير صحيح" #: ../java/src/org/klomp/snark/SnarkManager.java:624 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1994 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" -msgstr "" +msgstr "خطأ - لا توجد ذاكرة كافية، لا يمكن انشاء تورنت {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:635 #, java-format msgid "Torrent added and started: \"{0}\"" -msgstr "" +msgstr "تم اضافة وتشغيل التورنت: \"{0}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:637 #, java-format @@ -168,15 +174,17 @@ msgid "Torrent added: \"{0}\"" msgstr "تمت اضافة: \"{0}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:672 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:489 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490 #, java-format msgid "Fetching {0}" msgstr "يحمل {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:675 #, java-format -msgid "We have no saved peers and no other torrents are running. Fetch of {0} will not succeed until you start another torrent." -msgstr "" +msgid "" +"We have no saved peers and no other torrents are running. Fetch of {0} will " +"not succeed until you start another torrent." +msgstr "لا يوجد تورنت مشغل . تحميل {0} لن يتم حتى تشغيل تورنت جديد." #: ../java/src/org/klomp/snark/SnarkManager.java:679 #, java-format @@ -198,12 +206,12 @@ msgstr "ملفات كثيرة في \"{0}\" ({1}) تم حذف" #: ../java/src/org/klomp/snark/SnarkManager.java:974 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" -msgstr "" +msgstr "ملف التورنت \"{0}\" لا يمكنه الانتهاء ب \".torrent\", سيتم حذفه!" #: ../java/src/org/klomp/snark/SnarkManager.java:976 #, java-format msgid "No pieces in \"{0}\", deleting it!" -msgstr "" +msgstr "ﻻ أجزاء في \"{0}\", حذف!" #: ../java/src/org/klomp/snark/SnarkManager.java:978 #, java-format @@ -213,7 +221,7 @@ msgstr "" #: ../java/src/org/klomp/snark/SnarkManager.java:980 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B), deleting it." -msgstr "" +msgstr "الأجزاء كبيرة في \"{0}\" ({1}B), حذف." #: ../java/src/org/klomp/snark/SnarkManager.java:981 #, java-format @@ -228,7 +236,7 @@ msgstr "تورنت أكبر من {0}B غير مدعومة سيحذف \"{1}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:1005 #, java-format msgid "Error: Could not remove the torrent {0}" -msgstr "" +msgstr "خطأ: ﻻيمكن حذف التورنت {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:1026 #: ../java/src/org/klomp/snark/SnarkManager.java:1044 @@ -257,7 +265,7 @@ msgid "Metainfo received for {0}" msgstr "" #: ../java/src/org/klomp/snark/SnarkManager.java:1171 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525 #, java-format msgid "Starting up torrent {0}" msgstr "بداية التورنت {0}" @@ -281,9 +289,9 @@ msgstr "تورنت" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1024 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1028 msgid "I2PSnark" -msgstr "" +msgstr "I2PSnark برنامج تورنت" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:225 msgid "Refresh page" @@ -294,7 +302,7 @@ msgid "Forum" msgstr "منتدى" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1715 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 msgid "Status" msgstr "الحالة" @@ -309,8 +317,8 @@ msgid "Show Peers" msgstr "أظهر النظائر" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1639 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1655 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1643 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659 msgid "Torrent" msgstr "تورنت" @@ -357,537 +365,548 @@ msgstr "معدل" msgid "Up Rate" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:364 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Stop all torrents and the I2P tunnel" msgstr "توقيف جمبع التورنت و النفق I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:367 msgid "Stop All" msgstr "توقيف الجمبع" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:375 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376 msgid "Start all torrents and the I2P tunnel" msgstr "شغل جمبع التورنت و النفق I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:378 msgid "Start All" msgstr "شغل الجمبع" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:396 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397 msgid "No torrents loaded." -msgstr "" +msgstr "لم يحمل تورنت" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:401 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402 msgid "Totals" msgstr "مجموع" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 تورنت" +msgstr[1] "{0} تورنت" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:406 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "{0} مستخدم متصل" +msgstr[1] "{0} مستخدمون متصلون" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:495 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496 #, java-format msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:543 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571 #, java-format msgid "Magnet deleted: {0}" -msgstr "" +msgstr "تم حذف ملف مغناطيس: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:551 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:576 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 #, java-format msgid "Torrent file deleted: {0}" msgstr "تم خذف ملف التورنت: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 #, java-format msgid "Data file deleted: {0}" msgstr "خذف ملف البيانات: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:585 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595 #, java-format msgid "Data file could not be deleted: {0}" msgstr "فشل في حذف الملف: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604 #, java-format msgid "Data dir deleted: {0}" -msgstr "" +msgstr "حذف مجلد المعطيات: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:636 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 msgid "Error creating torrent - you must select a tracker" msgstr "فشل في انشاء تورنت - عليك اختيار tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:652 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653 #, java-format msgid "Torrent created for \"{0}\"" msgstr "تم انشاء تورنت لـ \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:654 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655 #, java-format -msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\"" +msgid "" +"Many I2P trackers require you to register new torrents before seeding - " +"please do so before starting \"{0}\"" msgstr "" +"العديد من trackers يطلبون تسجيل التورنت قبل مشاركتها، قم بذلك قبل البداية {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:656 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "فشل في انشاء تورنت لـ \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:659 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:660 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "لا يمكن انشاء تورنت لبيانات غير موجودة: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663 msgid "Error creating torrent - you must enter a file or directory" msgstr "فشل في انشاء تورنت - عليك اختيار ملف أو مجلد" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "توقيف جميع التورنت و قفل النفق I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:677 msgid "I2P tunnel closed." msgstr "تم قفل النفق" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680 msgid "Opening the I2P tunnel and starting all torrents." msgstr "فتح النفق واطلاق جميع التورنت" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:802 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:807 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:813 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:803 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Tracker Error" msgstr "Tracker خطأ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:805 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:825 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:842 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:846 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:806 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:826 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:847 #, java-format msgid "1 peer" msgid_plural "{0} peers" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "{0} نظير" +msgstr[1] "{0} نظير" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:818 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:824 msgid "Seeding" msgstr "بشارك" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:827 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1661 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:828 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770 msgid "Complete" msgstr "اكتمل" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:830 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:835 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 msgid "OK" msgstr "موافق" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:840 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845 msgid "Stalled" msgstr "متوقف" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:848 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:851 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:849 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852 msgid "No Peers" msgstr "لا بوجد نظائر" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:853 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854 msgid "Stopped" msgstr "متوقف" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:885 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:886 msgid "Torrent details" msgstr "تفاصيل التورنت" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:897 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1156 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160 msgid "Info" msgstr "معلومات" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:913 msgid "View files" msgstr "أظهر الملفات" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:914 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:915 msgid "Open file" msgstr "فتح ملف" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:957 msgid "Stop the torrent" msgstr "قف التورنت" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 msgid "Stop" msgstr "قف" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 msgid "Start the torrent" msgstr "ابدأ التورنت" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:971 msgid "Start" msgstr "ابدأ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:979 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "حذف التورنت من القائمة، حذف ملف .torrent" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:984 -#, java-format -msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?" -msgstr "هل أنت متأكد من حذف الملف \\''{0}.تورنت\\'' (سيتم خذف ايضا الملفات التي تم تحميلها) ?" - #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 +#, java-format +msgid "" +"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded " +"data will not be deleted) ?" +msgstr "" +"هل أنت متأكد من حذف الملف \\''{0}.تورنت\\'' (سيتم خذف ايضا الملفات التي تم " +"تحميلها) ?" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990 msgid "Remove" msgstr "حذف" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:997 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001 msgid "Delete the .torrent file and the associated data file(s)" msgstr "خذف ملف التورنت و الملفات المرتبطة به" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1002 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006 #, java-format -msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?" -msgstr "" +msgid "" +"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " +"data?" +msgstr "هل أنت متأكد من حذف التورنت \\''{0}\\'' وجمبع البيانات المحملة؟" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1005 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009 msgid "Delete" msgstr "حذف" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1038 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1042 msgid "Unknown" msgstr "غير معروف" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1050 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054 msgid "Seed" msgstr "شارك" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Uninteresting (The peer has no pieces we need)" -msgstr "" +msgstr "غير مهم (النظير لا يحتوي على اجزاء نحتاجها)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1075 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1095 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1099 msgid "Uninterested (We have no pieces the peer needs)" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101 msgid "Choking (We are not allowing the peer to request pieces)" -msgstr "" +msgstr "مشكلة (لا يمكن الحصول على اجزاء الملف من النظائر)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159 #, java-format msgid "Details at {0} tracker" -msgstr "" +msgstr "تفاصيل حول {0} tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1184 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1188 msgid "Add Torrent" msgstr "أضف تورنت" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1186 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190 msgid "From URL" msgstr "من عنوان" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1189 -msgid "Enter the torrent file download URL (I2P only), magnet link, or maggot link" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193 +msgid "" +"Enter the torrent file download URL (I2P only), magnet link, or maggot link" msgstr "ادخل عنوان التورنت لتحميله (فقط على شبكة i2p)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198 msgid "Add torrent" msgstr "أضف تورنت" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1201 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "يمكن ايضا .نقل ملفات تورنت الى: {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1199 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Removing a .torrent will cause it to stop." msgstr "سيتم القاف التورنت عند حذف الملف torrent." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1222 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 msgid "Create Torrent" msgstr "أنشئ تورنت" #. out.write("From file:
    \n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1225 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229 msgid "Data to seed" msgstr "البيانات المشاركة" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233 msgid "File or directory to seed (must be within the specified path)" msgstr "الملف او المجلد الذي ترغب في مشاركته " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1680 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1235 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 msgid "Tracker" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237 msgid "Select a tracker" msgstr "اختر tracker" #. out.write(_("Open trackers and DHT only")); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1238 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 msgid "Open trackers only" msgstr "trackers المفتوحة فقط" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257 msgid "or" msgstr "أو" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1256 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260 msgid "Specify custom tracker announce URL" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1259 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263 msgid "Create torrent" msgstr "أنشئ تورنت" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1416 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420 msgid "Configuration" msgstr "اعدادات" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1285 msgid "Data directory" msgstr "مجلد البيانات" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283 -msgid "Edit i2psnark.config and restart to change" -msgstr "" - #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287 +msgid "Edit i2psnark.config and restart to change" +msgstr "حرر i2psnark.config وأعد التشغيل" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 msgid "Auto start" msgstr "ابدأ عند البداية" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295 msgid "If checked, automatically start torrents that are added" msgstr "اذا تم تفعيل، يقوم بتشغيل التورنت تلقائيا عند اضافته" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1299 msgid "Theme" msgstr "تيمة" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1308 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312 msgid "Startup delay" msgstr "تأخر البداية" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1310 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314 msgid "minutes" msgstr "دقائق" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1338 msgid "Total uploader limit" -msgstr "" +msgstr "اقصى حد للرفع" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1337 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 msgid "peers" msgstr "النظائر" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1345 msgid "Up bandwidth limit" -msgstr "" +msgstr "اقصى حد لسرعة الاتصال" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348 msgid "Half available bandwidth recommended." -msgstr "" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346 -msgid "View or change router bandwidth" -msgstr "" +msgstr "ينصح باستعمال نصف سرعة الشبكة" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 -msgid "Use open trackers also" -msgstr "" +msgid "View or change router bandwidth" +msgstr "أظهر أو غير سرعة الموجه" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354 -msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file" -msgstr "" +msgid "Use open trackers also" +msgstr "استعمال open trackers ايضا" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 +msgid "" +"If checked, announce torrents to open trackers as well as the tracker listed " +"in the torrent file" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362 msgid "Open tracker announce URLs" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1370 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1374 msgid "Inbound Settings" msgstr "اعدادت الاتصال الداخلي" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1376 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1380 msgid "Outbound Settings" msgstr "اعدادت الاتصال الخارجي" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1384 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 msgid "I2CP host" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1389 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1393 msgid "I2CP port" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1402 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1406 msgid "I2CP options" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411 msgid "Save configuration" msgstr "حفظ الاعدادات" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436 #, java-format msgid "Invalid magnet URL {0}" msgstr "غنوان مغناطيس غير صحيح {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1466 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470 #, java-format msgid "Invalid info hash in magnet URL {0}" msgstr "" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1496 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1500 #, java-format msgid "1 hop" msgid_plural "{0} hops" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 قفزة" +msgstr[1] "{0} قفزات" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1497 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1501 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 نفق" +msgstr[1] "{0} أنفاق" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 msgid "Completion" msgstr "انتهاء" #. else unknown -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 msgid "Size" msgstr "الحجم" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1668 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 msgid "Files" msgstr "الملفات" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1670 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674 msgid "Pieces" msgstr "القطع" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675 msgid "Piece size" msgstr "حجم القطعة" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1693 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697 msgid "Magnet link" msgstr "وصلة مغناطيس" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1710 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753 msgid "Directory" msgstr "المجلد" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723 msgid "Priority" msgstr "الأولوية" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1724 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1728 msgid "Up to higher level directory" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1754 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 msgid "Torrent not found?" msgstr "تورنت غير موجود؟" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767 msgid "File not found in torrent?" msgstr "الملف غير موجود في التورنت؟" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1780 msgid "complete" msgstr "اكتمل" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1777 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781 msgid "bytes remaining" msgstr "البايت المتبقية" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1802 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806 msgid "Open" msgstr "فتح" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1828 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1832 msgid "High" msgstr "عالي" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1833 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1837 msgid "Normal" msgstr "عادي" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1842 msgid "Skip" msgstr "تجاوز" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1847 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1851 msgid "Save priorities" msgstr "حفظ الأولويات" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967 #, java-format msgid "Torrent fetched from {0}" msgstr "تم تحميل الملف من {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1984 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1989 #, java-format msgid "Torrent already running: {0}" msgstr "تورنت مفعل: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1986 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1991 #, java-format msgid "Torrent already in the queue: {0}" msgstr "تورنت في قائمة الانتظار: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1992 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1997 #, java-format msgid "Torrent at {0} was not valid" msgstr "تورنت غير صحيح {0} " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2004 #, java-format msgid "Torrent was not retrieved from {0}" -msgstr "" - +msgstr "لم يتم تحميل التورنت من {0}" diff --git a/apps/i2psnark/locale/messages_de.po b/apps/i2psnark/locale/messages_de.po index c2fb29a02..8cb0ab1bf 100644 --- a/apps/i2psnark/locale/messages_de.po +++ b/apps/i2psnark/locale/messages_de.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-27 16:02+0000\n" +"POT-Creation-Date: 2011-03-03 18:28+0000\n" "PO-Revision-Date: 2011-02-27 17:33+0100\n" "Last-Translator: \n" "Language-Team: foo \n" @@ -46,7 +46,9 @@ msgstr "Startverzögerung auf {0} gesetzt" #: ../java/src/org/klomp/snark/SnarkManager.java:386 msgid "I2CP and tunnel changes will take effect after stopping all torrents" -msgstr "Änderungen an I2CP und am Tunnel werden nach dem Stoppen aller Torrents wirksam" +msgstr "" +"Änderungen an I2CP und am Tunnel werden nach dem Stoppen aller Torrents " +"wirksam" #: ../java/src/org/klomp/snark/SnarkManager.java:393 msgid "Disconnecting old I2CP destination" @@ -58,8 +60,11 @@ msgid "I2CP settings changed to {0}" msgstr "I2CP Einstellungen geändert auf {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:402 -msgid "Unable to connect with the new settings, reverting to the old I2CP settings" -msgstr "Verbinden mit den neuen Einstellungen nicht möglich, benutze wieder die alten I2CP-Einstellungen" +msgid "" +"Unable to connect with the new settings, reverting to the old I2CP settings" +msgstr "" +"Verbinden mit den neuen Einstellungen nicht möglich, benutze wieder die " +"alten I2CP-Einstellungen" #: ../java/src/org/klomp/snark/SnarkManager.java:406 msgid "Unable to reconnect with the old settings!" @@ -84,20 +89,28 @@ msgstr "Deaktiviere Autostart" #: ../java/src/org/klomp/snark/SnarkManager.java:437 msgid "Enabled open trackers - torrent restart required to take effect." -msgstr "OpenTracker aktiviert - Um dies anzuwenden, müssen die Torrents neu gestartet werden." +msgstr "" +"OpenTracker aktiviert - Um dies anzuwenden, müssen die Torrents neu " +"gestartet werden." #: ../java/src/org/klomp/snark/SnarkManager.java:439 msgid "Disabled open trackers - torrent restart required to take effect." -msgstr "OpenTracker deaktiviert - Um dies anzuwenden, müssen die Torrents neu gestartet werden." +msgstr "" +"OpenTracker deaktiviert - Um dies anzuwenden, müssen die Torrents neu " +"gestartet werden." #: ../java/src/org/klomp/snark/SnarkManager.java:447 msgid "Open Tracker list changed - torrent restart required to take effect." -msgstr "OpenTracker-Liste geändert - Um dies anzuwenden, müssen die Torrents neu gestartet werden" +msgstr "" +"OpenTracker-Liste geändert - Um dies anzuwenden, müssen die Torrents neu " +"gestartet werden" #: ../java/src/org/klomp/snark/SnarkManager.java:454 #, java-format msgid "{0} theme loaded, return to main i2psnark page to view." -msgstr "Thema {0} geladen. Gehen Sie zurück zur Hauptseite von i2psnark, um die Änderungen zu sehen!" +msgstr "" +"Thema {0} geladen. Gehen Sie zurück zur Hauptseite von i2psnark, um die " +"Änderungen zu sehen!" #: ../java/src/org/klomp/snark/SnarkManager.java:461 msgid "Configuration unchanged." @@ -114,7 +127,8 @@ msgstr "Verbinde mit I2P" #: ../java/src/org/klomp/snark/SnarkManager.java:539 msgid "Error connecting to I2P - check your I2CP settings!" -msgstr "Fehler beim Verbinden mit I2P - Kontrollieren Sie die I2CP-Einstellungen!" +msgstr "" +"Fehler beim Verbinden mit I2P - Kontrollieren Sie die I2CP-Einstellungen!" #: ../java/src/org/klomp/snark/SnarkManager.java:548 #, java-format @@ -131,7 +145,7 @@ msgstr "Kann dies nicht öffnen: \"{0}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:586 #: ../java/src/org/klomp/snark/SnarkManager.java:661 #: ../java/src/org/klomp/snark/SnarkManager.java:716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1975 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "Torrent mit diesem Infohash läuft schon: {0}" @@ -139,14 +153,22 @@ msgstr "Torrent mit diesem Infohash läuft schon: {0}" #. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); #: ../java/src/org/klomp/snark/SnarkManager.java:593 #, java-format -msgid "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers only." -msgstr "Warnung - keine I2P Tracker in \"{0}\", werde nur bei I2P-OpenTrackern bekanntgeben" +msgid "" +"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers " +"only." +msgstr "" +"Warnung - keine I2P Tracker in \"{0}\", werde nur bei I2P-OpenTrackern " +"bekanntgeben" #. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); #: ../java/src/org/klomp/snark/SnarkManager.java:598 #, java-format -msgid "Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is enabled before starting this torrent." -msgstr "Warnung - keine I2P-Tracker in \"{0}\" gefunden. Stell sicher, dass OpenTracker aktiviert sind, bevor du diesen Torrent startest!" +msgid "" +"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is " +"enabled before starting this torrent." +msgstr "" +"Warnung - keine I2P-Tracker in \"{0}\" gefunden. Stell sicher, dass " +"OpenTracker aktiviert sind, bevor du diesen Torrent startest!" #: ../java/src/org/klomp/snark/SnarkManager.java:619 #, java-format @@ -154,10 +176,12 @@ msgid "Torrent in \"{0}\" is invalid" msgstr "Torrent in \"{0}\" ist nicht gültig" #: ../java/src/org/klomp/snark/SnarkManager.java:624 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1998 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" -msgstr "Fehler - unzureichender Arbeitsspeicher, kann keinen Torrent von {0} erstellen." +msgstr "" +"Fehler - unzureichender Arbeitsspeicher, kann keinen Torrent von {0} " +"erstellen." #: ../java/src/org/klomp/snark/SnarkManager.java:635 #, java-format @@ -177,8 +201,13 @@ msgstr "Hole {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:675 #, java-format -msgid "We have no saved peers and no other torrents are running. Fetch of {0} will not succeed until you start another torrent." -msgstr "Wir haben keine Gespeicherten Teilnehmer und keine anderen aktiven Torrents. Das Herunterladen von {0} kann nicht erfolgen, solange du keinen anderen Torrent startest." +msgid "" +"We have no saved peers and no other torrents are running. Fetch of {0} will " +"not succeed until you start another torrent." +msgstr "" +"Wir haben keine Gespeicherten Teilnehmer und keine anderen aktiven Torrents. " +"Das Herunterladen von {0} kann nicht erfolgen, solange du keinen anderen " +"Torrent startest." #: ../java/src/org/klomp/snark/SnarkManager.java:679 #, java-format @@ -225,7 +254,8 @@ msgstr "Limit ist \"{0}\"Bytes" #: ../java/src/org/klomp/snark/SnarkManager.java:989 #, java-format msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" -msgstr "Torrents größer als \"{0}\"Bytes werden nicht unterstützt, lösche \"{1}\"." +msgstr "" +"Torrents größer als \"{0}\"Bytes werden nicht unterstützt, lösche \"{1}\"." #: ../java/src/org/klomp/snark/SnarkManager.java:1005 #, java-format @@ -439,7 +469,8 @@ msgstr "Datenverzeichnis wurde gelöscht: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 msgid "Error creating torrent - you must select a tracker" -msgstr "Fehler beim Erstellen des Torrents - Sie müssen einen Tracker auswählen!" +msgstr "" +"Fehler beim Erstellen des Torrents - Sie müssen einen Tracker auswählen!" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653 #, java-format @@ -448,8 +479,12 @@ msgstr "Torrent erstellt für \"{0}\"" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655 #, java-format -msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\"" -msgstr "Viele I2P-Tracker erfordern eine Registrierung, bevor der Torrent verteilt wird. Bitte tun Sie dies vor dem Start von \"{0}\"!" +msgid "" +"Many I2P trackers require you to register new torrents before seeding - " +"please do so before starting \"{0}\"" +msgstr "" +"Viele I2P-Tracker erfordern eine Registrierung, bevor der Torrent verteilt " +"wird. Bitte tun Sie dies vor dem Start von \"{0}\"!" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657 #, java-format @@ -463,7 +498,9 @@ msgstr "Kann keinen Torrent für nicht existente Daten erstellen: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663 msgid "Error creating torrent - you must enter a file or directory" -msgstr "Fehler beim Erstellen des Torrents - Sie müssen eine Datei oder ein Verzeichnis angeben." +msgstr "" +"Fehler beim Erstellen des Torrents - Sie müssen eine Datei oder ein " +"Verzeichnis angeben." #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 msgid "Stopping all torrents and closing the I2P tunnel." @@ -562,15 +599,20 @@ msgstr "Start" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982 msgid "Remove the torrent from the active list, deleting the .torrent file" -msgstr "entfernt den Torrent von der aktiven Liste und löscht die .torrent-Datei" +msgstr "" +"entfernt den Torrent von der aktiven Liste und löscht die .torrent-Datei" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 #, java-format -msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?" -msgstr "Sind Sie sicher, dass Sie die Datei \\''{0}.torrent\\'' löschen wollen? (Heruntergeladene Daten werden nicht gelöscht.)" +msgid "" +"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded " +"data will not be deleted) ?" +msgstr "" +"Sind Sie sicher, dass Sie die Datei \\''{0}.torrent\\'' löschen wollen? " +"(Heruntergeladene Daten werden nicht gelöscht.)" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990 msgid "Remove" @@ -585,8 +627,12 @@ msgstr "löscht die .torrent-Datei und dazugehörige Daten Datei(en)" #. Then the remaining single quite must be escaped #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006 #, java-format -msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?" -msgstr "Sind Sie sicher, dass Sie die Torrentdatei \\''{0}\\'' und alle heruntergeladenen Daten löschen wollen?" +msgid "" +"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " +"data?" +msgstr "" +"Sind Sie sicher, dass Sie die Torrentdatei \\''{0}\\'' und alle " +"heruntergeladenen Daten löschen wollen?" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009 msgid "Delete" @@ -630,8 +676,11 @@ msgid "From URL" msgstr "Quell-URL" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193 -msgid "Enter the torrent file download URL (I2P only), magnet link, or maggot link" -msgstr "Gib die Download-URL der torrent-Datei (nur I2P), einen Magnet- oder einen Maggotlink an!" +msgid "" +"Enter the torrent file download URL (I2P only), magnet link, or maggot link" +msgstr "" +"Gib die Download-URL der torrent-Datei (nur I2P), einen Magnet- oder einen " +"Maggotlink an!" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198 msgid "Add torrent" @@ -743,8 +792,12 @@ msgid "Use open trackers also" msgstr "Benutze auch OpenTracker" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 -msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file" -msgstr "Wenn markiert, wird der Torrent neben dem angegebenen Tracker auch bei den OpenTrackern bekannt gegeben." +msgid "" +"If checked, announce torrents to open trackers as well as the tracker listed " +"in the torrent file" +msgstr "" +"Wenn markiert, wird der Torrent neben dem angegebenen Tracker auch bei den " +"OpenTrackern bekannt gegeben." #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362 msgid "Open tracker announce URLs" @@ -874,75 +927,95 @@ msgstr "auslassen" msgid "Save priorities" msgstr "Prioritäten speichern" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1966 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967 #, java-format msgid "Torrent fetched from {0}" msgstr "Torrent geholt von {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1989 #, java-format msgid "Torrent already running: {0}" msgstr "Torrent läuft schon: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1990 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1991 #, java-format msgid "Torrent already in the queue: {0}" msgstr "Torrent ist schon in der Warteschlange: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1996 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1997 #, java-format msgid "Torrent at {0} was not valid" msgstr "Torrent in {0} war nicht gültig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2003 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2004 #, java-format msgid "Torrent was not retrieved from {0}" msgstr "Torrent wurde nicht geladen von {0}" #~ msgid "Torrent file must originate from an I2P-based tracker" #~ msgstr "Die Torrentdatei muss von einem Tracker in I2P stammen." + #~ msgid " theme locked and loaded." #~ msgstr "Aufmachung geladen" + #~ msgid "Estimated Download Time" #~ msgstr "geschätzte verbleibende Zeit bis zur Fertigstellung" + #~ msgid "Torrent file {0} does not exist" #~ msgstr "Torrentdatei {0} existiert nicht" + #~ msgid "Copying torrent to {0}" #~ msgstr "Kopiere Torrent nach {0}" + #~ msgid "from {0}" #~ msgstr "von {0}" + #~ msgid "Downloading" #~ msgstr "lade herunter" + #~ msgid "FileSize" #~ msgstr "Größe" + #~ msgid "Download Status" #~ msgstr "Zustand" + #~ msgid "size: {0}B" #~ msgstr "Größe: {0}Byte" + #~ msgid "Directory to store torrents and data" #~ msgstr "Verzeichnis zum Speichern von Torrentdateien und Daten" + #~ msgid "Do not download" #~ msgstr "nicht herunterladen" + #~ msgid "Details" #~ msgstr "Details" + #~ msgid "Cannot change the I2CP settings while torrents are active" #~ msgstr "" #~ "Kann nicht die I2CP Einstellungen ändern während Torrents aktiv sind." + #~ msgid "Non-i2p tracker in \"{0}\", deleting it from our list of trackers!" #~ msgstr "" #~ "Nicht-I2P Tracker in\"{0}\", entferne ihn aus unserer Liste der Tracker!" + #~ msgid "{0} torrents" #~ msgstr "{0} Torrents" + #~ msgid "Uninteresting" #~ msgstr "nicht interessiert" + #~ msgid "Choked" #~ msgstr "Gestaut" + #~ msgid "Uninterested" #~ msgstr "Nicht interessiert" + #~ msgid "Choking" #~ msgstr "Stau" + #~ msgid "Custom tracker URL" #~ msgstr "Spezifische Tracker URL" + #~ msgid "Configure" #~ msgstr "Einstellungen" - diff --git a/apps/i2psnark/locale/messages_en.po b/apps/i2psnark/locale/messages_en.po index c0f6daa9b..e88100e85 100644 --- a/apps/i2psnark/locale/messages_en.po +++ b/apps/i2psnark/locale/messages_en.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 11:53+0000\n" +"POT-Creation-Date: 2011-03-03 18:28+0000\n" "PO-Revision-Date: 2010-06-15 14:09+0100\n" "Last-Translator: duck \n" "Language-Team: duck \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -130,7 +131,7 @@ msgstr "" #: ../java/src/org/klomp/snark/SnarkManager.java:586 #: ../java/src/org/klomp/snark/SnarkManager.java:661 #: ../java/src/org/klomp/snark/SnarkManager.java:716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "" @@ -157,7 +158,7 @@ msgid "Torrent in \"{0}\" is invalid" msgstr "" #: ../java/src/org/klomp/snark/SnarkManager.java:624 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1994 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "" @@ -173,7 +174,7 @@ msgid "Torrent added: \"{0}\"" msgstr "" #: ../java/src/org/klomp/snark/SnarkManager.java:672 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:489 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490 #, java-format msgid "Fetching {0}" msgstr "" @@ -264,7 +265,7 @@ msgid "Metainfo received for {0}" msgstr "" #: ../java/src/org/klomp/snark/SnarkManager.java:1171 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525 #, java-format msgid "Starting up torrent {0}" msgstr "" @@ -288,7 +289,7 @@ msgstr "" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1024 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1028 msgid "I2PSnark" msgstr "" @@ -301,7 +302,7 @@ msgid "Forum" msgstr "" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1715 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 msgid "Status" msgstr "" @@ -316,8 +317,8 @@ msgid "Show Peers" msgstr "" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1639 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1655 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1643 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659 msgid "Torrent" msgstr "" @@ -364,545 +365,545 @@ msgstr "" msgid "Up Rate" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:364 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Stop all torrents and the I2P tunnel" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:367 msgid "Stop All" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:375 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376 msgid "Start all torrents and the I2P tunnel" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:378 msgid "Start All" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:396 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397 msgid "No torrents loaded." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:401 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402 msgid "Totals" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:406 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:495 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496 #, java-format msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:543 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571 #, java-format msgid "Magnet deleted: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:551 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:576 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 #, java-format msgid "Torrent file deleted: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 #, java-format msgid "Data file deleted: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:585 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595 #, java-format msgid "Data file could not be deleted: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604 #, java-format msgid "Data dir deleted: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:636 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 msgid "Error creating torrent - you must select a tracker" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:652 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653 #, java-format msgid "Torrent created for \"{0}\"" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:654 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " "please do so before starting \"{0}\"" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:656 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:659 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:660 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663 msgid "Error creating torrent - you must enter a file or directory" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:677 msgid "I2P tunnel closed." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680 msgid "Opening the I2P tunnel and starting all torrents." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:802 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:807 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:813 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:803 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Tracker Error" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:805 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:825 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:842 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:846 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:806 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:826 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:847 #, java-format msgid "1 peer" msgid_plural "{0} peers" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:818 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:824 msgid "Seeding" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:827 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1661 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:828 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770 msgid "Complete" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:830 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:835 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 msgid "OK" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:840 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845 msgid "Stalled" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:848 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:851 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:849 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852 msgid "No Peers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:853 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854 msgid "Stopped" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:885 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:886 msgid "Torrent details" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:897 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1156 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160 msgid "Info" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:913 msgid "View files" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:914 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:915 msgid "Open file" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:957 msgid "Stop the torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 msgid "Stop" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 msgid "Start the torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:971 msgid "Start" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:979 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:984 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded " "data will not be deleted) ?" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990 msgid "Remove" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:997 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001 msgid "Delete the .torrent file and the associated data file(s)" msgstr "" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1002 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " "data?" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1005 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009 msgid "Delete" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1038 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1042 msgid "Unknown" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1050 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054 msgid "Seed" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Uninteresting (The peer has no pieces we need)" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1075 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1095 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1099 msgid "Uninterested (We have no pieces the peer needs)" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159 #, java-format msgid "Details at {0} tracker" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1184 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1188 msgid "Add Torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1186 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190 msgid "From URL" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1189 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193 msgid "" "Enter the torrent file download URL (I2P only), magnet link, or maggot link" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198 msgid "Add torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1201 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1199 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Removing a .torrent will cause it to stop." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1222 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 msgid "Create Torrent" msgstr "" #. out.write("From file:
    \n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1225 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229 msgid "Data to seed" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233 msgid "File or directory to seed (must be within the specified path)" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1680 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1235 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 msgid "Tracker" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237 msgid "Select a tracker" msgstr "" #. out.write(_("Open trackers and DHT only")); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1238 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 msgid "Open trackers only" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257 msgid "or" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1256 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260 msgid "Specify custom tracker announce URL" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1259 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263 msgid "Create torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1416 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420 msgid "Configuration" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1285 msgid "Data directory" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287 msgid "Edit i2psnark.config and restart to change" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 msgid "Auto start" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295 msgid "If checked, automatically start torrents that are added" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1299 msgid "Theme" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1308 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312 msgid "Startup delay" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1310 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314 msgid "minutes" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1338 msgid "Total uploader limit" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1337 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 msgid "peers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1345 msgid "Up bandwidth limit" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348 msgid "Half available bandwidth recommended." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 msgid "View or change router bandwidth" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354 msgid "Use open trackers also" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 msgid "" "If checked, announce torrents to open trackers as well as the tracker listed " "in the torrent file" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362 msgid "Open tracker announce URLs" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1370 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1374 msgid "Inbound Settings" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1376 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1380 msgid "Outbound Settings" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1384 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 msgid "I2CP host" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1389 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1393 msgid "I2CP port" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1402 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1406 msgid "I2CP options" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411 msgid "Save configuration" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436 #, java-format msgid "Invalid magnet URL {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1466 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470 #, java-format msgid "Invalid info hash in magnet URL {0}" msgstr "" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1496 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1500 #, java-format msgid "1 hop" msgid_plural "{0} hops" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1497 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1501 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 msgid "Completion" msgstr "" #. else unknown -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 msgid "Size" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1668 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 msgid "Files" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1670 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674 msgid "Pieces" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675 msgid "Piece size" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1693 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697 msgid "Magnet link" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1710 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753 msgid "Directory" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723 msgid "Priority" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1724 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1728 msgid "Up to higher level directory" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1754 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 msgid "Torrent not found?" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767 msgid "File not found in torrent?" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1780 msgid "complete" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1777 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781 msgid "bytes remaining" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1802 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806 msgid "Open" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1828 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1832 msgid "High" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1833 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1837 msgid "Normal" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1842 msgid "Skip" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1847 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1851 msgid "Save priorities" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967 #, java-format msgid "Torrent fetched from {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1984 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1989 #, java-format msgid "Torrent already running: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1986 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1991 #, java-format msgid "Torrent already in the queue: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1992 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1997 #, java-format msgid "Torrent at {0} was not valid" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2004 #, java-format msgid "Torrent was not retrieved from {0}" msgstr "" diff --git a/apps/i2psnark/locale/messages_es.po b/apps/i2psnark/locale/messages_es.po index cf863e521..c7d658288 100644 --- a/apps/i2psnark/locale/messages_es.po +++ b/apps/i2psnark/locale/messages_es.po @@ -8,855 +8,1021 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-19 03:16+0000\n" +"POT-Creation-Date: 2011-03-03 18:28+0000\n" "PO-Revision-Date: 2011-01-03 00:58+0100\n" "Last-Translator: mixxy \n" "Language-Team: foo \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Spanish\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -#: ../java/src/org/klomp/snark/SnarkManager.java:94 -#, java-format -msgid "Adding torrents in {0} minutes" -msgstr "Se añaden los torrents en {0} minutos ..." - -#: ../java/src/org/klomp/snark/SnarkManager.java:296 +#: ../java/src/org/klomp/snark/SnarkManager.java:307 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "Límite del número total de subidores cambiado a {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:298 +#: ../java/src/org/klomp/snark/SnarkManager.java:309 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "El límite mínimo de subidores es {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:310 +#: ../java/src/org/klomp/snark/SnarkManager.java:321 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "Ancho de banda para la subida ha sido cambiado a {0} kbyte/s." -#: ../java/src/org/klomp/snark/SnarkManager.java:312 +#: ../java/src/org/klomp/snark/SnarkManager.java:323 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "El límite mínimo de ancho de banda para la subida está en {0} kbyte/s." -#: ../java/src/org/klomp/snark/SnarkManager.java:324 -#, java-format -msgid "Startup delay limit changed to {0} minutes" +#: ../java/src/org/klomp/snark/SnarkManager.java:335 +#, fuzzy, java-format +msgid "Startup delay changed to {0}" msgstr "Demora del arranque cambiado a {0} minutos" -#: ../java/src/org/klomp/snark/SnarkManager.java:371 +#: ../java/src/org/klomp/snark/SnarkManager.java:386 msgid "I2CP and tunnel changes will take effect after stopping all torrents" -msgstr "Cambios de I2CP y del túnel tomarán efecto despues de detener todos los torrents." +msgstr "" +"Cambios de I2CP y del túnel tomarán efecto despues de detener todos los " +"torrents." -#: ../java/src/org/klomp/snark/SnarkManager.java:378 +#: ../java/src/org/klomp/snark/SnarkManager.java:393 msgid "Disconnecting old I2CP destination" msgstr "Desconectando anterior Destino I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:382 +#: ../java/src/org/klomp/snark/SnarkManager.java:397 #, java-format msgid "I2CP settings changed to {0}" msgstr "Preferencias de I2CP cambiadas a {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:386 -msgid "Unable to connect with the new settings, reverting to the old I2CP settings" -msgstr "Conectarse no fue posíble con las nuevas preferencias I2CP, utilizaré las anteriores." +#: ../java/src/org/klomp/snark/SnarkManager.java:402 +msgid "" +"Unable to connect with the new settings, reverting to the old I2CP settings" +msgstr "" +"Conectarse no fue posíble con las nuevas preferencias I2CP, utilizaré las " +"anteriores." -#: ../java/src/org/klomp/snark/SnarkManager.java:390 +#: ../java/src/org/klomp/snark/SnarkManager.java:406 msgid "Unable to reconnect with the old settings!" msgstr "Conectarse usando las preferencias anteriores no fue posible!" -#: ../java/src/org/klomp/snark/SnarkManager.java:392 +#: ../java/src/org/klomp/snark/SnarkManager.java:408 msgid "Reconnected on the new I2CP destination" msgstr "Conectado con la nueva Destino I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:403 +#: ../java/src/org/klomp/snark/SnarkManager.java:418 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "Conexión I2CP reestablecida para \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:414 +#: ../java/src/org/klomp/snark/SnarkManager.java:429 msgid "Enabled autostart" msgstr "Arranque automático activado" -#: ../java/src/org/klomp/snark/SnarkManager.java:416 +#: ../java/src/org/klomp/snark/SnarkManager.java:431 msgid "Disabled autostart" msgstr "Arranque automático desactivado" -#: ../java/src/org/klomp/snark/SnarkManager.java:422 +#: ../java/src/org/klomp/snark/SnarkManager.java:437 msgid "Enabled open trackers - torrent restart required to take effect." -msgstr "Rastreadores abiertos activados - Para aplicar ello es necesario que reinicies los torrents." +msgstr "" +"Rastreadores abiertos activados - Para aplicar ello es necesario que " +"reinicies los torrents." -#: ../java/src/org/klomp/snark/SnarkManager.java:424 +#: ../java/src/org/klomp/snark/SnarkManager.java:439 msgid "Disabled open trackers - torrent restart required to take effect." -msgstr "Rastreadores abiertos desactivados - Para aplicar ello es necesario que reinicies los torrents." +msgstr "" +"Rastreadores abiertos desactivados - Para aplicar ello es necesario que " +"reinicies los torrents." -#: ../java/src/org/klomp/snark/SnarkManager.java:431 +#: ../java/src/org/klomp/snark/SnarkManager.java:447 msgid "Open Tracker list changed - torrent restart required to take effect." -msgstr "Lista de rastreadores abiertos cambiada - Para aplicar ello es necesario que reinicies los torrents." +msgstr "" +"Lista de rastreadores abiertos cambiada - Para aplicar ello es necesario que " +"reinicies los torrents." -#: ../java/src/org/klomp/snark/SnarkManager.java:438 +#: ../java/src/org/klomp/snark/SnarkManager.java:454 #, java-format msgid "{0} theme loaded, return to main i2psnark page to view." -msgstr "Tema {0} cargado. ¡Vuelve a la página principal de i2psnark para verlo!" +msgstr "" +"Tema {0} cargado. ¡Vuelve a la página principal de i2psnark para verlo!" -#: ../java/src/org/klomp/snark/SnarkManager.java:445 +#: ../java/src/org/klomp/snark/SnarkManager.java:461 msgid "Configuration unchanged." msgstr "Configuración no cambiada." -#: ../java/src/org/klomp/snark/SnarkManager.java:455 +#: ../java/src/org/klomp/snark/SnarkManager.java:471 #, java-format msgid "Unable to save the config to {0}" msgstr "No se pudo guardar la configuración en {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:494 +#: ../java/src/org/klomp/snark/SnarkManager.java:536 msgid "Connecting to I2P" msgstr "Conectando a I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:497 +#: ../java/src/org/klomp/snark/SnarkManager.java:539 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "Error al conectar a I2P - Compruebe su configuración I2CP!" -#: ../java/src/org/klomp/snark/SnarkManager.java:506 +#: ../java/src/org/klomp/snark/SnarkManager.java:548 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "Error: No se ha podido añadir el torrent {0}." #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:528 +#: ../java/src/org/klomp/snark/SnarkManager.java:570 #, java-format msgid "Cannot open \"{0}\"" msgstr "No se puede abrir \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:541 -#, java-format -msgid "Warning - Ignoring non-i2p tracker in \"{0}\", will announce to i2p open trackers only" -msgstr "Advertencia - Se ignora rastreado no I2P en \"{0}\", anunciando sólo a los rastreadorse abiertos de I2P" +#. TODO - if the existing one is a magnet, delete it and add the metainfo instead? +#: ../java/src/org/klomp/snark/SnarkManager.java:586 +#: ../java/src/org/klomp/snark/SnarkManager.java:661 +#: ../java/src/org/klomp/snark/SnarkManager.java:716 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976 +#, fuzzy, java-format +msgid "Torrent with this info hash is already running: {0}" +msgstr "Torrent ya en marcha: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:543 -#, 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 "Advertencia - Se ignora rastreado no I2P en \"{0}\", rastreadores abiertos están desactivados. ¡Tienes que activarlos antes de iniciar el torrent!" +#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); +#: ../java/src/org/klomp/snark/SnarkManager.java:593 +#, fuzzy, java-format +msgid "" +"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers " +"only." +msgstr "" +"Advertencia - Se ignora rastreado no I2P en \"{0}\", anunciando sólo a los " +"rastreadorse abiertos de I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:563 +#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); +#: ../java/src/org/klomp/snark/SnarkManager.java:598 +#, fuzzy, java-format +msgid "" +"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is " +"enabled before starting this torrent." +msgstr "" +"Advertencia - Se ignora rastreado no I2P en \"{0}\", rastreadores abiertos " +"están desactivados. ¡Tienes que activarlos antes de iniciar el torrent!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:619 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "El archivo .torrent en \"{0}\" no es válido." -#: ../java/src/org/klomp/snark/SnarkManager.java:578 +#: ../java/src/org/klomp/snark/SnarkManager.java:624 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 +#, java-format +msgid "ERROR - Out of memory, cannot create torrent from {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:635 #, java-format msgid "Torrent added and started: \"{0}\"" msgstr "Torrent añadido e iniciado: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:580 +#: ../java/src/org/klomp/snark/SnarkManager.java:637 #, java-format msgid "Torrent added: \"{0}\"" msgstr "Torrent añadido: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:734 +#: ../java/src/org/klomp/snark/SnarkManager.java:672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490 +#, java-format +msgid "Fetching {0}" +msgstr "Recogiendo {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:675 +#, java-format +msgid "" +"We have no saved peers and no other torrents are running. Fetch of {0} will " +"not succeed until you start another torrent." +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:679 +#, fuzzy, java-format +msgid "Adding {0}" +msgstr "Recogiendo {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:726 +#: ../java/src/org/klomp/snark/SnarkManager.java:749 +#: ../java/src/org/klomp/snark/SnarkManager.java:1174 +#, java-format +msgid "Failed to copy torrent file to {0}" +msgstr "No se pudo copiar el torrent a {0}." + +#: ../java/src/org/klomp/snark/SnarkManager.java:972 #, java-format msgid "Too many files in \"{0}\" ({1}), deleting it!" msgstr "Hay demasiados archivos en \"{0}\", se borrará ({1}). " -#: ../java/src/org/klomp/snark/SnarkManager.java:736 +#: ../java/src/org/klomp/snark/SnarkManager.java:974 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" -msgstr "Archivo de datos del torrent \"{0}\" no puede terminar en \".torrent' y será borrado." +msgstr "" +"Archivo de datos del torrent \"{0}\" no puede terminar en \".torrent' y será " +"borrado." -#: ../java/src/org/klomp/snark/SnarkManager.java:738 +#: ../java/src/org/klomp/snark/SnarkManager.java:976 #, java-format msgid "No pieces in \"{0}\", deleting it!" msgstr "No hay partes en \"{0}\", se borrará." -#: ../java/src/org/klomp/snark/SnarkManager.java:740 +#: ../java/src/org/klomp/snark/SnarkManager.java:978 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!" msgstr "Hay demasiadas partes en \"{0}\" y el límite es {1}. Se borrarán." -#: ../java/src/org/klomp/snark/SnarkManager.java:742 +#: ../java/src/org/klomp/snark/SnarkManager.java:980 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B), deleting it." msgstr "Partes en \"{0}\" son demasiado grandes ({1}B). Se borrarán." -#: ../java/src/org/klomp/snark/SnarkManager.java:743 +#: ../java/src/org/klomp/snark/SnarkManager.java:981 #, java-format msgid "Limit is {0}B" msgstr "El límite es de \"{0}\"Bytes" -#: ../java/src/org/klomp/snark/SnarkManager.java:751 +#: ../java/src/org/klomp/snark/SnarkManager.java:989 #, java-format msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" -msgstr "Torrents más grandes que \"{0}\"Bytes aún no funcionan, se borrará \"{1}\"." +msgstr "" +"Torrents más grandes que \"{0}\"Bytes aún no funcionan, se borrará \"{1}\"." -#: ../java/src/org/klomp/snark/SnarkManager.java:767 +#: ../java/src/org/klomp/snark/SnarkManager.java:1005 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Error: No se pudo quitar el torrent \"{0}\"." -#: ../java/src/org/klomp/snark/SnarkManager.java:794 +#: ../java/src/org/klomp/snark/SnarkManager.java:1026 +#: ../java/src/org/klomp/snark/SnarkManager.java:1044 #, java-format msgid "Torrent stopped: \"{0}\"" msgstr "Torrent detenido: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:814 +#: ../java/src/org/klomp/snark/SnarkManager.java:1065 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "Torrent quitado: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:852 +#: ../java/src/org/klomp/snark/SnarkManager.java:1073 +#, fuzzy, java-format +msgid "Adding torrents in {0}" +msgstr "Se añaden los torrents en {0} minutos ..." + +#: ../java/src/org/klomp/snark/SnarkManager.java:1122 #, java-format msgid "Download finished: {0}" msgstr "Terminada la descarga de \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:880 +#: ../java/src/org/klomp/snark/SnarkManager.java:1170 +#, fuzzy, java-format +msgid "Metainfo received for {0}" +msgstr "Torrent no se ha podido obtener de {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1171 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525 +#, java-format +msgid "Starting up torrent {0}" +msgstr "Iniciando el torrent {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1225 msgid "Unable to connect to I2P!" msgstr "Imposible de conectarse con I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:886 +#: ../java/src/org/klomp/snark/SnarkManager.java:1231 #, java-format msgid "Unable to add {0}" msgstr "Imposible de añadir {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:185 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:205 msgid "I2PSnark - Anonymous BitTorrent Client" msgstr "I2PSnark - Cliente de BitTorrent Anónimo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:198 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:218 msgid "Torrents" msgstr "Torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:201 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:208 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:977 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1028 msgid "I2PSnark" msgstr "I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:225 msgid "Refresh page" msgstr "Actualizar página" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:230 msgid "Forum" msgstr "Foro" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:264 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1483 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 msgid "Status" msgstr "Estado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:270 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:272 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:292 msgid "Hide Peers" msgstr "ocultar pares" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:277 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:279 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:299 msgid "Show Peers" msgstr "mostrar pares" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:286 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1643 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659 msgid "Torrent" msgstr "Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310 msgid "Estimated time remaining" msgstr "Tiempo restante para completar la descarga" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:313 msgid "ETA" msgstr "Tiempo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317 msgid "Downloaded" msgstr "Descargado" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:300 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:314 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:320 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 msgid "RX" msgstr "Bajado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:304 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:324 msgid "Uploaded" msgstr "Subido" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:307 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:324 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344 msgid "TX" msgstr "Subido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:312 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:332 msgid "Down Rate" msgstr "Tasa de descarga" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:326 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:337 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 msgid "Rate" msgstr "Tasa" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342 msgid "Up Rate" msgstr "Tasa de subida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:340 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Stop all torrents and the I2P tunnel" msgstr "Detener todos los torrents y el túnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:367 msgid "Stop All" msgstr "Detener todos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:351 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376 msgid "Start all torrents and the I2P tunnel" msgstr "Iniciar todos los torrents y el túnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:378 msgid "Start All" msgstr "Arrancar todos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397 msgid "No torrents loaded." msgstr "No está cargado ningún torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402 msgid "Totals" msgstr "Total" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:379 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404 #, 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:382 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" msgstr[0] "1 par conectado" msgstr[1] "{0} pares conectados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:454 -#, java-format -msgid "Fetching {0}" -msgstr "Recogiendo {0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:458 -msgid "Invalid URL - must start with http://" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496 +#, fuzzy, java-format +msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" msgstr "Dirección no válida - tiene que comenzar con http://" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:489 -#, java-format -msgid "Starting up torrent {0}" -msgstr "Iniciando el torrent {0}" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571 +#, fuzzy, java-format +msgid "Magnet deleted: {0}" +msgstr "Ha sido borrada la carpeta de datos: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:527 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 #, java-format msgid "Torrent file deleted: {0}" msgstr "Borrado archivo torrent: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:533 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:543 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 #, java-format msgid "Data file deleted: {0}" msgstr "Borrado el archivo de datos: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:545 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:585 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595 #, java-format msgid "Data file could not be deleted: {0}" msgstr "No se pudo borrar el archivo de datos: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:554 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604 #, java-format msgid "Data dir deleted: {0}" msgstr "Ha sido borrada la carpeta de datos: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:587 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 msgid "Error creating torrent - you must select a tracker" msgstr "Error al crear el torrents - Tienes que elegir un rastreador." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:602 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653 #, java-format msgid "Torrent created for \"{0}\"" msgstr "Torrent creado para \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:605 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655 #, java-format -msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\"" -msgstr "Muchos rastreadores en I2P requieren que te registres, antes de que puedas subir el torrent. Por favor, ¡hazlo antes de iniciar \"{0}\"!" +msgid "" +"Many I2P trackers require you to register new torrents before seeding - " +"please do so before starting \"{0}\"" +msgstr "" +"Muchos rastreadores en I2P requieren que te registres, antes de que puedas " +"subir el torrent. Por favor, ¡hazlo antes de iniciar \"{0}\"!" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:607 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "Error al crear el torrent \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:610 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:660 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "No se puede crear un torrent para datos inexistentes: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663 msgid "Error creating torrent - you must enter a file or directory" -msgstr "Error al crear el torrent - Tienes que especificar un archivo o una carpeta." +msgstr "" +"Error al crear el torrent - Tienes que especificar un archivo o una carpeta." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "Deteniendo todos los torrents y cerrando el túnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:627 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:677 msgid "I2P tunnel closed." msgstr "Túnel I2P cerrado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680 msgid "Opening the I2P tunnel and starting all torrents." msgstr "Abriendo el túnel I2P e iniciando los torrents ..." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:759 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:764 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:770 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:803 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Tracker Error" msgstr "Error del rastrador" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:762 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:766 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:794 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:799 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:803 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:806 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:826 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:847 #, java-format msgid "1 peer" msgid_plural "{0} peers" msgstr[0] "1 par" msgstr[1] "{0} pares" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:824 msgid "Seeding" msgstr "sembrando" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:784 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:828 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770 msgid "Complete" msgstr "completo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 msgid "OK" msgstr "bien" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:796 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:840 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845 msgid "Stalled" msgstr "estancado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:805 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:849 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852 msgid "No Peers" msgstr "sin pares" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854 msgid "Stopped" msgstr "detenido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837 -#, java-format -msgid "Details at {0} tracker" -msgstr "Detalles en el rastreador {0}" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:886 +#, fuzzy +msgid "Torrent details" +msgstr "Torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160 msgid "Info" msgstr "Info" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:853 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:913 msgid "View files" msgstr "mostrar archivos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:855 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:915 msgid "Open file" msgstr "abrir archivo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:865 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1569 -msgid "Open" -msgstr "abrir" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:909 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:957 msgid "Stop the torrent" msgstr "Detener el torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:911 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 msgid "Stop" msgstr "Detener" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:921 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 msgid "Start the torrent" msgstr "Iniciar el torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:923 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:971 msgid "Start" msgstr "Iniciar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:933 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982 msgid "Remove the torrent from the active list, deleting the .torrent file" -msgstr "Quita el torrent de la lista de los torrents activos borrando el archivo .torrent" +msgstr "" +"Quita el torrent de la lista de los torrents activos borrando el archivo ." +"torrent" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:938 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 #, java-format -msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?" -msgstr "¿Estás seguro de que quieres borrar el archivo \\''{0}.torrent\\''? (Datos bajados no se borrarán.)" +msgid "" +"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded " +"data will not be deleted) ?" +msgstr "" +"¿Estás seguro de que quieres borrar el archivo \\''{0}.torrent\\''? (Datos " +"bajados no se borrarán.)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:941 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990 msgid "Remove" msgstr "Quitar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001 msgid "Delete the .torrent file and the associated data file(s)" msgstr "Borrar el archivo torrent y el/los archivo(s) de datos pertenecientes" #. 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:955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006 #, java-format -msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?" -msgstr "¿Estás seguro de que quieres borrar el archivo torrent \\''{0}\\'' y todos los datos descargados de este torrent?" +msgid "" +"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " +"data?" +msgstr "" +"¿Estás seguro de que quieres borrar el archivo torrent \\''{0}\\'' y todos " +"los datos descargados de este torrent?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009 msgid "Delete" msgstr "Borrar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:991 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1042 msgid "Unknown" msgstr "desconocido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054 msgid "Seed" msgstr "Sembrador" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1019 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Uninteresting (The peer has no pieces we need)" msgstr "no interesante (El par no tiene partes que nos interesen.)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1021 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "moderado (De momento el par no nos permite solicitar más partes)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1035 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1099 msgid "Uninterested (We have no pieces the peer needs)" msgstr "desinteresado (No tenemos las partes que el par quiere.)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "Moderando (De momento no se le permite al par solicitar más partes)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1092 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159 +#, java-format +msgid "Details at {0} tracker" +msgstr "Detalles en el rastreador {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1188 msgid "Add Torrent" msgstr "Añadir un torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1094 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190 msgid "From URL" msgstr "URL fuente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097 -msgid "Torrent file must originate from an I2P-based tracker" -msgstr "El archivo torrent debe incluir un rastreador I2P." +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193 +msgid "" +"Enter the torrent file download URL (I2P only), magnet link, or maggot link" +msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1102 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198 msgid "Add torrent" msgstr "Añadir torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1105 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1201 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "También puedes copiar archivos torrent a {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1107 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Removing a .torrent will cause it to stop." -msgstr "Quitar un archivo torrent resultará en que se detenga el torrent perteneciente." +msgstr "" +"Quitar un archivo torrent resultará en que se detenga el torrent " +"perteneciente." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1131 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 msgid "Create Torrent" msgstr "Crear un torrent" #. out.write("From file:
    \n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1134 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229 msgid "Data to seed" msgstr "Datos para sembrar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233 msgid "File or directory to seed (must be within the specified path)" -msgstr "Archivo o carpeta para sembrar (tiene que estár en la carpeta especificada)" +msgstr "" +"Archivo o carpeta para sembrar (tiene que estár en la carpeta especificada)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1140 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1235 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 msgid "Tracker" msgstr "Rastreador" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237 msgid "Select a tracker" msgstr "Selecciona un rastreador" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155 -msgid "or" -msgstr "o" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1158 -msgid "Specify custom tracker announce URL" -msgstr "¡Especifica una URL para anunciar al rastreador!" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1161 -msgid "Create torrent" -msgstr "Crear torrent" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317 -msgid "Configuration" -msgstr "Preferencias" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1184 -msgid "Data directory" -msgstr "Carpeta de datos" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1186 -msgid "Edit i2psnark.config and restart to change" -msgstr "Para cambiar, ¡modifica el archivo i2psnark.config y reinicia!" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190 -msgid "Auto start" -msgstr "Arranque automático" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194 -msgid "If checked, automatically start torrents that are added" -msgstr "Si marcado, los torrents añadidos se iniciarán de forma automática." - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198 -msgid "Theme" -msgstr "Tema" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1211 -msgid "Startup delay" -msgstr "Demora del arranque" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1213 -msgid "minutes" -msgstr "minutos" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237 -msgid "Total uploader limit" -msgstr "Límite global de subidores" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240 -msgid "peers" -msgstr "pares" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244 -msgid "Up bandwidth limit" -msgstr "Límite del ancho de banda para la subida" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1247 -msgid "Half available bandwidth recommended." -msgstr "Se recomienda la mitad del ancho de banda disponible." - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1249 -msgid "View or change router bandwidth" -msgstr "Mostrar y cambiar preferencias del ancho de banda del enrutador" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253 -msgid "Use open trackers also" +#. out.write(_("Open trackers and DHT only")); +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 +#, fuzzy +msgid "Open trackers only" msgstr "Usar también rastreadores abiertos" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257 -msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file" -msgstr "Si está marcado, el torrent se anunciará a los rastreadores abiertos, además de a los rastreadores especificados." +msgid "or" +msgstr "o" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1261 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260 +msgid "Specify custom tracker announce URL" +msgstr "¡Especifica una URL para anunciar al rastreador!" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263 +msgid "Create torrent" +msgstr "Crear torrent" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420 +msgid "Configuration" +msgstr "Preferencias" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1285 +msgid "Data directory" +msgstr "Carpeta de datos" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287 +msgid "Edit i2psnark.config and restart to change" +msgstr "Para cambiar, ¡modifica el archivo i2psnark.config y reinicia!" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +msgid "Auto start" +msgstr "Arranque automático" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295 +msgid "If checked, automatically start torrents that are added" +msgstr "Si marcado, los torrents añadidos se iniciarán de forma automática." + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1299 +msgid "Theme" +msgstr "Tema" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312 +msgid "Startup delay" +msgstr "Demora del arranque" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314 +msgid "minutes" +msgstr "minutos" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1338 +msgid "Total uploader limit" +msgstr "Límite global de subidores" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 +msgid "peers" +msgstr "pares" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1345 +msgid "Up bandwidth limit" +msgstr "Límite del ancho de banda para la subida" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348 +msgid "Half available bandwidth recommended." +msgstr "Se recomienda la mitad del ancho de banda disponible." + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 +msgid "View or change router bandwidth" +msgstr "Mostrar y cambiar preferencias del ancho de banda del enrutador" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354 +msgid "Use open trackers also" +msgstr "Usar también rastreadores abiertos" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 +msgid "" +"If checked, announce torrents to open trackers as well as the tracker listed " +"in the torrent file" +msgstr "" +"Si está marcado, el torrent se anunciará a los rastreadores abiertos, además " +"de a los rastreadores especificados." + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362 msgid "Open tracker announce URLs" msgstr "URL(s) para anunciar a rastreadores abiertos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1273 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1374 msgid "Inbound Settings" msgstr "Preferencias de entrada" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1380 msgid "Outbound Settings" msgstr "Preferencias de salida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1286 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 msgid "I2CP host" msgstr "Anfitrión I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1393 msgid "I2CP port" msgstr "Puerto I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1303 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1406 msgid "I2CP options" msgstr "Opciones I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1308 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411 msgid "Save configuration" msgstr "Guardar ajustes" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436 +#, java-format +msgid "Invalid magnet URL {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470 +#, java-format +msgid "Invalid info hash in magnet URL {0}" +msgstr "" + #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1500 #, java-format msgid "1 hop" msgid_plural "{0} hops" msgstr[0] "1 salto" msgstr[1] "{0} saltos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1326 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1501 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" msgstr[0] "1 túnel" msgstr[1] "{0} túneles" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 +#, fuzzy +msgid "Completion" +msgstr "completo" + +#. else unknown +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 msgid "Size" msgstr "Tamaño" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1487 -msgid "Priority" -msgstr "Prioridad" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#, fuzzy +msgid "Files" +msgstr "Archivo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492 -msgid "Up to higher level directory" -msgstr "Subir una herarquía" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674 +msgid "Pieces" +msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675 +msgid "Piece size" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697 +msgid "Magnet link" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753 msgid "Directory" msgstr "Carpeta" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723 +msgid "Priority" +msgstr "Prioridad" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1728 +msgid "Up to higher level directory" +msgstr "Subir una herarquía" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 msgid "Torrent not found?" msgstr "¿No se encotró el archivo torrent?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767 msgid "File not found in torrent?" msgstr "¿Archivo no encontrado en el torrent?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1780 msgid "complete" msgstr "completo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781 msgid "bytes remaining" msgstr "Bytes faltando" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806 +msgid "Open" +msgstr "abrir" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1832 msgid "High" msgstr "alta" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1600 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1837 msgid "Normal" msgstr "normal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1605 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1842 msgid "Skip" msgstr "dejar de lado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1851 msgid "Save priorities" msgstr "Guardar prioridades" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967 #, java-format msgid "Torrent fetched from {0}" msgstr "Torrent obtenido desde {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1746 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1989 #, java-format msgid "Torrent already running: {0}" msgstr "Torrent ya en marcha: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1748 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1991 #, java-format msgid "Torrent already in the queue: {0}" msgstr "Torrent ya encolado: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1755 -#, java-format -msgid "Failed to copy torrent file to {0}" -msgstr "No se pudo copiar el torrent a {0}." - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1997 #, java-format msgid "Torrent at {0} was not valid" msgstr "Torrent en {0} no era válido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1764 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2004 #, java-format msgid "Torrent was not retrieved from {0}" msgstr "Torrent no se ha podido obtener de {0}" +#~ msgid "Torrent file must originate from an I2P-based tracker" +#~ msgstr "El archivo torrent debe incluir un rastreador I2P." + #~ msgid " theme locked and loaded." #~ msgstr "tema cargado" + #~ msgid "Hide All Attached Peers [connected/total in swarm]" #~ msgstr "Ocultar todos los pares conectados [conectados/todos]" + #~ msgid "Show All Attached Peers [connected/total in swarm]" #~ msgstr "Mostrar todos los pares conectados [conectados/todos]" + #~ msgid "Loaded Torrents" #~ msgstr "Torrents" + #~ msgid "Estimated Download Time" #~ msgstr "tiempo restante de descarga" + #~ msgid "1" #~ msgid_plural "{0}" #~ msgstr[0] "{0}" #~ msgstr[1] "{0}" + #~ msgid "Torrent file {0} does not exist" #~ msgstr "Archivo del torrent {0} no existe" + #~ msgid "Copying torrent to {0}" #~ msgstr "Copiando torrent a {0}" + #~ msgid "from {0}" #~ msgstr "de {0}" + #~ msgid "Downloading" #~ msgstr "descargando" -#~ msgid "File" -#~ msgstr "Archivo" + #~ msgid "FileSize" #~ msgstr "Tamaño" + #~ msgid "Download Status" #~ msgstr "Estado" + #~ msgid "size: {0}B" #~ msgstr "Tamaño: {0}Bytes" + #~ msgid "Directory to store torrents and data" #~ msgstr "Carpeta para guardar los archivos torrent y los datos" + #~ msgid "Do not download" #~ msgstr "No descargues" + #~ msgid "Details" #~ msgstr "Detalles" + #~ msgid "Cannot change the I2CP settings while torrents are active" #~ msgstr "" #~ "No se puede cammbiar los ajustes I2CP mientras estén activos los torrents" + #~ msgid "Non-i2p tracker in \"{0}\", deleting it from our list of trackers!" #~ msgstr "" #~ "Rastreador fuera de I2P en \"{0}\", borrando de la lista de rastreadores" + #~ msgid "{0} torrents" #~ msgstr "{0} Torrents" + #~ msgid "Uninteresting" #~ msgstr "no interesante" + #~ msgid "Choked" #~ msgstr "frenado" + #~ msgid "Uninterested" #~ msgstr "desinteresado" + #~ msgid "Choking" #~ msgstr "frenando" + #~ msgid "Custom tracker URL" #~ msgstr "URL especial del rastreador" + #~ msgid "Configure" #~ msgstr "Ajustes" - diff --git a/apps/i2psnark/locale/messages_fr.po b/apps/i2psnark/locale/messages_fr.po index 52b20ccda..f00219065 100644 --- a/apps/i2psnark/locale/messages_fr.po +++ b/apps/i2psnark/locale/messages_fr.po @@ -8,261 +8,341 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-28 00:08+0000\n" +"POT-Creation-Date: 2011-03-03 18:28+0000\n" "PO-Revision-Date: 2010-12-31 02:22+0100\n" "Last-Translator: mixxy \n" "Language-Team: foo \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n>1\n" "X-Poedit-Language: French\n" -#: ../java/src/org/klomp/snark/SnarkManager.java:94 -#, java-format -msgid "Adding torrents in {0} minutes" -msgstr "Ajouter des torrents dans {0} minutes" - -#: ../java/src/org/klomp/snark/SnarkManager.java:296 +#: ../java/src/org/klomp/snark/SnarkManager.java:307 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "Limite agrégée des uploaders modifiée : {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:298 +#: ../java/src/org/klomp/snark/SnarkManager.java:309 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "La limite minimale agrégée des uploaders est : {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:310 +#: ../java/src/org/klomp/snark/SnarkManager.java:321 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "La limite d’upload modifiée : {0} Ko/s" -#: ../java/src/org/klomp/snark/SnarkManager.java:312 +#: ../java/src/org/klomp/snark/SnarkManager.java:323 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "La limite minimale d’upload est {0} Ko/s" -#: ../java/src/org/klomp/snark/SnarkManager.java:324 -#, java-format -msgid "Startup delay limit changed to {0} minutes" +#: ../java/src/org/klomp/snark/SnarkManager.java:335 +#, fuzzy, java-format +msgid "Startup delay changed to {0}" msgstr "Delais de démarrage modifié : {0} minutes" -#: ../java/src/org/klomp/snark/SnarkManager.java:371 +#: ../java/src/org/klomp/snark/SnarkManager.java:386 msgid "I2CP and tunnel changes will take effect after stopping all torrents" -msgstr "Les modifications I2CP et des tunnels seront prise en compte après avoir arrêté tous les torrents" +msgstr "" +"Les modifications I2CP et des tunnels seront prise en compte après avoir " +"arrêté tous les torrents" -#: ../java/src/org/klomp/snark/SnarkManager.java:378 +#: ../java/src/org/klomp/snark/SnarkManager.java:393 msgid "Disconnecting old I2CP destination" msgstr "Déconnexion des anciennes destination I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:382 +#: ../java/src/org/klomp/snark/SnarkManager.java:397 #, java-format msgid "I2CP settings changed to {0}" msgstr "Les paramètres I2CP ont été changés : {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:386 -msgid "Unable to connect with the new settings, reverting to the old I2CP settings" -msgstr "Impossible de se connecter avec les nouveaux paramètres, retour à l'ancienne configuration I2CP" +#: ../java/src/org/klomp/snark/SnarkManager.java:402 +msgid "" +"Unable to connect with the new settings, reverting to the old I2CP settings" +msgstr "" +"Impossible de se connecter avec les nouveaux paramètres, retour à l'ancienne " +"configuration I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:390 +#: ../java/src/org/klomp/snark/SnarkManager.java:406 msgid "Unable to reconnect with the old settings!" msgstr "Impossible de se reconnecter avec les anciens paramètres!" -#: ../java/src/org/klomp/snark/SnarkManager.java:392 +#: ../java/src/org/klomp/snark/SnarkManager.java:408 msgid "Reconnected on the new I2CP destination" msgstr "Reconnexion sur la nouvelle destination I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:403 +#: ../java/src/org/klomp/snark/SnarkManager.java:418 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "Listener I2CP redémarré pour \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:414 +#: ../java/src/org/klomp/snark/SnarkManager.java:429 msgid "Enabled autostart" msgstr "Le démarrage automatique est activé" -#: ../java/src/org/klomp/snark/SnarkManager.java:416 +#: ../java/src/org/klomp/snark/SnarkManager.java:431 msgid "Disabled autostart" msgstr "Le démarrage automatique est désactivé" -#: ../java/src/org/klomp/snark/SnarkManager.java:422 +#: ../java/src/org/klomp/snark/SnarkManager.java:437 msgid "Enabled open trackers - torrent restart required to take effect." -msgstr "Les open trackers sont activés - ceci a nécessité un redémarrage des torrents pour être pris en compte." +msgstr "" +"Les open trackers sont activés - ceci a nécessité un redémarrage des " +"torrents pour être pris en compte." -#: ../java/src/org/klomp/snark/SnarkManager.java:424 +#: ../java/src/org/klomp/snark/SnarkManager.java:439 msgid "Disabled open trackers - torrent restart required to take effect." -msgstr "Les open trackers sont désactivés - ceci a nécessité un redémarrage des torrents pour être pris en compte." +msgstr "" +"Les open trackers sont désactivés - ceci a nécessité un redémarrage des " +"torrents pour être pris en compte." -#: ../java/src/org/klomp/snark/SnarkManager.java:431 +#: ../java/src/org/klomp/snark/SnarkManager.java:447 msgid "Open Tracker list changed - torrent restart required to take effect." -msgstr "Liste des Open trackers modifiée - ceci nécessite un redémarrage des torrents pour être pris en compte" +msgstr "" +"Liste des Open trackers modifiée - ceci nécessite un redémarrage des " +"torrents pour être pris en compte" -#: ../java/src/org/klomp/snark/SnarkManager.java:438 +#: ../java/src/org/klomp/snark/SnarkManager.java:454 #, java-format msgid "{0} theme loaded, return to main i2psnark page to view." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:445 +#: ../java/src/org/klomp/snark/SnarkManager.java:461 msgid "Configuration unchanged." msgstr "La configuration n'a pas été modifiée" -#: ../java/src/org/klomp/snark/SnarkManager.java:455 +#: ../java/src/org/klomp/snark/SnarkManager.java:471 #, java-format msgid "Unable to save the config to {0}" msgstr "Impossible de sauvegarder la configuration vers {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:494 +#: ../java/src/org/klomp/snark/SnarkManager.java:536 msgid "Connecting to I2P" msgstr "Connexion à I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:497 +#: ../java/src/org/klomp/snark/SnarkManager.java:539 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "Erreur de connexion à I2P - Vérifiez vos paramètres I2CP!" -#: ../java/src/org/klomp/snark/SnarkManager.java:506 +#: ../java/src/org/klomp/snark/SnarkManager.java:548 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "Erreur : Impossible d’ajouter le torrent : {0}" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:528 +#: ../java/src/org/klomp/snark/SnarkManager.java:570 #, java-format msgid "Cannot open \"{0}\"" msgstr "Impossible d’ouvrir: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:541 -#, java-format -msgid "Warning - Ignoring non-i2p tracker in \"{0}\", will announce to i2p open trackers only" -msgstr "Attention - Les trackers non-i2p dans \"{0}\" sont ignorés, seuls les open trackers I2P seront utilisés!" +#. TODO - if the existing one is a magnet, delete it and add the metainfo instead? +#: ../java/src/org/klomp/snark/SnarkManager.java:586 +#: ../java/src/org/klomp/snark/SnarkManager.java:661 +#: ../java/src/org/klomp/snark/SnarkManager.java:716 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976 +#, fuzzy, java-format +msgid "Torrent with this info hash is already running: {0}" +msgstr "Torrent déjà actif: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:543 -#, 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 "Attention - Les trackers non-i2p dans \"{0}\" sont ignorés, et les open trackers sont désactivés, vous devez activer les open trackers avant de démarrer le torrent!" +#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); +#: ../java/src/org/klomp/snark/SnarkManager.java:593 +#, fuzzy, java-format +msgid "" +"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers " +"only." +msgstr "" +"Attention - Les trackers non-i2p dans \"{0}\" sont ignorés, seuls les open " +"trackers I2P seront utilisés!" -#: ../java/src/org/klomp/snark/SnarkManager.java:563 +#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); +#: ../java/src/org/klomp/snark/SnarkManager.java:598 +#, fuzzy, java-format +msgid "" +"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is " +"enabled before starting this torrent." +msgstr "" +"Attention - Les trackers non-i2p dans \"{0}\" sont ignorés, et les open " +"trackers sont désactivés, vous devez activer les open trackers avant de " +"démarrer le torrent!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:619 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "Le torrent dans \"{0}\" est invalide" -#: ../java/src/org/klomp/snark/SnarkManager.java:578 +#: ../java/src/org/klomp/snark/SnarkManager.java:624 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 +#, java-format +msgid "ERROR - Out of memory, cannot create torrent from {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:635 #, java-format msgid "Torrent added and started: \"{0}\"" msgstr "Torrent ajouté et démarré: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:580 +#: ../java/src/org/klomp/snark/SnarkManager.java:637 #, java-format msgid "Torrent added: \"{0}\"" msgstr "Torrent ajouté: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:734 +#: ../java/src/org/klomp/snark/SnarkManager.java:672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490 +#, java-format +msgid "Fetching {0}" +msgstr "Envoi {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:675 +#, java-format +msgid "" +"We have no saved peers and no other torrents are running. Fetch of {0} will " +"not succeed until you start another torrent." +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:679 +#, fuzzy, java-format +msgid "Adding {0}" +msgstr "Envoi {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:726 +#: ../java/src/org/klomp/snark/SnarkManager.java:749 +#: ../java/src/org/klomp/snark/SnarkManager.java:1174 +#, fuzzy, java-format +msgid "Failed to copy torrent file to {0}" +msgstr "Impossible de copier le torrent vers {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:972 #, java-format msgid "Too many files in \"{0}\" ({1}), deleting it!" msgstr "Trop de fichiers dans \"{0}\" ({1}), suppression! " -#: ../java/src/org/klomp/snark/SnarkManager.java:736 +#: ../java/src/org/klomp/snark/SnarkManager.java:974 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" -msgstr "Le fichier torrent \"{0}\" ne peut pas se terminer par \".torrent\", suppression!" +msgstr "" +"Le fichier torrent \"{0}\" ne peut pas se terminer par \".torrent\", " +"suppression!" -#: ../java/src/org/klomp/snark/SnarkManager.java:738 +#: ../java/src/org/klomp/snark/SnarkManager.java:976 #, java-format msgid "No pieces in \"{0}\", deleting it!" msgstr "Pas de morceaux dans \"{0}\", suppression!" -#: ../java/src/org/klomp/snark/SnarkManager.java:740 +#: ../java/src/org/klomp/snark/SnarkManager.java:978 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!" msgstr "Trop de morceaux dans \"{0}\" , la limite est {1}, suppression!" -#: ../java/src/org/klomp/snark/SnarkManager.java:742 +#: ../java/src/org/klomp/snark/SnarkManager.java:980 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B), deleting it." msgstr "Les morceaux sont trop larges dans \"{0}\" ({1}B), suppresion." -#: ../java/src/org/klomp/snark/SnarkManager.java:743 +#: ../java/src/org/klomp/snark/SnarkManager.java:981 #, java-format msgid "Limit is {0}B" msgstr "La limite est de \"{0}\"Octets" -#: ../java/src/org/klomp/snark/SnarkManager.java:751 +#: ../java/src/org/klomp/snark/SnarkManager.java:989 #, java-format msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" -msgstr "Les torrents dont la taille est supérieure à \"{0}\"Octets ne sont pas encore supportés, suppression \"{1}\"." +msgstr "" +"Les torrents dont la taille est supérieure à \"{0}\"Octets ne sont pas " +"encore supportés, suppression \"{1}\"." -#: ../java/src/org/klomp/snark/SnarkManager.java:767 +#: ../java/src/org/klomp/snark/SnarkManager.java:1005 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Erreur: Impossible de supprimer le torrent \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:794 +#: ../java/src/org/klomp/snark/SnarkManager.java:1026 +#: ../java/src/org/klomp/snark/SnarkManager.java:1044 #, java-format msgid "Torrent stopped: \"{0}\"" msgstr "Torrent arrêté:\"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:814 +#: ../java/src/org/klomp/snark/SnarkManager.java:1065 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "Torrent supprimé:\"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:852 +#: ../java/src/org/klomp/snark/SnarkManager.java:1073 +#, fuzzy, java-format +msgid "Adding torrents in {0}" +msgstr "Ajouter des torrents dans {0} minutes" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1122 #, java-format msgid "Download finished: {0}" msgstr "Téléchargement terminé:\"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:880 +#: ../java/src/org/klomp/snark/SnarkManager.java:1170 +#, fuzzy, java-format +msgid "Metainfo received for {0}" +msgstr "Le torrent n’a pas été reçu par {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1171 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525 +#, java-format +msgid "Starting up torrent {0}" +msgstr "Démarrage du torrent {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1225 msgid "Unable to connect to I2P!" msgstr "Impossible de se connecter à I2P!" -#: ../java/src/org/klomp/snark/SnarkManager.java:886 +#: ../java/src/org/klomp/snark/SnarkManager.java:1231 #, java-format msgid "Unable to add {0}" msgstr "Impossible d’ajouter {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:185 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:205 msgid "I2PSnark - Anonymous BitTorrent Client" msgstr "I2PSnark - Client BitTorrent anonyme" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:198 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:218 msgid "Torrents" msgstr "Torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:201 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:208 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:977 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1028 msgid "I2PSnark" msgstr "I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:225 msgid "Refresh page" msgstr "Rafraîchir la page" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:230 msgid "Forum" msgstr "Forum" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:264 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1483 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 msgid "Status" msgstr "État" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:270 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:272 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:292 msgid "Hide Peers" msgstr "Cacher les pairs" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:277 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:279 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:299 msgid "Show Peers" msgstr "Afficher les pairs" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:286 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1643 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659 msgid "Torrent" msgstr "Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310 #, fuzzy msgid "Estimated time remaining" msgstr "Octets restants" @@ -270,587 +350,667 @@ msgstr "Octets restants" # NOTE: purposely left blank to leave more room in the table header # msgstr "Temps restant" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:313 msgid "ETA" msgstr " Temps" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317 msgid "Downloaded" msgstr "Téléchargé" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:300 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:314 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:320 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 msgid "RX" msgstr "Reçu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:304 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:324 msgid "Uploaded" msgstr "Envoyé" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:307 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:324 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344 msgid "TX" msgstr "Envoyé" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:312 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:332 msgid "Down Rate" msgstr "Taux de téléchargement" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:326 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:337 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 msgid "Rate" msgstr "Vitesse" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342 msgid "Up Rate" msgstr "Taux d'envoi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:340 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Stop all torrents and the I2P tunnel" msgstr "Arrêter tous les torrents et le tunnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:367 msgid "Stop All" msgstr "Arrêter tout" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:351 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376 msgid "Start all torrents and the I2P tunnel" msgstr "Démarrer tous les torrents et le tunnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:378 msgid "Start All" msgstr "Démarrer tout" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397 msgid "No torrents loaded." msgstr "Aucun torrent chargé." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402 msgid "Totals" msgstr "Totaux" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:379 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404 #, 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:382 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" msgstr[0] "1 pair connecté" msgstr[1] "{0} pairs connectés" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:454 -#, java-format -msgid "Fetching {0}" -msgstr "Envoi {0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:458 -msgid "Invalid URL - must start with http://" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496 +#, fuzzy, java-format +msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" msgstr "URL invalide - elle doit débuter par http://" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:489 -#, java-format -msgid "Starting up torrent {0}" -msgstr "Démarrage du torrent {0}" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571 +#, fuzzy, java-format +msgid "Magnet deleted: {0}" +msgstr "Répertoire des données effacé: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:527 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 #, java-format msgid "Torrent file deleted: {0}" msgstr "Fichier torrent effacé: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:533 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:543 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 #, java-format msgid "Data file deleted: {0}" msgstr "Fichier de données effacé: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:545 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:585 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595 #, java-format msgid "Data file could not be deleted: {0}" msgstr "Le fichier de données ne peut être effacé: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:554 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604 #, java-format msgid "Data dir deleted: {0}" msgstr "Répertoire des données effacé: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:587 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 msgid "Error creating torrent - you must select a tracker" -msgstr "Erreur lors de la création du torrent - vous devez sélectionner un tracker" +msgstr "" +"Erreur lors de la création du torrent - vous devez sélectionner un tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:602 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653 #, java-format msgid "Torrent created for \"{0}\"" msgstr "Torrent créé pour \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:605 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655 #, java-format -msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\"" -msgstr "De nombreux trackers I2P nécessitent d’enregistrer les nouveaux torrents avant de seeder - faites-le avant de démarrer \"{0}\"!" +msgid "" +"Many I2P trackers require you to register new torrents before seeding - " +"please do so before starting \"{0}\"" +msgstr "" +"De nombreux trackers I2P nécessitent d’enregistrer les nouveaux torrents " +"avant de seeder - faites-le avant de démarrer \"{0}\"!" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:607 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "Erreur de création du torrent pour \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:610 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:660 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "Impossible de créer un torrent pour des données inexistantes: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663 msgid "Error creating torrent - you must enter a file or directory" -msgstr "Erreur de création du torrent - vous devez saisir un fichier ou un répertoire" +msgstr "" +"Erreur de création du torrent - vous devez saisir un fichier ou un répertoire" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "Arrêt de tous les torrents et fermeture du tunnel I2P." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:627 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:677 msgid "I2P tunnel closed." msgstr "Tunnel I2P fermé." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680 msgid "Opening the I2P tunnel and starting all torrents." msgstr "Ouverture du tunnel I2P and démarrage de tous les torrents." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:759 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:764 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:770 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:803 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Tracker Error" msgstr "Erreur du tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:762 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:766 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:794 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:799 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:803 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:806 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:826 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:847 #, java-format msgid "1 peer" msgid_plural "{0} peers" msgstr[0] "1 Pair" msgstr[1] "{0} Pairs" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:824 msgid "Seeding" msgstr "Seed en cours" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:784 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:828 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770 msgid "Complete" msgstr "Complet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 msgid "OK" msgstr "OK" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:796 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:840 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845 msgid "Stalled" msgstr "Figé" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:805 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:849 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852 msgid "No Peers" msgstr "Pas de pair" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854 msgid "Stopped" msgstr "Arrêté" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837 -#, fuzzy, java-format -msgid "Details at {0} tracker" -msgstr "Sélectionner un tracker" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:886 +#, fuzzy +msgid "Torrent details" +msgstr "Torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160 #, fuzzy msgid "Info" msgstr "Ignore" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:853 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:913 msgid "View files" msgstr "Voir les fichiers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:855 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:915 msgid "Open file" msgstr "Ouvrir fichier" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:865 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1569 -#, fuzzy -msgid "Open" -msgstr "Ouvrir fichier" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:909 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:957 msgid "Stop the torrent" msgstr "Arrêter le torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:911 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 msgid "Stop" msgstr "Arrêter" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:921 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 msgid "Start the torrent" msgstr "Démarrer le torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:923 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:971 msgid "Start" msgstr "Démarrer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:933 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "Enlever le torrent de la liste active, suprression du fichier .torrent" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:938 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 #, java-format -msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?" -msgstr "Etes-vous certain de vouloir supprimer le fichier \\''{0}.torrent\\'' (les données déjà téléchargées ne seront pas supprimées) ?" +msgid "" +"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded " +"data will not be deleted) ?" +msgstr "" +"Etes-vous certain de vouloir supprimer le fichier \\''{0}.torrent\\'' (les " +"données déjà téléchargées ne seront pas supprimées) ?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:941 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990 msgid "Remove" msgstr "Enlever" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001 msgid "Delete the .torrent file and the associated data file(s)" -msgstr "Supprimer le fichier .torrent et le(s) fichier(s) de données associé(s)" +msgstr "" +"Supprimer le fichier .torrent et le(s) fichier(s) de données associé(s)" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006 #, java-format -msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?" -msgstr "Etes-vous certain de vouloir supprimer le torrent \\''{0}\\'' ainsi que toutes les données téléchargées ?" +msgid "" +"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " +"data?" +msgstr "" +"Etes-vous certain de vouloir supprimer le torrent \\''{0}\\'' ainsi que " +"toutes les données téléchargées ?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009 msgid "Delete" msgstr "Supprimer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:991 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1042 msgid "Unknown" msgstr "Inconnu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054 msgid "Seed" msgstr "Seed" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1019 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Uninteresting (The peer has no pieces we need)" msgstr "aucun intérêt (le pair n'a aucun morceau utile)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1021 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "bridé (le pair ne nous permet pas de demander un morceau)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1035 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1099 msgid "Uninterested (We have no pieces the peer needs)" msgstr "aucun intérêt (nous n'avons aucun morceau utile au pair)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "bridage (nous ne permettons pas au pair de demander un morceau)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1092 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159 +#, fuzzy, java-format +msgid "Details at {0} tracker" +msgstr "Sélectionner un tracker" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1188 msgid "Add Torrent" msgstr "Ajouter torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1094 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190 msgid "From URL" msgstr "Depuis l'url" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097 -msgid "Torrent file must originate from an I2P-based tracker" -msgstr "Le fichier torrent doit provenir d'un tracker I2P" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193 +msgid "" +"Enter the torrent file download URL (I2P only), magnet link, or maggot link" +msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1102 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198 msgid "Add torrent" msgstr "Ajouter torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1105 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1201 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "Vous pouvez aussi copier les fichiers .torrent vers {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1107 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Removing a .torrent will cause it to stop." msgstr "La suppression d'un fichier .torrent entraine l'arrêt du torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1131 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 msgid "Create Torrent" msgstr "Créer torrent" #. out.write("From file:
    \n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1134 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229 msgid "Data to seed" msgstr "Données à seeder" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233 msgid "File or directory to seed (must be within the specified path)" msgstr "Fichier ou répertoire à seeder (doit être dans le chemin spécifié)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1140 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1235 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 msgid "Tracker" msgstr "Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237 msgid "Select a tracker" msgstr "Sélectionner un tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155 -msgid "or" -msgstr "ou" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1158 -msgid "Specify custom tracker announce URL" -msgstr "Spécifier une URL personnalisée d'annonce de tracker" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1161 -msgid "Create torrent" -msgstr "Créer torrent" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317 -msgid "Configuration" -msgstr "Configuration" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1184 -msgid "Data directory" -msgstr "Répertoire de données" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1186 -msgid "Edit i2psnark.config and restart to change" -msgstr "Editez i2psnark.config et redémarrez pour prendre en compte les modifications" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190 -msgid "Auto start" -msgstr "Démarrage automatique" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194 -msgid "If checked, automatically start torrents that are added" -msgstr "Si coché, les torrents démarrerons automatiquement lors de l'ajout" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198 -msgid "Theme" -msgstr "" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1211 -msgid "Startup delay" -msgstr "Délais de démarrage" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1213 -msgid "minutes" -msgstr "minutes" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237 -msgid "Total uploader limit" -msgstr "Limite totale d'envoi" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240 -msgid "peers" -msgstr "pairs" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244 -msgid "Up bandwidth limit" -msgstr "Limite de bande passante en envoi" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1247 -msgid "Half available bandwidth recommended." -msgstr "La moitié de la bande passante est recommandée." - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1249 -msgid "View or change router bandwidth" -msgstr "Consulter ou modifier la bande passante du routeur" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253 -msgid "Use open trackers also" +#. out.write(_("Open trackers and DHT only")); +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 +#, fuzzy +msgid "Open trackers only" msgstr "Utiliser les open trackers aussi" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257 -msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file" -msgstr "Si coché, les torrents seront annoncés vers les open trackers ainsi que vers les trackers indiqués dans le fichier torrent" +msgid "or" +msgstr "ou" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1261 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260 +msgid "Specify custom tracker announce URL" +msgstr "Spécifier une URL personnalisée d'annonce de tracker" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263 +msgid "Create torrent" +msgstr "Créer torrent" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420 +msgid "Configuration" +msgstr "Configuration" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1285 +msgid "Data directory" +msgstr "Répertoire de données" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287 +msgid "Edit i2psnark.config and restart to change" +msgstr "" +"Editez i2psnark.config et redémarrez pour prendre en compte les modifications" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +msgid "Auto start" +msgstr "Démarrage automatique" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295 +msgid "If checked, automatically start torrents that are added" +msgstr "Si coché, les torrents démarrerons automatiquement lors de l'ajout" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1299 +msgid "Theme" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312 +msgid "Startup delay" +msgstr "Délais de démarrage" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314 +msgid "minutes" +msgstr "minutes" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1338 +msgid "Total uploader limit" +msgstr "Limite totale d'envoi" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 +msgid "peers" +msgstr "pairs" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1345 +msgid "Up bandwidth limit" +msgstr "Limite de bande passante en envoi" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348 +msgid "Half available bandwidth recommended." +msgstr "La moitié de la bande passante est recommandée." + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 +msgid "View or change router bandwidth" +msgstr "Consulter ou modifier la bande passante du routeur" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354 +msgid "Use open trackers also" +msgstr "Utiliser les open trackers aussi" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 +msgid "" +"If checked, announce torrents to open trackers as well as the tracker listed " +"in the torrent file" +msgstr "" +"Si coché, les torrents seront annoncés vers les open trackers ainsi que vers " +"les trackers indiqués dans le fichier torrent" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362 msgid "Open tracker announce URLs" msgstr "URL d'annonce open tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1273 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1374 msgid "Inbound Settings" msgstr "Paramètres entrants" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1380 msgid "Outbound Settings" msgstr "Paramètres sortants" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1286 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 msgid "I2CP host" msgstr "Hôte I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1393 msgid "I2CP port" msgstr "Port I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1303 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1406 msgid "I2CP options" msgstr "Options I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1308 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411 msgid "Save configuration" msgstr "Sauvegarder la configuration" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436 +#, java-format +msgid "Invalid magnet URL {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470 +#, java-format +msgid "Invalid info hash in magnet URL {0}" +msgstr "" + #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1500 #, java-format msgid "1 hop" msgid_plural "{0} hops" msgstr[0] "1 saut" msgstr[1] "{0} sauts" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1326 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1501 #, 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:1480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 +#, fuzzy +msgid "Completion" +msgstr "Complet" + +#. else unknown +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 msgid "Size" msgstr "Taille" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1487 -msgid "Priority" -msgstr "Priorité" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#, fuzzy +msgid "Files" +msgstr "Fichier" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492 -msgid "Up to higher level directory" -msgstr "Vers le répertoire parent" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674 +msgid "Pieces" +msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675 +msgid "Piece size" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697 +msgid "Magnet link" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753 msgid "Directory" msgstr "Répertoire" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723 +msgid "Priority" +msgstr "Priorité" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1728 +msgid "Up to higher level directory" +msgstr "Vers le répertoire parent" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 msgid "Torrent not found?" msgstr "Torrent non trouvé?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767 msgid "File not found in torrent?" msgstr "Fichier non trouvé dans le torrent?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1780 msgid "complete" msgstr "complet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781 msgid "bytes remaining" msgstr "Octets restants" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806 +#, fuzzy +msgid "Open" +msgstr "Ouvrir fichier" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1832 msgid "High" msgstr "Haut" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1600 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1837 msgid "Normal" msgstr "Normal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1605 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1842 msgid "Skip" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1851 msgid "Save priorities" msgstr "Sauvegarder les priorités" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967 #, java-format msgid "Torrent fetched from {0}" msgstr "Torrent envoyé de {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1746 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1989 #, java-format msgid "Torrent already running: {0}" msgstr "Torrent déjà actif: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1748 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1991 #, java-format msgid "Torrent already in the queue: {0}" msgstr "Torrent déjà dans la queue: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1755 -#, fuzzy, java-format -msgid "Failed to copy torrent file to {0}" -msgstr "Impossible de copier le torrent vers {0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1997 #, java-format msgid "Torrent at {0} was not valid" msgstr "Le torrent {0} n'est pas valide" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1764 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2004 #, java-format msgid "Torrent was not retrieved from {0}" msgstr "Le torrent n’a pas été reçu par {0}" +#~ msgid "Torrent file must originate from an I2P-based tracker" +#~ msgstr "Le fichier torrent doit provenir d'un tracker I2P" + #~ msgid "size: {0}B" #~ msgstr "Taille: {0}Octets" + #~ msgid "Estimated Download Time" #~ msgstr "Temps estimé de téléchargement" + #~ msgid "Torrent file {0} does not exist" #~ msgstr "Le fichier torrent {0} n'existe pas" + #~ msgid "Copying torrent to {0}" #~ msgstr "Copie du torrent vers {0}" + #~ msgid "from {0}" #~ msgstr "depuis {0}" + #~ msgid "Downloading" #~ msgstr "Téléchargement en cours" -#~ msgid "File" -#~ msgstr "Fichier" + #~ msgid "FileSize" #~ msgstr "Taille du fichier" + #~ msgid "Download Status" #~ msgstr "État du téléchargement" + #~ msgid "Details" #~ msgstr "Détails" + #~ msgid "Depuis l'URL" #~ msgstr "Quell-URL" + #~ msgid "Directory to store torrents and data" #~ msgstr "Répertoire de stockage des torrents et des données" + #~ msgid "Cannot change the I2CP settings while torrents are active" #~ msgstr "" #~ "On ne peut changer les paramètres I2CP pendant que des torrents sont " #~ "actifs" + #~ msgid "Non-i2p tracker in \"{0}\", deleting it from our list of trackers!" #~ msgstr "" #~ "Tracker non-i2p dans \"{0}\", suppression de notre liste de trackers!" + #~ msgid "{0} torrents" #~ msgstr "{0} Torrents" + #~ msgid "Uninteresting" #~ msgstr "Pas intéressant" + #~ msgid "Choked" #~ msgstr "Choked" + #~ msgid "Uninterested" #~ msgstr "Pas interessé" + #~ msgid "Choking" #~ msgstr "Choking" + #~ msgid "Custom tracker URL" #~ msgstr "URL tracker spécifique" + #~ msgid "Configure" #~ msgstr "Configurer" - diff --git a/apps/i2psnark/locale/messages_nl.po b/apps/i2psnark/locale/messages_nl.po index e347d403d..860e9d7fe 100644 --- a/apps/i2psnark/locale/messages_nl.po +++ b/apps/i2psnark/locale/messages_nl.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 12:17+0000\n" +"POT-Creation-Date: 2011-03-03 18:28+0000\n" "PO-Revision-Date: 2011-02-20 12:15+0000\n" "Last-Translator: ducki2p \n" "Language-Team: Dutch <>\n" +"Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../java/src/org/klomp/snark/SnarkManager.java:307 @@ -135,7 +135,7 @@ msgstr "Kan \"{0}\" niet openen" #: ../java/src/org/klomp/snark/SnarkManager.java:586 #: ../java/src/org/klomp/snark/SnarkManager.java:661 #: ../java/src/org/klomp/snark/SnarkManager.java:716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "Torrent met deze info hash is al actief: {0}" @@ -166,7 +166,7 @@ msgid "Torrent in \"{0}\" is invalid" msgstr "Torrent in \"{0}\" is ongeldig" #: ../java/src/org/klomp/snark/SnarkManager.java:624 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1994 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "ERROR - Geen geheugen meer, kan geen torrent maken van {0}" @@ -182,7 +182,7 @@ msgid "Torrent added: \"{0}\"" msgstr "Torrent toegevoegd: \"{0}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:672 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:489 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490 #, java-format msgid "Fetching {0}" msgstr "Downloaden {0}" @@ -277,7 +277,7 @@ msgid "Metainfo received for {0}" msgstr "Metainfo ontvangen voor {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:1171 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525 #, java-format msgid "Starting up torrent {0}" msgstr "Starten met torrent {0}" @@ -301,7 +301,7 @@ msgstr "Torrents" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1024 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1028 msgid "I2PSnark" msgstr "I2PSnark" @@ -314,7 +314,7 @@ msgid "Forum" msgstr "Forum" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1715 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 msgid "Status" msgstr "Status" @@ -329,8 +329,8 @@ msgid "Show Peers" msgstr "Toon Peers" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1639 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1655 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1643 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659 msgid "Torrent" msgstr "Torrent" @@ -377,88 +377,88 @@ msgstr "Rato" msgid "Up Rate" msgstr "Up Snelheid" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:364 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Stop all torrents and the I2P tunnel" msgstr "Stop alle torrents en de I2P tunnel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:367 msgid "Stop All" msgstr "Stop Alle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:375 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376 msgid "Start all torrents and the I2P tunnel" msgstr "Start alle torrents en de I2P tunnel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:378 msgid "Start All" msgstr "Start Alle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:396 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397 msgid "No torrents loaded." msgstr "Geen torrents geladen." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:401 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402 msgid "Totals" msgstr "Totalen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404 #, 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:406 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 #, 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:495 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496 #, java-format msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" msgstr "Ongeldige URL: moet beginnen met \"http://\", \"{0}\", of \"{1}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:543 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571 #, java-format msgid "Magnet deleted: {0}" msgstr "Magnet verwijderd: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:551 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:576 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 #, java-format msgid "Torrent file deleted: {0}" msgstr "Torrent bestand verwijderd: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 #, java-format msgid "Data file deleted: {0}" msgstr "Data bestand verwijderd: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:585 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595 #, 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:603 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604 #, java-format msgid "Data dir deleted: {0}" msgstr "Data directory verwijderd: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:636 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 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:652 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653 #, java-format msgid "Torrent created for \"{0}\"" msgstr "Torrent gemaakt voor \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:654 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " @@ -467,117 +467,117 @@ 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:656 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657 #, 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:659 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:660 #, 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:662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663 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:665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 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:676 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:677 msgid "I2P tunnel closed." msgstr "I2P tunnel gesloten." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680 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:802 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:807 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:813 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:803 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Tracker Error" msgstr "Tracker Fout" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:805 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:825 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:842 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:846 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:806 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:826 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:847 #, java-format msgid "1 peer" msgid_plural "{0} peers" msgstr[0] "1 peer" msgstr[1] "{0} peers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:818 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:824 msgid "Seeding" msgstr "Seeding" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:827 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1661 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:828 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770 msgid "Complete" msgstr "Voltooid" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:830 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:835 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 msgid "OK" msgstr "OK" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:840 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845 msgid "Stalled" msgstr "Vastgelopen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:848 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:851 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:849 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852 msgid "No Peers" msgstr "Geen Peers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:853 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854 msgid "Stopped" msgstr "Gestopt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:885 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:886 msgid "Torrent details" msgstr "Torrent details" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:897 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1156 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160 msgid "Info" msgstr "Info" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:913 msgid "View files" msgstr "Bekijk bestanden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:914 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:915 msgid "Open file" msgstr "Open bestand" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:957 msgid "Stop the torrent" msgstr "Stop de torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 msgid "Stop" msgstr "Stop" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 msgid "Start the torrent" msgstr "Start de torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:971 msgid "Start" msgstr "Start" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:979 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "" "Verwijder de torrent van de actieve lijst, het .torrent bestand wordt " @@ -586,7 +586,7 @@ msgstr "" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:984 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded " @@ -595,18 +595,18 @@ 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:987 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990 msgid "Remove" msgstr "Weghalen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:997 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001 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:1002 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " @@ -615,163 +615,163 @@ msgstr "" "Weet je zeker dat je de torrent \\''{0}\\'' en alle gedownloade data wilt " "verwijderen?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1005 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009 msgid "Delete" msgstr "Verwijderen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1038 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1042 msgid "Unknown" msgstr "Onbekend" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1050 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054 msgid "Seed" msgstr "Seed" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 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:1075 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079 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:1095 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1099 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:1097 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101 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:1155 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159 #, java-format msgid "Details at {0} tracker" msgstr "Details op de {0} tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1184 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1188 msgid "Add Torrent" msgstr "Torrent Toevoegen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1186 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190 msgid "From URL" msgstr "Van URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1189 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193 msgid "" "Enter the torrent file download URL (I2P only), magnet link, or maggot link" msgstr "Geef de torrent download URL (alleen I2P), magnet link, of maggot link" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198 msgid "Add torrent" msgstr "Torrent toevoegen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1201 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "Je kan ook .torrent bestanden kopieren naar: {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1199 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Removing a .torrent will cause it to stop." msgstr "Verwijderen van een .torrent zorgt dat deze stopt." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1222 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 msgid "Create Torrent" msgstr "Creëer Torrent" #. out.write("From file:
    \n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1225 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229 msgid "Data to seed" msgstr "Data om te seeden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233 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:1231 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1680 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1235 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 msgid "Tracker" msgstr "Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237 msgid "Select a tracker" msgstr "Selecteer een tracker" #. out.write(_("Open trackers and DHT only")); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1238 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 msgid "Open trackers only" msgstr "Alleen Open trackers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257 msgid "or" msgstr "of" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1256 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260 msgid "Specify custom tracker announce URL" msgstr "Specificeer aangepaste tracker aankondigings URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1259 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263 msgid "Create torrent" msgstr "Creëer torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1416 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420 msgid "Configuration" msgstr "Configuratie" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1285 msgid "Data directory" msgstr "Data directory" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287 msgid "Edit i2psnark.config and restart to change" msgstr "Bewerk i2psnark.config en herstart de wijziging" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 msgid "Auto start" msgstr "Auto start" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295 msgid "If checked, automatically start torrents that are added" msgstr "Indien aangevinkt, start toegevoegde torrents automatisch" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1299 msgid "Theme" msgstr "Thema" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1308 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312 msgid "Startup delay" msgstr "Startup vertraging" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1310 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314 msgid "minutes" msgstr "minuten" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1338 msgid "Total uploader limit" msgstr "Totale uploader limiet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1337 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 msgid "peers" msgstr "peers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1345 msgid "Up bandwidth limit" msgstr "Up bandbreedte limiet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348 msgid "Half available bandwidth recommended." msgstr "Helft van beschikbare bandbreedte aanbevolen." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 msgid "View or change router bandwidth" msgstr "Bekijk of wijzig router bandbreedte" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354 msgid "Use open trackers also" msgstr "Gebruik ook open trackers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 msgid "" "If checked, announce torrents to open trackers as well as the tracker listed " "in the torrent file" @@ -779,155 +779,155 @@ msgstr "" "Indien aangevinkt, kondig torrents ook aan bij de tracker uit het torrent " "bestand" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362 msgid "Open tracker announce URLs" msgstr "Open tracker aankondigings URLs" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1370 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1374 msgid "Inbound Settings" msgstr "Inkomende Instellingen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1376 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1380 msgid "Outbound Settings" msgstr "Uitgaande Instellingen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1384 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 msgid "I2CP host" msgstr "I2CP host" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1389 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1393 msgid "I2CP port" msgstr "I2CP poort" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1402 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1406 msgid "I2CP options" msgstr "I2CP opties" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411 msgid "Save configuration" msgstr "Configuratie opslaan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436 #, java-format msgid "Invalid magnet URL {0}" msgstr "Ongeldige magnet URL {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1466 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470 #, java-format msgid "Invalid info hash in magnet URL {0}" msgstr "Ongeldige info hash in magnet URL {0}" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1496 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1500 #, 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:1497 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1501 #, 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:1659 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 msgid "Completion" msgstr "Voltooiing" #. else unknown -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 msgid "Size" msgstr "Grootte" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1668 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 msgid "Files" msgstr "Bestanden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1670 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674 msgid "Pieces" msgstr "Stukken" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675 msgid "Piece size" msgstr "Stukgrootte" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1693 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697 msgid "Magnet link" msgstr "Magnet link" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1710 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753 msgid "Directory" msgstr "Directory" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723 msgid "Priority" msgstr "Prioriteit" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1724 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1728 msgid "Up to higher level directory" msgstr "Naar bovenliggende directory" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1754 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 msgid "Torrent not found?" msgstr "Torrent niet gevonden?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767 msgid "File not found in torrent?" msgstr "Bestand niet gevonden in torrent?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1780 msgid "complete" msgstr "voltooid" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1777 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781 msgid "bytes remaining" msgstr "bytes resterend" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1802 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806 msgid "Open" msgstr "Open" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1828 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1832 msgid "High" msgstr "Hoog" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1833 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1837 msgid "Normal" msgstr "Normaal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1842 msgid "Skip" msgstr "Overslaan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1847 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1851 msgid "Save priorities" msgstr "Prioriteiten opslaan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967 #, java-format msgid "Torrent fetched from {0}" msgstr "Torrent gedownload van {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1984 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1989 #, java-format msgid "Torrent already running: {0}" msgstr "Torrent draait al: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1986 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1991 #, 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:1992 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1997 #, java-format msgid "Torrent at {0} was not valid" msgstr "Torrent op {0} was niet geldig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2004 #, java-format msgid "Torrent was not retrieved from {0}" msgstr "Torrent was niet ontvangen van {0}" diff --git a/apps/i2psnark/locale/messages_pt.po b/apps/i2psnark/locale/messages_pt.po index f0be507fc..ae9ed03c8 100644 --- a/apps/i2psnark/locale/messages_pt.po +++ b/apps/i2psnark/locale/messages_pt.po @@ -8,857 +8,1018 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-19 03:16+0000\n" +"POT-Creation-Date: 2011-03-03 18:28+0000\n" "PO-Revision-Date: 2011-02-27 18:48+0100\n" "Last-Translator: mixxy \n" "Language-Team: foo \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Spanish\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -#: ../java/src/org/klomp/snark/SnarkManager.java:94 -#, java-format -msgid "Adding torrents in {0} minutes" -msgstr "Os torrentes serão adicionados em {0} minutos ..." - -#: ../java/src/org/klomp/snark/SnarkManager.java:296 +#: ../java/src/org/klomp/snark/SnarkManager.java:307 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "Limite total de subidores mudado a {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:298 +#: ../java/src/org/klomp/snark/SnarkManager.java:309 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "O limite mínimo de subidores é {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:310 +#: ../java/src/org/klomp/snark/SnarkManager.java:321 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "Largura de banda para a subida foi mudada para {0} kbyte/s." -#: ../java/src/org/klomp/snark/SnarkManager.java:312 +#: ../java/src/org/klomp/snark/SnarkManager.java:323 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "O limite mínimo da largura de banda para a subida está em {0} kbyte/s." -#: ../java/src/org/klomp/snark/SnarkManager.java:324 -#, java-format -msgid "Startup delay limit changed to {0} minutes" +#: ../java/src/org/klomp/snark/SnarkManager.java:335 +#, fuzzy, java-format +msgid "Startup delay changed to {0}" msgstr "Demora do arranque mudado a {0} minutos" -#: ../java/src/org/klomp/snark/SnarkManager.java:371 +#: ../java/src/org/klomp/snark/SnarkManager.java:386 msgid "I2CP and tunnel changes will take effect after stopping all torrents" -msgstr "Mudanças do I2CP e do túnel terão efeito depois de deter todos os torrentes" +msgstr "" +"Mudanças do I2CP e do túnel terão efeito depois de deter todos os torrentes" -#: ../java/src/org/klomp/snark/SnarkManager.java:378 +#: ../java/src/org/klomp/snark/SnarkManager.java:393 msgid "Disconnecting old I2CP destination" msgstr "Desconectando anterior Destinação I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:382 +#: ../java/src/org/klomp/snark/SnarkManager.java:397 #, java-format msgid "I2CP settings changed to {0}" msgstr "Preferências de I2CP mudadas a {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:386 -msgid "Unable to connect with the new settings, reverting to the old I2CP settings" -msgstr "Conectar-se não foi posível com as novas preferências I2CP, utilizarei as anteriores." +#: ../java/src/org/klomp/snark/SnarkManager.java:402 +msgid "" +"Unable to connect with the new settings, reverting to the old I2CP settings" +msgstr "" +"Conectar-se não foi posível com as novas preferências I2CP, utilizarei as " +"anteriores." -#: ../java/src/org/klomp/snark/SnarkManager.java:390 +#: ../java/src/org/klomp/snark/SnarkManager.java:406 msgid "Unable to reconnect with the old settings!" msgstr "Impossível se conectar usando as preferências anteriores!" -#: ../java/src/org/klomp/snark/SnarkManager.java:392 +#: ../java/src/org/klomp/snark/SnarkManager.java:408 msgid "Reconnected on the new I2CP destination" msgstr "Conectado com a nova Destinação I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:403 +#: ../java/src/org/klomp/snark/SnarkManager.java:418 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "Conexão I2CP re-estabelecida para \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:414 +#: ../java/src/org/klomp/snark/SnarkManager.java:429 msgid "Enabled autostart" msgstr "Ativado o iniciar automáticamente" -#: ../java/src/org/klomp/snark/SnarkManager.java:416 +#: ../java/src/org/klomp/snark/SnarkManager.java:431 msgid "Disabled autostart" msgstr "Desativado o iniciar automáticamente" -#: ../java/src/org/klomp/snark/SnarkManager.java:422 +#: ../java/src/org/klomp/snark/SnarkManager.java:437 msgid "Enabled open trackers - torrent restart required to take effect." -msgstr "Uso de rastreadores abertos ativado - Para ter efeito é necesário reiniciar os torrentes." +msgstr "" +"Uso de rastreadores abertos ativado - Para ter efeito é necesário reiniciar " +"os torrentes." -#: ../java/src/org/klomp/snark/SnarkManager.java:424 +#: ../java/src/org/klomp/snark/SnarkManager.java:439 msgid "Disabled open trackers - torrent restart required to take effect." -msgstr "Uso dos rastreadores abertos desativado - Para ter efeito é necesário reiniciar os torrentes." +msgstr "" +"Uso dos rastreadores abertos desativado - Para ter efeito é necesário " +"reiniciar os torrentes." -#: ../java/src/org/klomp/snark/SnarkManager.java:431 +#: ../java/src/org/klomp/snark/SnarkManager.java:447 msgid "Open Tracker list changed - torrent restart required to take effect." -msgstr "Listado de rastreadores abertos mudado - Para ter efeito é necesário reiniciar os torrentes." +msgstr "" +"Listado de rastreadores abertos mudado - Para ter efeito é necesário " +"reiniciar os torrentes." -#: ../java/src/org/klomp/snark/SnarkManager.java:438 +#: ../java/src/org/klomp/snark/SnarkManager.java:454 #, java-format msgid "{0} theme loaded, return to main i2psnark page to view." msgstr "Tema {0} foi carregado. Volte no menú principal para vê-lo." -#: ../java/src/org/klomp/snark/SnarkManager.java:445 +#: ../java/src/org/klomp/snark/SnarkManager.java:461 msgid "Configuration unchanged." msgstr "Configuração não mudada." -#: ../java/src/org/klomp/snark/SnarkManager.java:455 +#: ../java/src/org/klomp/snark/SnarkManager.java:471 #, java-format msgid "Unable to save the config to {0}" msgstr "Não se pode guardar a configuração em {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:494 +#: ../java/src/org/klomp/snark/SnarkManager.java:536 msgid "Connecting to I2P" msgstr "Conectando com I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:497 +#: ../java/src/org/klomp/snark/SnarkManager.java:539 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "Erro ao se conectar com I2P - Verifique a sua configuração I2CP!" -#: ../java/src/org/klomp/snark/SnarkManager.java:506 +#: ../java/src/org/klomp/snark/SnarkManager.java:548 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "Erro: Não se pode adicionar o torrente {0}." #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:528 +#: ../java/src/org/klomp/snark/SnarkManager.java:570 #, java-format msgid "Cannot open \"{0}\"" msgstr "Não pode se abrir \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:541 -#, java-format -msgid "Warning - Ignoring non-i2p tracker in \"{0}\", will announce to i2p open trackers only" -msgstr "Aviso - Se ignorará rastreado não I2P no \"{0}\", anunciando só aos rastreadores abertos do I2P" +#. TODO - if the existing one is a magnet, delete it and add the metainfo instead? +#: ../java/src/org/klomp/snark/SnarkManager.java:586 +#: ../java/src/org/klomp/snark/SnarkManager.java:661 +#: ../java/src/org/klomp/snark/SnarkManager.java:716 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976 +#, fuzzy, java-format +msgid "Torrent with this info hash is already running: {0}" +msgstr "torrente já em marcha: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:543 -#, 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 "Aviso - Se ignorará rastreador não I2P no \"{0}\", rastreadores abertos estão desativados. Tens que ativá-los antes de iniciar o torrente!" +#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); +#: ../java/src/org/klomp/snark/SnarkManager.java:593 +#, fuzzy, java-format +msgid "" +"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers " +"only." +msgstr "" +"Aviso - Se ignorará rastreado não I2P no \"{0}\", anunciando só aos " +"rastreadores abertos do I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:563 +#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); +#: ../java/src/org/klomp/snark/SnarkManager.java:598 +#, fuzzy, java-format +msgid "" +"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is " +"enabled before starting this torrent." +msgstr "" +"Aviso - Se ignorará rastreador não I2P no \"{0}\", rastreadores abertos " +"estão desativados. Tens que ativá-los antes de iniciar o torrente!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:619 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "O arquivo .torrent em \"{0}\" não é válido." -#: ../java/src/org/klomp/snark/SnarkManager.java:578 +#: ../java/src/org/klomp/snark/SnarkManager.java:624 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 +#, java-format +msgid "ERROR - Out of memory, cannot create torrent from {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:635 #, java-format msgid "Torrent added and started: \"{0}\"" msgstr "torrente adicionado e iniciado: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:580 +#: ../java/src/org/klomp/snark/SnarkManager.java:637 #, java-format msgid "Torrent added: \"{0}\"" msgstr "torrente adicionado: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:734 +#: ../java/src/org/klomp/snark/SnarkManager.java:672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490 +#, java-format +msgid "Fetching {0}" +msgstr "Buscando {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:675 +#, java-format +msgid "" +"We have no saved peers and no other torrents are running. Fetch of {0} will " +"not succeed until you start another torrent." +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:679 +#, fuzzy, java-format +msgid "Adding {0}" +msgstr "Buscando {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:726 +#: ../java/src/org/klomp/snark/SnarkManager.java:749 +#: ../java/src/org/klomp/snark/SnarkManager.java:1174 +#, java-format +msgid "Failed to copy torrent file to {0}" +msgstr "Não se pode copiar o torrente para {0}." + +#: ../java/src/org/klomp/snark/SnarkManager.java:972 #, java-format msgid "Too many files in \"{0}\" ({1}), deleting it!" msgstr "Ha arquivos demais no \"{0}\", se apagará ({1}). " -#: ../java/src/org/klomp/snark/SnarkManager.java:736 +#: ../java/src/org/klomp/snark/SnarkManager.java:974 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" -msgstr "O arquivo de dados do torrente \"{0}\" não pode terminar em \".torrent' e será apagado." +msgstr "" +"O arquivo de dados do torrente \"{0}\" não pode terminar em \".torrent' e " +"será apagado." -#: ../java/src/org/klomp/snark/SnarkManager.java:738 +#: ../java/src/org/klomp/snark/SnarkManager.java:976 #, java-format msgid "No pieces in \"{0}\", deleting it!" msgstr "Não ha peças no \"{0}\", se apagará." -#: ../java/src/org/klomp/snark/SnarkManager.java:740 +#: ../java/src/org/klomp/snark/SnarkManager.java:978 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!" msgstr "Ha peças demais no \"{0}\" e o limite é {1}. Se apagarão." -#: ../java/src/org/klomp/snark/SnarkManager.java:742 +#: ../java/src/org/klomp/snark/SnarkManager.java:980 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B), deleting it." msgstr "Peças no \"{0}\" são grandes demais ({1}B). Se apagarão." -#: ../java/src/org/klomp/snark/SnarkManager.java:743 +#: ../java/src/org/klomp/snark/SnarkManager.java:981 #, java-format msgid "Limit is {0}B" msgstr "O limite são \"{0}\"Bytes" -#: ../java/src/org/klomp/snark/SnarkManager.java:751 +#: ../java/src/org/klomp/snark/SnarkManager.java:989 #, java-format msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" -msgstr "torrentes maiores que \"{0}\" Bytes ainda não funcionam, se apagará \"{1}\"." +msgstr "" +"torrentes maiores que \"{0}\" Bytes ainda não funcionam, se apagará \"{1}\"." -#: ../java/src/org/klomp/snark/SnarkManager.java:767 +#: ../java/src/org/klomp/snark/SnarkManager.java:1005 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Erro: Não se pode quitar o torrente \"{0}\"." -#: ../java/src/org/klomp/snark/SnarkManager.java:794 +#: ../java/src/org/klomp/snark/SnarkManager.java:1026 +#: ../java/src/org/klomp/snark/SnarkManager.java:1044 #, java-format msgid "Torrent stopped: \"{0}\"" msgstr "torrente detido: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:814 +#: ../java/src/org/klomp/snark/SnarkManager.java:1065 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "torrente quitado: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:852 +#: ../java/src/org/klomp/snark/SnarkManager.java:1073 +#, fuzzy, java-format +msgid "Adding torrents in {0}" +msgstr "Os torrentes serão adicionados em {0} minutos ..." + +#: ../java/src/org/klomp/snark/SnarkManager.java:1122 #, java-format msgid "Download finished: {0}" msgstr "Finalizada a descarga de \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:880 +#: ../java/src/org/klomp/snark/SnarkManager.java:1170 +#, fuzzy, java-format +msgid "Metainfo received for {0}" +msgstr "Não se pode obter torrente de {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1171 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525 +#, java-format +msgid "Starting up torrent {0}" +msgstr "Iniciando o torrente {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1225 msgid "Unable to connect to I2P!" msgstr "Impossível de se conectar com I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:886 +#: ../java/src/org/klomp/snark/SnarkManager.java:1231 #, java-format msgid "Unable to add {0}" msgstr "Impossível de adicionar {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:185 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:205 msgid "I2PSnark - Anonymous BitTorrent Client" msgstr "I2PSnark - Cliente de BitTorrent Anônimo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:198 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:218 msgid "Torrents" msgstr "torrentes" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:201 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:208 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:977 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1028 msgid "I2PSnark" msgstr "I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:225 msgid "Refresh page" msgstr "Atualizar página" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:230 msgid "Forum" msgstr "Foro" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:264 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1483 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 msgid "Status" msgstr "Estado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:270 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:272 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:292 msgid "Hide Peers" msgstr "ocultar parceiros" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:277 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:279 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:299 msgid "Show Peers" msgstr "mostrar parceiros" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:286 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1643 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659 msgid "Torrent" msgstr "torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310 msgid "Estimated time remaining" msgstr "Tempo que falta para completar" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:313 msgid "ETA" msgstr "Tempo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317 msgid "Downloaded" msgstr "Descarregado" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:300 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:314 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:320 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 msgid "RX" msgstr "Baixado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:304 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:324 msgid "Uploaded" msgstr "Subido" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:307 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:324 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344 msgid "TX" msgstr "Subido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:312 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:332 msgid "Down Rate" msgstr "Taça de descarga" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:326 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:337 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 msgid "Rate" msgstr "Taça" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342 msgid "Up Rate" msgstr "Taça de subida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:340 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Stop all torrents and the I2P tunnel" msgstr "Deter todos os torrentes e o túnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:367 msgid "Stop All" msgstr "Deter tudos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:351 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376 msgid "Start all torrents and the I2P tunnel" msgstr "Iniciar todos os torrentes e o túnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:378 msgid "Start All" msgstr "Arrancar todos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397 msgid "No torrents loaded." msgstr "Não carregado nenhum torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402 msgid "Totals" msgstr "Total" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:379 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" msgstr[0] "1 torrente" msgstr[1] "{0} torrentes" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:382 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" msgstr[0] "1 parceiro conectado" msgstr[1] "{0} parceiros conectados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:454 -#, java-format -msgid "Fetching {0}" -msgstr "Buscando {0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:458 -msgid "Invalid URL - must start with http://" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496 +#, fuzzy, java-format +msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" msgstr "Endereço não válido - tem que começar com http://" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:489 -#, java-format -msgid "Starting up torrent {0}" -msgstr "Iniciando o torrente {0}" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571 +#, fuzzy, java-format +msgid "Magnet deleted: {0}" +msgstr "Apagada a pasta de dados: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:527 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 #, java-format msgid "Torrent file deleted: {0}" msgstr "Apagado o arquivo torrente: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:533 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:543 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 #, java-format msgid "Data file deleted: {0}" msgstr "Apagado o arquivo de dados: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:545 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:585 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595 #, java-format msgid "Data file could not be deleted: {0}" msgstr "Não se pode apagar o arquivo de dados: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:554 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604 #, java-format msgid "Data dir deleted: {0}" msgstr "Apagada a pasta de dados: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:587 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 msgid "Error creating torrent - you must select a tracker" msgstr "Erro ao criar o torrente - Tens que elegir um rastreador." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:602 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653 #, java-format msgid "Torrent created for \"{0}\"" msgstr "torrente criado para \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:605 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655 #, java-format -msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\"" -msgstr "Muitos rastreadores no I2P exigem que você registre novos torrentes antes de poder semeá-los. Por favor, faça isto antes de iniciar \"{0}\"!" +msgid "" +"Many I2P trackers require you to register new torrents before seeding - " +"please do so before starting \"{0}\"" +msgstr "" +"Muitos rastreadores no I2P exigem que você registre novos torrentes antes de " +"poder semeá-los. Por favor, faça isto antes de iniciar \"{0}\"!" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:607 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "Erro ao criar o torrente \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:610 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:660 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "Não se pode criar um torrente para dados que não existam: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663 msgid "Error creating torrent - you must enter a file or directory" -msgstr "Erro ao criar o torrente - Tens que especificar um arquivo ou uma pasta." +msgstr "" +"Erro ao criar o torrente - Tens que especificar um arquivo ou uma pasta." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "Detindo todos os torrentes e fechando o túnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:627 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:677 msgid "I2P tunnel closed." msgstr "Túnel I2P fechado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680 msgid "Opening the I2P tunnel and starting all torrents." msgstr "Abrendo o túnel I2P e iniciando os torrentes ..." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:759 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:764 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:770 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:803 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Tracker Error" msgstr "Erro do rastreador" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:762 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:766 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:794 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:799 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:803 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:806 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:826 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:847 #, java-format msgid "1 peer" msgid_plural "{0} peers" msgstr[0] "1 parceiro" msgstr[1] "{0} parceiros" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:824 msgid "Seeding" msgstr "semeando" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:784 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:828 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770 msgid "Complete" msgstr "completo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 msgid "OK" msgstr "bem" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:796 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:840 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845 msgid "Stalled" msgstr "estancado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:805 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:849 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852 msgid "No Peers" msgstr "sem parceiros" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854 msgid "Stopped" msgstr "detenido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837 -#, java-format -msgid "Details at {0} tracker" -msgstr "Detalhes no rastreador {0}" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:886 +#, fuzzy +msgid "Torrent details" +msgstr "torrentes" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160 msgid "Info" msgstr "Info" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:853 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:913 msgid "View files" msgstr "mostrar arquivos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:855 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:915 msgid "Open file" msgstr "abrir arquivo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:865 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1569 -msgid "Open" -msgstr "abrir" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:909 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:957 msgid "Stop the torrent" msgstr "Deter o torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:911 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 msgid "Stop" msgstr "Deter" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:921 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 msgid "Start the torrent" msgstr "Iniciar o torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:923 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:971 msgid "Start" msgstr "Iniciar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:933 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "Retire o torrente da lista ativa, apagando o arquivo .torrent" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:938 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 #, java-format -msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?" -msgstr "Está seguro de que quer apagar o arquivo \\''{0}.torrent\\''? (Dados baixados não se apagarão.)" +msgid "" +"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded " +"data will not be deleted) ?" +msgstr "" +"Está seguro de que quer apagar o arquivo \\''{0}.torrent\\''? (Dados " +"baixados não se apagarão.)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:941 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990 msgid "Remove" msgstr "Quitar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001 msgid "Delete the .torrent file and the associated data file(s)" msgstr "Apagar o arquivo torrente e o(s) arquivo(s) de dados pertenecentes" #. 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:955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006 #, java-format -msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?" -msgstr "Está seguro de que quer apagar o arquivo torrente \\''{0}\\'' e todos os dados descarregados deste torrente?" +msgid "" +"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " +"data?" +msgstr "" +"Está seguro de que quer apagar o arquivo torrente \\''{0}\\'' e todos os " +"dados descarregados deste torrente?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009 msgid "Delete" msgstr "Apagar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:991 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1042 msgid "Unknown" msgstr "desconhecido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054 msgid "Seed" msgstr "Semeador" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1019 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Uninteresting (The peer has no pieces we need)" msgstr "não interessante (O parceiro não tem peças que precisamos.)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1021 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079 msgid "Choked (The peer is not allowing us to request pieces)" -msgstr "sufocado (De momento o parceiro não está nos permitindo pedir mais peças.c)" +msgstr "" +"sufocado (De momento o parceiro não está nos permitindo pedir mais peças.c)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1035 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1099 msgid "Uninterested (We have no pieces the peer needs)" msgstr "desinteressado (Não temos as peças que o parceiro quer.)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101 msgid "Choking (We are not allowing the peer to request pieces)" -msgstr "sufocando (De momento não estamos permitindo que os parceiros peçam mais peças)" +msgstr "" +"sufocando (De momento não estamos permitindo que os parceiros peçam mais " +"peças)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1092 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159 +#, java-format +msgid "Details at {0} tracker" +msgstr "Detalhes no rastreador {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1188 msgid "Add Torrent" msgstr "Adicionar um torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1094 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190 msgid "From URL" msgstr "URL fonte:" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097 -msgid "Torrent file must originate from an I2P-based tracker" -msgstr "O arquivo torrente tem que incluir um rastreador I2P." +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193 +msgid "" +"Enter the torrent file download URL (I2P only), magnet link, or maggot link" +msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1102 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198 msgid "Add torrent" msgstr "Adicionar torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1105 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1201 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "Também pode copiar arquivos torrentes a {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1107 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Removing a .torrent will cause it to stop." msgstr "A remoção de um arquivo .torrent fará com que ele pare." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1131 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 msgid "Create Torrent" msgstr "Criar um torrente" #. out.write("From file:
    \n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1134 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229 msgid "Data to seed" msgstr "Dados para semear" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233 msgid "File or directory to seed (must be within the specified path)" msgstr "Arquivo ou pasta para semear (deve estar no caminho especificado)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1140 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1235 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 msgid "Tracker" msgstr "Rastreador" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237 msgid "Select a tracker" msgstr "Selecione um rastreador" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155 -msgid "or" -msgstr "ou" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1158 -msgid "Specify custom tracker announce URL" -msgstr "Especifique o URL de rastreador personalizado" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1161 -msgid "Create torrent" -msgstr "Criar torrente" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317 -msgid "Configuration" -msgstr "Preferências" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1184 -msgid "Data directory" -msgstr "Pasta de dados" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1186 -msgid "Edit i2psnark.config and restart to change" -msgstr "Para mudar, modifique o arquivo i2psnark.config e re-inície!" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190 -msgid "Auto start" -msgstr "Iniciar automáticamente" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194 -msgid "If checked, automatically start torrents that are added" -msgstr "se marcado, os torrentes adicionados se iniciarão automaticamente" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198 -msgid "Theme" -msgstr "Tema" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1211 -msgid "Startup delay" -msgstr "Demora do arranque" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1213 -msgid "minutes" -msgstr "minutos" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237 -msgid "Total uploader limit" -msgstr "Limite global de subidores" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240 -msgid "peers" -msgstr "parceiros" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244 -msgid "Up bandwidth limit" -msgstr "Limite de largura de banda para a subida" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1247 -msgid "Half available bandwidth recommended." -msgstr "Se recomenda a metade da largura de banda disponível." - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1249 -msgid "View or change router bandwidth" -msgstr "mostrar e mudar as preferências da largura de banda do roteador" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253 -msgid "Use open trackers also" +#. out.write(_("Open trackers and DHT only")); +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 +#, fuzzy +msgid "Open trackers only" msgstr "usar também rastreadores abertos" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257 -msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file" -msgstr "Se marcado, anunciar os torrentes aos rastreadores abertos, assim como aos rastreadores listados no arquivo torrente" +msgid "or" +msgstr "ou" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1261 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260 +msgid "Specify custom tracker announce URL" +msgstr "Especifique o URL de rastreador personalizado" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263 +msgid "Create torrent" +msgstr "Criar torrente" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420 +msgid "Configuration" +msgstr "Preferências" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1285 +msgid "Data directory" +msgstr "Pasta de dados" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287 +msgid "Edit i2psnark.config and restart to change" +msgstr "Para mudar, modifique o arquivo i2psnark.config e re-inície!" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +msgid "Auto start" +msgstr "Iniciar automáticamente" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295 +msgid "If checked, automatically start torrents that are added" +msgstr "se marcado, os torrentes adicionados se iniciarão automaticamente" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1299 +msgid "Theme" +msgstr "Tema" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312 +msgid "Startup delay" +msgstr "Demora do arranque" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314 +msgid "minutes" +msgstr "minutos" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1338 +msgid "Total uploader limit" +msgstr "Limite global de subidores" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 +msgid "peers" +msgstr "parceiros" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1345 +msgid "Up bandwidth limit" +msgstr "Limite de largura de banda para a subida" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348 +msgid "Half available bandwidth recommended." +msgstr "Se recomenda a metade da largura de banda disponível." + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 +msgid "View or change router bandwidth" +msgstr "mostrar e mudar as preferências da largura de banda do roteador" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354 +msgid "Use open trackers also" +msgstr "usar também rastreadores abertos" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 +msgid "" +"If checked, announce torrents to open trackers as well as the tracker listed " +"in the torrent file" +msgstr "" +"Se marcado, anunciar os torrentes aos rastreadores abertos, assim como aos " +"rastreadores listados no arquivo torrente" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362 msgid "Open tracker announce URLs" msgstr "URL(s) para anunciar aos rastreadores abertos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1273 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1374 msgid "Inbound Settings" msgstr "Preferências de entrada" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1380 msgid "Outbound Settings" msgstr "Preferências de saida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1286 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 msgid "I2CP host" msgstr "Anfitrião I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1393 msgid "I2CP port" msgstr "Porto I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1303 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1406 msgid "I2CP options" msgstr "Opções I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1308 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411 msgid "Save configuration" msgstr "Guardar configuração" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436 +#, java-format +msgid "Invalid magnet URL {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470 +#, java-format +msgid "Invalid info hash in magnet URL {0}" +msgstr "" + #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1500 #, java-format msgid "1 hop" msgid_plural "{0} hops" msgstr[0] "1 salto" msgstr[1] "{0} saltos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1326 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1501 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" msgstr[0] "1 túnel" msgstr[1] "{0} túneles" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 +#, fuzzy +msgid "Completion" +msgstr "completo" + +#. else unknown +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 msgid "Size" msgstr "Tamanho" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1487 -msgid "Priority" -msgstr "Prioridade" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#, fuzzy +msgid "Files" +msgstr "Arquivo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492 -msgid "Up to higher level directory" -msgstr "Subir uma herarquia" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674 +msgid "Pieces" +msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675 +msgid "Piece size" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697 +msgid "Magnet link" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753 msgid "Directory" msgstr "Pasta" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723 +msgid "Priority" +msgstr "Prioridade" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1728 +msgid "Up to higher level directory" +msgstr "Subir uma herarquia" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 msgid "Torrent not found?" msgstr "Não achei o arquivo torrente?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767 msgid "File not found in torrent?" msgstr "Arquivo não achado no torrente?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1780 msgid "complete" msgstr "completo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781 msgid "bytes remaining" msgstr "Bytes faltando" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806 +msgid "Open" +msgstr "abrir" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1832 msgid "High" msgstr "alta" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1600 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1837 msgid "Normal" msgstr "normal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1605 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1842 msgid "Skip" msgstr "Ignorar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1851 msgid "Save priorities" msgstr "Guardar prioridades" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967 #, java-format msgid "Torrent fetched from {0}" msgstr "torrente obtido de {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1746 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1989 #, java-format msgid "Torrent already running: {0}" msgstr "torrente já em marcha: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1748 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1991 #, java-format msgid "Torrent already in the queue: {0}" msgstr "torrente já na cola: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1755 -#, java-format -msgid "Failed to copy torrent file to {0}" -msgstr "Não se pode copiar o torrente para {0}." - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1997 #, java-format msgid "Torrent at {0} was not valid" msgstr "torrente em {0} não foi válido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1764 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2004 #, java-format msgid "Torrent was not retrieved from {0}" msgstr "Não se pode obter torrente de {0}" +#~ msgid "Torrent file must originate from an I2P-based tracker" +#~ msgstr "O arquivo torrente tem que incluir um rastreador I2P." + #~ msgid " theme locked and loaded." #~ msgstr "tema carregado" + #~ msgid "Hide All Attached Peers [connected/total in swarm]" #~ msgstr "Ocultar todos os pares [conectados/total neste torrente]" + #~ msgid "Show All Attached Peers [connected/total in swarm]" #~ msgstr "Mostrar todos os pares [conectados/total neste torrente]" + #~ msgid "Loaded Torrents" #~ msgstr "torrentes carregados" + #~ msgid "Estimated Download Time" #~ msgstr "tempo restante da descarga" + #~ msgid "1" #~ msgid_plural "{0}" #~ msgstr[0] "1" #~ msgstr[1] "{0}" + #~ msgid "Torrent file {0} does not exist" #~ msgstr "Arquivo do torrente {0} não existe" + #~ msgid "Copying torrent to {0}" #~ msgstr "Copiando torrente para {0}" + #~ msgid "from {0}" #~ msgstr "de {0}" + #~ msgid "Downloading" #~ msgstr "descarregando" -#~ msgid "File" -#~ msgstr "Arquivo" + #~ msgid "FileSize" #~ msgstr "Tamanho do arquivo" + #~ msgid "Download Status" #~ msgstr "Estado" #, fuzzy #~ msgid "size: {0}B" #~ msgstr "Tamaño: {0}Bytes" + #~ msgid "Directory to store torrents and data" #~ msgstr "Carpeta para guardar os arquivos torrentes e os dados" + #~ msgid "Do not download" #~ msgstr "No descargues" + #~ msgid "Details" #~ msgstr "Detalles" + #~ msgid "Cannot change the I2CP settings while torrents are active" #~ msgstr "" #~ "No se puede cammbiar los ajustes I2CP mientras estén activos los torrents" + #~ msgid "Non-i2p tracker in \"{0}\", deleting it from our list of trackers!" #~ msgstr "" #~ "Rastreador fuera de I2P en \"{0}\", borrando de la lista de rastreadores" + #~ msgid "{0} torrents" #~ msgstr "{0} torrentes" + #~ msgid "Uninteresting" #~ msgstr "no interesante" + #~ msgid "Choked" #~ msgstr "frenado" + #~ msgid "Uninterested" #~ msgstr "desinteresado" + #~ msgid "Choking" #~ msgstr "frenando" + #~ msgid "Custom tracker URL" #~ msgstr "URL especial del rastreador" + #~ msgid "Configure" #~ msgstr "Ajustes" - diff --git a/apps/i2psnark/locale/messages_ru.po b/apps/i2psnark/locale/messages_ru.po index f1e0f7be2..582446cde 100644 --- a/apps/i2psnark/locale/messages_ru.po +++ b/apps/i2psnark/locale/messages_ru.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-15 17:24+0000\n" +"POT-Creation-Date: 2011-03-03 18:28+0000\n" "PO-Revision-Date: 2011-02-15 22:27+0500\n" "Last-Translator: Hidden Z \n" "Language-Team: foo \n" @@ -17,7 +17,8 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Russian\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" #: ../java/src/org/klomp/snark/SnarkManager.java:307 #, java-format @@ -46,7 +47,9 @@ msgstr "Задержка запуска изменена на {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:386 msgid "I2CP and tunnel changes will take effect after stopping all torrents" -msgstr "Изменения настроек I2CP и туннелей вступят в силу после остановки всех торрентов." +msgstr "" +"Изменения настроек I2CP и туннелей вступят в силу после остановки всех " +"торрентов." #: ../java/src/org/klomp/snark/SnarkManager.java:393 msgid "Disconnecting old I2CP destination" @@ -58,8 +61,11 @@ msgid "I2CP settings changed to {0}" msgstr "Новые параметры I2CP: {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:402 -msgid "Unable to connect with the new settings, reverting to the old I2CP settings" -msgstr "Не удалось соединиться с использованием новых настроек I2CP, возвращаемся к старым настройкам" +msgid "" +"Unable to connect with the new settings, reverting to the old I2CP settings" +msgstr "" +"Не удалось соединиться с использованием новых настроек I2CP, возвращаемся к " +"старым настройкам" #: ../java/src/org/klomp/snark/SnarkManager.java:406 msgid "Unable to reconnect with the old settings!" @@ -84,20 +90,27 @@ msgstr "Автостарт выключен" #: ../java/src/org/klomp/snark/SnarkManager.java:437 msgid "Enabled open trackers - torrent restart required to take effect." -msgstr "Включено использование открытых трекеров. Требуется перезапуск торрента, чтобы изменения вступили в силу." +msgstr "" +"Включено использование открытых трекеров. Требуется перезапуск торрента, " +"чтобы изменения вступили в силу." #: ../java/src/org/klomp/snark/SnarkManager.java:439 msgid "Disabled open trackers - torrent restart required to take effect." -msgstr "Отключено использование открытых трекеров. Требуется перезапуск торрента, чтобы изменения вступили в силу." +msgstr "" +"Отключено использование открытых трекеров. Требуется перезапуск торрента, " +"чтобы изменения вступили в силу." #: ../java/src/org/klomp/snark/SnarkManager.java:447 msgid "Open Tracker list changed - torrent restart required to take effect." -msgstr "Изменен список открытых трекеров. Требуется перезапуск торрента, чтобы изменения вступили в силу." +msgstr "" +"Изменен список открытых трекеров. Требуется перезапуск торрента, чтобы " +"изменения вступили в силу." #: ../java/src/org/klomp/snark/SnarkManager.java:454 #, java-format msgid "{0} theme loaded, return to main i2psnark page to view." -msgstr "{0} тема загружена, вернитесь на основную страницу i2psnark для просмотра." +msgstr "" +"{0} тема загружена, вернитесь на основную страницу i2psnark для просмотра." #: ../java/src/org/klomp/snark/SnarkManager.java:461 msgid "Configuration unchanged." @@ -131,7 +144,7 @@ msgstr "Не удалось открыть \"{0}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:586 #: ../java/src/org/klomp/snark/SnarkManager.java:661 #: ../java/src/org/klomp/snark/SnarkManager.java:716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "Торрент с таким info hash уже запущен: {0}" @@ -139,14 +152,22 @@ msgstr "Торрент с таким info hash уже запущен: {0}" #. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); #: ../java/src/org/klomp/snark/SnarkManager.java:593 #, java-format -msgid "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers only." -msgstr "Внимание - в \"{0}\" не найдено I2P трекеров, анонсирование будет производиться только на открытых трекерах I2P." +msgid "" +"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers " +"only." +msgstr "" +"Внимание - в \"{0}\" не найдено I2P трекеров, анонсирование будет " +"производиться только на открытых трекерах I2P." #. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); #: ../java/src/org/klomp/snark/SnarkManager.java:598 #, java-format -msgid "Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is enabled before starting this torrent." -msgstr "Внимание - в \"{0}\" не найдено I2P трекеров. Перед запуском торрента убедитесь, что использование открытых трекеров включено." +msgid "" +"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is " +"enabled before starting this torrent." +msgstr "" +"Внимание - в \"{0}\" не найдено I2P трекеров. Перед запуском торрента " +"убедитесь, что использование открытых трекеров включено." #: ../java/src/org/klomp/snark/SnarkManager.java:619 #, java-format @@ -154,7 +175,7 @@ msgid "Torrent in \"{0}\" is invalid" msgstr "Торрент в \"{0}\" некорректен" #: ../java/src/org/klomp/snark/SnarkManager.java:624 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1994 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "ОШИБКА - нехватка памяти, невозможно создать торрент из {0}" @@ -170,15 +191,19 @@ msgid "Torrent added: \"{0}\"" msgstr "Торрент добавлен: \"{0}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:672 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:489 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490 #, java-format msgid "Fetching {0}" msgstr "Получение торрента: {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:675 #, java-format -msgid "We have no saved peers and no other torrents are running. Fetch of {0} will not succeed until you start another torrent." -msgstr "Мы не имеем сохранённых пиров и нет других запущенных торрентов. Загрузка {0} не будет успешна пока вы не запустите другой торрент." +msgid "" +"We have no saved peers and no other torrents are running. Fetch of {0} will " +"not succeed until you start another torrent." +msgstr "" +"Мы не имеем сохранённых пиров и нет других запущенных торрентов. Загрузка " +"{0} не будет успешна пока вы не запустите другой торрент." #: ../java/src/org/klomp/snark/SnarkManager.java:679 #, java-format @@ -200,7 +225,9 @@ msgstr "Слишком много файлов в торренте \"{0}\" ({1}) #: ../java/src/org/klomp/snark/SnarkManager.java:974 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" -msgstr "Торрент \"{0}\" содержит единственный файл заканчивающийся на \".torrent\", удаляем его!" +msgstr "" +"Торрент \"{0}\" содержит единственный файл заканчивающийся на \".torrent\", " +"удаляем его!" #: ../java/src/org/klomp/snark/SnarkManager.java:976 #, java-format @@ -259,7 +286,7 @@ msgid "Metainfo received for {0}" msgstr "Метаданные получены для {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:1171 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525 #, java-format msgid "Starting up torrent {0}" msgstr "Запускаем торрент: {0}" @@ -283,7 +310,7 @@ msgstr "Торренты" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1024 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1028 msgid "I2PSnark" msgstr "I2PSnark" @@ -296,7 +323,7 @@ msgid "Forum" msgstr "Форум" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1715 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 msgid "Status" msgstr "Статус" @@ -311,8 +338,8 @@ msgid "Show Peers" msgstr "показать список пиров" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1639 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1655 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1643 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659 msgid "Torrent" msgstr "Торрент" @@ -359,31 +386,31 @@ msgstr "Скорость" msgid "Up Rate" msgstr "Скорость отдачи" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:364 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Stop all torrents and the I2P tunnel" msgstr "Остановить все торренты и закрыть соединение с I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:367 msgid "Stop All" msgstr "Остановить все" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:375 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376 msgid "Start all torrents and the I2P tunnel" msgstr "Запустить все торренты и открыть соединение с I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:378 msgid "Start All" msgstr "Запустить все" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:396 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397 msgid "No torrents loaded." msgstr "Нет загруженных торрентов." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:401 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402 msgid "Totals" msgstr "Всего" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" @@ -391,7 +418,7 @@ msgstr[0] "{0} торрент" msgstr[1] "{0} торрента" msgstr[2] "{0} торрентов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:406 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" @@ -399,95 +426,101 @@ msgstr[0] "{0} подсоединенный пир" msgstr[1] "{0} подсоединенных пиров" msgstr[2] "{0} подсоединенных пиров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:495 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496 #, java-format msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" -msgstr "Некорректный URL: должен начинаться с \"http://\", \"{0}\", или \"{1}\"" +msgstr "" +"Некорректный URL: должен начинаться с \"http://\", \"{0}\", или \"{1}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:543 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571 #, java-format msgid "Magnet deleted: {0}" msgstr "Magnet удален: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:551 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:576 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 #, java-format msgid "Torrent file deleted: {0}" msgstr "Удален торрент: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 #, java-format msgid "Data file deleted: {0}" msgstr "Файл удален: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:585 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595 #, java-format msgid "Data file could not be deleted: {0}" msgstr "Не удалось удалить файл: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604 #, java-format msgid "Data dir deleted: {0}" msgstr "Директория удалена: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:636 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 msgid "Error creating torrent - you must select a tracker" msgstr "Торрент не создан — вы должны указать трекер" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:652 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653 #, java-format msgid "Torrent created for \"{0}\"" msgstr "Создан торрент для \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:654 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655 #, java-format -msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\"" -msgstr "Многие I2P трекеры требуют зарегистрировать на них торрент перед началом раздачи — пожалуйста проверьте требуется ли это перед запуском \"{0}\"" +msgid "" +"Many I2P trackers require you to register new torrents before seeding - " +"please do so before starting \"{0}\"" +msgstr "" +"Многие I2P трекеры требуют зарегистрировать на них торрент перед началом " +"раздачи — пожалуйста проверьте требуется ли это перед запуском \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:656 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "Ошибка при создании торрента для: \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:659 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:660 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" -msgstr "Невозможно создать торрент для несуществующего файла или директории: {0}" +msgstr "" +"Невозможно создать торрент для несуществующего файла или директории: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663 msgid "Error creating torrent - you must enter a file or directory" msgstr "Торрент не создан — вы должны указать файл или директорию" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "Останавливаем все торренты и закрываем соединение с I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:677 msgid "I2P tunnel closed." msgstr "Соединение с I2P закрыто." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680 msgid "Opening the I2P tunnel and starting all torrents." msgstr "Соединяемся с I2P и запускаем все торренты." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:802 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:807 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:813 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:803 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Tracker Error" msgstr "Ошибка Трекера" # TODO should replace "uploader limit NN peers" with "global number of upload slots: NN" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:805 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:825 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:842 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:846 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:806 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:826 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:847 #, java-format msgid "1 peer" msgid_plural "{0} peers" @@ -495,296 +528,314 @@ msgstr[0] "{0} пир" msgstr[1] "{0} пира" msgstr[2] "{0} пиров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:818 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:824 msgid "Seeding" msgstr "Раздается" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:827 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1661 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:828 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770 msgid "Complete" msgstr "Завершен" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:830 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:835 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 msgid "OK" msgstr "Загружается" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:840 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845 msgid "Stalled" msgstr "Простаивает" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:848 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:851 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:849 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852 msgid "No Peers" msgstr "Нет Пиров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:853 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854 msgid "Stopped" msgstr "Остановлен" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:885 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:886 msgid "Torrent details" msgstr "Подробная информация" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:897 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1156 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160 msgid "Info" msgstr "Информация" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:913 msgid "View files" msgstr "Открыть директорию" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:914 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:915 msgid "Open file" msgstr "Открыть файл" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:957 msgid "Stop the torrent" msgstr "Остановить торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 msgid "Stop" msgstr "Остановить" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 msgid "Start the torrent" msgstr "Запустить торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:971 msgid "Start" msgstr "Запустить" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:979 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "Удалить торрент из списка и с диска" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:984 -#, java-format -msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?" -msgstr "Вы действительно хотите удалить \\''{0}.torrent\\''? (загруженные файлы удаляться НЕ будут)" - #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 +#, java-format +msgid "" +"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded " +"data will not be deleted) ?" +msgstr "" +"Вы действительно хотите удалить \\''{0}.torrent\\''? (загруженные файлы " +"удаляться НЕ будут)" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990 msgid "Remove" msgstr "Удалить" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:997 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001 msgid "Delete the .torrent file and the associated data file(s)" msgstr "Удалить торрент и стереть загруженные файлы" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1002 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006 #, java-format -msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?" -msgstr "Вы действительно хотите удалить торрент \\''{0}\\'' и все загруженные файлы?" +msgid "" +"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " +"data?" +msgstr "" +"Вы действительно хотите удалить торрент \\''{0}\\'' и все загруженные файлы?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1005 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009 msgid "Delete" msgstr "Стереть" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1038 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1042 msgid "Unknown" msgstr "Неизвестный" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1050 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054 msgid "Seed" msgstr "Сид" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Uninteresting (The peer has no pieces we need)" msgstr "Uninteresting (У пира нет нужных нам частей торрента)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1075 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "Choked (Этот пир не позволяет нам запрашивать части торрента)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1095 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1099 msgid "Uninterested (We have no pieces the peer needs)" msgstr "Uninterested (У нас нужных этому пиру частей торрента)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "Choking (Мы не позволяем этому пиру запрашивать у нас части торрента)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159 #, java-format msgid "Details at {0} tracker" msgstr "Детали на трекере {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1184 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1188 msgid "Add Torrent" msgstr "Добавить Торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1186 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190 msgid "From URL" msgstr "Из URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1189 -msgid "Enter the torrent file download URL (I2P only), magnet link, or maggot link" -msgstr "Введите URL (только I2P) для загрузки торрент-файла, magnet-ссылку, или maggot-ссылку" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193 +msgid "" +"Enter the torrent file download URL (I2P only), magnet link, or maggot link" +msgstr "" +"Введите URL (только I2P) для загрузки торрент-файла, magnet-ссылку, или " +"maggot-ссылку" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198 msgid "Add torrent" msgstr "Добавить торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1201 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "Либо вы можете просто скопировать .torrent-файлы в директорию {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1199 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Removing a .torrent will cause it to stop." msgstr "Удаление .torrent-файла приведёт к остановке торрента." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1222 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 msgid "Create Torrent" msgstr "Создать Торрент" #. out.write("From file:
    \n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1225 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229 msgid "Data to seed" msgstr "Файлы для раздачи" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233 msgid "File or directory to seed (must be within the specified path)" -msgstr "Файл или директория для раздачи (вводите только название файла или директории, указание абсолютных путей не поддерживается)" +msgstr "" +"Файл или директория для раздачи (вводите только название файла или " +"директории, указание абсолютных путей не поддерживается)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1680 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1235 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 msgid "Tracker" msgstr "Трекер" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237 msgid "Select a tracker" msgstr "Выбрать трекер" #. out.write(_("Open trackers and DHT only")); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1238 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 msgid "Open trackers only" msgstr "Только открытые трекеры" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257 msgid "or" msgstr "или" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1256 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260 msgid "Specify custom tracker announce URL" msgstr "Задать URL анонсера вручную" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1259 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263 msgid "Create torrent" msgstr "Создать торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1416 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420 msgid "Configuration" msgstr "Настройки" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1285 msgid "Data directory" msgstr "Директория для файлов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283 -msgid "Edit i2psnark.config and restart to change" -msgstr "Для изменения отредактируйте файл i2psnark.config и перезагрузите I2PSnark" - #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287 +msgid "Edit i2psnark.config and restart to change" +msgstr "" +"Для изменения отредактируйте файл i2psnark.config и перезагрузите I2PSnark" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 msgid "Auto start" msgstr "Автозапуск" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295 msgid "If checked, automatically start torrents that are added" msgstr "Автоматически запускать торренты после добавления" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1299 msgid "Theme" msgstr "Тема" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1308 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312 msgid "Startup delay" msgstr "Задержка запуска" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1310 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314 msgid "minutes" msgstr "минут" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1338 msgid "Total uploader limit" msgstr "Ограничение количества слотов отдачи" # TODO should replace "uploader limit NN peers" with "global number of upload slots: NN" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1337 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 msgid "peers" msgstr "пиров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1345 msgid "Up bandwidth limit" msgstr "Ограничение скорости отдачи" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348 msgid "Half available bandwidth recommended." -msgstr "Рекомендуется использовать половину от доступной пропускной способности." +msgstr "" +"Рекомендуется использовать половину от доступной пропускной способности." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 msgid "View or change router bandwidth" msgstr "Посмотреть/настроить ограничения скорости в маршрутизаторе I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354 msgid "Use open trackers also" msgstr "Дополнительно использовать открытые трекеры" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354 -msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file" -msgstr "Анонсировать торренты на открытых трекерах, дополнительно к тем, что указаны внутри торрента" - #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 +msgid "" +"If checked, announce torrents to open trackers as well as the tracker listed " +"in the torrent file" +msgstr "" +"Анонсировать торренты на открытых трекерах, дополнительно к тем, что указаны " +"внутри торрента" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362 msgid "Open tracker announce URLs" msgstr "URL открытых трекеров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1370 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1374 msgid "Inbound Settings" msgstr "Входящие туннели" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1376 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1380 msgid "Outbound Settings" msgstr "Исходящие туннели" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1384 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 msgid "I2CP host" msgstr "Адрес I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1389 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1393 msgid "I2CP port" msgstr "Порт I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1402 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1406 msgid "I2CP options" msgstr "Параметры I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411 msgid "Save configuration" msgstr "Сохранить настройки" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436 #, java-format msgid "Invalid magnet URL {0}" msgstr "Неправильный magnet URL {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1466 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470 #, java-format msgid "Invalid info hash in magnet URL {0}" msgstr "Неправильный info hash в magnet URL {0}" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1496 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1500 #, java-format msgid "1 hop" msgid_plural "{0} hops" @@ -792,7 +843,7 @@ msgstr[0] "{0} хоп" msgstr[1] "{0} хопа" msgstr[2] "{0} хопов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1497 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1501 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" @@ -800,104 +851,104 @@ msgstr[0] "{0} туннель" msgstr[1] "{0} туннеля" msgstr[2] "{0} туннелей" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 msgid "Completion" msgstr "Загружено" #. else unknown -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 msgid "Size" msgstr "Размер" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1668 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 msgid "Files" msgstr "Файлов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1670 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674 msgid "Pieces" msgstr "Части" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675 msgid "Piece size" msgstr "Размер части" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1693 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697 msgid "Magnet link" msgstr "Magnet ссылка" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1710 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753 msgid "Directory" msgstr "Директория" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723 msgid "Priority" msgstr "Приоритет" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1724 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1728 msgid "Up to higher level directory" msgstr "Перейти в директорию уровнем выше" # This debug error message intentionally left in English -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1754 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 msgid "Torrent not found?" msgstr "Torrent not found?" # This debug error message intentionally left in English -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767 msgid "File not found in torrent?" msgstr "File not found in torrent?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1780 msgid "complete" msgstr "скачано" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1777 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781 msgid "bytes remaining" msgstr "байт осталось" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1802 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806 msgid "Open" msgstr "Открыть" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1828 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1832 msgid "High" msgstr "Высокий" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1833 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1837 msgid "Normal" msgstr "Нормальный" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1842 msgid "Skip" msgstr "Пропустить" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1847 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1851 msgid "Save priorities" msgstr "Сохранить приоритеты" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967 #, java-format msgid "Torrent fetched from {0}" msgstr "Получен торрент из: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1984 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1989 #, java-format msgid "Torrent already running: {0}" msgstr "Торрент уже запущен: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1986 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1991 #, java-format msgid "Torrent already in the queue: {0}" msgstr "Торрент уже в очереди: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1992 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1997 #, java-format msgid "Torrent at {0} was not valid" msgstr "Торрент полученный из {0} некорректен" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2004 #, java-format msgid "Torrent was not retrieved from {0}" msgstr "Не удалось получить торрент из: {0}" diff --git a/apps/i2psnark/locale/messages_zh.po b/apps/i2psnark/locale/messages_zh.po index 32147926f..6fb391d1c 100644 --- a/apps/i2psnark/locale/messages_zh.po +++ b/apps/i2psnark/locale/messages_zh.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 07:23+0000\n" +"POT-Creation-Date: 2011-03-03 18:28+0000\n" "PO-Revision-Date: 2011-02-20 15:26+0800\n" "Last-Translator: \n" "Language-Team: foo \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -57,7 +58,8 @@ msgid "I2CP settings changed to {0}" msgstr "I2CP设置改为{0}" #: ../java/src/org/klomp/snark/SnarkManager.java:402 -msgid "Unable to connect with the new settings, reverting to the old I2CP settings" +msgid "" +"Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "无法通过新设置连接,恢复I2CP的旧设置" #: ../java/src/org/klomp/snark/SnarkManager.java:406 @@ -130,7 +132,7 @@ msgstr "无法打开 \"{0}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:586 #: ../java/src/org/klomp/snark/SnarkManager.java:661 #: ../java/src/org/klomp/snark/SnarkManager.java:716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "具有相同Hash链接的种子已在下载中:{0}" @@ -138,14 +140,21 @@ msgstr "具有相同Hash链接的种子已在下载中:{0}" #. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); #: ../java/src/org/klomp/snark/SnarkManager.java:593 #, java-format -msgid "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers only." -msgstr "提示 - “{0}”文件中不包含 I2P Tracker服务器,文件将仅发布至 I2P 的 Open Tracker 。" +msgid "" +"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers " +"only." +msgstr "" +"提示 - “{0}”文件中不包含 I2P Tracker服务器,文件将仅发布至 I2P 的 Open " +"Tracker 。" #. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); #: ../java/src/org/klomp/snark/SnarkManager.java:598 #, java-format -msgid "Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is enabled before starting this torrent." -msgstr "警告 -“{0}”中不包含 I2P Tracker 服务器,下载此种子请先启用 Open Tracker。" +msgid "" +"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is " +"enabled before starting this torrent." +msgstr "" +"警告 -“{0}”中不包含 I2P Tracker 服务器,下载此种子请先启用 Open Tracker。" #: ../java/src/org/klomp/snark/SnarkManager.java:619 #, java-format @@ -153,7 +162,7 @@ msgid "Torrent in \"{0}\" is invalid" msgstr "无效种子 \"{0}\" " #: ../java/src/org/klomp/snark/SnarkManager.java:624 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1994 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "错误: 内存不足,无法为 {0} 创建种子。" @@ -169,15 +178,19 @@ msgid "Torrent added: \"{0}\"" msgstr "已添加种子:\"{0}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:672 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:489 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490 #, java-format msgid "Fetching {0}" msgstr "正在获取{0}" #: ../java/src/org/klomp/snark/SnarkManager.java:675 #, java-format -msgid "We have no saved peers and no other torrents are running. Fetch of {0} will not succeed until you start another torrent." -msgstr "程序还不知道其他客户端的存在,目前也没有其他种子正在运行。在您启动其他种子前文件 {0} 无法成功下载。" +msgid "" +"We have no saved peers and no other torrents are running. Fetch of {0} will " +"not succeed until you start another torrent." +msgstr "" +"程序还不知道其他客户端的存在,目前也没有其他种子正在运行。在您启动其他种子前" +"文件 {0} 无法成功下载。" #: ../java/src/org/klomp/snark/SnarkManager.java:679 #, java-format @@ -258,7 +271,7 @@ msgid "Metainfo received for {0}" msgstr "已获得 {0} 的 Metainfo" #: ../java/src/org/klomp/snark/SnarkManager.java:1171 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525 #, java-format msgid "Starting up torrent {0}" msgstr "正在启动种子{0}" @@ -282,7 +295,7 @@ msgstr "种子" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1024 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1028 msgid "I2PSnark" msgstr "I2PSnark" @@ -295,7 +308,7 @@ msgid "Forum" msgstr "论坛" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1715 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 msgid "Status" msgstr "状态" @@ -310,8 +323,8 @@ msgid "Show Peers" msgstr "显示用户" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1639 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1655 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1643 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659 msgid "Torrent" msgstr "种子" @@ -358,682 +371,725 @@ msgstr "速度" msgid "Up Rate" msgstr "上传速度" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:364 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Stop all torrents and the I2P tunnel" msgstr "停止全部种子及I2P隧道" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:367 msgid "Stop All" msgstr "停止全部" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:375 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376 msgid "Start all torrents and the I2P tunnel" msgstr "启动全部种子及I2P隧道" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:378 msgid "Start All" msgstr "启动全部" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:396 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397 msgid "No torrents loaded." msgstr "未载入任何种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:401 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402 msgid "Totals" msgstr "总计" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" msgstr[0] "{0}个种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:406 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" msgstr[0] "{0}个已连接用户" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:495 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496 #, java-format msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" msgstr "无效链接 - 链接必须以“http://”,“{0}”或“{1}”开头" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:543 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571 #, java-format msgid "Magnet deleted: {0}" msgstr "Magnet 已删除:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:551 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:576 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 #, java-format msgid "Torrent file deleted: {0}" msgstr "种子文件已删除:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 #, java-format msgid "Data file deleted: {0}" msgstr "数据文件已删除:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:585 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595 #, java-format msgid "Data file could not be deleted: {0}" msgstr "无法删除数据文件:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604 #, java-format msgid "Data dir deleted: {0}" msgstr "数据文件夹已删除:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:636 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 msgid "Error creating torrent - you must select a tracker" msgstr "创建种子时发生错误 - 您必须选择一个Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:652 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653 #, java-format msgid "Torrent created for \"{0}\"" msgstr "种子创建成功\"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:654 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655 #, java-format -msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\"" -msgstr "多数I2PTracker需要用户在做种前注册新种子 - 请在启动 \"{0}\"前到所使用的Tracker进行注册。" +msgid "" +"Many I2P trackers require you to register new torrents before seeding - " +"please do so before starting \"{0}\"" +msgstr "" +"多数I2PTracker需要用户在做种前注册新种子 - 请在启动 \"{0}\"前到所使用的" +"Tracker进行注册。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:656 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "创建种子时发生错误 \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:659 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:660 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "无法为不存在的数据文件创建种子:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663 msgid "Error creating torrent - you must enter a file or directory" msgstr "创建种子时发生错误 - 必须指定文件或文件夹" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "正在停用所有种子并关闭I2P隧道。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:677 msgid "I2P tunnel closed." msgstr "I2P隧道已关闭" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680 msgid "Opening the I2P tunnel and starting all torrents." msgstr "正在打开I2P隧道并启动所有种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:802 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:807 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:813 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:803 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Tracker Error" msgstr "Tracker错误" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:805 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:825 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:842 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:846 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:806 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:826 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:847 #, java-format msgid "1 peer" msgid_plural "{0} peers" msgstr[0] "{0}个用户" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:818 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:824 msgid "Seeding" msgstr "正做种" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:827 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1661 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:828 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770 msgid "Complete" msgstr "完成" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:830 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:835 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 msgid "OK" msgstr "确定" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:840 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845 msgid "Stalled" msgstr "等待" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:848 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:851 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:849 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852 msgid "No Peers" msgstr "没有用户" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:853 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854 msgid "Stopped" msgstr "已停用" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:885 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:886 msgid "Torrent details" msgstr "种子详情" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:897 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1156 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160 msgid "Info" msgstr "信息" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:913 msgid "View files" msgstr "浏览文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:914 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:915 msgid "Open file" msgstr "打开文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:957 msgid "Stop the torrent" msgstr "停止种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 msgid "Stop" msgstr "停止" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 msgid "Start the torrent" msgstr "启动种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:971 msgid "Start" msgstr "启动" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:979 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "取消下载任务并删除对应种子文件。" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:984 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 #, java-format -msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?" +msgid "" +"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded " +"data will not be deleted) ?" msgstr "您确定要删除文件“{0}.torrent”(下载的数据文件不会被删除)?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990 msgid "Remove" msgstr "移除" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:997 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001 msgid "Delete the .torrent file and the associated data file(s)" msgstr "删除种子及所下载的文件" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1002 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006 #, java-format -msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?" +msgid "" +"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " +"data?" msgstr "您确定要删除种子“{0}”(下载的数据文件会一并被删除)?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1005 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009 msgid "Delete" msgstr "删除" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1038 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1042 msgid "Unknown" msgstr "未知" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1050 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054 msgid "Seed" msgstr "种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Uninteresting (The peer has no pieces we need)" msgstr "无需要部分" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1075 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "拒绝请求" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1095 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1099 msgid "Uninterested (We have no pieces the peer needs)" msgstr "无需要部分" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "拒绝请求" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159 #, java-format msgid "Details at {0} tracker" msgstr "Tracker {0} 上的详细信息" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1184 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1188 msgid "Add Torrent" msgstr "添加种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1186 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190 msgid "From URL" msgstr "从URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1189 -msgid "Enter the torrent file download URL (I2P only), magnet link, or maggot link" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193 +msgid "" +"Enter the torrent file download URL (I2P only), magnet link, or maggot link" msgstr "请输入输入 torrent 文件下载链接(仅限.i2p)、magnet 链接或 maggot 链接" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198 msgid "Add torrent" msgstr "添加种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1201 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "您也可以将.torrent文件复制到: {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1199 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Removing a .torrent will cause it to stop." msgstr "删除种子文件将导致该下载任务中止。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1222 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 msgid "Create Torrent" msgstr "创建种子" #. out.write("From file:
    \n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1225 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229 msgid "Data to seed" msgstr "做种数据" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233 msgid "File or directory to seed (must be within the specified path)" msgstr "做种文件或文件夹(必须下面为Snark指定的文件夹中)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1680 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1235 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 msgid "Tracker" msgstr "Tracker服务器" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237 msgid "Select a tracker" msgstr "选择一个Tracker" #. out.write(_("Open trackers and DHT only")); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1238 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 msgid "Open trackers only" msgstr "仅通过 Open Tracker发布链接" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257 msgid "or" msgstr "或" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1256 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260 msgid "Specify custom tracker announce URL" msgstr "指定Open Tracker发布链接" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1259 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263 msgid "Create torrent" msgstr "创建种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1416 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420 msgid "Configuration" msgstr "设置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1285 msgid "Data directory" msgstr "数据文件夹" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287 msgid "Edit i2psnark.config and restart to change" msgstr "编辑 i2psnark.config 并重启Snark后生效" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 msgid "Auto start" msgstr "自动启动" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295 msgid "If checked, automatically start torrents that are added" msgstr "选中后Snark将自动启动已添加的所有种子。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1299 msgid "Theme" msgstr "主题" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1308 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312 msgid "Startup delay" msgstr "启动延迟" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1310 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314 msgid "minutes" msgstr "分" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1338 msgid "Total uploader limit" msgstr "限制总上传种子数为" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1337 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 msgid "peers" msgstr "用户" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1345 msgid "Up bandwidth limit" msgstr "上传带宽限制" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348 msgid "Half available bandwidth recommended." msgstr "推荐设置为可用带宽的一半。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 msgid "View or change router bandwidth" msgstr "浏览或修改路由器带宽" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354 msgid "Use open trackers also" msgstr "同时使用OpenTracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354 -msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 +msgid "" +"If checked, announce torrents to open trackers as well as the tracker listed " +"in the torrent file" msgstr "选择后在OpenTracker及种子文件中的Tracker上同时发布。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362 msgid "Open tracker announce URLs" msgstr "Open Tracker发布链接" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1370 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1374 msgid "Inbound Settings" msgstr "入站设置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1376 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1380 msgid "Outbound Settings" msgstr "出站设置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1384 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 msgid "I2CP host" msgstr "I2CP主机" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1389 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1393 msgid "I2CP port" msgstr "I2CP端口" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1402 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1406 msgid "I2CP options" msgstr "I2CP选项" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411 msgid "Save configuration" msgstr "保存设置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436 #, java-format msgid "Invalid magnet URL {0}" msgstr "磁性链接 {0} 无效" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1466 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470 #, java-format msgid "Invalid info hash in magnet URL {0}" msgstr "magnet磁性链接“{0}”中的hash信息有误。" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1496 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1500 #, java-format msgid "1 hop" msgid_plural "{0} hops" msgstr[0] "{0}跳" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1497 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1501 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" msgstr[0] "{0}隧道" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 msgid "Completion" msgstr "完成" #. else unknown -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 msgid "Size" msgstr "大小" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1668 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 msgid "Files" msgstr "文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1670 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674 msgid "Pieces" msgstr "分块数量" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675 msgid "Piece size" msgstr "分块大小" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1693 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697 msgid "Magnet link" msgstr "Magnet磁性链接" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1710 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753 msgid "Directory" msgstr "文件夹" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723 msgid "Priority" msgstr "优先级" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1724 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1728 msgid "Up to higher level directory" msgstr "上一层文件夹" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1754 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 msgid "Torrent not found?" msgstr "种子未找到" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767 msgid "File not found in torrent?" msgstr "种子中没有发现文件?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1780 msgid "complete" msgstr "完成" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1777 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781 msgid "bytes remaining" msgstr "剩余字节数" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1802 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806 msgid "Open" msgstr "打开" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1828 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1832 msgid "High" msgstr "高" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1833 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1837 msgid "Normal" msgstr "普通" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1842 msgid "Skip" msgstr "跳过" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1847 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1851 msgid "Save priorities" msgstr "保存优先级" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967 #, java-format msgid "Torrent fetched from {0}" msgstr "从{0}获取种子成功" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1984 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1989 #, java-format msgid "Torrent already running: {0}" msgstr "种子已启动:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1986 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1991 #, java-format msgid "Torrent already in the queue: {0}" msgstr "种子排队中:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1992 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1997 #, java-format msgid "Torrent at {0} was not valid" msgstr "{0}的种子中有错误" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2004 #, java-format msgid "Torrent was not retrieved from {0}" msgstr "从{0}获得种子失败" #~ msgid "Torrent file must originate from an I2P-based tracker" #~ msgstr "种子文件必须来在I2P内网中的Tracker服务器。" + #~ msgid "size: {0}B" #~ msgstr "大小:{0}B" + #~ msgid "" #~ "Status" #~ msgstr "" #~ "状态" + #~ msgid "" #~ "\"Hide" #~ msgstr "" #~ "\"隐藏节点\"" + #~ msgid "" #~ "\"Show" #~ msgstr "" #~ "\"显示节点\"" + #~ msgid "" #~ "Torrent" #~ msgstr "" #~ "种子" + #~ msgid "" #~ "ETA" #~ msgstr "" #~ "预计剩余时间" + #~ msgid "" #~ "RX" #~ msgstr "" #~ "下载" + #~ msgid "" #~ "TX" #~ msgstr "" #~ "上传" + #~ msgid "" #~ "Rate" #~ msgstr "" #~ "下载速度" + #~ msgid "" #~ "Rate" #~ msgstr "" #~ "上传速度" + #~ msgid "" #~ "\"Stop" #~ msgstr "" #~ "" + #~ msgid "" #~ "\"Start" #~ msgstr "" #~ "\"全部开始\"" + #~ msgid "Torrent file {0} does not exist" #~ msgstr "种子文件{0}不存在" + #~ msgid "Copying torrent to {0}" #~ msgstr "正在复制种子到{0}" + #~ msgid "from {0}" #~ msgstr "来源{0}" + #~ msgid "" #~ "" #~ msgstr "" #~ "
 #~ " + #~ msgid "" #~ "\"Start\"" #~ msgstr "" #~ "" + #~ msgid "" #~ "\"Remove\"" #~ msgstr "" #~ "" + #~ msgid "" #~ "\"Delete\"" #~ msgstr "" #~ "\"删除种子" + #~ msgid "" #~ "Add Torrent" #~ msgstr "" #~ "添加种子" + #~ msgid "" #~ "Create " #~ "Torrent" #~ msgstr "" #~ "创建种子" + #~ msgid "or " #~ msgstr "或 " + #~ msgid "" #~ "Configuration" #~ msgstr "" #~ "设置" + #~ msgid "Directory to store torrents and data" #~ msgstr "种子及被做种文件的保存位置。" + #~ msgid "" #~ "\"File\" " #~ msgstr "" #~ "\"文件\" " + #~ msgid "" #~ "\"FileSize\"Size" #~ msgstr "" #~ "\"文件大小\"大小" + #~ msgid "" #~ "Status" #~ msgstr "" #~ "状态" + #~ msgid "Details" #~ msgstr "详情" + #~ msgid "Cannot change the I2CP settings while torrents are active" #~ msgstr "正在下载/上传,无法更改I2CP设置" + #~ msgid "{0} torrents" #~ msgstr "{0} 个种子" + #~ msgid "Non-i2p tracker in \"{0}\", deleting it from our list of trackers!" #~ msgstr "" #~ "【匿名性警告】\"{0}\" 中含有非I2P Tracker,程序将从Tracker列表中将其删除。" + #~ msgid "Custom tracker URL" #~ msgstr "自定义TrackerURL" + #~ msgid "Configure" #~ msgstr "设置" - diff --git a/apps/i2ptunnel/locale/messages_ar.po b/apps/i2ptunnel/locale/messages_ar.po index f5b42006d..b67ac63e2 100644 --- a/apps/i2ptunnel/locale/messages_ar.po +++ b/apps/i2ptunnel/locale/messages_ar.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2ptunnel\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-13 19:26+0000\n" -"PO-Revision-Date: 2011-02-27 18:41-0000\n" +"POT-Creation-Date: 2011-03-03 18:29+0000\n" +"PO-Revision-Date: 2011-03-03 17:02-0000\n" "Last-Translator: hamada \n" "Language-Team: duck \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -19,25 +20,31 @@ msgstr "" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474 #, java-format -msgid "To visit the destination in your host database, click here. To visit the conflicting addresshelper destination, click here." +msgid "" +"To visit the destination in your host database, click here. To visit the conflicting addresshelper destination, click here." msgstr "" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931 -msgid "Click a link below to look for an address helper by using a \"jump\" service:" +msgid "" +"Click a link below to look for an address helper by using a \"jump\" service:" msgstr "" #: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326 #: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336 msgid "internal" -msgstr "" +msgstr "داخلي" #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:171 -msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit." +msgid "" +"Invalid form submission, probably because you used the 'back' or 'reload' " +"button on your browser. Please resubmit." msgstr "" #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218 msgid "Configuration reloaded for all tunnels" -msgstr "" +msgstr "تم اعادة تحميل تغيرات الاعدادات" #. and give them something to look at in any case #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:230 @@ -51,7 +58,7 @@ msgstr "توقيف النفق" #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:311 msgid "Configuration changes saved" -msgstr "" +msgstr "تم حفظ تغيرات الاعدادات" #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314 msgid "Failed to save configuration" @@ -71,11 +78,11 @@ msgstr "HTTP client" #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420 msgid "IRC client" -msgstr "" +msgstr "IRC برنامج" #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:421 msgid "Standard server" -msgstr "" +msgstr "خادم عادي" #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:422 msgid "HTTP server" @@ -91,7 +98,7 @@ msgstr "SOCKS IRC بروكسي دردشة" #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:425 msgid "CONNECT/SSL/HTTPS proxy" -msgstr "" +msgstr "اتصال/SSL/HTTPS بروكسي" #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:426 msgid "IRC server" @@ -121,15 +128,15 @@ msgstr "منفذ غير محدد" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:73 msgid "I2P Tunnel Manager - Edit Client Tunnel" -msgstr "" +msgstr "I2P لوحة تحكم الأنفاق- حرر اعدادات النفق" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:93 msgid "Edit proxy settings" -msgstr "" +msgstr "حرر اعدادات بروكسي" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:101 msgid "New proxy settings" -msgstr "" +msgstr "اعدادات بروكسي جديدة" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:112 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:112 @@ -157,13 +164,13 @@ msgstr "وصف" #: ../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 "" +msgstr "الهدف" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:130 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:132 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:162 msgid "Access Point" -msgstr "" +msgstr "نفطة الوصول" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:137 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:150 @@ -172,16 +179,16 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:167 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:213 msgid "required" -msgstr "" +msgstr "مطلوب" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:159 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:178 msgid "Reachable by" -msgstr "" +msgstr "متصل ب" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:180 msgid "Outproxies" -msgstr "" +msgstr "بروكسي خارجي" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:187 msgid "Tunnel Destination" @@ -189,24 +196,28 @@ msgstr "وجهة النفق" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:199 msgid "name or destination" -msgstr "" +msgstr "اسم او اتجاه" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202 msgid "b32 not recommended" -msgstr "" +msgstr "b32 غير منصوح باستعماله" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208 msgid "Shared Client" -msgstr "" +msgstr "المستخدمين المشاركين" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:212 -msgid "(Share tunnels with other clients and irc/httpclients? Change requires restart of client proxy)" +msgid "" +"(Share tunnels with other clients and irc/httpclients? Change requires " +"restart of client proxy)" msgstr "" +"(شارك النفق مع باقي المستخدمين و irc/httpclients؟ التغيير بحاجة الى اعادة " +"التشغيل)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:216 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:124 msgid "Auto Start" -msgstr "" +msgstr "بدأ تلقائي" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:128 @@ -219,8 +230,11 @@ msgid "Advanced networking options" msgstr "اعدادات متقدمة للشبكة" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224 -msgid "(NOTE: when this client proxy is configured to share tunnels, then these options are for all the shared proxy clients!)" +msgid "" +"(NOTE: when this client proxy is configured to share tunnels, then these " +"options are for all the shared proxy clients!)" msgstr "" +"(ملحوظة: عندما يشارك البروكسي الأنفاق، تطبق هذه الخيارات على جميع المشاركين)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:226 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245 @@ -269,12 +283,14 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:272 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:291 -msgid "+ 0-1 hop variance (medium additive randomisation, subtractive performance)" +msgid "" +"+ 0-1 hop variance (medium additive randomisation, subtractive performance)" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295 -msgid "+ 0-2 hop variance (high additive randomisation, subtractive performance)" +msgid "" +"+ 0-2 hop variance (high additive randomisation, subtractive performance)" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280 @@ -304,12 +320,15 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:312 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:331 -msgid "2 inbound, 2 outbound tunnels (standard bandwidth usage, standard reliability)" +msgid "" +"2 inbound, 2 outbound tunnels (standard bandwidth usage, standard " +"reliability)" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335 -msgid "3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)" +msgid "" +"3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325 @@ -334,7 +353,8 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:345 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364 -msgid "2 backup tunnels each direction (medium redundancy, medium resource usage)" +msgid "" +"2 backup tunnels each direction (medium redundancy, medium resource usage)" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:349 @@ -350,7 +370,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:365 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:384 msgid "Profile" -msgstr "" +msgstr "بروفايل" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:372 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:391 @@ -364,7 +384,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:378 msgid "Delay Connect" -msgstr "" +msgstr "تأخر الاتصال" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:382 msgid "for request/response connections" @@ -373,7 +393,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399 msgid "Router I2CP Address" -msgstr "" +msgstr " I2CP عنوان" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142 @@ -392,7 +412,7 @@ msgstr "منفذ" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:406 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479 msgid "Reduce tunnel quantity when idle" -msgstr "" +msgstr "قلل قدر الأنفاق عند الانتظار" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:408 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:422 @@ -404,26 +424,26 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:419 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481 msgid "Enable" -msgstr "" +msgstr "فعا" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:412 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:485 msgid "Reduced tunnel count" -msgstr "" +msgstr "خفض عدد الأنفاق" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:416 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:436 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:489 msgid "Idle minutes" -msgstr "" +msgstr "دقائق الانتظار" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420 msgid "Close tunnels when idle" -msgstr "" +msgstr "قفل النفق عند الانتظار" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:426 msgid "New Keys on Reopen" -msgstr "" +msgstr "مفتاح جديد عند الفتح" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435 @@ -432,11 +452,11 @@ msgstr "ألغي" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440 msgid "Delay tunnel open until required" -msgstr "" +msgstr "عطل النفق حتى الحاجة اليه" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:450 msgid "Persistent private key" -msgstr "" +msgstr "مفتاح خاص" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:456 msgid "File" @@ -445,11 +465,11 @@ msgstr "ملف" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:460 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:220 msgid "Local destination" -msgstr "" +msgstr "وجهة محلية" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464 msgid "(if known)" -msgstr "" +msgstr "(اذا كان معروف)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:470 msgid "Local Authorization" @@ -467,7 +487,7 @@ msgstr "كلمة السر" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484 msgid "Outproxy Authorization" -msgstr "" +msgstr "اعدادات البروكسي الخارجي" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502 msgid "Jump URL List" @@ -476,12 +496,14 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:508 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525 msgid "Custom options" -msgstr "" +msgstr "خيارات خاصة" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:512 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:529 -msgid "NOTE: If tunnel is currently running, most changes will not take effect until tunnel is stopped and restarted." -msgstr "" +msgid "" +"NOTE: If tunnel is currently running, most changes will not take effect " +"until tunnel is stopped and restarted." +msgstr "ملحوظة: اذا كان النفق مفعل، غالبية التغييرات تحتاج اعادة تشغيل النفق" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:514 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531 @@ -516,7 +538,7 @@ msgstr "اسم موقع جديد" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:203 msgid "(leave blank for outproxies)" -msgstr "" +msgstr "(دعه فارغا من أجل البروكسي الخارجي)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:208 msgid "Private key file" @@ -569,7 +591,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451 msgid "Inbound connection limits (0=unlimited)" -msgstr "" +msgstr "حد الاتصال الداخلي (0=unlimited)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453 msgid "Per client" @@ -601,7 +623,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495 msgid "None" -msgstr "" +msgstr "لاشئ" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499 msgid "Hashcash (effort)" @@ -613,7 +635,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507 msgid "Estimate" -msgstr "" +msgstr "تقدير" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509 msgid "Hidden" @@ -621,7 +643,7 @@ msgstr "مخبئ" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513 msgid "Signed (signed by)" -msgstr "" +msgstr "امضاء من" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519 msgid "Modify Certificate" @@ -661,12 +683,12 @@ msgstr "أعد تحميل الاعدادات" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:105 msgid "I2P Server Tunnels" -msgstr "" +msgstr "نفق الخادم I2P " #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:109 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:130 msgid "Points at" -msgstr "" +msgstr "متجه الى" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:111 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:153 @@ -679,11 +701,11 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:250 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:297 msgid "Status" -msgstr "" +msgstr "الحالة" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:163 msgid "Base32 Address" -msgstr "" +msgstr "Base32 عنوان" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:171 msgid "No Preview" @@ -719,12 +741,12 @@ msgstr "أبدأ" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:234 msgid "New server tunnel" -msgstr "" +msgstr "نفق جديد للخادم" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:236 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:396 msgid "Standard" -msgstr "" +msgstr "عادي" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:238 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:398 @@ -733,7 +755,7 @@ msgstr "أنشئ" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:240 msgid "I2P Client Tunnels" -msgstr "" +msgstr "نفق المستخدمين" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:248 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:283 @@ -742,11 +764,11 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:318 msgid "Standby" -msgstr "" +msgstr "انتظر" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:363 msgid "Outproxy" -msgstr "" +msgstr "بروكسي خارجي" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:367 msgid "Destination" @@ -754,9 +776,8 @@ msgstr "اتجاه" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:381 msgid "none" -msgstr "" +msgstr "ﻻشيء" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394 msgid "New client tunnel" msgstr "نفق مستخدم جديد" - diff --git a/apps/i2ptunnel/locale/messages_en.po b/apps/i2ptunnel/locale/messages_en.po index bfbc08888..8cfb64f10 100644 --- a/apps/i2ptunnel/locale/messages_en.po +++ b/apps/i2ptunnel/locale/messages_en.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2ptunnel\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-13 19:26+0000\n" +"POT-Creation-Date: 2011-03-03 18:29+0000\n" "PO-Revision-Date: 2010-06-15 14:09+0100\n" "Last-Translator: duck \n" "Language-Team: duck \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -21,8 +22,8 @@ msgstr "" #, java-format msgid "" "To visit the destination in your host database, click here. To visit the conflicting addresshelper destination, click here." +"a>. To visit the conflicting addresshelper destination, click here." msgstr "" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931 diff --git a/apps/i2ptunnel/locale/messages_nl.po b/apps/i2ptunnel/locale/messages_nl.po index 04c5ce5c9..e54963955 100644 --- a/apps/i2ptunnel/locale/messages_nl.po +++ b/apps/i2ptunnel/locale/messages_nl.po @@ -8,26 +8,26 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 12:18+0000\n" +"POT-Creation-Date: 2011-03-03 18:29+0000\n" "PO-Revision-Date: 2011-02-20 12:14+0000\n" "Last-Translator: ducki2p \n" "Language-Team: Dutch <>\n" +"Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474 #, java-format msgid "" "To visit the destination in your host database, click here. To visit the conflicting addresshelper destination, click here." +"a>. To visit the conflicting addresshelper destination, click here." msgstr "" -"Om de destination in je host database te bezoeken, klik hier. Om de conflicterende adreshelper destination te bezoeken, klik " -"hier." +"Om de destination in je host database te bezoeken, klik hier. Om de conflicterende adreshelper destination te bezoeken, " +"klik hier." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931 msgid "" diff --git a/apps/i2ptunnel/locale/messages_zh.po b/apps/i2ptunnel/locale/messages_zh.po index 72508653a..e08390836 100644 --- a/apps/i2ptunnel/locale/messages_zh.po +++ b/apps/i2ptunnel/locale/messages_zh.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2ptunnel\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-12 12:06+0000\n" +"POT-Creation-Date: 2011-03-03 18:29+0000\n" "PO-Revision-Date: 2011-02-12 20:07+0800\n" "Last-Translator: \n" "Language-Team: foo \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -19,12 +20,21 @@ msgstr "" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474 #, java-format -msgid "To visit the destination in your host database, click here. To visit the conflicting addresshelper destination, click here." -msgstr "域名冲突:要访问您本地【地址簿】中设置的目标主机(相当与IP),请点击这里。要访问【地址助手】返回的目标主机请点这里。" +msgid "" +"To visit the destination in your host database, click here. To visit the conflicting addresshelper destination, click here." +msgstr "" +"域名冲突:要访问您本地【地址簿】中设置的目标主机(相当与IP),请点击这里。要访问【地址助手】返回的目标主机请点这里。" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931 -msgid "Click a link below to look for an address helper by using a \"jump\" service:" -msgstr "请点击下面的链接通过【跳转(Jump)】服务提供的【地址助手】链接跳转至域名对应的主机:" +msgid "" +"Click a link below to look for an address helper by using a \"jump\" service:" +msgstr "" +"请点击下面的链接通过【跳转(Jump)】服务提供的【地址助手】链接跳转至域名对应的" +"主机:" #: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326 #: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336 @@ -32,8 +42,12 @@ msgid "internal" msgstr "内部" #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:171 -msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit." -msgstr "网页提交无效,可能的原因是您使用了浏览器的“后退”和“刷新”按钮,导致表单过期,请重新提交。" +msgid "" +"Invalid form submission, probably because you used the 'back' or 'reload' " +"button on your browser. Please resubmit." +msgstr "" +"网页提交无效,可能的原因是您使用了浏览器的“后退”和“刷新”按钮,导致表单过期," +"请重新提交。" #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218 msgid "Configuration reloaded for all tunnels" @@ -200,7 +214,9 @@ msgid "Shared Client" msgstr "共享客户端" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:212 -msgid "(Share tunnels with other clients and irc/httpclients? Change requires restart of client proxy)" +msgid "" +"(Share tunnels with other clients and irc/httpclients? Change requires " +"restart of client proxy)" msgstr "(与其他客户端例如IRC/HTTP共享隧道?修改需要重新启动)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:216 @@ -219,8 +235,12 @@ msgid "Advanced networking options" msgstr "高级网络设置" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224 -msgid "(NOTE: when this client proxy is configured to share tunnels, then these options are for all the shared proxy clients!)" -msgstr "(注意:此客户代理被设置使用共享隧道时,这些设置将影响所有使用共享隧道的客户端!)" +msgid "" +"(NOTE: when this client proxy is configured to share tunnels, then these " +"options are for all the shared proxy clients!)" +msgstr "" +"(注意:此客户代理被设置使用共享隧道时,这些设置将影响所有使用共享隧道的客户" +"端!)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:226 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245 @@ -269,12 +289,14 @@ msgstr "隧道长度恒定(随机性无,性能稳定)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:272 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:291 -msgid "+ 0-1 hop variance (medium additive randomisation, subtractive performance)" +msgid "" +"+ 0-1 hop variance (medium additive randomisation, subtractive performance)" msgstr "隧道长度+ 0-1(随机性中,影响性能)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295 -msgid "+ 0-2 hop variance (high additive randomisation, subtractive performance)" +msgid "" +"+ 0-2 hop variance (high additive randomisation, subtractive performance)" msgstr "隧道长度+ 0-2(随机性高,影响性能)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280 @@ -304,12 +326,15 @@ msgstr "出/入站隧道x1(带宽低,低可靠性)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:312 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:331 -msgid "2 inbound, 2 outbound tunnels (standard bandwidth usage, standard reliability)" +msgid "" +"2 inbound, 2 outbound tunnels (standard bandwidth usage, standard " +"reliability)" msgstr "出/入站隧道x2(带宽标准,标准稳定性)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335 -msgid "3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)" +msgid "" +"3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)" msgstr "出/入站隧道x3(带宽高,高稳定性)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325 @@ -334,7 +359,8 @@ msgstr "备用隧道对x1 (低冗余,低资源占用)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:345 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364 -msgid "2 backup tunnels each direction (medium redundancy, medium resource usage)" +msgid "" +"2 backup tunnels each direction (medium redundancy, medium resource usage)" msgstr "备用隧道对x2 (中冗余,中资源占用)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:349 @@ -480,8 +506,12 @@ msgstr "自定义选项" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:512 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:529 -msgid "NOTE: If tunnel is currently running, most changes will not take effect until tunnel is stopped and restarted." -msgstr "注意:如果当前隧道已经启动,设置需要【停止】并重新【启动】相应隧道后才能生效。" +msgid "" +"NOTE: If tunnel is currently running, most changes will not take effect " +"until tunnel is stopped and restarted." +msgstr "" +"注意:如果当前隧道已经启动,设置需要【停止】并重新【启动】相应隧道后才能生" +"效。" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:514 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531 @@ -764,16 +794,21 @@ msgstr "新建客户隧道" #~ msgid "Locally (127.0.0.1)" #~ msgstr "本地(127.0.0.1)" + #~ msgid "Everyone (0.0.0.0)" #~ msgstr "任何人(0.0.0.0)" + #~ msgid "LAN Hosts (Please specify your LAN address)" #~ msgstr "局域网(请指定LAN地址)" + #~ msgid "Other" #~ msgstr "其他" + #~ msgid "I2CP Options" #~ msgstr "I2CP选项" + #~ msgid "(Restrict to these clients only)" #~ msgstr "(仅允许这些客户访问)" + #~ msgid "Unimplemented" #~ msgstr "尚未实现" - diff --git a/apps/routerconsole/locale/messages_ar.po b/apps/routerconsole/locale/messages_ar.po index c14f927f3..29127b267 100644 --- a/apps/routerconsole/locale/messages_ar.po +++ b/apps/routerconsole/locale/messages_ar.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-11-19 18:16+0000\n" -"PO-Revision-Date: 2011-03-02 22:38-0000\n" +"POT-Creation-Date: 2011-03-03 18:27+0000\n" +"PO-Revision-Date: 2011-03-03 21:10-0000\n" "Last-Translator: hamada \n" "Language-Team: hamada@mail.i2p\n" "Language: ar\n" @@ -28,7 +28,7 @@ msgstr "" #. {0,number,####} prevents 1234 from being output as 1,234 in the English locale. #. If you want the digit separator in your locale, translate as {0}. #. alternates: msec, msecs -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1086 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1141 #, java-format msgid "1 ms" msgid_plural "{0,number,####} ms" @@ -42,8 +42,7 @@ msgstr[5] "" #. seconds #. Note to translators: quantity will always be greater than one. #. alternates: secs, sec. 'seconds' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1091 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:349 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1146 #, java-format msgid "1 sec" msgid_plural "{0} sec" @@ -53,7 +52,7 @@ msgstr[1] "" #. minutes #. Note to translators: quantity will always be greater than one. #. alternates: mins, min. 'minutes' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1096 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1151 #, java-format msgid "1 min" msgid_plural "{0} min" @@ -67,7 +66,7 @@ msgstr[5] "" #. hours #. Note to translators: quantity will always be greater than one. #. alternates: hrs, hr., hrs. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1101 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1156 #, java-format msgid "1 hour" msgid_plural "{0} hours" @@ -78,14 +77,14 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1103 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1158 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313 msgid "n/a" msgstr "" #. days #. Note to translators: quantity will always be greater than one. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1107 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1162 #, java-format msgid "1 day" msgid_plural "{0} days" @@ -96,21 +95,21 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:126 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:122 #, java-format msgid "Banned by router hash: {0}" msgstr "ممنوع من طرف الموجه: {0}" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:128 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:124 msgid "Banned by router hash" msgstr "ممنوع من طرف الموجه" #. Temporary reason, until the job finishes -#: ../../../router/java/src/net/i2p/router/Blocklist.java:673 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:669 msgid "IP banned" msgstr "IP ممنوع" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:743 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:739 #, java-format msgid "IP banned by blocklist.txt entry {0}" msgstr " {0} عنوان ممنوع" @@ -164,46 +163,45 @@ msgstr "قبول الأنفاق" msgid "Rejecting tunnels" msgstr "رفض الأنفاق" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:50 -msgid "Ensure that nothing blocks outbound HTTP, check logs and if nothing helps, read the FAQ about reseeding manually." -msgstr "تحقق من logs and if nothing helps، read the FAQ about reseeding manually." - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:82 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:105 +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 msgid "Reseeding" msgstr "اعادة التوزيع" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:146 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:128 +#, java-format +msgid "Reseed fetched only 1 router." +msgid_plural "Reseed fetched only {0} routers." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:135 +msgid "Reseed failed." +msgstr "فشل اعادة التوزيع" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:136 +#, java-format +msgid "See {0} for help." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:137 +msgid "reseed configuration page" +msgstr "تم حفظ اعدادات اعادة التوزيع" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:239 msgid "Reseeding: fetching seed URL." msgstr "اعادة التوزيع: تحميل العنوان" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:152 -msgid "Last reseed failed fully (failed reading seed URL)." -msgstr "فشل آخر توزيع ( تحميل العنوان)" - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:178 -msgid "Last reseed failed fully (no routerInfo URLs at seed URL)." -msgstr "" - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:191 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281 #, java-format msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." msgstr "" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212 -#, java-format -msgid "Last reseed failed partly ({0}% of {1})." -msgstr "" - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:217 -#, java-format -msgid "Last reseed failed ({0}% of {1})." -msgstr "" - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:227 -msgid "Last reseed failed fully (exception caught)." -msgstr "فشل آخر توزيع" - -#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:510 +#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:512 msgid "NetDb entry" msgstr "" @@ -212,27 +210,40 @@ msgstr "" msgid "No transports (hidden or starting up?)" msgstr "ﻻ وسائل النقل (مخفية أو جاري البدء؟)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:451 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:450 msgid "Unreachable on any transport" msgstr "صعب الوصول بأية وسيلة" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:500 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:499 msgid "Router Transport Addresses" msgstr "عموان الموجه للنقل" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:505 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:504 #, java-format msgid "{0} is used for outbound connections only" msgstr "{0} مستعملة للاتصال الخارجي فقط" +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123 +msgid "Help" +msgstr "مساعدة" + #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 +msgid "Your transport connection limits are automatically set based on your configured bandwidth." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 +msgid "To override these limits, add the settings i2np.ntcp.maxConnections=nnn and i2np.udp.maxConnections=nnn on the advanced configuration page." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 msgid "Definitions" msgstr "التعاريف" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:520 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:715 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1888 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:735 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890 #: ../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 @@ -242,149 +253,149 @@ msgstr "التعاريف" msgid "Peer" msgstr "مستخدم" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:520 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 msgid "The remote peer, identified by router hash" msgstr "النظير البعيد" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:716 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1892 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:736 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 msgid "Dir" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:522 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 msgid "Inbound connection" msgstr "اتصال داخلي" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 msgid "Outbound connection" msgstr "اتصال خارجي" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 msgid "They offered to introduce us (help other peers traverse our firewall)" msgstr "ساعد المستخدمين الآخرين في عبور الجدار الناري" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 msgid "We offered to introduce them (help other peers traverse their firewall)" msgstr "عرضنا لمساعدتهم (مساعدة أقرانه الآخرين من اجتياز جدار الحماية)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "How long since a packet has been received / sent" msgstr "مدة تلقى / بعث حزمة " -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:717 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1893 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895 msgid "Idle" msgstr "خامل" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:718 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1898 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1900 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "In/Out" msgstr "داخل/خارج" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 msgid "The smoothed inbound / outbound transfer rate (KBytes per second)" msgstr "سرعة الداخلة / الخارجة للتحويل (KBytes في الثانية)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 msgid "How long ago this connection was established" msgstr "مدة استمرار هذا الاتصال" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:719 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1903 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905 msgid "Up" msgstr "فوق" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:720 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1907 msgid "Skew" msgstr "الانحراف" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 msgid "The difference between the peer's clock and your own" msgstr "الفرق بين ساعة النظير و ساعتك" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 msgid "The congestion window, which is how many bytes can be sent without an acknowledgement" msgstr "نافذة الازدحام، هي كمية المرسلة دون ازدحام" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 msgid "The number of sent messages awaiting acknowledgement" msgstr "عدد الرسائل المرسلة التي تنتظر الموافقة" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 msgid "The maximum number of concurrent messages to send" msgstr "الحد الأقصى لعدد الرسائل المتزامنة الارسال" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 msgid "The number of pending sends which exceed congestion window" msgstr "عدد المرسلات التي تتجاوز إطار الازدحام" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 msgid "The slow start threshold" msgstr "عتبة بداية بطيئة" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 msgid "The round trip time in milliseconds" msgstr "الوقت الذهاب وإياب في جزء ثانية" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1915 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 msgid "Dev" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 msgid "The standard deviation of the round trip time in milliseconds" msgstr "انحراف الوقت الذهاب وإياب في جزء ثانية" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 msgid "The retransmit timeout in milliseconds" msgstr "اعادة الارسال في جزء ثانية" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 msgid "Current maximum send packet size / estimated maximum receive packet size (bytes)" msgstr "الحد الأقصى الحالي إرسال حجم الحزمة" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:721 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1922 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 msgid "TX" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 msgid "The total number of packets sent to the peer" msgstr "العدد الاجمالي للحزم المرسلة الى المستخدم" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:722 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:742 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926 msgid "RX" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 msgid "The total number of packets received from the peer" msgstr "العدد الاجمالي للحزم المستقبلة" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1929 msgid "Dup TX" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 msgid "The total number of packets retransmitted to the peer" msgstr "العدد الاجمالي للحزم المرسلة الى النظائر" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1929 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1931 msgid "Dup RX" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 msgid "The total number of duplicate packets received from the peer" msgstr "إجمالي عدد الحزم المكررة الواردة من الزملاء" @@ -394,174 +405,175 @@ msgstr "إجمالي عدد الحزم المكررة الواردة من الز msgid "Excessive clock skew: {0}" msgstr "درجة انحراف الساعة: {0}" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:710 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:730 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:1884 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:731 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1886 msgid "Limit" msgstr "حد" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:712 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1885 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 msgid "Timeout" msgstr "انتهى الوقت" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:723 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:743 msgid "Out Queue" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:724 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:744 msgid "Backlogged?" msgstr "السجلات" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1947 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:758 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1949 #: ../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:1949 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1951 #: ../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 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:807 msgid "peers" msgstr "نظير" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1883 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1885 msgid "UDP connections" msgstr "اتصال UDP" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1892 msgid "Sort by peer hash" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1892 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 msgid "Direction/Introduction" msgstr "اتجاه/تقديم" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1896 msgid "Sort by idle inbound" msgstr "حسب الاتصاب الوارد" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1896 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1898 msgid "Sort by idle outbound" msgstr "حسب الاتصال الخارج" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1899 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1901 msgid "Sort by inbound rate" msgstr "حسب معدل الداخل" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1901 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1903 msgid "Sort by outbound rate" msgstr "حسب معدل الصادرة" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1904 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1906 msgid "Sort by connection uptime" msgstr "حسب مدة الاتصال" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1906 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1908 msgid "Sort by clock skew" msgstr "حسب انحراف الساعة" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1909 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1911 msgid "Sort by congestion window" msgstr "حسب نافذة الازدحام" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1911 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1913 msgid "Sort by slow start threshold" msgstr "حسب مدة الانطلاق" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1914 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1916 msgid "Sort by round trip time" msgstr "حسب الوقت ذهابا وإيابا" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1916 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918 msgid "Sort by round trip time deviation" msgstr "حسب الوقت ذهابا وإيابا" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1920 msgid "Sort by retransmission timeout" msgstr "حسب مهلة إعادة الإرسال" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1921 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1923 msgid "Sort by outbound maximum transmit unit" msgstr "حسب أقصى مدة" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1923 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1925 msgid "Sort by packets sent" msgstr "حسب الحزم المرسلة" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1925 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927 msgid "Sort by packets received" msgstr "حسب الحزم المستقبلة" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1928 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1930 msgid "Sort by packets retransmitted" msgstr "حسب الحزم المعاد ارسالها" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1930 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1932 msgid "Sort by packets received more than once" msgstr "حسب الحزم المستقبلة اكثر من مرة" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1951 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1953 msgid "We offered to introduce them" msgstr "عرضنا لتعريفهم" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1953 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1955 msgid "They offered to introduce us" msgstr "عرصو علينا تقديمهم" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1957 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1959 msgid "Choked" msgstr "اختنق" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1965 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1967 msgid "1 fail" msgstr "فشل واحد" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1967 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1969 #, java-format msgid "{0} fails" msgstr "{0} فشل" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1973 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1975 #: ../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:2105 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2106 msgid "SUMMARY" msgstr "ملخص" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:145 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:124 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 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:267 msgid "Dropping tunnel requests: Overloaded" msgstr "تجاوز النفق: ازدحام" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:525 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:460 msgid "Rejecting tunnels: Request overload" msgstr "تجاوز النفق: ازدحام" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:550 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:485 msgid "Rejecting tunnels: Connection limit" msgstr "تجاوز النفق: حد الاتصال" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:744 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:685 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:706 msgid "Dropping tunnel requests: High load" msgstr "تجاوز النفق: ازدحام كبير" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:753 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:698 msgid "Dropping tunnel requests: Queue time" msgstr "تجاوز النفق: وقت الانتظار" @@ -1492,11 +1504,12 @@ msgstr "" msgid "Zimbabwe" msgstr "" -#: ../java/src/net/i2p/router/web/CSSHelper.java:57 +#: ../java/src/net/i2p/router/web/CSSHelper.java:58 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:35 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:37 #: ../java/strings/Strings.java:29 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:119 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:233 msgid "I2P Router Console" msgstr "مركز تحكم I2P" @@ -1514,245 +1527,256 @@ msgstr "تم حفظ الإعدادات بنجاح" 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 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:335 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 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:39 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:405 +msgid "Save Interface Configuration" +msgstr "حفظ اعدادات الواجهة" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 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 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:47 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427 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 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:51 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433 msgid "Install Plugin" msgstr "تثبيت الملحق" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:82 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:87 #, java-format msgid "Deleted plugin {0}" msgstr "تم حذف الملحق {0}" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:84 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:89 #, java-format msgid "Error deleting plugin {0}" msgstr "خطأ في حذف الملحق {0}" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:96 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:101 #, java-format msgid "Stopped plugin {0}" msgstr "توقيف الملحق {0}" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:98 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:103 #, 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 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:255 msgid "Start" msgstr "إبدأ" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:138 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:143 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:49 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:61 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:33 msgid "Unsupported" msgstr "غير مدعومة" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:184 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:189 msgid "New client added" msgstr "اضافة مستخدم جديد" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:188 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:193 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 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 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:392 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:379 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:384 msgid "Client" msgstr "مستخدم" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:266 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:271 msgid "started" msgstr "إنطلق" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223 msgid "deleted" msgstr "حذف" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:235 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:240 msgid "WebApp configuration saved." msgstr "تم حفظ اعدادات تطبيق ويب." -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:251 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:256 msgid "Plugin configuration saved." msgstr "تم حفظ اعدادات الملحق ويب." -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:266 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:58 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:271 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 msgid "WebApp" msgstr "تطبيق ويب" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:268 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:273 msgid "Failed to start" msgstr "فشل في الإنطلاق" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:273 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:278 msgid "Failed to find server." msgstr "فشل في العثور على الخادم." -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:279 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:284 msgid "No plugin URL specified." msgstr "لم يحدد عنوان الملحق." -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:289 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:294 #, java-format msgid "No update URL specified for {0}" msgstr "لا توجد تحديثات لـ {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:307 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:320 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:325 msgid "Plugin or update download already in progress." msgstr "جارية تحميل التحديث" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:306 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:311 #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:118 #, java-format msgid "Downloading plugin from {0}" msgstr "تحميل الملحق من {0}" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:324 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:329 #, java-format msgid "Checking plugin {0} for updates" msgstr "بحث عن اصدارات جديدة للملحق{0} " -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:334 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:339 #, java-format msgid "Started plugin {0}" msgstr "الملحق {0} يعمل" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:336 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:341 #, 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 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 +#, fuzzy +msgid "Interface configuration saved successfully - restart required to take effect." +msgstr "تم حفظ العدادات بنجاح - يجب اعادة التشغيل لأخذها بالاعتبار" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:85 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258 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 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:94 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:331 msgid "Add Client" msgstr "أضف مستخدم" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:38 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 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 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 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 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 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 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:197 msgid "Description" msgstr "وصف" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:82 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 msgid "Plugin" msgstr "الملحق" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:95 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:161 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:181 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185 msgid "Version" msgstr "إصدار" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:97 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:163 msgid "Signed by" msgstr "موقع من طرف" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:114 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:180 msgid "Date" msgstr "تاريخ" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:120 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:186 msgid "Author" msgstr "المؤلف" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:136 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:202 msgid "License" msgstr "رخصة" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:141 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:207 msgid "Website" msgstr "موقع" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:146 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:212 msgid "Update link" msgstr "وصلة الترقية" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:194 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:260 msgid "Stop" msgstr "توقف" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:196 -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:81 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:312 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:262 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:78 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:313 msgid "Check for updates" msgstr "بحث عن الترقية" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:197 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:263 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:238 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:242 msgid "Update" msgstr "ترقية" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:202 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:268 #, java-format msgid "Are you sure you want to delete {0}?" msgstr "هل انت متأكد أنك ترغب في حذف {0}؟" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:204 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:270 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:325 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:323 msgid "Delete key" msgstr "حذف مفتاح" @@ -1839,7 +1863,7 @@ msgid "Select a class to add" msgstr "اختر فئة لإضافتها" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:200 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:204 msgid "Network" msgstr "شبكة" @@ -1849,7 +1873,7 @@ msgstr "خدمة" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:101 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 #: ../java/strings/Strings.java:72 msgid "Tunnels" msgstr "نفق" @@ -1863,7 +1887,7 @@ 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:293 msgid "Keyring" msgstr "المفاتيح" @@ -1873,7 +1897,7 @@ msgstr "تسجيل" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:107 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260 #: ../java/strings/Strings.java:67 msgid "Peers" msgstr "المستخدمين" @@ -1890,13 +1914,15 @@ 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:339 -#: ../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 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:29 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:34 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:360 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:516 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:352 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:377 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:344 msgid "Save changes" msgstr "حفظ التغييرات" @@ -1982,25 +2008,25 @@ msgstr "تحديث سرعة الاتصال المشاركة" 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 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:41 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:49 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:59 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:62 msgid "unknown" msgstr "غير معروف" -#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:169 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:172 msgid "bits per second" msgstr "بايت في الثانية" -#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:170 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:173 #, 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:315 msgid "Ban peer until restart" msgstr "منع حتى اعادة التشغيل" @@ -2020,7 +2046,7 @@ 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:317 msgid "Unban peer" msgstr "الغاء منع المستخدم" @@ -2033,8 +2059,8 @@ 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" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:343 +msgid "Adjust peer bonuses" msgstr "" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:47 @@ -2045,10 +2071,28 @@ msgstr " سرعة غير جيدة" msgid "Bad capacity value" msgstr "قدرة غير جيدة" +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:17 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 +msgid "Save changes and reseed now" +msgstr "حفظ التغييرات" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:21 +msgid "Reseeding is already in progress" +msgstr "جاري اعادة التوزيع" + +#. skip the nonce checking in ReseedHandler +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:24 +msgid "Starting reseed process" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:66 +msgid "Configuration saved successfully." +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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:293 msgid "Shutdown immediately" msgstr "توقيف حالا" @@ -2095,7 +2139,7 @@ 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:291 msgid "Shutdown gracefully" msgstr "توقف تدريجيا" @@ -2108,7 +2152,7 @@ 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:295 msgid "Cancel graceful shutdown" msgstr "ألغي التوقف التدريجي" @@ -2117,7 +2161,7 @@ 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:307 msgid "Graceful restart" msgstr "أعد التشغيل التدريجي" @@ -2126,7 +2170,7 @@ 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:309 msgid "Hard restart" msgstr "إعادة التشغيل فوري" @@ -2151,105 +2195,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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:355 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:363 msgid "View console on startup" msgstr "أظهر شاشة التحكم عند البداية" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:117 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:93 msgid "Console is to be shown on startup" msgstr "سبتم إظهار شاشة التحكم عند البداية" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:118 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:364 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:94 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:365 msgid "Do not view console on startup" msgstr "لا تظهر شاشة التحكم عند البداية" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:120 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96 msgid "Console is not to be shown on startup" msgstr "لن يتم إظهار شاشة التحكم عند البداية" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:129 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:105 msgid "Service installed" msgstr "تم تثبيت الخدمة" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:131 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:107 msgid "Warning: unable to install the service" msgstr "تحذير: فشل في تثبيت الخدمة" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:137 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:113 msgid "Service removed" msgstr "تم حذف الخدمة" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:139 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:115 msgid "Warning: unable to remove the service" msgstr "تحذير: فشل في حذف الخدمة" -#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:118 +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:111 msgid "Stat filter and location updated successfully to" msgstr "القانون الأساسي لتصفية وتحديث الموقع بنجاح" -#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:120 +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:113 msgid "Failed to update the stat filter and location" msgstr "فشل في لتصفية وتحديث الموقع بنجاح" -#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:121 +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:114 msgid "Graph list updated, may take up to 60s to be reflected here and on the Graphs Page" msgstr " لقد تم تحديث الرسم البياني، يستغرق فترة تصل الى 60s أن تنعكس هنا، وعلىصفحة الرسوم البيانية" #. 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 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:135 msgid "Updated settings for all pools." msgstr "تحديث إعدادات للجميع." -#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:140 msgid "Exploratory tunnel configuration saved successfully." msgstr "تم حفظ إعدادات النفق بنجاح." -#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:144 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:36 msgid "Error saving the configuration (applied but not saved) - please see the error logs." msgstr "خطأ في حفظ الاعدادات (مطبقة لكنها غير محفوظة) أنظر الاخطاء." @@ -2341,83 +2357,91 @@ msgid "Refresh the page to view." msgstr "أنعش الصفحة" #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +msgid "Arabic" +msgstr "عربية" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "English" msgstr "انجليزية" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "French" msgstr "فرنسية" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "German" msgstr "الألمانية" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "Spanish" msgstr "اسبانية" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 -msgid "Chinese" -msgstr "الصينية" - -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Dutch" msgstr "الهولندية" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 +msgid "Portuguese" +msgstr "برتغالية" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Russian" msgstr "الروسية" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:54 +msgid "Chinese" +msgstr "الصينية" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:54 msgid "Swedish" msgstr "السويدية" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:88 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:85 msgid "Update available, attempting to download now" msgstr "يوجد اصدار جديد " -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:90 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:87 msgid "Update available, click button on left to download" msgstr "توجد تحديثات، انقر زر على اليسار للتحميل" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:96 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:93 msgid "No update available" msgstr "ﻻتوجد تحديثات" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:104 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:101 msgid "Updating news URL to" msgstr "تحديث عنوان جديد الى" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:112 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:109 msgid "Updating proxy host to" msgstr "تحديث بروكسي الى" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:120 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:117 msgid "Updating proxy port to" msgstr "تحديث منفذ بروكسي الى" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:133 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:130 msgid "Updating refresh frequency to" msgstr "تحديث نسبة التردد" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:140 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:137 msgid "Updating update policy to" msgstr "تحديث لسياسة التحديث" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:149 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:146 msgid "Updating update URLs." msgstr "تحديث العناوين" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:155 msgid "Updating trusted keys." msgstr "تحديث المفاتيح الموثوقة." -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:166 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:163 msgid "Updating unsigned update URL to" msgstr "تحديث العنوان" #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:88 -#: ../java/src/net/i2p/router/web/GraphHelper.java:138 +#: ../java/src/net/i2p/router/web/GraphHelper.java:167 msgid "Never" msgstr "أبد" @@ -2437,83 +2461,75 @@ msgstr "حمل فقط" msgid "Download, verify, and restart" msgstr "حمل، تحقق و أعد تشغيل" -#: ../java/src/net/i2p/router/web/FormHandler.java:163 +#: ../java/src/net/i2p/router/web/FormHandler.java:174 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 +#: ../java/src/net/i2p/router/web/GraphHelper.java:93 msgid "Combined bandwidth graph" msgstr "رسم بياني لسرعة الاتصال" #. e.g. "statname for 60m" -#: ../java/src/net/i2p/router/web/GraphHelper.java:96 +#: ../java/src/net/i2p/router/web/GraphHelper.java:107 #, java-format msgid "{0} for {1}" msgstr "{0} لكل {1}" -#: ../java/src/net/i2p/router/web/GraphHelper.java:130 +#: ../java/src/net/i2p/router/web/GraphHelper.java:146 msgid "Configure Graph Display" msgstr "اعدادات الرسم بياني" -#: ../java/src/net/i2p/router/web/GraphHelper.java:130 +#: ../java/src/net/i2p/router/web/GraphHelper.java:146 msgid "Select Stats" msgstr "حدد الإحصائيات" -#: ../java/src/net/i2p/router/web/GraphHelper.java:132 +#: ../java/src/net/i2p/router/web/GraphHelper.java:150 msgid "Periods" msgstr "مدة" -#: ../java/src/net/i2p/router/web/GraphHelper.java:133 +#: ../java/src/net/i2p/router/web/GraphHelper.java:151 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 +#: ../java/src/net/i2p/router/web/GraphHelper.java:152 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:333 msgid "or" msgstr "أو" -#: ../java/src/net/i2p/router/web/GraphHelper.java:134 +#: ../java/src/net/i2p/router/web/GraphHelper.java:152 msgid "plot events" msgstr "ارسم الأحداث" -#: ../java/src/net/i2p/router/web/GraphHelper.java:135 +#: ../java/src/net/i2p/router/web/GraphHelper.java:153 msgid "Image sizes" msgstr "خجم الصور" -#: ../java/src/net/i2p/router/web/GraphHelper.java:135 +#: ../java/src/net/i2p/router/web/GraphHelper.java:153 msgid "width" msgstr "العرض" -#: ../java/src/net/i2p/router/web/GraphHelper.java:136 +#: ../java/src/net/i2p/router/web/GraphHelper.java:154 msgid "height" msgstr "الإرتفاع" -#: ../java/src/net/i2p/router/web/GraphHelper.java:136 -#: ../java/src/net/i2p/router/web/GraphHelper.java:137 +#: ../java/src/net/i2p/router/web/GraphHelper.java:154 +#: ../java/src/net/i2p/router/web/GraphHelper.java:155 msgid "pixels" msgstr "البيكسل" -#: ../java/src/net/i2p/router/web/GraphHelper.java:138 +#: ../java/src/net/i2p/router/web/GraphHelper.java:156 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 +#: ../java/src/net/i2p/router/web/GraphHelper.java:171 msgid "Redraw" msgstr "اعد رسم" +#: ../java/src/net/i2p/router/web/GraphHelper.java:203 +msgid "Graph settings saved" +msgstr "حفظ اعدادات الرسم البياني" + #: ../java/src/net/i2p/router/web/LogsHelper.java:13 #: ../java/src/net/i2p/router/web/LogsHelper.java:37 msgid "File location" @@ -2529,7 +2545,7 @@ msgstr "لا تسجيل الرسائل" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:80 msgid "Network Database RouterInfo Lookup" -msgstr "" +msgstr "قاعدة بيانات الشبكة" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:95 #: ../java/strings/Strings.java:68 @@ -2644,8 +2660,8 @@ msgid "Full entry" msgstr "" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:110 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:600 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:115 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 msgid "Hidden" msgstr "مختفي" @@ -2697,12 +2713,12 @@ msgstr "" msgid "NTCP and SSU with introducers" msgstr "" -#: ../java/src/net/i2p/router/web/NewsFetcher.java:82 +#: ../java/src/net/i2p/router/web/NewsFetcher.java:93 #, java-format msgid "News last updated {0} ago." msgstr "آخر تحديث للأخبار {0} " -#: ../java/src/net/i2p/router/web/NewsFetcher.java:88 +#: ../java/src/net/i2p/router/web/NewsFetcher.java:99 #, java-format msgid "News last checked {0} ago." msgstr "آخر تحديث للأخبار {0} " @@ -2737,132 +2753,132 @@ msgid "Downloading plugin" msgstr "تحميل ملحق" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:146 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:185 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:244 #, java-format msgid "{0}B transferred" msgstr "{0}B منقول" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:152 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:153 msgid "Plugin downloaded" msgstr "تم تحميل الملحق" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:157 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:344 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:158 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:356 #, java-format msgid "Cannot create plugin directory {0}" msgstr "فشل في انشاء مجلد الملحق {0}" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:166 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:226 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:167 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:298 #, java-format msgid "from {0}" msgstr "من {0}" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:176 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:177 #, java-format msgid "Plugin from {0} is corrupt" msgstr "الملحق من {0} غير كامل" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:187 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:188 #, 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:200 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:201 #, java-format msgid "Plugin from {0} contains an invalid key" msgstr "الملحق من {0} يحتوي على مفتاح غير صالح" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:219 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:228 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:237 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:225 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:235 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:249 #, java-format msgid "Plugin signature verification of {0} failed" msgstr "فشل في التحقق من امضاء {0} الملحق" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:252 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:264 #, java-format msgid "Plugin from {0} has invalid name or version" msgstr "الملحق {0} له اصدار او اسم غير مقبول" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:257 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:269 #, java-format msgid "Plugin {0} has mismatched versions" msgstr "الملحق {0} له اصدار غير متوافق" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:265 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:277 #, java-format msgid "This plugin requires I2P version {0} or higher" msgstr "هذا الملحق يحتاج الى اصدار {0} أو اكبر" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:273 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:285 #, java-format msgid "This plugin requires Java version {0} or higher" msgstr "هذا الملحق يحتاج الى اصدار جافا {0} او أعلى" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:281 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 msgid "Downloaded plugin is for new installs only, but the plugin is already installed" msgstr "تحميل البرنامج المساعد لتثبيت جديد فقط، ولكن تم بالفعل تثبيت البرنامج المساعد" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:305 msgid "Installed plugin does not contain the required configuration file" msgstr "الملحق لا يحتوي على ملف الاعدادات" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:301 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:313 msgid "Signature of downloaded plugin does not match installed plugin" msgstr "توقيع الملحق المحمل لا يطابق الملحق المثبت" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:308 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:320 #, java-format msgid "Downloaded plugin version {0} is not newer than installed plugin" msgstr "اصدار الملحق {0} ليس اكثر حداثة من الملحق المثبت" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:315 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:327 #, java-format msgid "Plugin update requires installed plugin version {0} or higher" msgstr "تحديث الملحق {0} يحتاج الى اصدار" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:322 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:334 #, java-format msgid "Plugin update requires installed plugin version {0} or lower" msgstr "تحديث الملحق يحتاج الى اصدار {0} او اقل" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:339 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351 msgid "Plugin is for upgrades only, but the plugin is not installed" msgstr "الملحق للتحديث فقط لكنه غير مثبت" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:352 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:364 #, java-format msgid "Failed to install plugin in {0}" msgstr "فشل في تثبيت الملحق {0}" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:359 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:371 #, java-format msgid "Plugin {0} installed, router restart required" msgstr "الملحق {0} تم تثبيته" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:361 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:373 #, java-format msgid "Plugin {0} installed" msgstr "الملحق {0} مثبت" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:370 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:391 #, java-format msgid "Plugin {0} installed and started" msgstr "الملحق {0} مثبت ومشغل" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:372 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:394 #, java-format msgid "Plugin {0} installed but failed to start, check logs" msgstr "الملحق {0} مثيت لكن فشل في البداية، تحقق من السجلات" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:374 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:396 #, java-format msgid "Plugin {0} installed but failed to start" msgstr "الملحق {0} مثبت لكنه فشل في انطلاق" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:384 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:406 #, java-format msgid "Failed to download plugin from {0}" msgstr "فشل في تحميل الملحق من {0}" @@ -2892,13 +2908,13 @@ msgstr "المجموعات" #: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:335 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:339 msgid "Capacity" msgstr "القدرة" @@ -2929,7 +2945,7 @@ msgid "Failing" msgstr "فشل" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:282 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:287 msgid "Integrated" msgstr "مدمج" @@ -3011,7 +3027,6 @@ msgid "1d Fail Rate" msgstr "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:250 -#, fuzzy msgid "Thresholds" msgstr "" @@ -3092,37 +3107,37 @@ 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 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:223 msgid "Bandwidth usage" msgstr "استعمال الشيكة" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:181 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:230 msgid "Outbound bytes/sec" msgstr "اتصال خارجي bytes/sec" #. def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3); -#: ../java/src/net/i2p/router/web/StatSummarizer.java:183 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:232 msgid "Inbound bytes/sec" msgstr "اتصال داخلي 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 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:235 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:236 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:237 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:238 msgid "bytes/sec" msgstr "بايت/ثانية" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:186 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:235 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/StatSummarizer.java:236 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:238 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:115 msgid "max" msgstr "" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:188 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:237 msgid "in average" msgstr "متوسط الاتصال الداخلي" @@ -3173,7 +3188,7 @@ msgstr "" #. Display the strict average #: ../java/src/net/i2p/router/web/StatsGenerator.java:140 msgid "Lifetime average frequency" -msgstr "" +msgstr "متوسط مدى الحياة" #: ../java/src/net/i2p/router/web/StatsGenerator.java:168 msgid "rate" @@ -3187,37 +3202,44 @@ msgstr "متوسط" msgid "Highest average" msgstr "أعلى متوسط" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:202 +#. breaking the sentence like before makes translation in my language impossible. +#: ../java/src/net/i2p/router/web/StatsGenerator.java:201 #, java-format -msgid "in this period which ended {0} ago." -msgstr "" +msgid "There were {0} event(s) in this period" +msgstr "هناك {0} حدث في هذه المدة" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:204 +#. buf.append(' '); +#: ../java/src/net/i2p/router/web/StatsGenerator.java:203 +#, fuzzy, java-format +msgid " which ended {0} ago." +msgstr "آخر تحديث للأخبار {0} " + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:205 msgid "No events" -msgstr "" +msgstr "لا حدث" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:210 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:211 msgid "Average event count" -msgstr "" +msgstr "متوسط عدد الأحداث" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:212 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:213 msgid "Events in peak period" msgstr "" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:220 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:221 msgid "Graph Data" msgstr "رسم بياني" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:222 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:223 msgid "Graph Event Count" msgstr "الرسم البياني" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:225 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:226 msgid "Export Data as XML" msgstr "تصدير البيانات XML" #. Display the strict average -#: ../java/src/net/i2p/router/web/StatsGenerator.java:230 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:231 msgid "Lifetime average value" msgstr "متوسط الحياة" @@ -3278,12 +3300,12 @@ msgid "I2P Internals" msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:99 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:379 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:384 msgid "View existing tunnels and tunnel build status" msgstr "أظهر الأنفاق الموجودة وحالة الانفاق " #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:105 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258 msgid "Show all current peer connections" msgstr "أظهر اتصالات المشاركين" @@ -3324,7 +3346,7 @@ msgid "Textual router performance statistics" msgstr "احصائات نصية للموجه" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:365 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:370 msgid "Local Destinations" msgstr "الوجهات المحلية" @@ -3333,231 +3355,231 @@ msgstr "الوجهات المحلية" msgid "I2PTunnel" msgstr "الأنفاق I2P" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:160 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164 msgid "I2P Router Help" msgstr "مساعدة روتر I2P" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:162 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166 msgid "General" msgstr "عام" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:167 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171 msgid "Local Identity" msgstr "هوية محلية" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:175 msgid "Your unique I2P router identity is" msgstr "هوية موجهك I2P هو" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:175 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179 msgid "never reveal it to anyone" msgstr "لاتظهر لأحد" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:181 msgid "show" msgstr "أظهر" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:188 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192 msgid "How long we've been running for this session" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195 msgid "Uptime" msgstr "مدة الاشتغال" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 msgid "Help with configuring your firewall and router for optimal I2P performance" -msgstr "" +msgstr "مساعدة في اعدادات الجدار الناري لزيادة فعالية I2P" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 msgid "Download" msgstr "تحميل" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:236 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:240 msgid "Download Unsigned" msgstr "تحميل" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:262 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266 msgid "Active" msgstr "مفعل" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275 msgid "Fast" msgstr "سريع" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:276 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:281 msgid "High capacity" msgstr "قدرة عالية" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:293 msgid "Known" msgstr "معروف" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:303 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:308 msgid "Help with firewall configuration" msgstr "مساعدة خول اعدادات الجدار الناري" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:305 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:310 msgid "Check NAT/firewall" msgstr "تأكد من NAT/جدار ناري" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:325 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:330 msgid "Reseed" msgstr "اعادة توزيع" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:342 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:347 msgid "Configure router bandwidth allocation" -msgstr "" +msgstr "حدد سرعة الموجه" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:344 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:349 msgid "Bandwidth in/out" msgstr "الاتصال الداخلي/خارجي" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:364 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:369 msgid "Total" msgstr "مجموع" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:371 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376 msgid "Used" msgstr "مستعمل" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:391 msgid "Exploratory" -msgstr "" +msgstr "تصفح" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:398 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403 msgid "Participating" msgstr "مشارك" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:404 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:409 msgid "Share ratio" msgstr "نسبة المشاركة" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:410 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415 msgid "What's in the router's job queue?" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 msgid "Congestion" msgstr "ازدحام" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:422 msgid "Job lag" msgstr "تأخر" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:423 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:428 msgid "Message delay" msgstr "تأخر الرسالة" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:429 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:434 msgid "Tunnel lag" msgstr "تأخر النفق" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440 msgid "Backlog" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:101 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:106 msgid "ERR-Client Manager I2CP Error - check logs" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:108 -#, fuzzy, java-format +#: ../java/src/net/i2p/router/web/SummaryHelper.java:113 +#, java-format msgid "ERR-Clock Skew of {0}" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:117 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:576 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:122 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 msgid "OK" msgstr "موافق" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:118 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:123 msgid "ERR-Private TCP Address" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:120 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:125 msgid "ERR-SymmetricNAT" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:123 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:128 msgid "WARN-Firewalled with Inbound TCP Enabled" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:125 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:130 msgid "WARN-Firewalled and Floodfill" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:127 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:132 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 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:133 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 msgid "Firewalled" msgstr "ممنوع من الجدار الناري" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:130 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:135 msgid "ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:136 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:141 msgid "ERR-No Active Peers, Check Network Connection and Firewall" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:139 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:144 msgid "ERR-UDP Disabled and Inbound TCP host/port not set" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:141 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:146 msgid "WARN-Firewalled with UDP Disabled" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:143 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:596 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:148 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 msgid "Testing" msgstr "جاري التجريب" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:365 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:370 msgid "Add/remove/edit & control your client and server tunnels" msgstr "أضف/حذف/حرر & المستخدم والانفاق" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:377 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:382 msgid "Server" msgstr "خادم" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:381 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:386 msgid "Show tunnels" msgstr "أظهر الانفاق" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:392 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:397 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 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:397 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:398 msgid "Rebuilding" msgstr "اعادة بناية" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:393 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:398 msgid "ago" msgstr "هناك" #. green light -#: ../java/src/net/i2p/router/web/SummaryHelper.java:396 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:401 msgid "Ready" msgstr "مستعد" #. yellow light -#: ../java/src/net/i2p/router/web/SummaryHelper.java:400 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 msgid "Building" msgstr "بناء" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:400 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 msgid "Building tunnels" msgstr "جاري بناء النفق" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:410 msgid "none" msgstr "" @@ -3565,7 +3587,7 @@ msgstr "" #. 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/src/net/i2p/router/web/SummaryHelper.java:421 #: ../java/strings/Strings.java:36 msgid "shared clients" msgstr "المستخدمين المشتركين" @@ -3583,7 +3605,7 @@ msgstr "متوسط {0}" #: ../java/src/net/i2p/router/web/SummaryRenderer.java:101 msgid "Events per period" -msgstr "" +msgstr "عدد الأحداث في المدة" #: ../java/src/net/i2p/router/web/SummaryRenderer.java:114 msgid "avg" @@ -3595,7 +3617,7 @@ 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:287 msgid "configure" msgstr "إعدادات" @@ -3724,17 +3746,17 @@ 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:178 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:142 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:237 msgid "Updating" msgstr "ترقية" +#. Process the .sud/.su2 file #: ../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:189 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:214 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:261 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:286 msgid "Update downloaded" msgstr "طريقة الترقية" @@ -3744,22 +3766,22 @@ 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:209 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:281 msgid "Restarting" msgstr "أعد التشغيل" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:118 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:216 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:288 msgid "Click Restart to install" msgstr "أنقر اعادة التشغبل للتثبيت" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:120 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:218 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:290 msgid "Click Shutdown and restart to install" msgstr "انقر زر التوقف وأعد التشغيل للتثبيت" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:121 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:220 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:292 #, java-format msgid "Version {0}" msgstr "اصدار {0}" @@ -3769,13 +3791,24 @@ msgstr "اصدار {0}" msgid "Failed copy to {0}" msgstr "فشل في نسخ {0}" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:209 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:184 +#, java-format +msgid "Updating from {0}" +msgstr "تحديث من {0}" + +#: ../java/src/net/i2p/router/web/UpdateHandler.java:253 +#, java-format +msgid "No new version found at {0}" +msgstr "ﻻيوجد اصدار جديد {0} " + +#: ../java/src/net/i2p/router/web/UpdateHandler.java:281 msgid "Update verified" msgstr "انتهى التحديث" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:234 -msgid "Transfer failed" -msgstr "فشل في النقل" +#: ../java/src/net/i2p/router/web/UpdateHandler.java:307 +#, java-format +msgid "Transfer failed from {0}" +msgstr "فشل في النقل {0}" #. wars for ConfigClientsHelper #: ../java/strings/Strings.java:12 @@ -3855,7 +3888,6 @@ msgstr "" #. older names for pre-0.7.4 installs #: ../java/strings/Strings.java:42 -#, fuzzy msgid "eepProxy" msgstr "" @@ -3900,7 +3932,6 @@ msgid "BandwidthLimiter" msgstr "تحديد سرعة الاتصال" #: ../java/strings/Strings.java:59 -#, fuzzy msgid "ClientMessages" msgstr "" @@ -3917,7 +3948,6 @@ msgid "InNetPool" msgstr "" #: ../java/strings/Strings.java:64 -#, fuzzy msgid "JobQueue" msgstr "" @@ -4032,553 +4062,561 @@ 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_005fnl_jsp.java:220 -#: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:230 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:215 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_005fnl_jsp.java:224 -#: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:231 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:219 msgid "Enable" msgstr "فعل" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:240 msgid "I2P Network Configuration" msgstr "اعدادات شبكة I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:297 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:298 msgid "Bandwidth limiter" msgstr "مخدد سرعة الشبكة" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:299 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:300 msgid "I2P will work best if you configure your rates to match the speed of your internet connection." -msgstr "" +msgstr "سيشتغلI2P بفعالية أكبر اذا حددت سرعة الاتصال." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:304 msgid "KBps In" msgstr "KBps الداخلة" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:318 msgid "KBps Out" msgstr "KBps الخارجة" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:333 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:334 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:304 msgid "NOTE" msgstr "ملاحظة" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:342 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:343 #, java-format msgid "You have configured I2P to share only {0} KBps." msgstr "لقد قمت باعداد I2P لمشاركة {0} KOps." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:345 -msgid "I2P requires at least 12KBps to enable sharing. " -msgstr "" - #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:346 +msgid "I2P requires at least 12KBps to enable sharing. " +msgstr "يحتاج I2P على الاقل الى 12KBps لتفعيل المشاركة." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:348 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:351 #, java-format msgid "You have configured I2P to share {0} KBps." msgstr "قمت باعداد I2P لمشاركة {0} KOps." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:353 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:354 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:337 -#: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:358 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:403 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:348 +#: ../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:342 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:365 msgid "Cancel" msgstr "ألغي" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:374 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:375 msgid "IP and Transport Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:376 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:377 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:306 msgid "The default settings will work for most people." msgstr "الاعدادات التي تشتغل غالبية الوقت." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:378 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:379 msgid "There is help below." msgstr "أنظر التعليمات أسفله." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:380 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:381 msgid "UPnP Configuration" msgstr "اعدادات UPnP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:384 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:385 msgid "Enable UPnP to open firewall ports" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:386 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:387 msgid "UPnP status" msgstr "UPnP حالة" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:388 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:389 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:391 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:461 msgid "Externally reachable hostname or IP address" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:394 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395 msgid "Use all auto-detect methods" msgstr "استعمال جميع طرق الاكتشاف التلقائي" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:398 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399 msgid "Disable UPnP IP address detection" msgstr "الغاء UPnP IP اكتشاف عنوان " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:402 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 msgid "Ignore local interface IP address" msgstr "تجاهل عنوان IP المحلي" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:406 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:407 msgid "Use SSU IP address detection only" msgstr "" -#: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:411 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 msgid "Specify hostname or IP" msgstr "حدد hostname او IP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:416 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 msgid "Select Interface" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:430 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:431 msgid "Hidden mode - do not publish IP" msgstr "لا تنشر عنوان IP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:432 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:433 msgid "(prevents participating traffic)" -msgstr "" +msgstr "(منع مشاركة الاتصال)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:434 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 msgid "Action when IP changes" msgstr "عمل عند تغيير IP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:438 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:439 msgid "Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:440 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:441 msgid "Experimental" msgstr "تجريبي" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:442 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:443 msgid "UDP Configuration:" msgstr "اعدادات UDP :" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:444 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:445 msgid "UDP port:" msgstr "منفذ UDP :" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:458 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 msgid "TCP Configuration" msgstr "اعدادات TCP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:464 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:465 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:467 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499 msgid "currently" msgstr "حاليا" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:470 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:471 msgid "if we are not firewalled" msgstr "لايوجد جدار ناري" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:474 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:475 msgid "Always use auto-detected IP address (Not firewalled)" msgstr "استعمل دائما عنوان IP المكتشف (لا يوجد جدار ناري)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:484 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 msgid "Disable inbound (Firewalled)" msgstr "الغاء الاتصال الداخلي (وراء جدار ناري)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:488 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:489 msgid "Completely disable" msgstr "الغاء" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:490 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:491 msgid "(select only if behind a firewall that throttles or blocks outbound TCP)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:492 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 msgid "Externally reachable TCP port" msgstr "منفذ TCP يمكن الوصول إليها خارجيا" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:496 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 msgid "Use the same port configured for UDP" msgstr "استعمل نفس المنفذ المخصص لمنفذ UDP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:504 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:505 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:330 msgid "Note" msgstr "ملاحظة" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:511 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:512 msgid "Changing these settings will restart your router." msgstr "تغيير في الإعدادات يقتضي اعادة تشغيل الموجه." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:517 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:518 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:520 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:521 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:522 msgid "If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you." msgstr "ان توفرت الامكانية قم بفتح منفذ في الجدار الناري لسماح بوصول اتصال UDP و TCP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:523 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:524 msgid "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:525 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:526 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:527 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:528 msgid "Certain firewalls such as symmetric NATs may not work well with I2P." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:536 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:537 msgid "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:538 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:539 msgid "UPnP support is beta, and may not work for any number of reasons" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:540 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:541 msgid "No UPnP-compatible device present" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:542 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:543 msgid "UPnP disabled on the device" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:544 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:545 msgid "Software firewall interference with UPnP" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:546 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:547 msgid "Bugs in the device's UPnP implementation" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:548 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:549 msgid "Multiple firewall/routers in the internet connection path" msgstr "هناك عدة موجهات و جدار ناري في طريق الاتصال بالانترنت" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:550 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:551 msgid "UPnP device change, reset, or address change" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:552 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:553 msgid "Review the UPnP status here." -msgstr "" +msgstr "راجع حالة UPnP هنا." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:554 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 msgid "UPnP may be enabled or disabled above, but a change requires a router restart to take effect." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:556 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 msgid "They are not private." -msgstr "" +msgstr "انها غير خاصة." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:560 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 msgid "Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:562 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:564 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 msgid "When in doubt, leave the settings at the defaults." msgstr "ان لم تكن متأكدا دع الاعدادات كما هي." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:566 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 msgid "Reachability Help" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:571 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:572 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:574 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 msgid "Your UDP port does not appear to be firewalled." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:582 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 msgid "Your UDP port appears to be firewalled." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:584 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587 msgid "However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:588 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:589 msgid "I2P will work fine when firewalled, there is no reason for concern. When firewalled, the router uses \"introducers\" to relay inbound connections." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:590 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:591 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:595 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:598 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 msgid "The router is currently testing whether your UDP port is firewalled." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:602 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603 msgid "The router is not configured to publish its address, therefore it does not expect incoming connections." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:604 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 msgid "WARN - Firewalled and Fast" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:606 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 msgid "You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled." -msgstr "" +msgstr "قمت باعداد I2P لمشاركة أكثر من 128KBps، لكنك وراء جدار ناري." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:608 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:610 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 msgid "WARN - Firewalled and Floodfill" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:612 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 msgid "You have configured I2P to be a floodfill router, but you are firewalled." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:614 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 msgid "For best participation as a floodfill router, you should open your firewall." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:616 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 msgid "WARN - Firewalled with Inbound TCP Enabled" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:618 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:620 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:622 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 msgid "Please open your firewall or disable inbound TCP above." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:624 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 msgid "WARN - Firewalled with UDP Disabled" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:626 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 msgid "You have configured inbound TCP, however you have disabled UDP." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:628 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:631 msgid "Please open your firewall or enable UDP." msgstr "غير اعدادات الجدار الناري لفتح منفذ UDP." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:632 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 msgid "ERR - Clock Skew" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:634 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:637 msgid "Correct your clock setting if this error persists." msgstr "غير اعدادات الساعة اذا استمر هذا الخطأ." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:638 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 msgid "ERR - Private TCP Address" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:640 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:642 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 msgid "Correct the address or disable inbound TCP above." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:644 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 msgid "ERR - SymmetricNAT" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:646 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 msgid "I2P detected that you are firewalled by a Symmetric NAT." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:648 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:650 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:651 msgid "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:652 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 msgid "I2P was unable to bind to port 8887 or other configured port." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:654 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:655 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." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:656 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:657 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:659 msgid "However, a restart is always required after this error." msgstr "اعادة تشغيل ضرورية بعد هذا الخطأ." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:660 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 msgid "ERR - UDP Disabled and Inbound TCP host/port not set" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:662 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:663 msgid "You have not configured inbound TCP with a hostname and port above, however you have disabled UDP." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:664 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:665 msgid "Therefore your router cannot accept inbound connections." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:666 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:667 msgid "Please configure a TCP host and port above or enable UDP." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:668 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:669 msgid "ERR - Client Manager I2CP Error - check logs" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:670 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 msgid "This is usually due to a port 7654 conflict. Check the logs to verify." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:672 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:673 msgid "Do you have another I2P instance running? Stop the conflicting program and restart I2P." msgstr "" @@ -4586,15 +4624,15 @@ msgstr "" msgid "config advanced" msgstr "اعدادات متقدمة" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:242 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:241 msgid "I2P Advanced Configuration" msgstr "اعدادات I2P متقدمة" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:299 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:301 msgid "Advanced I2P Configuration" msgstr "اعدادات I2P متقدمة" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:311 msgid "Some changes may require a restart to take effect." msgstr "بعض التغييرات تحتاج اعادة التشغيل لتفعيلها" @@ -4602,52 +4640,105 @@ msgstr "بعض التغييرات تحتاج اعادة التشغيل لتفع msgid "config clients" msgstr "إعدادات المستخدم" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:244 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:243 msgid "I2P Client Configuration" msgstr "اعدادات I2P " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:312 msgid "Client Configuration" msgstr "اعدادات المستخدم" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:314 msgid "The Java clients listed below are started by the router and run in the same JVM." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:318 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:401 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:415 msgid "All changes require restart to take effect." msgstr "جيمع التغييرات تحتاج اعادة التشغيل ليتم تطبيقها" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:336 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:337 +msgid "Advanced Client Interface Configuration" +msgstr "اعدادات I2P متقدمة" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:339 +msgid "External I2CP (I2P Client Protocol) Interface Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 +msgid "Enabled without SSL" +msgstr "فعل بدون SSL" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351 +msgid "Enabled with SSL required" +msgstr "تفعيل SSL ضروري" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 +msgid "Disabled - Clients outside this Java process may not connect" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:359 +msgid "I2CP Port" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:363 +msgid "I2CP Interface" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:379 +msgid "Authorization" +msgstr "الصلاحية" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:385 +msgid "Require username and password" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:387 +msgid "Username" +msgstr "اسم المستخدم" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:391 +msgid "Password" +msgstr "كلمة السر" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:397 +msgid "Any changes made here must also be configured in the external client." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:399 +msgid "Many clients do not support SSL or authorization." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:407 msgid "WebApp Configuration" msgstr "اعدادات تطبيق ويب" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:338 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:340 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:411 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:350 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:421 msgid "Plugin Configuration" msgstr "إعدادات الملحق" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:352 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 msgid "The plugins listed below are started by the webConsole client." msgstr "الملحقال التالية يتم تشغيلها من طرف شاشة التحكم" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:358 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:429 msgid "Plugin Installation" msgstr "تثبيت الملحق" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:360 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 msgid "To install a plugin, enter the download URL:" msgstr "" @@ -4655,39 +4746,39 @@ msgstr "" msgid "config keyring" msgstr "اعدادات المفاتيح" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:227 msgid "I2P Keyring Configuration" msgstr "اعدادات المفاتيح I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:294 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:295 msgid "The router keyring is used to decrypt encrypted leaseSets." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:297 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:298 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:308 msgid "Manual Keyring Addition" msgstr "اضافة المفاتيح يدويا" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:310 msgid "Enter keys for encrypted remote destinations here." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:313 msgid "Keys for local destinations must be entered on the" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:314 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:315 msgid "I2PTunnel page" msgstr "صفحة النفق I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:317 msgid "Dest. name, hash, or full key" msgstr "نقطة الوصول، اسم، بصمة، او مفتاح كامل" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:319 msgid "Encryption Key" msgstr "مفتاح التشفير" @@ -4695,55 +4786,55 @@ msgstr "مفتاح التشفير" msgid "config logging" msgstr "اعدادت السجلات" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:242 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:241 msgid "I2P Logging Configuration" msgstr "اعدادت السجلات I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:299 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 msgid "Configure I2P Logging Options" msgstr "اعدادت السجلات I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:303 msgid "Logging filename" msgstr "ملف السجل" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307 msgid "(the symbol '@' will be replaced during log rotation)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:309 msgid "Log record format" msgstr "بيانات السجل" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 msgid "(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:315 msgid "Log date format" msgstr "تاريخ السجل" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 msgid "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:321 msgid "Max log file size" msgstr "أقصى حجم لملف السجل" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:325 msgid "Default log level" msgstr "نوع السجل" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329 msgid "(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:331 msgid "Log level overrides" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:333 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:335 msgid "New override" msgstr "" @@ -4751,40 +4842,40 @@ msgstr "" msgid "config peers" msgstr "اعدادات النظائر" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:227 msgid "I2P Peer Configuration" msgstr "اعدادات مستخدمي I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:305 msgid "Manual Peer Controls" msgstr "تحكم يدوي في النظائر" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:307 msgid "Router Hash" msgstr "بصمة الموجه" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:311 msgid "Manually Ban / Unban a Peer" msgstr "منع / الغاء منع يدويا لنظير" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:313 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:323 +msgid "Adjust Profile Bonuses" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:327 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:251 msgid "Banned Peers" msgstr "مستخدمون ممنوعون" @@ -4792,96 +4883,172 @@ msgstr "مستخدمون ممنوعون" msgid "Banned IPs" msgstr "عناوين IP الممنوعة" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:106 +msgid "config reseeding" +msgstr "اعدادات اعادة التوزيع" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:240 +#, fuzzy +msgid "I2P Reseeding Configuration" +msgstr "اعدادات المفاتيح I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:300 +#, fuzzy +msgid "Reseeding Configuration" +msgstr "اعدادات المفاتيح I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:302 +msgid "Reseeding is the bootstrapping process used to find other routers when you first install I2P, or when your router has too few router references remaining." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304 +msgid "If reseeding has failed, you should first check your network connection." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:308 +msgid "Change these only if HTTP is blocked by a restrictive firewall, reseed has failed, and you have access to an HTTP proxy." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +#, java-format +msgid "See {0} for instructions on reseeding manually." +msgstr "أنظر {0} التعليمات لاعادة التوزيع اليدوي." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +msgid "the FAQ" +msgstr "الأسئلة الشائعة" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:312 +msgid "Reseed URL Selection" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 +msgid "Try SSL first then non-SSL" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:324 +msgid "Use SSL only" +msgstr "استعمل SSL فقط" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:330 +msgid "Use non-SSL only" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:332 +#, fuzzy +msgid "Reseed URLs" +msgstr "اعادة توزيع" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:336 +msgid "Enable HTTP proxy (not used for SSL)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:340 +msgid "HTTP Proxy Host" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:344 +#, fuzzy +msgid "HTTP Proxy Port" +msgstr "eepProxy منفذ" + #: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:227 msgid "I2P Service Configuration" msgstr "اعدادات خدمة I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:284 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:285 msgid "Shutdown the router" msgstr "توقيف الموجه" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:286 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:287 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:289 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:299 msgid "If you want the router to restart itself after shutting down, you can choose one of the following." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:300 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:301 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:303 msgid "A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately." msgstr "اعادة التشغيل ستتم بعد بضع دقائق (لمساعدة النظائر)، بينما اعادة التشغبل الفورية تعيد التشغيل فورا." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:315 msgid "Systray integration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 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 "في نظام ويندوز، هناك برنامج صغير يمكنك من خلال ايقونة معرفة حالة اشتغال الموجه" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 msgid "(later on, I2P client applications will be able to integrate their own functionality into the system tray as well)." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:320 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 msgid "If you are on windows, you can either enable or disable that icon here." msgstr "اذا كنت من مستعملي ويندوز يمكنك تفعيل او الغاء تفعيل الايقونة هنا." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:326 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 +msgid "Show systray icon" +msgstr "أظهر الأيقونة" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 +msgid "Hide systray icon" +msgstr "إخفاء أيقونة" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 msgid "Run on startup" msgstr "شغل عند انطلاق" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:328 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:329 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:331 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 msgid "If you are running I2P as service right now, removing it will shut down your router immediately." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:342 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:343 msgid "You may want to consider shutting down gracefully, as above, then running uninstall_i2p_service_winnt.bat." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:346 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 msgid "Debugging" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:348 -#, fuzzy +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 msgid "View the job queue" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:352 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:358 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 msgid "Launch browser on router startup?" msgstr "أطلق المتصفح عند البداية؟" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:360 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:361 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 "" @@ -4889,88 +5056,88 @@ msgstr "" msgid "config stats" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:229 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:228 msgid "I2P Stats Configuration" msgstr "اعدادات احصائيات I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:300 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302 msgid "Configure I2P Stat Collection" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:304 msgid "Enable full stats?" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:311 msgid "change requires restart to take effect" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:313 msgid "Stat file" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:317 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:328 msgid "toggle all" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:328 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:330 msgid "Log" msgstr "سجل" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:332 msgid "Graph" msgstr "رسم بياني" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:369 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:371 msgid "Advanced filter" -msgstr "" +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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:240 msgid "I2P Tunnel Configuration" msgstr "اعدادات أنفاق I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:306 msgid "The default settings work for most people." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:310 msgid "There is a fundamental tradeoff between anonymity and performance." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:313 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:316 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:319 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:333 msgid "Exploratory tunnel setting changes are stored in the router.config file." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:336 msgid "Client tunnel changes are temporary and are not saved." msgstr "تغييرات النفق هي مؤقتة وغير محفوظة" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:338 msgid "To make permanent client tunnel changes see the" msgstr "للقيام بتغييرات دائمة أنظر" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:340 msgid "i2ptunnel page" msgstr "i2ptunnel صفحة" @@ -4978,31 +5145,31 @@ msgstr "i2ptunnel صفحة" msgid "config UI" msgstr "اعدادات واجهة المستخدم" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:240 msgid "I2P UI Configuration" msgstr "I2P اعدادات واجهة المستخدم" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:291 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:292 msgid "Router Console Theme" msgstr "تيمة واجهة المستخدم" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:310 msgid "Theme selection disabled for Internet Explorer, sorry." msgstr "إختيار التيمة لأنترنت اكسبلورر." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:312 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:316 msgid "Router Console Language" msgstr "لغة لوحة التحكم" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:320 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:324 msgid "Apply" msgstr "طبق" @@ -5010,83 +5177,135 @@ msgstr "طبق" msgid "config update" msgstr "ترقية الاعدادات" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:227 msgid "I2P Update Configuration" msgstr "اعدادات الترقية I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:303 msgid "Check for I2P and news updates" -msgstr "" +msgstr "تحقق من اصدارات جديدة لـ I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:305 msgid "News & I2P Updates" msgstr "اخبار I2P واصدارات جديدة" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:309 msgid "Update In Progress" msgstr "جاري التحديث" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:317 msgid "News URL" msgstr "عنوان الأخبار" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:320 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:321 msgid "Refresh frequency" msgstr "تردد الانعاش" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:326 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:327 msgid "Update policy" msgstr "طريقة الترقية" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331 msgid "Update through the eepProxy?" msgstr "ترقية باستعمال eepProxy؟" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:334 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:335 msgid "eepProxy host" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:338 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:339 msgid "eepProxy port" msgstr "eepProxy منفذ" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:342 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:343 msgid "Update URLs" msgstr "تحديث العناوين" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:346 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:347 msgid "Trusted keys" msgstr "المفاتيح الموثوقة" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:350 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:351 msgid "Update with unsigned development builds?" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:354 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:355 msgid "Unsigned Build URL" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:360 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 msgid "I2P updates are disabled because you do not have write permission for the install directory." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:366 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:367 msgid "Save" msgstr "حفظ" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:115 +msgid "Internal Error" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:117 +msgid "Router Console" +msgstr "مركز تحكم I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:121 +msgid "Configuration" +msgstr "اعدادات" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129 +msgid "Sorry! There has been an internal error." +msgstr "" + +#. note to translators - both parameters are URLs +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:133 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:232 +#, java-format +msgid "Please report bugs on {0} or {1}." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 +msgid "You may use the username \"guest\" and password \"guest\" if you do not wish to register." +msgstr "بمكنك استعمال كلمة مستخدم guest و كلمة سر guest اذا لم ترغب في التسجيل" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 +msgid "Please include this information in bug reports" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:141 +msgid "Error Details" +msgstr "تفاصيل الخطأ" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:143 +#, java-format +msgid "Error {0}" +msgstr "خطأ {0}" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:163 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:228 +msgid "I2P Version and Running Environment" +msgstr "رقم اصدار I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 +msgid "Note that system information, log timestamps, and log messages may provide clues to your location; please review everything you include in a bug report." +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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:242 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:244 msgid "Error 404" msgstr "خطأ 404" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:250 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:249 msgid "not found" msgstr "غير موجود" @@ -5094,7 +5313,7 @@ msgstr "غير موجود" msgid "graphs" msgstr "رسم بياني" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:227 msgid "I2P Performance Graphs" msgstr "رسم بياني لأداء I2P" @@ -5106,7 +5325,7 @@ msgstr "منزل" msgid "job queue" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:226 msgid "I2P Router Job Queue" msgstr "" @@ -5114,31 +5333,19 @@ msgstr "" msgid "logs" msgstr "السجلات" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:226 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 "" - -#: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:281 msgid "Critical Logs" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:278 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:285 msgid "Router Logs" msgstr "سجلات الموجه" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:284 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:291 msgid "Service (Wrapper) Logs" msgstr "" @@ -5146,23 +5353,23 @@ msgstr "" msgid "network database summary" msgstr "قاعدة البيانات" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:226 msgid "I2P Network Database Summary" -msgstr "" +msgstr "احصائيات قاعدة بيانات الشبكة" #: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:230 msgid "Web Application Not Running" msgstr "تطبيق الويب لا يشتغل" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:233 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:232 msgid "The requested web application is not running." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:234 msgid "Please visit the config clients page to start it." msgstr "" @@ -5170,7 +5377,7 @@ msgstr "" msgid "peer connections" msgstr "الإتصال بالمستخدمين" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:226 msgid "I2P Network Peers" msgstr "I2P شبكة المستخدمين" @@ -5178,7 +5385,7 @@ msgstr "I2P شبكة المستخدمين" msgid "peer profiles" msgstr "بروفايل المستخدمين" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:226 msgid "I2P Network Peer Profiles" msgstr "" @@ -5186,11 +5393,11 @@ msgstr "" msgid "statistics" msgstr "احصائيات" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:245 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:243 msgid "I2P Router Statistics" msgstr "احصائيات شبكة I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:244 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:247 #, java-format msgid "Disable {0} Refresh" msgstr "الغاء {0} الانعاش" @@ -5199,10 +5406,46 @@ msgstr "الغاء {0} الانعاش" msgid "tunnel summary" msgstr "فهرس الأنفاق" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:226 msgid "I2P Tunnel Summary" msgstr "فهرس أنفاق I2P" +#~ msgid "" +#~ "Ensure that nothing blocks outbound HTTP, check logs and if nothing helps, read the FAQ about reseeding manually." +#~ msgstr "" +#~ "تحقق من logs and if nothing " +#~ "helps، read the FAQ about reseeding manually." + +#~ msgid "Last reseed failed fully (failed reading seed URL)." +#~ msgstr "فشل آخر توزيع ( تحميل العنوان)" + +#~ msgid "Last reseed failed fully (exception caught)." +#~ msgstr "فشل آخر توزيع" + +#~ msgid "System tray icon enabled." +#~ msgstr "تم تفعيل ابقونة" + +#~ msgid "System tray icon feature not supported on this platform. Sorry!" +#~ msgstr "إظهار الأيقونة غير مدعوم" + +#~ msgid "Warning: unable to contact the systray manager" +#~ msgstr "خطأ: فشل في الاتصال بمتحكم الأيقونة" + +#~ msgid "System tray icon disabled." +#~ msgstr "أيقونة النظام غير مفعلة." + +#~ msgid "hour" +#~ msgstr "ساعة" + +#~ msgid "minute" +#~ msgstr "دقيقة" + +#~ msgid "minutes" +#~ msgstr "دقائق" + #~ msgid "This is useful in some situations" #~ msgstr "C'est utile dans certains cas" diff --git a/apps/routerconsole/locale/messages_de.po b/apps/routerconsole/locale/messages_de.po index c911f0ed8..9ad72024f 100644 --- a/apps/routerconsole/locale/messages_de.po +++ b/apps/routerconsole/locale/messages_de.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-27 16:02+0000\n" +"POT-Creation-Date: 2011-03-03 18:27+0000\n" "PO-Revision-Date: 2011-02-27 18:31+0100\n" "Last-Translator: \n" -"Language-Team: echelon , Sperreingang \n" +"Language-Team: echelon , Sperreingang \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -177,8 +178,11 @@ msgstr "Reseed: Hole die Seed-URL" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281 #, java-format -msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." -msgstr "Reseed: Holen der Router-Informationen von Seed-URL ({0} erfolgreich, {1} Fehler)." +msgid "" +"Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." +msgstr "" +"Reseed: Holen der Router-Informationen von Seed-URL ({0} erfolgreich, {1} " +"Fehler)." #: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:512 msgid "NetDb entry" @@ -208,12 +212,21 @@ msgid "Help" msgstr "Hilfe" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 -msgid "Your transport connection limits are automatically set based on your configured bandwidth." -msgstr "Ihre Verbindungseinstellungen werden, basierend auf der von Ihnen zur Verfügung gestellten Bandbreite, automatisch vorgenommen." +msgid "" +"Your transport connection limits are automatically set based on your " +"configured bandwidth." +msgstr "" +"Ihre Verbindungseinstellungen werden, basierend auf der von Ihnen zur " +"Verfügung gestellten Bandbreite, automatisch vorgenommen." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 -msgid "To override these limits, add the settings i2np.ntcp.maxConnections=nnn and i2np.udp.maxConnections=nnn on the advanced configuration page." -msgstr "Um diese Einstellungen zu umgehen, fügen Sie folgende Einstellungen der Seite \"Erweiterte Einstellungen\" hinzu: i2np.ntcp.maxConnections=nnn und i2np.udp.maxConnections=nnn" +msgid "" +"To override these limits, add the settings i2np.ntcp.maxConnections=nnn and " +"i2np.udp.maxConnections=nnn on the advanced configuration page." +msgstr "" +"Um diese Einstellungen zu umgehen, fügen Sie folgende Einstellungen der " +"Seite \"Erweiterte Einstellungen\" hinzu: i2np.ntcp.maxConnections=nnn und " +"i2np.udp.maxConnections=nnn" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 @@ -252,11 +265,15 @@ msgstr "Ausgehende Verbindungen" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 msgid "They offered to introduce us (help other peers traverse our firewall)" -msgstr "Sie boten an, uns bekannt zu machen (anderen Teilnehmern helfen, unsere Firewall zu überwinden)" +msgstr "" +"Sie boten an, uns bekannt zu machen (anderen Teilnehmern helfen, unsere " +"Firewall zu überwinden)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 msgid "We offered to introduce them (help other peers traverse their firewall)" -msgstr "Wir bieten an, sie bekannt zu machen (anderen Teilnehmern helfen, ihre Firewall zu überwinden)" +msgstr "" +"Wir bieten an, sie bekannt zu machen (anderen Teilnehmern helfen, ihre " +"Firewall zu überwinden)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "How long since a packet has been received / sent" @@ -300,8 +317,12 @@ msgid "The difference between the peer's clock and your own" msgstr "Der Unterschied zwischen Ihrer und der Uhr des Teilnehmers" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 -msgid "The congestion window, which is how many bytes can be sent without an acknowledgement" -msgstr "Der Pufferspeicher, der angibt, wieviele Bytes Sie ohne Bestätigung senden können" +msgid "" +"The congestion window, which is how many bytes can be sent without an " +"acknowledgement" +msgstr "" +"Der Pufferspeicher, der angibt, wieviele Bytes Sie ohne Bestätigung senden " +"können" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 msgid "The number of sent messages awaiting acknowledgement" @@ -313,7 +334,9 @@ msgstr "Die maximale Anzahl von gleichzeitig sendbaren Nachrichten" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 msgid "The number of pending sends which exceed congestion window" -msgstr "Die Anzahl der ausstehenden Sendeanforderungen, die den Pufferspeicher überschreiten." +msgstr "" +"Die Anzahl der ausstehenden Sendeanforderungen, die den Pufferspeicher " +"überschreiten." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 msgid "The slow start threshold" @@ -337,8 +360,12 @@ msgid "The retransmit timeout in milliseconds" msgstr "Der Timeout beim erneuten Senden (in Millisekunden)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 -msgid "Current maximum send packet size / estimated maximum receive packet size (bytes)" -msgstr "Derzeit maximale Größe der gesendeten Pakete / geschätzte maximale Größe der empfangenen Pakete (Bytes)" +msgid "" +"Current maximum send packet size / estimated maximum receive packet size " +"(bytes)" +msgstr "" +"Derzeit maximale Größe der gesendeten Pakete / geschätzte maximale Größe der " +"empfangenen Pakete (Bytes)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 @@ -530,28 +557,29 @@ msgstr "Gesperrt" msgid "SUMMARY" msgstr "ZUSAMMENFASSUNG" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:147 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:124 msgid "Dropping tunnel requests: Too slow" msgstr "Ignoriere Tunnelanfragen: zu langsam" #. don't even bother, since we are so overloaded locally -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:354 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:267 msgid "Dropping tunnel requests: Overloaded" msgstr "Ignoriere Tunnelanfragen: überlastet" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:547 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:460 msgid "Rejecting tunnels: Request overload" msgstr "Weise Tunnelanfragen zurück: Überlast an Anfragen" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:572 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:485 msgid "Rejecting tunnels: Connection limit" msgstr "Weise Tunnelanfragen zurück: Verbindungslimit erreicht" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:788 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:685 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:706 msgid "Dropping tunnel requests: High load" msgstr "Ignoriere Tunnelanfragen: Hohe Last" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:797 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:698 msgid "Dropping tunnel requests: Queue time" msgstr "Ignoriere Tunnelanfragen: zu lange Warteschlange" @@ -1441,8 +1469,7 @@ msgstr "St. Vincent und die Grenadinen" 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 "US-Jungferninseln" @@ -1493,7 +1520,9 @@ msgstr "I2P-Routerkonsole" #: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:57 msgid "Error updating the configuration - please see the error logs" -msgstr "Fehler beim Aktualisieren der Einstellungen - Bitte schau in die Fehlerberichte!" +msgstr "" +"Fehler beim Aktualisieren der Einstellungen - Bitte schau in die " +"Fehlerberichte!" #: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:69 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:266 @@ -1502,8 +1531,12 @@ msgstr "Einstellungen erfolgreich gespeichert" #: ../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 "Fehler beim Speichern der Einstellungen (angewendet aber nicht gespeichert) - Bitte schau in die Fehlerberichte!" +msgid "" +"Error saving the configuration (applied but not saved) - please see the " +"error logs" +msgstr "" +"Fehler beim Speichern der Einstellungen (angewendet aber nicht gespeichert) " +"- Bitte schau in die Fehlerberichte!" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:335 @@ -1568,8 +1601,11 @@ msgid "New client added" msgstr "Neuer Klient hinzugefügt" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:193 -msgid "Client configuration saved successfully - restart required to take effect." -msgstr "Klienteninstellungen erfolgreich gespeichert - Neustart zum Übernehmen erforderlich" +msgid "" +"Client configuration saved successfully - restart required to take effect." +msgstr "" +"Klienteninstellungen erfolgreich gespeichert - Neustart zum Übernehmen " +"erforderlich" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 @@ -1652,8 +1688,11 @@ msgid "Error starting plugin {0}" msgstr "Fehler beim Starten des Zusatzprogramms {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 -msgid "Interface configuration saved successfully - restart required to take effect." -msgstr "Interface-Einstellungen erfolgreich gespeichert - Neustart zum Übernehmen erforderlich" +msgid "" +"Interface configuration saved successfully - restart required to take effect." +msgstr "" +"Interface-Einstellungen erfolgreich gespeichert - Neustart zum Übernehmen " +"erforderlich" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:85 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258 @@ -1800,12 +1839,19 @@ msgid "Log configuration saved" msgstr "Einstellungen der Berichte gespeichert." #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 -msgid "Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" -msgstr "Fügen Sie weitere Log-Anweisungen oben hinzu. Zum Beispiel: net.i2p.router.tunnel=WARN" +msgid "" +"Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" +msgstr "" +"Fügen Sie weitere Log-Anweisungen oben hinzu. Zum Beispiel: net.i2p.router." +"tunnel=WARN" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:49 -msgid "Or put entries in the logger.config file. Example: logger.record.net.i2p.router.tunnel=WARN" -msgstr "Oder machen sie Einträge in die logger.config-Datei. Zum Beispiel: net.i2p.router.tunnel=WARN" +msgid "" +"Or put entries in the logger.config file. Example: logger.record.net.i2p." +"router.tunnel=WARN" +msgstr "" +"Oder machen sie Einträge in die logger.config-Datei. Zum Beispiel: net.i2p." +"router.tunnel=WARN" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:50 msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT" @@ -1975,7 +2021,8 @@ msgstr "Benötige SSU-Hilfsrouter" #. 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 "Starte I2P kontrolliert neu, um die veröffentlichte Router-Adresse zu ändern" +msgstr "" +"Starte I2P kontrolliert neu, um die veröffentlichte Router-Adresse zu ändern" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:314 msgid "Updating bandwidth share percentage" @@ -2229,8 +2276,12 @@ msgid "Failed to update the stat filter and location" msgstr "Konnte Statusfilter und Speicherort nicht aktualisieren" #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:114 -msgid "Graph list updated, may take up to 60s to be reflected here and on the Graphs Page" -msgstr "Liste der Grafiken aktualisiert. Es dauert bis zu 60s, um hier und auf Graphenseite angezeigt zu werden." +msgid "" +"Graph list updated, may take up to 60s to be reflected here and on the Graphs Page" +msgstr "" +"Liste der Grafiken aktualisiert. Es dauert bis zu 60s, um hier und auf Graphenseite angezeigt zu werden." #. the count isn't really correct anyway, since we don't check for actual changes #. addFormNotice("Updated settings for " + updated + " pools."); @@ -2244,7 +2295,9 @@ msgstr "Erkundungstunneleinstellungen erfolgreich gespeichert" #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:36 -msgid "Error saving the configuration (applied but not saved) - please see the error logs." +msgid "" +"Error saving the configuration (applied but not saved) - please see the " +"error logs." msgstr "" "Fehler beim Speichern der Einstellungen (angewendet aber nicht gespeichert)\n" "- sieh bitte in die Fehlerberichte!" @@ -2276,11 +2329,14 @@ msgstr "Kliententunnel für" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:69 msgid "ANONYMITY WARNING - Settings include 0-hop tunnels." -msgstr "ANONYMITÄTSWARNUNG - Einstellungen beinhalten Tunnel ohne Zwischenstationen" +msgstr "" +"ANONYMITÄTSWARNUNG - Einstellungen beinhalten Tunnel ohne Zwischenstationen" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74 msgid "ANONYMITY WARNING - Settings include 1-hop tunnels." -msgstr "ANONYMITÄTSWARNUNG - Einstellungen beinhalten Tunnel mit nur einer Zwischenstation" +msgstr "" +"ANONYMITÄTSWARNUNG - Einstellungen beinhalten Tunnel mit nur einer " +"Zwischenstation" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:77 msgid "PERFORMANCE WARNING - Settings include very long tunnels." @@ -2373,7 +2429,8 @@ msgstr "Aktualisierung verfügbar; versuche, diese herunterzuladen" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:87 msgid "Update available, click button on left to download" -msgstr "Aktualisierung verfügbar. Klick auf den Knopf links, um sie herunterzuladen!" +msgstr "" +"Aktualisierung verfügbar. Klick auf den Knopf links, um sie herunterzuladen!" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:93 msgid "No update available" @@ -2433,8 +2490,13 @@ msgid "Download, verify, and restart" msgstr "Herunterladen, überprüfen und neustarten" #: ../java/src/net/i2p/router/web/FormHandler.java:174 -msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit." -msgstr "Ungültige Übertragung der eingegebenen Daten, möglicherweise da Sie den 'Zurück'- oder 'Neu Laden'-Knopf in Ihrem Browser gedrückt haben. Bitte erneut senden." +msgid "" +"Invalid form submission, probably because you used the 'back' or 'reload' " +"button on your browser. Please resubmit." +msgstr "" +"Ungültige Übertragung der eingegebenen Daten, möglicherweise da Sie den " +"'Zurück'- oder 'Neu Laden'-Knopf in Ihrem Browser gedrückt haben. Bitte " +"erneut senden." #: ../java/src/net/i2p/router/web/GraphHelper.java:93 msgid "Combined bandwidth graph" @@ -2789,35 +2851,51 @@ msgid "This plugin requires Java version {0} or higher" msgstr "Dieses Zusatzprogramm benötigt Java-Version {0} oder neuer" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 -msgid "Downloaded plugin is for new installs only, but the plugin is already installed" -msgstr "Heruntergeladenes Zusatzprogramm lässt sich nur neu installieren, jedoch ist es ist bereits installiert." +msgid "" +"Downloaded plugin is for new installs only, but the plugin is already " +"installed" +msgstr "" +"Heruntergeladenes Zusatzprogramm lässt sich nur neu installieren, jedoch ist " +"es ist bereits installiert." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:305 msgid "Installed plugin does not contain the required configuration file" -msgstr "Das installierte Zusatzprogramm enthält nicht die benötigte Konfigurationsdatei" +msgstr "" +"Das installierte Zusatzprogramm enthält nicht die benötigte " +"Konfigurationsdatei" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:313 msgid "Signature of downloaded plugin does not match installed plugin" -msgstr "Die Signatur des heruntergeladenen Zusatzprogramms stimmt nicht mit dem installierten Zusatzprogramm überein." +msgstr "" +"Die Signatur des heruntergeladenen Zusatzprogramms stimmt nicht mit dem " +"installierten Zusatzprogramm überein." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:320 #, java-format msgid "Downloaded plugin version {0} is not newer than installed plugin" -msgstr "Version {0} des heruntergeladenen Zusatzprogramms ist nicht neuer als die installierte Version" +msgstr "" +"Version {0} des heruntergeladenen Zusatzprogramms ist nicht neuer als die " +"installierte Version" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:327 #, java-format msgid "Plugin update requires installed plugin version {0} or higher" -msgstr "Aktualisierung des Zusatzprogramms benötigt Version {0} oder höher des Zusatzprogramms" +msgstr "" +"Aktualisierung des Zusatzprogramms benötigt Version {0} oder höher des " +"Zusatzprogramms" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:334 #, java-format msgid "Plugin update requires installed plugin version {0} or lower" -msgstr "Aktualisierung des Zusatzprogramms benötigt installierte Version {0} oder älter des Zusatzprogramms" +msgstr "" +"Aktualisierung des Zusatzprogramms benötigt installierte Version {0} oder " +"älter des Zusatzprogramms" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351 msgid "Plugin is for upgrades only, but the plugin is not installed" -msgstr "Dieses Zusatzprogramm ist nur für Aktualisierungen, aber das Zusatzprogramm ist noch nicht installiert" +msgstr "" +"Dieses Zusatzprogramm ist nur für Aktualisierungen, aber das Zusatzprogramm " +"ist noch nicht installiert" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:364 #, java-format @@ -2842,7 +2920,9 @@ msgstr "Zusatzprogramm {0} installiert und gestartet" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:394 #, java-format msgid "Plugin {0} installed but failed to start, check logs" -msgstr "Zusatzprogramm {0} wurde installiert konnte jedoch nicht gestartet werden. Überprüfen Sie die Berichte!" +msgstr "" +"Zusatzprogramm {0} wurde installiert konnte jedoch nicht gestartet werden. " +"Überprüfen Sie die Berichte!" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:396 #, java-format @@ -3023,7 +3103,8 @@ msgstr "Gruppen" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 msgid "capabilities in the netDb, not used to determine profiles" -msgstr "Werte in der Netzwerkdatenbank, nicht zum Ermitteln der Profile verwendet" +msgstr "" +"Werte in der Netzwerkdatenbank, nicht zum Ermitteln der Profile verwendet" #. capabilities #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 @@ -3032,8 +3113,12 @@ msgid "caps" msgstr "Kategorien" #: ../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 "maximaler Durchsatz (Bytes je Tunnel) innerhalb einer Minute, den ein Teilnehmer in einem einzelnen Tunnel erreicht hat" +msgid "" +"peak throughput (bytes per second) over a 1 minute period that the peer has " +"sustained in a single tunnel" +msgstr "" +"maximaler Durchsatz (Bytes je Tunnel) innerhalb einer Minute, den ein " +"Teilnehmer in einem einzelnen Tunnel erreicht hat" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 msgid "speed" @@ -3045,7 +3130,9 @@ msgstr "Kapazität" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 msgid "how many tunnels can we ask them to join in an hour?" -msgstr "Wie viele Tunnel können wir bei diesem Teilnehmer innerhalb einer Stunde bekommen?" +msgstr "" +"Wie viele Tunnel können wir bei diesem Teilnehmer innerhalb einer Stunde " +"bekommen?" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 msgid "how many new peers have they told us about lately?" @@ -3057,7 +3144,9 @@ msgstr "Integration" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 msgid "is the peer banned, or unreachable, or failing tunnel tests?" -msgstr "Ist der Teilnehmer gesperrt, unerreichbar, oder schlagen die Tunneltests fehl?" +msgstr "" +"Ist der Teilnehmer gesperrt, unerreichbar, oder schlagen die Tunneltests " +"fehl?" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 msgid "status" @@ -3121,12 +3210,17 @@ msgid "Statistics gathered during this router's uptime" msgstr "Zur Laufzeit dieses Routers gesammelte Statistiken" #: ../java/src/net/i2p/router/web/StatsGenerator.java:63 -msgid "The data gathered is quantized over a 1 minute period, so should just be used as an estimate." -msgstr "Die Daten werden über jeweils 1 Minute erhoben und repräsentieren daher nur eine Näherung." +msgid "" +"The data gathered is quantized over a 1 minute period, so should just be " +"used as an estimate." +msgstr "" +"Die Daten werden über jeweils 1 Minute erhoben und repräsentieren daher nur " +"eine Näherung." #: ../java/src/net/i2p/router/web/StatsGenerator.java:64 msgid "These statistics are primarily used for development and debugging." -msgstr "Diese Statistiken dienen vorrangig der Entwicklung und Fehlerbeseitigung." +msgstr "" +"Diese Statistiken dienen vorrangig der Entwicklung und Fehlerbeseitigung." #: ../java/src/net/i2p/router/web/StatsGenerator.java:105 #: ../java/src/net/i2p/router/web/StatsGenerator.java:156 @@ -3139,7 +3233,8 @@ msgstr "Häufigkeit" #: ../java/src/net/i2p/router/web/StatsGenerator.java:120 msgid "Rolling average events per period" -msgstr "Fortschreitender Durchschnittshäufigkeit von Ereignissen je Zeitintervall" +msgstr "" +"Fortschreitender Durchschnittshäufigkeit von Ereignissen je Zeitintervall" #: ../java/src/net/i2p/router/web/StatsGenerator.java:124 msgid "Highest events per period" @@ -3223,8 +3318,12 @@ msgid "Help & FAQ" msgstr "Hilfe & FAQ" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:55 -msgid "Configure startup of clients and webapps (services); manually start dormant services" -msgstr "Autostart-Einstellungen der Klienten und WebApplikationen (Services); manuelles Starten der ruhenden Services" +msgid "" +"Configure startup of clients and webapps (services); manually start dormant " +"services" +msgstr "" +"Autostart-Einstellungen der Klienten und WebApplikationen (Services); " +"manuelles Starten der ruhenden Services" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:57 msgid "I2P Services" @@ -3359,8 +3458,11 @@ msgid "Uptime" msgstr "Laufzeit" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 -msgid "Help with configuring your firewall and router for optimal I2P performance" -msgstr "Hilfe bei der Konfiguration Ihrer Firewall und Ihres Routers für eine optimale Leistung." +msgid "" +"Help with configuring your firewall and router for optimal I2P performance" +msgstr "" +"Hilfe bei der Konfiguration Ihrer Firewall und Ihres Routers für eine " +"optimale Leistung." #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 msgid "Download" @@ -3492,12 +3594,18 @@ msgid "Firewalled" msgstr "Firewall aktiv" #: ../java/src/net/i2p/router/web/SummaryHelper.java:135 -msgid "ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" -msgstr "FEHLER: UDP Port ist belegt. Setze i2np.udp.internalPort=xxxx in der Konfiguration für Profis und starte I2P neu!" +msgid "" +"ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and " +"restart" +msgstr "" +"FEHLER: UDP Port ist belegt. Setze i2np.udp.internalPort=xxxx in der " +"Konfiguration für Profis und starte I2P neu!" #: ../java/src/net/i2p/router/web/SummaryHelper.java:141 msgid "ERR-No Active Peers, Check Network Connection and Firewall" -msgstr "FEHLER: Keine aktiven Teilnehmer. Überprüfen Sie Firewall und Netzwekrverbindung!" +msgstr "" +"FEHLER: Keine aktiven Teilnehmer. Überprüfen Sie Firewall und " +"Netzwekrverbindung!" #: ../java/src/net/i2p/router/web/SummaryHelper.java:144 msgid "ERR-UDP Disabled and Inbound TCP host/port not set" @@ -4111,7 +4219,9 @@ msgid "Bandwidth limiter" msgstr "Bandbreitenbegrenzer" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:300 -msgid "I2P will work best if you configure your rates to match the speed of your internet connection." +msgid "" +"I2P will work best if you configure your rates to match the speed of your " +"internet connection." msgstr "" "I2P funktioniert am besten, wenn Sie die Werte so konfigurieren, \n" "dass die Geschwindigkeit zu Ihrer Internetverbindung passt." @@ -4144,13 +4254,16 @@ msgid "I2P requires at least 12KBps to enable sharing. " msgstr "I2P benötigt mindestens 12 kbit/s, um das Durchleiten zu ermöglichen. " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347 -msgid "Please enable sharing (participating in tunnels) by configuring more bandwidth. " +msgid "" +"Please enable sharing (participating in tunnels) by configuring more " +"bandwidth. " msgstr "" "Bitte aktivieren Sie die gemeinsame Nutzung (Teilnahme an Tunneln),\n" "indem Sie mehr Bandbreite freigeben. " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:348 -msgid "It improves your anonymity by creating cover traffic, and helps the network." +msgid "" +"It improves your anonymity by creating cover traffic, and helps the network." msgstr "" "Es verbessert Ihre Anonymität durch Herstellen von s. g. Rauschen und \n" "es hilft zudem dem Netzwerk." @@ -4161,9 +4274,12 @@ msgid "You have configured I2P to share {0} KBps." msgstr "Sie haben I2P konfiguriert, {0} kbit/s durchzuleiten. " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:354 -msgid "The higher the share bandwidth the more you improve your anonymity and help the network." +msgid "" +"The higher the share bandwidth the more you improve your anonymity and help " +"the network." msgstr "" -"Je höher der Anteil an geteilter Bandbreite ist, desto mehr verbessert sich \n" +"Je höher der Anteil an geteilter Bandbreite ist, desto mehr verbessert " +"sich \n" "Ihre Anonymität, und darüber hinaus hilft es dem Netz. " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:358 @@ -4254,8 +4370,12 @@ msgid "Action when IP changes" msgstr "Aktion wenn sich die IP-Adresse ändert" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:439 -msgid "Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity" -msgstr "Laptop Modus - ändert zur Erhöhung der Anonymität Ihre Router-Identifikation und den UDP-Port, wenn sich Ihre IP ändert" +msgid "" +"Laptop mode - Change router identity and UDP port when IP changes for " +"enhanced anonymity" +msgstr "" +"Laptop Modus - ändert zur Erhöhung der Anonymität Ihre Router-Identifikation " +"und den UDP-Port, wenn sich Ihre IP ändert" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:441 msgid "Experimental" @@ -4288,7 +4408,8 @@ msgstr "wenn keine Firewall aktiv ist" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:475 msgid "Always use auto-detected IP address (Not firewalled)" -msgstr "Immer die automatisch erkannte IP-Adresse benutzen (bei inaktiver Firewall)" +msgstr "" +"Immer die automatisch erkannte IP-Adresse benutzen (bei inaktiver Firewall)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 msgid "Disable inbound (Firewalled)" @@ -4299,9 +4420,11 @@ msgid "Completely disable" msgstr "Komplett deaktivieren" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:491 -msgid "(select only if behind a firewall that throttles or blocks outbound TCP)" +msgid "" +"(select only if behind a firewall that throttles or blocks outbound TCP)" msgstr "" -"(nur auswählen, wenn dieser Router hinter einer Firewall ist, die ausgehenden \n" +"(nur auswählen, wenn dieser Router hinter einer Firewall ist, die " +"ausgehenden \n" "TCP-Verkehr blokiertt oder begrenzt)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 @@ -4332,26 +4455,41 @@ msgstr "Konfigurationshilfe" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:520 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 -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 funktioniert auch hinter den meisten Firewalls, aber die Geschwindigkeit und Integration ins I2P-Netz erhöhen sich, wenn der I2P-Port in der Firewall für TCP und UDP freigegeben und auf Ihren Computer weitergeleitet wird." +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 funktioniert auch hinter den meisten Firewalls, aber die Geschwindigkeit " +"und Integration ins I2P-Netz erhöhen sich, wenn der I2P-Port in der Firewall " +"für TCP und UDP freigegeben und auf Ihren Computer weitergeleitet wird." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:522 -msgid "If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you." +msgid "" +"If you can, please poke a hole in your firewall to allow unsolicited UDP and " +"TCP packets to reach you." msgstr "" "Falls es Ihnen möglich ist, richten Sie bitte Ihre Firewall so ein, dass \n" "TCP- und UDP-Pakete Ihren Computer unverändert erreichen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:524 -msgid "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic." +msgid "" +"If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole " +"punching with \"SSU introductions\" to relay traffic." msgstr "" -"Falls Ihnen das nicht möglich ist, hat I2P UPnP-Unterstützung (Universelles \n" -"Plug and Play) und UDP-Weiterleitung mit Hilfe der „SSU-Hilfsrouter“ eingebaut." +"Falls Ihnen das nicht möglich ist, hat I2P UPnP-Unterstützung " +"(Universelles \n" +"Plug and Play) und UDP-Weiterleitung mit Hilfe der „SSU-Hilfsrouter“ " +"eingebaut." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:526 -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." +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 "" "Die meisten der obenstehenden Optionen sind für besondere Situationen,\n" -"wenn z. B. UPnP nicht funktioniert oder die Firewall nicht geändert werden \n" +"wenn z. B. UPnP nicht funktioniert oder die Firewall nicht geändert " +"werden \n" "kann und Probleme bereitet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:528 @@ -4361,9 +4499,12 @@ msgstr "" "nicht gut mit I2P zusammen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:537 -msgid "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports." +msgid "" +"UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect " +"the external IP address and forward ports." msgstr "" -"UPnP kommuniziert normalerweise mit den Internet Gateway Devices (IGDs), um \n" +"UPnP kommuniziert normalerweise mit den Internet Gateway Devices (IGDs), " +"um \n" "die extern erreichbare IP-Adresse zu ermitteln und die Ports weiterzuleiten." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:539 @@ -4401,50 +4542,67 @@ msgid "Review the UPnP status here." msgstr "Überprüfen Sie hier den UPnP-Status." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 -msgid "UPnP may be enabled or disabled above, but a change requires a router restart to take effect." +msgid "" +"UPnP may be enabled or disabled above, but a change requires a router " +"restart to take effect." msgstr "" "UPnP kann aktiviert oder deaktiviert werden, aber ein wechseln \n" "erfordert einen Routerneustart um wirksam zu werden." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 msgid "Hostnames entered above will be published in the network database." -msgstr "Oben eingegebene Hostnamen werden in der Netzwerk-Datenbank veröffentlicht." +msgstr "" +"Oben eingegebene Hostnamen werden in der Netzwerk-Datenbank veröffentlicht." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 msgid "They are not private." msgstr "Sie sind nicht geheim." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 -msgid "Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1." +msgid "" +"Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1." msgstr "" "Geben Sie auch keine IP-Adresse für den privaten Gebrauch wie\n" "127.0.0.1 oder 192.168.1.1 an!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 -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." +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 "" -"Wenn Sie eine falsche IP-Adresse oder einen falschen Hostnamen angeben, oder Ihre Firewall oder NAT nicht richtig konfigurieren, \n" +"Wenn Sie eine falsche IP-Adresse oder einen falschen Hostnamen angeben, oder " +"Ihre Firewall oder NAT nicht richtig konfigurieren, \n" "wird sich Ihre Netzwerk-Performance erheblich verschlechtern." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 msgid "When in doubt, leave the settings at the defaults." -msgstr "Wenn Sie Zweifel haben, lassen Sie die Einstellungen auf den Standardwerten." +msgstr "" +"Wenn Sie Zweifel haben, lassen Sie die Einstellungen auf den Standardwerten." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 msgid "Reachability Help" msgstr "Hilfe zur Erreichbarkeit" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:572 -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." +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 "" -"Wenn Sie meinen, Sie haben Ihre Firewall geöffnet und I2P breichtet dennoch, es wäre\n" -"hinter einer Firewall, dann prüfen Sie, ob Sie möglicherweise mehrere Firewalls\n" +"Wenn Sie meinen, Sie haben Ihre Firewall geöffnet und I2P breichtet dennoch, " +"es wäre\n" +"hinter einer Firewall, dann prüfen Sie, ob Sie möglicherweise mehrere " +"Firewalls\n" "- zum Beispiel sowohl Software- als auch externer Hardware-Router - haben." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575 -msgid "If there is an error, the logs may also help diagnose the problem." +msgid "" +"If there is an error, the logs may also help " +"diagnose the problem." msgstr "" -"Wenn ein Fehler auftritt, können die Berichte helfen, \n" +"Wenn ein Fehler auftritt, können die Berichte " +"helfen, \n" "das Problem zu diagnostizieren." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 @@ -4456,83 +4614,139 @@ msgid "Your UDP port appears to be firewalled." msgstr "Ihr UDP-Port wird anscheinend von der Firewall geblockt." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 -msgid "As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error." +msgid "" +"As the firewall detection methods are not 100% reliable, this may " +"occasionally be displayed in error." msgstr "" "Da die Firewall-Nachweismethoden nicht zu 100% zuverlässig sind, ist die \n" "Anzeige gelegentlich fehlerhaft." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587 -msgid "However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port." +msgid "" +"However, if it appears consistently, you should check whether both your " +"external and internal firewalls are open for your port." msgstr "" -"Wenn es allerdings dauerhaft angezeigt wird, sollten Sie überprüfen, ob Ihre Ports,\n" +"Wenn es allerdings dauerhaft angezeigt wird, sollten Sie überprüfen, ob Ihre " +"Ports,\n" "sowohl der externen wie auch der internen Firewall, geöffnet sind." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:589 -msgid "I2P will work fine when firewalled, there is no reason for concern. When firewalled, the router uses \"introducers\" to relay inbound connections." +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 wird auch mit geschlossener Firewall gut funktionieren, es besteht kein \n" +"I2P wird auch mit geschlossener Firewall gut funktionieren, es besteht " +"kein \n" "Grund zur Besorgnis. Bei geschlossener Firewall verwendet der Router \n" "\"Hilfsrouter\", um eingehende Verbindungen zu übertragen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:591 -msgid "However, you will get more participating traffic and help the network more if you can open your firewall(s)." -msgstr "Falls Sie Ihre Firewall(s) öffnen, helfen Sie dem Netzwerk mehr und gleichzeitig erhöhen Sie Ihre Anonymität durch die Teilnahme an fremden Tunneln." +msgid "" +"However, you will get more participating traffic and help the network more " +"if you can open your firewall(s)." +msgstr "" +"Falls Sie Ihre Firewall(s) öffnen, helfen Sie dem Netzwerk mehr und " +"gleichzeitig erhöhen Sie Ihre Anonymität durch die Teilnahme an fremden " +"Tunneln." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593 -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 "Falls Sie dies schon getan haben, denken Sie bitte daran, dass Sie eine Hardware- und eine Software-Firewall haben könnten, oder aber hinter einer Firewall sind, die Sie nicht ändern können (z.B. seitens Ihres Providers)." +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 "" +"Falls Sie dies schon getan haben, denken Sie bitte daran, dass Sie eine " +"Hardware- und eine Software-Firewall haben könnten, oder aber hinter einer " +"Firewall sind, die Sie nicht ändern können (z.B. seitens Ihres Providers)." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:595 -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 "Auch können manche Router nicht TCP und UDP korrekt auf dem selben Port weiterleiten, oder haben andere Beschränkungen oder Fehler, die die Portweiterleitung an den I2P-Router behindern." +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 "" +"Auch können manche Router nicht TCP und UDP korrekt auf dem selben Port " +"weiterleiten, oder haben andere Beschränkungen oder Fehler, die die " +"Portweiterleitung an den I2P-Router behindern." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 msgid "The router is currently testing whether your UDP port is firewalled." msgstr "Der Router testet gerade, ob Ihr UDP-Port offen ist." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603 -msgid "The router is not configured to publish its address, therefore it does not expect incoming connections." -msgstr "Die Einstellungen des Routers verhindern die Veröffentlichung der Adresse, deswegen akzeptiert er keine eingehenden Verbindungen." +msgid "" +"The router is not configured to publish its address, therefore it does not " +"expect incoming connections." +msgstr "" +"Die Einstellungen des Routers verhindern die Veröffentlichung der Adresse, " +"deswegen akzeptiert er keine eingehenden Verbindungen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 msgid "WARN - Firewalled and Fast" msgstr "WARNUNG: Firewall aktiv und schnell" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 -msgid "You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled." -msgstr "Sie haben I2P angewiesen, mehr als 128 kbit/s Bandbreite zu teilen, aber leider sind Sie hinter einer Firewall." +msgid "" +"You have configured I2P to share more than 128KBps of bandwidth, but you are " +"firewalled." +msgstr "" +"Sie haben I2P angewiesen, mehr als 128 kbit/s Bandbreite zu teilen, aber " +"leider sind Sie hinter einer Firewall." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 -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 funktioniert zwar auch mit dieser Einstellung, falls Sie jedoch wirklich über mehr als 128 kbit/s Bandbreite zum Teilen verfügen, sind Sie mit einer offenen Firewall viel hilfreicher für das Netzwerk." +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 funktioniert zwar auch mit dieser Einstellung, falls Sie jedoch wirklich " +"über mehr als 128 kbit/s Bandbreite zum Teilen verfügen, sind Sie mit einer " +"offenen Firewall viel hilfreicher für das Netzwerk." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 msgid "WARN - Firewalled and Floodfill" msgstr "WARNUNG: Firewall und Floodfillfunktion aktiv" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 -msgid "You have configured I2P to be a floodfill router, but you are firewalled." -msgstr "Sie haben I2P als Floodfill-Router eingerichtet, jedoch sind sie hinter einer Firewall." +msgid "" +"You have configured I2P to be a floodfill router, but you are firewalled." +msgstr "" +"Sie haben I2P als Floodfill-Router eingerichtet, jedoch sind sie hinter " +"einer Firewall." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 -msgid "For best participation as a floodfill router, you should open your firewall." -msgstr "Für die beste Teilnahme als Floodfill-Router, sollten Sie Ihre Firewall öffnen." +msgid "" +"For best participation as a floodfill router, you should open your firewall." +msgstr "" +"Für die beste Teilnahme als Floodfill-Router, sollten Sie Ihre Firewall " +"öffnen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 msgid "WARN - Firewalled with Inbound TCP Enabled" msgstr "WARNUNG: von Firewall geblockt und ankommendes TCP aktiviert" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 -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 "Sie haben eingehendes TCP konfiguriert, jedoch ist ihr UDP-Port hinter einer Firewall. Deswegen ist es wahrscheinlich, dass Ihr TCP-Port auch hinter einer Firewall ist." +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 "" +"Sie haben eingehendes TCP konfiguriert, jedoch ist ihr UDP-Port hinter einer " +"Firewall. Deswegen ist es wahrscheinlich, dass Ihr TCP-Port auch hinter " +"einer Firewall ist." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 -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 "Falls Ihr TCP Port gesperrt ist und Sie \"eingehendes TCP\" aktiviert haben, werden andere Router Sie nicht via TCP erreichen können. Dies schadet dem Netzwerk." +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 "" +"Falls Ihr TCP Port gesperrt ist und Sie \"eingehendes TCP\" aktiviert haben, " +"werden andere Router Sie nicht via TCP erreichen können. Dies schadet dem " +"Netzwerk." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 msgid "Please open your firewall or disable inbound TCP above." -msgstr "Bitte öffnen Sie Ihre Firewall oder schalten Sie ankommendes TCP oben aus" +msgstr "" +"Bitte öffnen Sie Ihre Firewall oder schalten Sie ankommendes TCP oben aus" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 msgid "WARN - Firewalled with UDP Disabled" @@ -4543,8 +4757,12 @@ msgid "You have configured inbound TCP, however you have disabled UDP." msgstr "Sie haben eingehendes TCP aktiviert, jedoch UDP deaktiviert." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 -msgid "You appear to be firewalled on TCP, therefore your router cannot accept inbound connections." -msgstr "Sie scheinen auf TCP eine Firewall zu haben, deswegen kann Ihr Router keine eingehenden Verbindungen entgegennehmen." +msgid "" +"You appear to be firewalled on TCP, therefore your router cannot accept " +"inbound connections." +msgstr "" +"Sie scheinen auf TCP eine Firewall zu haben, deswegen kann Ihr Router keine " +"eingehenden Verbindungen entgegennehmen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:631 msgid "Please open your firewall or enable UDP." @@ -4555,8 +4773,12 @@ msgid "ERR - Clock Skew" msgstr "FEHLER: Uhr nicht synchron" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 -msgid "Your system's clock is skewed, which will make it difficult to participate in the network." -msgstr "Ihre Uhrzeit ist nicht synchron mit dem Netzwerk, dies macht es schwierig, am Netzwerk teilzunehmen." +msgid "" +"Your system's clock is skewed, which will make it difficult to participate " +"in the network." +msgstr "" +"Ihre Uhrzeit ist nicht synchron mit dem Netzwerk, dies macht es schwierig, " +"am Netzwerk teilzunehmen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:637 msgid "Correct your clock setting if this error persists." @@ -4567,12 +4789,17 @@ msgid "ERR - Private TCP Address" msgstr "FEHLER: Private TCP-Adresse" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 -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 "Sie dürfen nie eine nicht routebare IP wie 127.0.0.1 oder 192.168.1.1 als Ihre extern erreichbare Adresse angeben." +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 "" +"Sie dürfen nie eine nicht routebare IP wie 127.0.0.1 oder 192.168.1.1 als " +"Ihre extern erreichbare Adresse angeben." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 msgid "Correct the address or disable inbound TCP above." -msgstr "Korrigieren Sie die Adresse oder deaktivieren Sie eingehendes TCP oben!" +msgstr "" +"Korrigieren Sie die Adresse oder deaktivieren Sie eingehendes TCP oben!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 msgid "ERR - SymmetricNAT" @@ -4580,27 +4807,47 @@ msgstr "FEHLER: symmetrische NAT" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 msgid "I2P detected that you are firewalled by a Symmetric NAT." -msgstr "I2P hat erkannt, dass Sie hinter einer symmetrischen NAT gesperrt sind." +msgstr "" +"I2P hat erkannt, dass Sie hinter einer symmetrischen NAT gesperrt sind." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 -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 funktioniert hinter diesem Typ Firewall nicht gut. Sie können wahrscheinlich keine eingehenden Verbindungen akzeptieren, was Ihre Teilnahme am Netzwerk beeinträchtigt." +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 funktioniert hinter diesem Typ Firewall nicht gut. Sie können " +"wahrscheinlich keine eingehenden Verbindungen akzeptieren, was Ihre " +"Teilnahme am Netzwerk beeinträchtigt." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:651 -msgid "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" -msgstr "FEHLER: UDP-Port wird schon benutzt. Setzen Sie i2np.udp.internalPort=xxxx in den erweiterten Einstellungen und starten Sie neu!" +msgid "" +"ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config " +"and restart" +msgstr "" +"FEHLER: UDP-Port wird schon benutzt. Setzen Sie i2np.udp.internalPort=xxxx " +"in den erweiterten Einstellungen und starten Sie neu!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 msgid "I2P was unable to bind to port 8887 or other configured port." msgstr "I2P konnte sich nicht auf den konfigurierten Port binden." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:655 -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 "Überprüfen Sie, ob ein anderes Programm den eingestellten Port benutzt. Falls ja, beenden Sie dieses Programm oder wählen Sie einen anderen Port für I2P!" +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 "" +"Überprüfen Sie, ob ein anderes Programm den eingestellten Port benutzt. " +"Falls ja, beenden Sie dieses Programm oder wählen Sie einen anderen Port für " +"I2P!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:657 -msgid "This may be a transient error, if the other program is no longer using the port." -msgstr "Dies kann ein vorübergehender Fehler sein, falls das andere Programm diesen Port nicht mehr nutzt." +msgid "" +"This may be a transient error, if the other program is no longer using the " +"port." +msgstr "" +"Dies kann ein vorübergehender Fehler sein, falls das andere Programm diesen " +"Port nicht mehr nutzt." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:659 msgid "However, a restart is always required after this error." @@ -4608,11 +4855,16 @@ msgstr "Jedoch ist nach diesem Fehler immer ein Neustart erforderlich." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 msgid "ERR - UDP Disabled and Inbound TCP host/port not set" -msgstr "FEHLER: UDP deaktiviert und eingehende TCP-Adresse/Port nicht konfiguriert" +msgstr "" +"FEHLER: UDP deaktiviert und eingehende TCP-Adresse/Port nicht konfiguriert" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:663 -msgid "You have not configured inbound TCP with a hostname and port above, however you have disabled UDP." -msgstr "Sie haben unter TCP eingehend keinen Hostnamen und Port eingetragen und dennoch UDP deaktiviert." +msgid "" +"You have not configured inbound TCP with a hostname and port above, however " +"you have disabled UDP." +msgstr "" +"Sie haben unter TCP eingehend keinen Hostnamen und Port eingetragen und " +"dennoch UDP deaktiviert." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:665 msgid "Therefore your router cannot accept inbound connections." @@ -4620,7 +4872,9 @@ msgstr "Somit kann Ihr Router keine eigehenden Verbindungen akzeptieren." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:667 msgid "Please configure a TCP host and port above or enable UDP." -msgstr "Bitte konfigurieren Sie eine Adresse und einen Port im oberen Bereich für TCP oder aktivieren Sie UDP!" +msgstr "" +"Bitte konfigurieren Sie eine Adresse und einen Port im oberen Bereich für " +"TCP oder aktivieren Sie UDP!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:669 msgid "ERR - Client Manager I2CP Error - check logs" @@ -4628,11 +4882,17 @@ msgstr "FEHLER: Klientenmanager I2CP Fehler - Schauen Sie in die Berichte!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 msgid "This is usually due to a port 7654 conflict. Check the logs to verify." -msgstr "Dies geschieht für gewöhnlich wegen eines Konflikts auf Port 7654. Prüfen Sie die Berichte, um dies zu verifizieren!" +msgstr "" +"Dies geschieht für gewöhnlich wegen eines Konflikts auf Port 7654. Prüfen " +"Sie die Berichte, um dies zu verifizieren!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:673 -msgid "Do you have another I2P instance running? Stop the conflicting program and restart I2P." -msgstr "Haben Sie eine zweite I2P-Instanz laufen? Beenden Sie das störende Programm und starten Sie I2P neu!" +msgid "" +"Do you have another I2P instance running? Stop the conflicting program and " +"restart I2P." +msgstr "" +"Haben Sie eine zweite I2P-Instanz laufen? Beenden Sie das störende Programm " +"und starten Sie I2P neu!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:107 msgid "config advanced" @@ -4648,7 +4908,8 @@ msgstr "Erweiterte I2P-Einstellungen" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:311 msgid "Some changes may require a restart to take effect." -msgstr "Einige Einstellungen benötigen einen Routerneustart, um aktiv zu werden." +msgstr "" +"Einige Einstellungen benötigen einen Routerneustart, um aktiv zu werden." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:106 msgid "config clients" @@ -4663,9 +4924,12 @@ msgid "Client Configuration" msgstr "Klienten-Konfiguration" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:314 -msgid "The Java clients listed below are started by the router and run in the same JVM." +msgid "" +"The Java clients listed below are started by the router and run in the same " +"JVM." msgstr "" -"Die Java-Klienten unten werden durch den Router gestartet und laufen in der \n" +"Die Java-Klienten unten werden durch den Router gestartet und laufen in " +"der \n" "selben JVM." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:318 @@ -4696,7 +4960,9 @@ msgstr "Aktiviert, SSL erforderlich" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 msgid "Disabled - Clients outside this Java process may not connect" -msgstr "Deaktiviert - Klienten außerhalb dieses Javaprozesses können sich nicht verbinden" +msgstr "" +"Deaktiviert - Klienten außerhalb dieses Javaprozesses können sich nicht " +"verbinden" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:359 msgid "I2CP Port" @@ -4724,7 +4990,9 @@ msgstr "Passwort" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:397 msgid "Any changes made here must also be configured in the external client." -msgstr "Alle hier vorgenommenen Änderungen müssen auch in den externen Klienten vorgenommen werden." +msgstr "" +"Alle hier vorgenommenen Änderungen müssen auch in den externen Klienten " +"vorgenommen werden." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:399 msgid "Many clients do not support SSL or authorization." @@ -4735,12 +5003,32 @@ msgid "WebApp Configuration" msgstr "WebApp-Einstellungen" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 -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 "Untengenannte Java-Anwendungen werden vom WebKonsolen-Klienten gestartet und laufen in der selben JVM wie der Router. Es handelt sich dabei normalerweise Web-Anwendungen, die über die Routerkonsole erreichbar sind. Es können komplette Anwendungen (z.B. i2psnark), reine Oberflächen für andere Klienten, Anwendungen, die separat aktiviert werden müssen (z.B. susidns, i2ptunnel), oder Anwendungen ohne Oberfläche (Adressbuch) sein." +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 "" +"Untengenannte Java-Anwendungen werden vom WebKonsolen-Klienten gestartet und " +"laufen in der selben JVM wie der Router. Es handelt sich dabei normalerweise " +"Web-Anwendungen, die über die Routerkonsole erreichbar sind. Es können " +"komplette Anwendungen (z.B. i2psnark), reine Oberflächen für andere " +"Klienten, Anwendungen, die separat aktiviert werden müssen (z.B. susidns, " +"i2ptunnel), oder Anwendungen ohne Oberfläche (Adressbuch) sein." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:411 -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 "Eine Webanwendung kann auch durch das Entfernen der .war-Datei deaktiviert werden. Jedoch werden die .war-Datei und die Anwendung nach einer Aktualisierung des Routers wieder erscheinen. Somit ist das Deaktivieren der Web-Anwendung hier die bevorzugte Methode." +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 "" +"Eine Webanwendung kann auch durch das Entfernen der .war-Datei deaktiviert " +"werden. Jedoch werden die .war-Datei und die Anwendung nach einer " +"Aktualisierung des Routers wieder erscheinen. Somit ist das Deaktivieren der " +"Web-Anwendung hier die bevorzugte Methode." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:421 msgid "Plugin Configuration" @@ -4748,7 +5036,9 @@ msgstr "Konfiguration der Zusatzprogramme" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 msgid "The plugins listed below are started by the webConsole client." -msgstr "Die unten aufgelisteten Zusatzprogramme werden vom WebKonsolen-Klienten gestartet." +msgstr "" +"Die unten aufgelisteten Zusatzprogramme werden vom WebKonsolen-Klienten " +"gestartet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:429 msgid "Plugin Installation" @@ -4756,7 +5046,8 @@ msgstr "Installation von Zusatzprogrammen" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 msgid "To install a plugin, enter the download URL:" -msgstr "Für die Installation eines Zusatzprogramms bitte die Download-URL eingeben:" +msgstr "" +"Für die Installation eines Zusatzprogramms bitte die Download-URL eingeben:" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:106 msgid "config keyring" @@ -4768,11 +5059,16 @@ msgstr "Einstellungen des I2P-Schlüsselbunds" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:295 msgid "The router keyring is used to decrypt encrypted leaseSets." -msgstr "Der Router-Schlüsselbund wird zum Entschlüsseln verschlüsselter LeaseSets verwendet." +msgstr "" +"Der Router-Schlüsselbund wird zum Entschlüsseln verschlüsselter LeaseSets " +"verwendet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:298 -msgid "The keyring may contain keys for local or remote encrypted destinations." -msgstr "Der Schlüsselbund kann Schlüssel für lokale oder entfernte verschlüsselte Leasesets enthalten." +msgid "" +"The keyring may contain keys for local or remote encrypted destinations." +msgstr "" +"Der Schlüsselbund kann Schlüssel für lokale oder entfernte verschlüsselte " +"Leasesets enthalten." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:308 msgid "Manual Keyring Addition" @@ -4823,16 +5119,23 @@ msgid "Log record format" msgstr "Format der Berichtedatei" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 -msgid "(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" -msgstr "(Benutzen Sie 'd' = Datum, 'c' = Klasse, 't' = Thread, 'p' = Priorität, 'm' = Nachricht)" +msgid "" +"(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" +msgstr "" +"(Benutzen Sie 'd' = Datum, 'c' = Klasse, 't' = Thread, 'p' = Priorität, 'm' " +"= Nachricht)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:315 msgid "Log date format" msgstr "Datumsformat der Berichte" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 -msgid "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)" -msgstr "('MM' = Monat, 'dd' = Tag, 'HH' = Stunde, 'mm' = Minute, 'ss' = Sekunde, 'SSS' = Millisekunde)" +msgid "" +"('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' " +"= millisecond)" +msgstr "" +"('MM' = Monat, 'dd' = Tag, 'HH' = Stunde, 'mm' = Minute, 'ss' = Sekunde, " +"'SSS' = Millisekunde)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:321 msgid "Max log file size" @@ -4843,8 +5146,12 @@ msgid "Default log level" msgstr "Standardlevel für Berichte" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329 -msgid "(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)" -msgstr "(DEBUG und INFO sind nicht empfohlen, da diese den Router drastisch verlangsamen)" +msgid "" +"(DEBUG and INFO are not recommended defaults, as they will drastically slow " +"down your router)" +msgstr "" +"(DEBUG und INFO sind nicht empfohlen, da diese den Router drastisch " +"verlangsamen)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:331 msgid "Log level overrides" @@ -4875,16 +5182,28 @@ msgid "Manually Ban / Unban a Peer" msgstr "Einen Teilnehmer manuell sperren/entsperren" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:313 -msgid "Banning will prevent the participation of this peer in tunnels you create." -msgstr "Eine Sperrung verhindert, dass der Teilnehmer in von Ihnen aufgebauten Tunneln partizipiert." +msgid "" +"Banning will prevent the participation of this peer in tunnels you create." +msgstr "" +"Eine Sperrung verhindert, dass der Teilnehmer in von Ihnen aufgebauten " +"Tunneln partizipiert." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:323 msgid "Adjust Profile Bonuses" msgstr "Profilboni anpassen" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 -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 "Boni können positiv oder negativ sein. Sie beeinflussen die Aufnahme der Teilnehmer in die Klassen schneller Router und Router hoher Kapazität. Schnelle Teilnehmer werden für Klienten-Tunnel genutzt, Teilnehmer mit hoher Kapazität für einige Erkundungstunnel. Derzeitige Boni werden dargestellt auf der " +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 "" +"Boni können positiv oder negativ sein. Sie beeinflussen die Aufnahme der " +"Teilnehmer in die Klassen schneller Router und Router hoher Kapazität. " +"Schnelle Teilnehmer werden für Klienten-Tunnel genutzt, Teilnehmer mit hoher " +"Kapazität für einige Erkundungstunnel. Derzeitige Boni werden dargestellt " +"auf der " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:327 msgid "profiles page" @@ -4912,16 +5231,31 @@ msgid "Reseeding Configuration" msgstr "Reseed-Einstellungen" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:302 -msgid "Reseeding is the bootstrapping process used to find other routers when you first install I2P, or when your router has too few router references remaining." -msgstr "Der Reseed ist ein \"bootstrapping\"-Prozess, der das erstmalige Verbinden mit dem Netzwerk ermöglicht. Hierbei werden andere Netzwerkteilnehmer gefunden. Dies ist nötig nach der Installation oder wenn der Router aus anderen Gründen nur noch sehr wenige Kontakte gespeichert hat." +msgid "" +"Reseeding is the bootstrapping process used to find other routers when you " +"first install I2P, or when your router has too few router references " +"remaining." +msgstr "" +"Der Reseed ist ein \"bootstrapping\"-Prozess, der das erstmalige Verbinden " +"mit dem Netzwerk ermöglicht. Hierbei werden andere Netzwerkteilnehmer " +"gefunden. Dies ist nötig nach der Installation oder wenn der Router aus " +"anderen Gründen nur noch sehr wenige Kontakte gespeichert hat." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304 -msgid "If reseeding has failed, you should first check your network connection." -msgstr "Schlägt der Reseed fehl, solltest du zuallererst deine Internetverbindung überprüfen." +msgid "" +"If reseeding has failed, you should first check your network connection." +msgstr "" +"Schlägt der Reseed fehl, solltest du zuallererst deine Internetverbindung " +"überprüfen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:308 -msgid "Change these only if HTTP is blocked by a restrictive firewall, reseed has failed, and you have access to an HTTP proxy." -msgstr "Ändere diese Einstellungen nur wenn HTTP von einer restriktiven Firewall blockiert wird, der Reseed fehlschlägt, und dir ein HTTP-Proxy zur Verfügung steht." +msgid "" +"Change these only if HTTP is blocked by a restrictive firewall, reseed has " +"failed, and you have access to an HTTP proxy." +msgstr "" +"Ändere diese Einstellungen nur wenn HTTP von einer restriktiven Firewall " +"blockiert wird, der Reseed fehlschlägt, und dir ein HTTP-Proxy zur Verfügung " +"steht." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 #, java-format @@ -4977,44 +5311,79 @@ msgid "Shutdown the router" msgstr "Router herunterfahren" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:287 -msgid "Graceful shutdown lets the router satisfy the agreements it has already made before shutting down, but may take a few minutes." -msgstr "Das kontrollierte Herunterfahren lässt dem Router Zeit, alle Zusagen, die er gemacht hat, noch zu erfüllen. Dafür benötigt er bis zu 11 Minuten." +msgid "" +"Graceful shutdown lets the router satisfy the agreements it has already made " +"before shutting down, but may take a few minutes." +msgstr "" +"Das kontrollierte Herunterfahren lässt dem Router Zeit, alle Zusagen, die er " +"gemacht hat, noch zu erfüllen. Dafür benötigt er bis zu 11 Minuten." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:289 -msgid "If you need to kill the router immediately, that option is available as well." -msgstr "Es gibt auch eine Option zum sofortigen Beenden des Routers, falls Sie diese benötigen." +msgid "" +"If you need to kill the router immediately, that option is available as well." +msgstr "" +"Es gibt auch eine Option zum sofortigen Beenden des Routers, falls Sie diese " +"benötigen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:299 -msgid "If you want the router to restart itself after shutting down, you can choose one of the following." -msgstr "Falls Sie den Router nach dem Herunterfahren automatisch wieder starten lassen wollen, wählen Sie eine der folgenden Optionen aus." +msgid "" +"If you want the router to restart itself after shutting down, you can choose " +"one of the following." +msgstr "" +"Falls Sie den Router nach dem Herunterfahren automatisch wieder starten " +"lassen wollen, wählen Sie eine der folgenden Optionen aus." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:301 -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 "Dies ist in manchen Situationen hilfreich - zum Beispiel wenn Sie einige Optionen geändert haben, die die Klienten-Anwendung nur beim Starten einliest (Routerkonsolen-Passwort oder das Interface auf dem es arbeitet)." +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 "" +"Dies ist in manchen Situationen hilfreich - zum Beispiel wenn Sie einige " +"Optionen geändert haben, die die Klienten-Anwendung nur beim Starten " +"einliest (Routerkonsolen-Passwort oder das Interface auf dem es arbeitet)." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:303 -msgid "A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately." -msgstr "Ein kontrollierter Neustart benötigt bis zu 11 Minuten (Ihre Teilnehmer sind für Ihre Geduld dankbar); ein harter Neustart erfolgt sofort." +msgid "" +"A graceful restart will take a few minutes (but your peers will appreciate " +"your patience), while a hard restart does so immediately." +msgstr "" +"Ein kontrollierter Neustart benötigt bis zu 11 Minuten (Ihre Teilnehmer sind " +"für Ihre Geduld dankbar); ein harter Neustart erfolgt sofort." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 -msgid "After tearing down the router, it will wait 1 minute before starting back up again." -msgstr "Nachdem der Router heruntergefahren ist, wartet er eine Minute, bevor er wieder startet." +msgid "" +"After tearing down the router, it will wait 1 minute before starting back up " +"again." +msgstr "" +"Nachdem der Router heruntergefahren ist, wartet er eine Minute, bevor er " +"wieder startet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:315 msgid "Systray integration" msgstr "Systemtray-Integration" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 -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 "Auf Windows-Systemen gibt es eine kleine Anwendung, die es Ihnen ermöglicht, den Routerstatus im Systemtray zu sehen." +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 "" +"Auf Windows-Systemen gibt es eine kleine Anwendung, die es Ihnen ermöglicht, " +"den Routerstatus im Systemtray zu sehen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 -msgid "(later on, I2P client applications will be able to integrate their own functionality into the system tray as well)." -msgstr "(Später werden I2P-Anwendungen auch ihre eigenen Funktionen in den Systemtray integrieren können)" +msgid "" +"(later on, I2P client applications will be able to integrate their own " +"functionality into the system tray as well)." +msgstr "" +"(Später werden I2P-Anwendungen auch ihre eigenen Funktionen in den " +"Systemtray integrieren können)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 msgid "If you are on windows, you can either enable or disable that icon here." -msgstr "Falls Sie Windows nutzen, können Sie hier dieses Symbol aktiveren oder deaktivieren." +msgstr "" +"Falls Sie Windows nutzen, können Sie hier dieses Symbol aktiveren oder " +"deaktivieren." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 msgid "Show systray icon" @@ -5029,20 +5398,35 @@ msgid "Run on startup" msgstr "Beim Hochfahren starten" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:329 -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 "Sie können mit folgenden Optionen festlegen, ob I2P beim Hochfahren gestartet wird oder nicht - I2P wird dementsprechend einen Service einrichten (oder ggf. entfernen)." +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 "" +"Sie können mit folgenden Optionen festlegen, ob I2P beim Hochfahren " +"gestartet wird oder nicht - I2P wird dementsprechend einen Service " +"einrichten (oder ggf. entfernen)." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:331 msgid "If you prefer the command line, you can also run the " -msgstr "Falls Sie die Eingabeaufforderung bevorzugen, können Sie auch folgendes ausführen" +msgstr "" +"Falls Sie die Eingabeaufforderung bevorzugen, können Sie auch folgendes " +"ausführen" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 -msgid "If you are running I2P as service right now, removing it will shut down your router immediately." -msgstr "Falls Sie I2P zurzeit als Service gestartet haben, wird ein Entfernen des Services den Router sofort beenden." +msgid "" +"If you are running I2P as service right now, removing it will shut down your " +"router immediately." +msgstr "" +"Falls Sie I2P zurzeit als Service gestartet haben, wird ein Entfernen des " +"Services den Router sofort beenden." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:343 -msgid "You may want to consider shutting down gracefully, as above, then running uninstall_i2p_service_winnt.bat." -msgstr "Sie sollten I2P, wie oben beschrieben, kontrolliert herunterfahren und dann uninstall_i2p_service_winnt.bat ausführen." +msgid "" +"You may want to consider shutting down gracefully, as above, then running " +"uninstall_i2p_service_winnt.bat." +msgstr "" +"Sie sollten I2P, wie oben beschrieben, kontrolliert herunterfahren und dann " +"uninstall_i2p_service_winnt.bat ausführen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 msgid "Debugging" @@ -5053,16 +5437,28 @@ msgid "View the job queue" msgstr "Die Auftragswarteschlange ansehen" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 -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 "Manchmal ist es zur Fehlerbeseitigung in I2P hilfreich, eine Liste der aktiven Prozesse zu erzeugen. Dafür wählen Sie bitte folgende Option aus und überprüfen die Liste der aktiven Prozesse in der wrapper.log Datei!" +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 "" +"Manchmal ist es zur Fehlerbeseitigung in I2P hilfreich, eine Liste der " +"aktiven Prozesse zu erzeugen. Dafür wählen Sie bitte folgende Option aus und " +"überprüfen die Liste der aktiven Prozesse in der wrapper.log Datei!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 msgid "Launch browser on router startup?" msgstr "Beim Starten einen Browser aufrufen?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:361 -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 "Die Web-Konsole ist I2Ps wichtigstes Interface für Einstellungen. I2P kann für Sie beim Starten einen Browser öffnen und die Routerkonsole anzeigen, unter" +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 "" +"Die Web-Konsole ist I2Ps wichtigstes Interface für Einstellungen. I2P kann " +"für Sie beim Starten einen Browser öffnen und die Routerkonsole anzeigen, " +"unter" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:107 msgid "config stats" @@ -5123,31 +5519,47 @@ msgstr "Die Standardeinstellungen funktionieren für die meisten." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:310 msgid "There is a fundamental tradeoff between anonymity and performance." -msgstr "Es gibt einen grundsätzlichen Kompromiss zwischen Anonymität und Performance." +msgstr "" +"Es gibt einen grundsätzlichen Kompromiss zwischen Anonymität und Performance." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:313 -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 "Tunnel mit mehr als 3 Zwischenstationen (z.B. 2+0-2, 3+0-1 oder 3+0-2) oder eine große Anzahl an Tunneln + Ersatztunneln kann die Performance oder Zuverlässigkeit erheblich verringern." +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 "" +"Tunnel mit mehr als 3 Zwischenstationen (z.B. 2+0-2, 3+0-1 oder 3+0-2) oder " +"eine große Anzahl an Tunneln + Ersatztunneln kann die Performance oder " +"Zuverlässigkeit erheblich verringern." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:316 msgid "High CPU and/or high outbound bandwidth usage may result." -msgstr "Eine hohe CPU-Last und/oder hohe ausgehende Bandbreite können die Folge sein." +msgstr "" +"Eine hohe CPU-Last und/oder hohe ausgehende Bandbreite können die Folge sein." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:319 msgid "Change these settings with care, and adjust them if you have problems." -msgstr "Ändern Sie diese Einstellungen nur, wenn Sie Probleme haben, und stets mit besonderer Vorsicht!" +msgstr "" +"Ändern Sie diese Einstellungen nur, wenn Sie Probleme haben, und stets mit " +"besonderer Vorsicht!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:333 -msgid "Exploratory tunnel setting changes are stored in the router.config file." -msgstr "Einstellungen der Erkundungstunnel sind in der Datei router.config gespeichert." +msgid "" +"Exploratory tunnel setting changes are stored in the router.config file." +msgstr "" +"Einstellungen der Erkundungstunnel sind in der Datei router.config " +"gespeichert." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:336 msgid "Client tunnel changes are temporary and are not saved." -msgstr "Änderungen an den Kliententunneln sind nur temporär und werden nicht gespeichert." +msgstr "" +"Änderungen an den Kliententunneln sind nur temporär und werden nicht " +"gespeichert." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:338 msgid "To make permanent client tunnel changes see the" -msgstr "Um permanente Änderungen an den Kliententunneln zu machen, gehen Sie auf die " +msgstr "" +"Um permanente Änderungen an den Kliententunneln zu machen, gehen Sie auf die " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:340 msgid "i2ptunnel page" @@ -5170,15 +5582,24 @@ msgid "Theme selection disabled for Internet Explorer, sorry." msgstr "Themenauswahl für den Internet Explorer ist ausgeschaltet, bedauere." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:312 -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 "Falls Sie nicht den Internet Explorer (IE) benutzen, gibt Ihr Browser wahrscheinlich vor, IE zu sein. Wenn Sie die Konsolenthemen nutzen möchten, ändern Sie bitte Ihren Browser (oder Proxy) so, dass er einen anderen User-Agenten sendet!" +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 "" +"Falls Sie nicht den Internet Explorer (IE) benutzen, gibt Ihr Browser " +"wahrscheinlich vor, IE zu sein. Wenn Sie die Konsolenthemen nutzen möchten, " +"ändern Sie bitte Ihren Browser (oder Proxy) so, dass er einen anderen User-" +"Agenten sendet!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:316 msgid "Router Console Language" msgstr "Sprache der Routerkonsole" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:320 -msgid "Please contribute to the router console translation project! Contact the developers on IRC #i2p to help." +msgid "" +"Please contribute to the router console translation project! Contact the " +"developers on IRC #i2p to help." msgstr "" "Bitte tragen Sie zum Routerkonsolen-Übersetzungsprojekt bei! Kontaktieren \n" "Sie hierzu die Entwickler über den IRC-Kanal #i2p!" @@ -5248,8 +5669,12 @@ msgid "Unsigned Build URL" msgstr "URL für nicht signierte Aktualisierungen" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 -msgid "I2P updates are disabled because you do not have write permission for the install directory." -msgstr "Aktualisierungen für I2P sind deaktiviert, da Sie (I2P) keine Schreibberechtigung im Installationsverzeichnis haben." +msgid "" +"I2P updates are disabled because you do not have write permission for the " +"install directory." +msgstr "" +"Aktualisierungen für I2P sind deaktiviert, da Sie (I2P) keine " +"Schreibberechtigung im Installationsverzeichnis haben." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:367 msgid "Save" @@ -5280,8 +5705,12 @@ msgstr "Bitte melden Sie Fehler unter {0} oder {1}!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:137 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 -msgid "You may use the username \"guest\" and password \"guest\" if you do not wish to register." -msgstr "Sie können hierfür den Benutzernamen \"guest\" und das Passwort \"guest\" verwenden, wenn Sie sich nicht registrieren wollen." +msgid "" +"You may use the username \"guest\" and password \"guest\" if you do not wish " +"to register." +msgstr "" +"Sie können hierfür den Benutzernamen \"guest\" und das Passwort \"guest\" " +"verwenden, wenn Sie sich nicht registrieren wollen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 @@ -5304,15 +5733,22 @@ msgstr "I2P-Version & Laufzeitumgebung" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 -msgid "Note that system information, log timestamps, and log messages may provide clues to your location; please review everything you include in a bug report." -msgstr "Beachten Sie, dass Systeminformationen, Zeitstempel der Berichte sowie die Fehlerberichte selbst Hinweise auf Ihren Standort enthalten können. Bitte überprüfen Sie Fehlerberichte, die Sie einreichen wollen, diesbezüglich!" +msgid "" +"Note that system information, log timestamps, and log messages may provide " +"clues to your location; please review everything you include in a bug report." +msgstr "" +"Beachten Sie, dass Systeminformationen, Zeitstempel der Berichte sowie die " +"Fehlerberichte selbst Hinweise auf Ihren Standort enthalten können. Bitte " +"überprüfen Sie Fehlerberichte, die Sie einreichen wollen, diesbezüglich!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:117 msgid "Page Not Found" msgstr "Seite nicht gefunden" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:242 -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 "" "Bedaure. Anscheinend haben Sie eine nicht vorhandene Routerkonsolenseite\n" "oder -Ressource angefordert." @@ -5386,8 +5822,12 @@ msgid "The requested web application is not running." msgstr "Die angeforderte Web-Anwendung ist nicht aktiv." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:234 -msgid "Please visit the config clients page to start it." -msgstr "Bitte besuchen Sie die Klienten-Konfigurations Seite, um diese zu starten." +msgid "" +"Please visit the config clients page to start it." +msgstr "" +"Bitte besuchen Sie die Klienten-" +"Konfigurations Seite, um diese zu starten." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:105 msgid "peer connections" @@ -5436,70 +5876,97 @@ msgstr "I2P-Tunnel Zusammenfassung" #~ "\">Berichte, und wenn gar nichts hilft, lesen Sie die FAQ über das manuelle " #~ "Reseeden." + #~ msgid "System tray icon enabled." #~ msgstr "Systemtray-Icon aktiviert" + #~ msgid "System tray icon feature not supported on this platform. Sorry!" #~ msgstr "Systemtry-Icon wird auf diesem System leider nicht unterstützt." + #~ msgid "Warning: unable to contact the systray manager" #~ msgstr "Warnung: kann den Systemtray-Manager nicht erreichen" + #~ msgid "System tray icon disabled." #~ msgstr "Systemtry-Icon deaktiviert" + #~ msgid "hour" #~ msgstr "Stunde" + #~ msgid "minute" #~ msgstr "Minute" + #~ msgid "minutes" #~ msgstr "Minuten" + #~ msgid "Last reseed failed fully (failed reading seed URL)." #~ msgstr "" #~ "Letztes Reseed komplett gescheitert (konnte die Seed-URL nicht lesen)." + #~ msgid "Last reseed failed fully (no routerInfo URLs at seed URL)." #~ msgstr "" #~ "Letztes Reseed komplett gescheitert (keine RouterInfo-URLs unter der Seed-" #~ "URL)." + #~ msgid "Last reseed failed partly ({0}% of {1})." #~ msgstr "Letzes Reseed teilweise gescheitert ({0}% von {1})." + #~ msgid "Last reseed failed ({0}% of {1})." #~ msgstr "Letzes Reseed gescheitert ({0}% von {1})." + #~ msgid "Last reseed failed fully (exception caught)." #~ msgstr "Letzes Reseed gescheitert (Fehler aufgetreten)." + #~ msgid "" #~ "Please report bugs on trac." #~ "i2p2.i2p." #~ msgstr "" #~ "Bitte berichten Sie über Fehler auf trac.i2p2.i2p!" + #~ msgid "avg value" #~ msgstr "Durchschnitt" + #~ msgid "events" #~ msgstr "Ereignisse" + #~ msgid "lifetime average" #~ msgstr "Mittelwert seit Start" + #~ msgid "peak average" #~ msgstr "Mittelwert der Maximalwerte" + #~ msgid "" #~ "WebApp configuration saved successfully - restart required to take effect." #~ msgstr "" #~ "WebApplikationseinstellungen erfolgreich gespeichert - Neustart zum " #~ "Übernehmen erforderlich" + #~ msgid "Start Now" #~ msgstr "Starte jetzt" + #~ msgid "tunnels" #~ msgstr "Tunnel" + #~ msgid "Depth" #~ msgstr "Tiefe" + #~ msgid "Show the router's workload, and how it's performing" #~ msgstr "Zeige die Aktivitäten des Routers und wie performant dieser ist" + #~ msgid "Jobs" #~ msgstr "Aufgaben" + #~ msgid "Tunnels in/out" #~ msgstr "Tunnels ein- / ausgehend" + #~ msgid "Expl. + Client" #~ msgstr "Erkundungs + Klienten" + #~ msgid "Part. from + to" #~ msgstr "Teilnehmend von + zu" + #~ msgid "This is useful in some situations" #~ msgstr "Dies ist Sinnvoll in manchen Situationen" + #~ msgid "I2P will install (or remove) a service accordingly." #~ msgstr "I2P wird demzuolge einen Service installieren (oder entfernen)." - diff --git a/apps/routerconsole/locale/messages_en.po b/apps/routerconsole/locale/messages_en.po index 1b748a8d6..e3ea2629b 100644 --- a/apps/routerconsole/locale/messages_en.po +++ b/apps/routerconsole/locale/messages_en.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 11:52+0000\n" +"POT-Creation-Date: 2011-03-03 18:27+0000\n" "PO-Revision-Date: 2010-06-15 14:09+0100\n" "Last-Translator: duck \n" "Language-Team: duck \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -537,28 +538,29 @@ msgstr "" msgid "SUMMARY" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:145 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:124 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 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:267 msgid "Dropping tunnel requests: Overloaded" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:525 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:460 msgid "Rejecting tunnels: Request overload" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:550 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:485 msgid "Rejecting tunnels: Connection limit" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:744 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:685 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:706 msgid "Dropping tunnel requests: High load" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:753 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:698 msgid "Dropping tunnel requests: Queue time" msgstr "" @@ -1488,7 +1490,7 @@ msgstr "" msgid "Zimbabwe" msgstr "" -#: ../java/src/net/i2p/router/web/CSSHelper.java:57 +#: ../java/src/net/i2p/router/web/CSSHelper.java:58 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:35 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:37 #: ../java/strings/Strings.java:29 @@ -2185,22 +2187,22 @@ 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:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 msgid "Run I2P on startup" msgstr "" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:82 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 msgid "Don't run I2P on startup" msgstr "" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:84 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:355 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:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:363 msgid "View console on startup" msgstr "" @@ -2209,7 +2211,7 @@ msgid "Console is to be shown on startup" msgstr "" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:94 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:365 msgid "Do not view console on startup" msgstr "" @@ -2481,7 +2483,7 @@ msgstr "" #: ../java/src/net/i2p/router/web/GraphHelper.java:152 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:333 msgid "or" msgstr "" @@ -4076,6 +4078,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:227 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:219 @@ -4109,6 +4112,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:231 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:223 @@ -4341,7 +4345,7 @@ msgid "Specify Port" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:330 msgid "Note" msgstr "" @@ -5101,51 +5105,79 @@ msgid "" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:315 -msgid "Run on startup" +msgid "Systray integration" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 +msgid "" +"(later on, I2P client applications will be able to integrate their own " +"functionality into the system tray as well)." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 +msgid "If you are on windows, you can either enable or disable that icon here." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 +msgid "Show systray icon" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 +msgid "Hide systray icon" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 +msgid "Run on startup" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:329 +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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:331 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:329 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 msgid "" "If you are running I2P as service right now, removing it will shut down your " "router immediately." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:343 msgid "" "You may want to consider shutting down gracefully, as above, then running " "uninstall_i2p_service_winnt.bat." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 msgid "Debugging" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 msgid "View the job queue" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 msgid "Launch browser on router startup?" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:361 msgid "" "I2P's main configuration interface is this web console, so for your " "convenience I2P can launch a web browser on startup pointing at" @@ -5515,7 +5547,7 @@ msgstr "" msgid "I2P Router Statistics" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:248 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:247 #, java-format msgid "Disable {0} Refresh" msgstr "" diff --git a/apps/routerconsole/locale/messages_es.po b/apps/routerconsole/locale/messages_es.po index 77de2b2d4..9adddbe30 100644 --- a/apps/routerconsole/locale/messages_es.po +++ b/apps/routerconsole/locale/messages_es.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-28 00:08+0000\n" +"POT-Creation-Date: 2011-03-03 18:27+0000\n" "PO-Revision-Date: 2011-01-03 01:13+0100\n" "Last-Translator: mixxy \n" "Language-Team: foo \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -26,7 +27,7 @@ msgstr "" #. {0,number,####} prevents 1234 from being output as 1,234 in the English locale. #. If you want the digit separator in your locale, translate as {0}. #. alternates: msec, msecs -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1103 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1141 #, java-format msgid "1 ms" msgid_plural "{0,number,####} ms" @@ -36,7 +37,7 @@ msgstr[1] "{0,number,####} ms" #. seconds #. Note to translators: quantity will always be greater than one. #. alternates: secs, sec. 'seconds' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1108 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1146 #, java-format msgid "1 sec" msgid_plural "{0} sec" @@ -46,7 +47,7 @@ msgstr[1] "{0} s" #. minutes #. Note to translators: quantity will always be greater than one. #. alternates: mins, min. 'minutes' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1113 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1151 #, java-format msgid "1 min" msgid_plural "{0} min" @@ -56,42 +57,42 @@ msgstr[1] "{0} min" #. hours #. Note to translators: quantity will always be greater than one. #. alternates: hrs, hr., hrs. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1118 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1156 #, java-format msgid "1 hour" msgid_plural "{0} hours" msgstr[0] "1 hora" msgstr[1] "{0} horas" -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1120 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1158 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313 msgid "n/a" msgstr "" #. days #. Note to translators: quantity will always be greater than one. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1124 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1162 #, java-format msgid "1 day" msgid_plural "{0} days" msgstr[0] "1 día" msgstr[1] "{0} días" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:126 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:122 #, java-format msgid "Banned by router hash: {0}" msgstr "" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:128 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:124 msgid "Banned by router hash" msgstr "baneado por hash del enrutador" #. Temporary reason, until the job finishes -#: ../../../router/java/src/net/i2p/router/Blocklist.java:673 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:669 msgid "IP banned" msgstr "IP baneado" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:743 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:739 #, java-format msgid "IP banned by blocklist.txt entry {0}" msgstr "" @@ -145,35 +146,43 @@ msgstr "acceptando túneles" msgid "Rejecting tunnels" msgstr "Rechazando túneles" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:68 -msgid "Ensure that nothing blocks outbound HTTP, check logs and if nothing helps, read the FAQ about reseeding manually." -msgstr "" - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:101 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:105 +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 msgid "Reseeding" msgstr "" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:124 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:128 #, java-format msgid "Reseed fetched only 1 router." msgid_plural "Reseed fetched only {0} routers." msgstr[0] "" msgstr[1] "" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:131 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:135 msgid "Reseed failed." msgstr "" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:232 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:136 +#, java-format +msgid "See {0} for help." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:137 +#, fuzzy +msgid "reseed configuration page" +msgstr "Guardados los ajustes de registros" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:239 msgid "Reseeding: fetching seed URL." msgstr "" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:273 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281 #, java-format -msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." +msgid "" +"Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:513 +#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:512 msgid "NetDb entry" msgstr "" @@ -182,39 +191,44 @@ msgstr "" msgid "No transports (hidden or starting up?)" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:452 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:450 msgid "Unreachable on any transport" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:501 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:499 msgid "Router Transport Addresses" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:506 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:504 #, java-format msgid "{0} is used for outbound connections only" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:520 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123 msgid "Help" msgstr "" +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 +msgid "" +"Your transport connection limits are automatically set based on your " +"configured bandwidth." +msgstr "" + #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 -msgid "Your transport connection limits are automatically set based on your configured bandwidth." +msgid "" +"To override these limits, add the settings i2np.ntcp.maxConnections=nnn and " +"i2np.udp.maxConnections=nnn on the advanced configuration page." msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 -msgid "To override these limits, add the settings i2np.ntcp.maxConnections=nnn and i2np.udp.maxConnections=nnn on the advanced configuration page." -msgstr "" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 msgid "Definitions" msgstr "Definiciones" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:735 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1891 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890 #: ../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 @@ -224,149 +238,153 @@ msgstr "Definiciones" msgid "Peer" msgstr "Par" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 msgid "The remote peer, identified by router hash" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:527 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:736 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 msgid "Dir" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 msgid "Inbound connection" msgstr "Conexión entrante" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 msgid "Outbound connection" msgstr "Conexión saliente" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 msgid "They offered to introduce us (help other peers traverse our firewall)" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 msgid "We offered to introduce them (help other peers traverse their firewall)" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "How long since a packet has been received / sent" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1896 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895 msgid "Idle" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1901 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1900 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "In/Out" msgstr "Entrante/Saliente" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 msgid "The smoothed inbound / outbound transfer rate (KBytes per second)" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 msgid "How long ago this connection was established" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1906 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905 msgid "Up" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1908 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1907 msgid "Skew" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 msgid "The difference between the peer's clock and your own" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 -msgid "The congestion window, which is how many bytes can be sent without an acknowledgement" +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +msgid "" +"The congestion window, which is how many bytes can be sent without an " +"acknowledgement" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 msgid "The number of sent messages awaiting acknowledgement" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 msgid "The maximum number of concurrent messages to send" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 msgid "The number of pending sends which exceed congestion window" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 msgid "The slow start threshold" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 msgid "The round trip time in milliseconds" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 msgid "Dev" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 msgid "The standard deviation of the round trip time in milliseconds" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 msgid "The retransmit timeout in milliseconds" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 -msgid "Current maximum send packet size / estimated maximum receive packet size (bytes)" +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +msgid "" +"Current maximum send packet size / estimated maximum receive packet size " +"(bytes)" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1925 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 msgid "TX" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 msgid "The total number of packets sent to the peer" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:742 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926 msgid "RX" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 msgid "The total number of packets received from the peer" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1930 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1929 msgid "Dup TX" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 msgid "The total number of packets retransmitted to the peer" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1932 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1931 msgid "Dup RX" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 msgid "The total number of duplicate packets received from the peer" msgstr "" @@ -381,12 +399,12 @@ msgid "NTCP connections" msgstr "conexiones NTCP" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:731 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1886 msgid "Limit" msgstr "" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1888 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 msgid "Timeout" msgstr "" @@ -399,13 +417,13 @@ msgid "Backlogged?" msgstr "" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:758 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1950 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1949 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 msgid "Inbound" msgstr "Entrante" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1952 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1951 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 msgid "Outbound" msgstr "Saliente" @@ -415,135 +433,136 @@ msgstr "Saliente" msgid "peers" msgstr "Pares" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1886 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1885 msgid "UDP connections" msgstr "conexiones UDP" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1893 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1892 msgid "Sort by peer hash" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 msgid "Direction/Introduction" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1897 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1896 msgid "Sort by idle inbound" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1899 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1898 msgid "Sort by idle outbound" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1902 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1901 msgid "Sort by inbound rate" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1904 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1903 msgid "Sort by outbound rate" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1907 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1906 msgid "Sort by connection uptime" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1909 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1908 msgid "Sort by clock skew" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1912 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1911 msgid "Sort by congestion window" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1914 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1913 msgid "Sort by slow start threshold" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1916 msgid "Sort by round trip time" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1919 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918 msgid "Sort by round trip time deviation" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1921 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1920 msgid "Sort by retransmission timeout" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1923 msgid "Sort by outbound maximum transmit unit" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1925 msgid "Sort by packets sent" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1928 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927 msgid "Sort by packets received" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1931 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1930 msgid "Sort by packets retransmitted" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1933 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1932 msgid "Sort by packets received more than once" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1954 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1953 msgid "We offered to introduce them" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1956 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1955 msgid "They offered to introduce us" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1960 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1959 msgid "Choked" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1968 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1967 msgid "1 fail" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1970 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1969 #, java-format msgid "{0} fails" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1976 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1975 #: ../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:2107 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2106 msgid "SUMMARY" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:145 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:124 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 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:267 msgid "Dropping tunnel requests: Overloaded" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:525 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:460 msgid "Rejecting tunnels: Request overload" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:550 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:485 msgid "Rejecting tunnels: Connection limit" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:744 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:685 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:706 msgid "Dropping tunnel requests: High load" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:753 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:698 msgid "Dropping tunnel requests: Queue time" msgstr "" @@ -1433,8 +1452,7 @@ msgstr "" msgid "Venezuela" msgstr "" -#: ../java/build/Countries.java:229 -#: ../java/build/Countries.java:230 +#: ../java/build/Countries.java:229 ../java/build/Countries.java:230 msgid "Virgin Islands" msgstr "" @@ -1474,10 +1492,11 @@ msgstr "" msgid "Zimbabwe" msgstr "" -#: ../java/src/net/i2p/router/web/CSSHelper.java:57 +#: ../java/src/net/i2p/router/web/CSSHelper.java:58 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:35 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:37 #: ../java/strings/Strings.java:29 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:119 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:233 msgid "I2P Router Console" msgstr "Console del Enrutador I2P" @@ -1493,7 +1512,9 @@ msgstr "Configuración guardada con éxito" #: ../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" +msgid "" +"Error saving the configuration (applied but not saved) - please see the " +"error logs" msgstr "" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35 @@ -1544,13 +1565,14 @@ msgstr "" #. label (IE) #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:124 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:253 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:255 msgid "Start" msgstr "Lanzar" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:143 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:49 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:61 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:33 msgid "Unsupported" msgstr "" @@ -1559,7 +1581,8 @@ msgid "New client added" msgstr "" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:193 -msgid "Client configuration saved successfully - restart required to take effect." +msgid "" +"Client configuration saved successfully - restart required to take effect." msgstr "" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207 @@ -1593,7 +1616,7 @@ msgid "Plugin configuration saved." msgstr "" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:271 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:122 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 msgid "WebApp" msgstr "" @@ -1643,11 +1666,12 @@ msgid "Error starting plugin {0}" msgstr "" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 -msgid "Interface configuration saved successfully - restart required to take effect." +msgid "" +"Interface configuration saved successfully - restart required to take effect." msgstr "" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:85 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:256 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258 msgid "Edit" msgstr "" @@ -1661,80 +1685,80 @@ msgid "Class and arguments" msgstr "" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:122 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:146 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 msgid "Control" msgstr "" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:122 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:146 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 msgid "Run at Startup?" msgstr "Lanzar al iniciarse?" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:122 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:146 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:195 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:197 msgid "Description" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:146 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 msgid "Plugin" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:159 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:161 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185 msgid "Version" msgstr "Versión" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:161 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:163 msgid "Signed by" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:178 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:180 msgid "Date" msgstr "Fecha" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:184 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:186 msgid "Author" msgstr "Autor" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:200 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:202 msgid "License" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:205 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:207 msgid "Website" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:210 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:212 msgid "Update link" msgstr "Enlace para actualizaciones" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:260 msgid "Stop" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:260 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:262 #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:78 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:313 msgid "Check for updates" msgstr "Buscar actualizaciones" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:261 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:263 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:242 msgid "Update" msgstr "Actualización" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:266 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:268 #, java-format msgid "Are you sure you want to delete {0}?" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:268 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:270 msgid "Delete" msgstr "Borrar" @@ -1791,11 +1815,14 @@ msgid "Log configuration saved" msgstr "Guardados los ajustes de registros" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 -msgid "Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" +msgid "" +"Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" msgstr "" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:49 -msgid "Or put entries in the logger.config file. Example: 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 "" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:50 @@ -1882,11 +1909,13 @@ msgstr "Avanzado" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:48 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:264 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:29 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:34 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:360 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:516 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:307 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:352 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:377 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:344 msgid "Save changes" @@ -2037,6 +2066,27 @@ msgstr "" msgid "Bad capacity value" msgstr "" +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:17 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 +#, fuzzy +msgid "Save changes and reseed now" +msgstr "Guardar" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:21 +#, fuzzy +msgid "Reseeding is already in progress" +msgstr "Creación de túnel en marcha" + +#. skip the nonce checking in ReseedHandler +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:24 +msgid "Starting reseed process" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:66 +#, fuzzy +msgid "Configuration saved successfully." +msgstr "Configuración guardada con éxito" + #. 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 @@ -2158,64 +2208,36 @@ 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:323 -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:325 -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:363 msgid "View console on startup" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:117 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:93 msgid "Console is to be shown on startup" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:118 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:94 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:365 msgid "Do not view console on startup" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:120 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96 msgid "Console is not to be shown on startup" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:129 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:105 msgid "Service installed" msgstr "Servicio instalado" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:131 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:107 msgid "Warning: unable to install the service" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:137 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:113 msgid "Service removed" msgstr "Servicio quitado" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:139 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:115 msgid "Warning: unable to remove the service" msgstr "" @@ -2228,7 +2250,9 @@ msgid "Failed to update the stat filter and location" msgstr "" #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:114 -msgid "Graph list updated, may take up to 60s to be reflected here and on the Graphs Page" +msgid "" +"Graph list updated, may take up to 60s to be reflected here and on the Graphs Page" msgstr "" #. the count isn't really correct anyway, since we don't check for actual changes @@ -2243,7 +2267,9 @@ msgstr "Ajustes de los túneles exploratorios guardados con éxito" #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:36 -msgid "Error saving the configuration (applied but not saved) - please see the error logs." +msgid "" +"Error saving the configuration (applied but not saved) - please see the " +"error logs." msgstr "" #. * dummies for translation @@ -2325,39 +2351,43 @@ msgid "Refresh the page to view." msgstr "" #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +msgid "Arabic" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "English" msgstr "Inglés" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "French" msgstr "Francés" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "German" msgstr "Alemán" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "Spanish" msgstr "Español" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Dutch" msgstr "Neerlandés" # added manually -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Portuguese" msgstr "Portugués" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Russian" msgstr "Ruso" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:54 msgid "Chinese" msgstr "Chino" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:54 msgid "Swedish" msgstr "Sueco" @@ -2367,7 +2397,9 @@ msgstr "Actualización disponible; tratando de descargarla" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:87 msgid "Update available, click button on left to download" -msgstr "Actualización disponible; ¡presiona el botón al lado izquierdo para descargarla!" +msgstr "" +"Actualización disponible; ¡presiona el botón al lado izquierdo para " +"descargarla!" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:93 msgid "No update available" @@ -2427,7 +2459,9 @@ msgid "Download, verify, and restart" msgstr "Descargar, verificar y reiniciar" #: ../java/src/net/i2p/router/web/FormHandler.java:174 -msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit." +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:93 @@ -2723,127 +2757,129 @@ msgstr "" msgid "{0}B transferred" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:152 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:153 msgid "Plugin downloaded" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:157 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:344 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:158 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:356 #, java-format msgid "Cannot create plugin directory {0}" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:166 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:167 #: ../java/src/net/i2p/router/web/UpdateHandler.java:298 #, java-format msgid "from {0}" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:176 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:177 #, java-format msgid "Plugin from {0} is corrupt" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:187 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:188 #, java-format msgid "Plugin from {0} does not contain the required configuration file" msgstr "" #. updateStatus("" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + ""); -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:200 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:201 #, java-format msgid "Plugin from {0} contains an invalid key" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:219 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:228 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:237 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:225 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:235 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:249 #, java-format msgid "Plugin signature verification of {0} failed" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:252 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:264 #, java-format msgid "Plugin from {0} has invalid name or version" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:257 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:269 #, java-format msgid "Plugin {0} has mismatched versions" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:265 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:277 #, java-format msgid "This plugin requires I2P version {0} or higher" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:273 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:285 #, java-format msgid "This plugin requires Java version {0} or higher" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:281 -msgid "Downloaded plugin is for new installs only, but the plugin is already installed" +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 +msgid "" +"Downloaded plugin is for new installs only, but the plugin is already " +"installed" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:305 msgid "Installed plugin does not contain the required configuration file" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:301 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:313 msgid "Signature of downloaded plugin does not match installed plugin" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:308 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:320 #, java-format msgid "Downloaded plugin version {0} is not newer than installed plugin" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:315 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:327 #, java-format msgid "Plugin update requires installed plugin version {0} or higher" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:322 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:334 #, java-format msgid "Plugin update requires installed plugin version {0} or lower" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:339 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351 msgid "Plugin is for upgrades only, but the plugin is not installed" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:352 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:364 #, java-format msgid "Failed to install plugin in {0}" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:359 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:371 #, java-format msgid "Plugin {0} installed, router restart required" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:361 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:373 #, java-format msgid "Plugin {0} installed" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:379 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:391 #, java-format msgid "Plugin {0} installed and started" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:382 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:394 #, java-format msgid "Plugin {0} installed but failed to start, check logs" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:384 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:396 #, java-format msgid "Plugin {0} installed but failed to start" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:394 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:406 #, java-format msgid "Failed to download plugin from {0}" msgstr "" @@ -3026,7 +3062,9 @@ msgid "caps" msgstr "" #: ../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" +msgid "" +"peak throughput (bytes per second) over a 1 minute period that the peer has " +"sustained in a single tunnel" msgstr "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 @@ -3115,7 +3153,9 @@ msgid "Statistics gathered during this router's uptime" msgstr "" #: ../java/src/net/i2p/router/web/StatsGenerator.java:63 -msgid "The data gathered is quantized over a 1 minute period, so should just be used as an estimate." +msgid "" +"The data gathered is quantized over a 1 minute period, so should just be " +"used as an estimate." msgstr "" #: ../java/src/net/i2p/router/web/StatsGenerator.java:64 @@ -3167,37 +3207,44 @@ msgstr "Promedio" msgid "Highest average" msgstr "Promedio máximo" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:202 +#. breaking the sentence like before makes translation in my language impossible. +#: ../java/src/net/i2p/router/web/StatsGenerator.java:201 #, java-format -msgid "in this period which ended {0} ago." +msgid "There were {0} event(s) in this period" msgstr "" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:204 +#. buf.append(' '); +#: ../java/src/net/i2p/router/web/StatsGenerator.java:203 +#, fuzzy, java-format +msgid " which ended {0} ago." +msgstr "Noticias chequeadas hace {0}." + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:205 msgid "No events" msgstr "sin acontecimientos" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:210 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:211 msgid "Average event count" msgstr "" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:212 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:213 msgid "Events in peak period" msgstr "" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:220 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:221 msgid "Graph Data" msgstr "" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:222 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:223 msgid "Graph Event Count" msgstr "" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:225 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:226 msgid "Export Data as XML" msgstr "" #. Display the strict average -#: ../java/src/net/i2p/router/web/StatsGenerator.java:230 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:231 msgid "Lifetime average value" msgstr "" @@ -3210,8 +3257,11 @@ msgid "Help & FAQ" msgstr "Ayuda" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:55 -msgid "Configure startup of clients and webapps (services); manually start dormant services" -msgstr "Configura el arranque de clientes y servicios o lanza servicios no activados" +msgid "" +"Configure startup of clients and webapps (services); manually start dormant " +"services" +msgstr "" +"Configura el arranque de clientes y servicios o lanza servicios no activados" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:57 msgid "I2P Services" @@ -3346,7 +3396,8 @@ msgid "Uptime" msgstr "Tiempo de servicio" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 -msgid "Help with configuring your firewall and router for optimal I2P performance" +msgid "" +"Help with configuring your firewall and router for optimal I2P performance" msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 @@ -3477,7 +3528,9 @@ msgid "Firewalled" msgstr "Bloqueado por un corta-fuegos" #: ../java/src/net/i2p/router/web/SummaryHelper.java:135 -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 "" #: ../java/src/net/i2p/router/web/SummaryHelper.java:141 @@ -4026,6 +4079,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:216 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:230 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:216 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:216 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:217 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:216 @@ -4034,6 +4088,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:227 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:219 @@ -4058,6 +4113,7 @@ msgstr "Actualizar (s)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:234 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:221 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:220 @@ -4066,6 +4122,7 @@ msgstr "Actualizar (s)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:231 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:223 @@ -4092,7 +4149,9 @@ msgid "Bandwidth limiter" msgstr "Limitador del ancho de banda" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:300 -msgid "I2P will work best if you configure your rates to match the speed of your internet connection." +msgid "" +"I2P will work best if you configure your rates to match the speed of your " +"internet connection." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:304 @@ -4123,11 +4182,14 @@ msgid "I2P requires at least 12KBps to enable sharing. " msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347 -msgid "Please enable sharing (participating in tunnels) by configuring more bandwidth. " +msgid "" +"Please enable sharing (participating in tunnels) by configuring more " +"bandwidth. " msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:348 -msgid "It improves your anonymity by creating cover traffic, and helps the network." +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:351 @@ -4136,7 +4198,9 @@ msgid "You have configured I2P to share {0} KBps." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:354 -msgid "The higher the share bandwidth the more you improve your anonymity and help the network." +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:358 @@ -4146,6 +4210,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:403 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:321 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:348 #: ../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:342 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:322 @@ -4159,6 +4224,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:377 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:306 msgid "The default settings will work for most people." msgstr "" @@ -4225,7 +4291,9 @@ msgid "Action when IP changes" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:439 -msgid "Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity" +msgid "" +"Laptop mode - Change router identity and UDP port when IP changes for " +"enhanced anonymity" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:441 @@ -4270,7 +4338,8 @@ msgid "Completely disable" msgstr "Desactivar por completo" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:491 -msgid "(select only if behind a firewall that throttles or blocks outbound TCP)" +msgid "" +"(select only if behind a firewall that throttles or blocks outbound TCP)" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 @@ -4301,19 +4370,28 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:520 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 -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." +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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:522 -msgid "If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you." +msgid "" +"If you can, please poke a hole in your firewall to allow unsolicited UDP and " +"TCP packets to reach you." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:524 -msgid "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic." +msgid "" +"If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole " +"punching with \"SSU introductions\" to relay traffic." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:526 -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." +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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:528 @@ -4321,7 +4399,9 @@ msgid "Certain firewalls such as symmetric NATs may not work well with I2P." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:537 -msgid "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports." +msgid "" +"UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect " +"the external IP address and forward ports." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:539 @@ -4357,7 +4437,9 @@ msgid "Review the UPnP status here." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 -msgid "UPnP may be enabled or disabled above, but a change requires a router restart to take effect." +msgid "" +"UPnP may be enabled or disabled above, but a change requires a router " +"restart to take effect." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 @@ -4369,11 +4451,15 @@ msgid "They are not private." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 -msgid "Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1." +msgid "" +"Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 -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." +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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 @@ -4385,11 +4471,16 @@ msgid "Reachability Help" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:572 -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." +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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575 -msgid "If there is an error, the logs may also help diagnose the problem." +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:579 @@ -4401,27 +4492,41 @@ msgid "Your UDP port appears to be firewalled." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 -msgid "As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error." +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:587 -msgid "However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port." +msgid "" +"However, if it appears consistently, you should check whether both your " +"external and internal firewalls are open for your port." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:589 -msgid "I2P will work fine when firewalled, there is no reason for concern. When firewalled, the router uses \"introducers\" to relay inbound connections." +msgid "" +"I2P will work fine when firewalled, there is no reason for concern. When " +"firewalled, the router uses \"introducers\" to relay inbound connections." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:591 -msgid "However, you will get more participating traffic and help the network more if you can open your firewall(s)." +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:593 -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." +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:595 -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." +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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 @@ -4429,7 +4534,9 @@ msgid "The router is currently testing whether your UDP port is firewalled." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603 -msgid "The router is not configured to publish its address, therefore it does not expect incoming connections." +msgid "" +"The router is not configured to publish its address, therefore it does not " +"expect incoming connections." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 @@ -4437,11 +4544,16 @@ msgid "WARN - Firewalled and Fast" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 -msgid "You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled." +msgid "" +"You have configured I2P to share more than 128KBps of bandwidth, but you are " +"firewalled." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 -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." +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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 @@ -4449,11 +4561,13 @@ msgid "WARN - Firewalled and Floodfill" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 -msgid "You have configured I2P to be a floodfill router, but you are firewalled." +msgid "" +"You have configured I2P to be a floodfill router, but you are firewalled." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 -msgid "For best participation as a floodfill router, you should open your firewall." +msgid "" +"For best participation as a floodfill router, you should open your firewall." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 @@ -4461,11 +4575,15 @@ msgid "WARN - Firewalled with Inbound TCP Enabled" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 -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." +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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 -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." +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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 @@ -4481,7 +4599,9 @@ msgid "You have configured inbound TCP, however you have disabled UDP." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 -msgid "You appear to be firewalled on TCP, therefore your router cannot accept inbound connections." +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:631 @@ -4493,7 +4613,9 @@ msgid "ERR - Clock Skew" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 -msgid "Your system's clock is skewed, which will make it difficult to participate in the network." +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:637 @@ -4505,7 +4627,9 @@ msgid "ERR - Private TCP Address" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 -msgid "You must never advertise an unroutable IP address such as 127.0.0.1 or 192.168.1.1 as your external address." +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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 @@ -4521,11 +4645,16 @@ msgid "I2P detected that you are firewalled by a Symmetric NAT." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 -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." +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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:651 -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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 @@ -4533,11 +4662,15 @@ msgid "I2P was unable to bind to port 8887 or other configured port." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:655 -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." +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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:657 -msgid "This may be a transient error, if the other program is no longer using the port." +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:659 @@ -4549,7 +4682,9 @@ msgid "ERR - UDP Disabled and Inbound TCP host/port not set" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:663 -msgid "You have not configured inbound TCP with a hostname and port above, however you have disabled UDP." +msgid "" +"You have not configured inbound TCP with a hostname and port above, however " +"you have disabled UDP." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:665 @@ -4569,7 +4704,9 @@ msgid "This is usually due to a port 7654 conflict. Check the logs to verify." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:673 -msgid "Do you have another I2P instance running? Stop the conflicting program and restart I2P." +msgid "" +"Do you have another I2P instance running? Stop the conflicting program and " +"restart I2P." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:107 @@ -4601,7 +4738,9 @@ msgid "Client Configuration" msgstr "Configuración Clientes" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:314 -msgid "The Java clients listed below are started by the router and run in the same JVM." +msgid "" +"The Java clients listed below are started by the router and run in the same " +"JVM." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:318 @@ -4650,7 +4789,7 @@ msgid "Authorization" msgstr "Autor" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:385 -msgid "Requre username and password" +msgid "Require username and password" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:387 @@ -4674,11 +4813,21 @@ msgid "WebApp Configuration" msgstr "Configuración de las Applicaciones Web" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 -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)." +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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:411 -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." +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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:421 @@ -4710,7 +4859,8 @@ msgid "The router keyring is used to decrypt encrypted leaseSets." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:298 -msgid "The keyring may contain keys for local or remote encrypted destinations." +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:308 @@ -4762,16 +4912,22 @@ msgid "Log record format" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 -msgid "(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" -msgstr "(use 'd' = fecha, 'c' = clase, 't' = hilo, 'p' = prioridad, 'm' = mensaje)" +msgid "" +"(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" +msgstr "" +"(use 'd' = fecha, 'c' = clase, 't' = hilo, 'p' = prioridad, 'm' = mensaje)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:315 msgid "Log date format" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 -msgid "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)" -msgstr "('MM' = mes, 'dd' = día, 'HH' = hora, 'mm' = minuto, 'ss' = segundo, 'SSS' = milisegundo)" +msgid "" +"('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' " +"= millisecond)" +msgstr "" +"('MM' = mes, 'dd' = día, 'HH' = hora, 'mm' = minuto, 'ss' = segundo, 'SSS' = " +"milisegundo)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:321 msgid "Max log file size" @@ -4782,7 +4938,9 @@ msgid "Default log level" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329 -msgid "(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)" +msgid "" +"(DEBUG and INFO are not recommended defaults, as they will drastically slow " +"down your router)" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:331 @@ -4814,7 +4972,8 @@ msgid "Manually Ban / Unban a Peer" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:313 -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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:323 @@ -4822,7 +4981,11 @@ msgid "Adjust Profile Bonuses" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 -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" +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:327 @@ -4838,6 +5001,81 @@ msgstr "Pares Relegados" msgid "Banned IPs" msgstr "" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:106 +#, fuzzy +msgid "config reseeding" +msgstr "configuración de servicios" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:240 +#, fuzzy +msgid "I2P Reseeding Configuration" +msgstr "Configuración del Llavero" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:300 +#, fuzzy +msgid "Reseeding Configuration" +msgstr "Configuración del Llavero" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:302 +msgid "" +"Reseeding is the bootstrapping process used to find other routers when you " +"first install I2P, or when your router has too few router references " +"remaining." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304 +msgid "" +"If reseeding has failed, you should first check your network connection." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:308 +msgid "" +"Change these only if HTTP is blocked by a restrictive firewall, reseed has " +"failed, and you have access to an HTTP proxy." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +#, java-format +msgid "See {0} for instructions on reseeding manually." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +msgid "the FAQ" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:312 +msgid "Reseed URL Selection" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 +msgid "Try SSL first then non-SSL" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:324 +msgid "Use SSL only" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:330 +msgid "Use non-SSL only" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:332 +#, fuzzy +msgid "Reseed URLs" +msgstr "URL de noticias" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:336 +msgid "Enable HTTP proxy (not used for SSL)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:340 +msgid "HTTP Proxy Host" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:344 +msgid "HTTP Proxy Port" +msgstr "" + #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:106 msgid "config service" msgstr "configuración de servicios" @@ -4851,27 +5089,39 @@ msgid "Shutdown the router" msgstr "Apagar el enrutador" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:287 -msgid "Graceful shutdown lets the router satisfy the agreements it has already made before shutting down, but may take a few minutes." +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:289 -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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:299 -msgid "If you want the router to restart itself after shutting down, you can choose one of the following." +msgid "" +"If you want the router to restart itself after shutting down, you can choose " +"one of the following." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:301 -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." +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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:303 -msgid "A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately." +msgid "" +"A graceful restart will take a few minutes (but your peers will appreciate " +"your patience), while a hard restart does so immediately." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 -msgid "After tearing down the router, it will wait 1 minute before starting back up again." +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:315 @@ -4879,23 +5129,37 @@ msgid "Systray integration" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 -msgid "On the windows platform, there is a small application to sit in the system tray, allowing you to view the router's status" +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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 -msgid "(later on, I2P client applications will be able to integrate their own functionality into the system tray as well)." +msgid "" +"(later on, I2P client applications will be able to integrate their own " +"functionality into the system tray as well)." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 msgid "If you are on windows, you can either enable or disable that icon here." msgstr "" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 +msgid "Show systray icon" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 +msgid "Hide systray icon" +msgstr "" + #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 msgid "Run on startup" msgstr "Lanzar al iniciar el enrutador" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:329 -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." +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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:331 @@ -4903,11 +5167,15 @@ 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:341 -msgid "If you are running I2P as service right now, removing it will shut down your router immediately." +msgid "" +"If you are running I2P as service right now, removing it will shut down your " +"router immediately." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:343 -msgid "You may want to consider shutting down gracefully, as above, then running uninstall_i2p_service_winnt.bat." +msgid "" +"You may want to consider shutting down gracefully, as above, then running " +"uninstall_i2p_service_winnt.bat." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 @@ -4919,7 +5187,10 @@ msgid "View the job queue" msgstr "Ver cola de tareas" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 -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." +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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 @@ -4927,7 +5198,9 @@ msgid "Launch browser on router startup?" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:361 -msgid "I2P's main configuration interface is this web console, so for your convenience I2P can launch a web browser on startup pointing at" +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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:107 @@ -4992,7 +5265,10 @@ msgid "There is a fundamental tradeoff between anonymity and performance." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:313 -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." +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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:316 @@ -5004,7 +5280,8 @@ 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:333 -msgid "Exploratory tunnel setting changes are stored in the router.config file." +msgid "" +"Exploratory tunnel setting changes are stored in the router.config file." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:336 @@ -5036,7 +5313,10 @@ msgid "Theme selection disabled for Internet Explorer, sorry." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:312 -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." +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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:316 @@ -5044,7 +5324,9 @@ msgid "Router Console Language" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:320 -msgid "Please contribute to the router console translation project! Contact the developers on IRC #i2p to help." +msgid "" +"Please contribute to the router console translation project! Contact the " +"developers on IRC #i2p to help." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:324 @@ -5112,19 +5394,81 @@ msgid "Unsigned Build URL" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 -msgid "I2P updates are disabled because you do not have write permission for the install directory." +msgid "" +"I2P updates are disabled because you do not have write permission for the " +"install directory." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:367 msgid "Save" msgstr "Guardar" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:115 +msgid "Internal Error" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:117 +#, fuzzy +msgid "Router Console" +msgstr "Console del Enrutador I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:121 +#, fuzzy +msgid "Configuration" +msgstr "Configuración IP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129 +msgid "Sorry! There has been an internal error." +msgstr "" + +#. note to translators - both parameters are URLs +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:133 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:232 +#, java-format +msgid "Please report bugs on {0} or {1}." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 +msgid "" +"You may use the username \"guest\" and password \"guest\" if you do not wish " +"to register." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 +msgid "Please include this information in bug reports" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:141 +msgid "Error Details" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:143 +#, fuzzy, java-format +msgid "Error {0}" +msgstr "Error 404" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:163 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:228 +msgid "I2P Version and Running Environment" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 +msgid "" +"Note that system information, log timestamps, and log messages may provide " +"clues to your location; please review everything you include in a bug report." +msgstr "" + #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:117 msgid "Page Not Found" msgstr "Página no encontrada" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:242 -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 "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:244 @@ -5163,28 +5507,6 @@ msgstr "" msgid "I2P Router Logs" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:228 -msgid "I2P Version & Running Environment" -msgstr "" - -#. note to translators - both parameters are URLs -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:232 -#, java-format -msgid "Please report bugs on {0} or {1}." -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 -msgid "You may use the username \"guest\" and password \"guest\" if you do not wish to register." -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 -msgid "Please include this information in bug reports" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 -msgid "Note that system information, log timestamps, and log messages may provide clues to your location; please review everything you include in a bug report." -msgstr "" - #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:281 msgid "Critical Logs" msgstr "" @@ -5218,7 +5540,9 @@ msgid "The requested web application is not running." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:234 -msgid "Please visit the config clients page to start it." +msgid "" +"Please visit the config clients page to start it." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:105 @@ -5245,7 +5569,7 @@ msgstr "estadísticas" msgid "I2P Router Statistics" msgstr "Estadísticas del enrutador I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:248 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:247 #, java-format msgid "Disable {0} Refresh" msgstr "Deshabilitar el recargar cada {0}" @@ -5260,22 +5584,30 @@ msgstr "" #~ msgid "hour" #~ msgstr "hora" + #~ msgid "minutes" #~ msgstr "minutos" + #~ msgid "This is useful in some situations" #~ msgstr "C'est utile dans certains cas" + #~ msgid "Start Now" #~ msgstr "Démarrer tout de suite" + #~ msgid "Depth" #~ msgstr "Profondeur" + #~ msgid "view without" #~ msgstr "montrer sans" + #~ msgid "view with" #~ msgstr "montrer avec" + #~ msgid "Show the router's workload, and how it's performing" #~ msgstr "Montrer les tâches en cours" + #~ msgid "Jobs" #~ msgstr "Tâches" + #~ msgid "Tunnels in/out" #~ msgstr "Tunnels entrants/sortants" - diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 1d0ae74ea..96286f077 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-11-19 18:16+0000\n" +"POT-Creation-Date: 2011-03-03 18:28+0000\n" "PO-Revision-Date: 2010-11-19 20:04+0100\n" "Last-Translator: mixxy \n" "Language-Team: foo \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -26,7 +27,7 @@ msgstr "" #. {0,number,####} prevents 1234 from being output as 1,234 in the English locale. #. If you want the digit separator in your locale, translate as {0}. #. alternates: msec, msecs -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1086 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1141 #, java-format msgid "1 ms" msgid_plural "{0,number,####} ms" @@ -36,8 +37,7 @@ msgstr[1] "" #. seconds #. Note to translators: quantity will always be greater than one. #. alternates: secs, sec. 'seconds' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1091 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:349 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1146 #, java-format msgid "1 sec" msgid_plural "{0} sec" @@ -47,7 +47,7 @@ msgstr[1] "" #. minutes #. Note to translators: quantity will always be greater than one. #. alternates: mins, min. 'minutes' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1096 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1151 #, java-format msgid "1 min" msgid_plural "{0} min" @@ -57,43 +57,43 @@ msgstr[1] "" #. hours #. Note to translators: quantity will always be greater than one. #. alternates: hrs, hr., hrs. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1101 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1156 #, java-format msgid "1 hour" msgid_plural "{0} hours" msgstr[0] "1 heure" msgstr[1] "{0} heures" -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1103 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1158 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313 msgid "n/a" msgstr "" #. days #. Note to translators: quantity will always be greater than one. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1107 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1162 #, java-format msgid "1 day" msgid_plural "{0} days" msgstr[0] "" msgstr[1] "" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:126 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:122 #, java-format msgid "Banned by router hash: {0}" msgstr "" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:128 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:124 #, fuzzy msgid "Banned by router hash" msgstr "Pairs interdits" #. Temporary reason, until the job finishes -#: ../../../router/java/src/net/i2p/router/Blocklist.java:673 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:669 msgid "IP banned" msgstr "IP interdit" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:743 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:739 #, java-format msgid "IP banned by blocklist.txt entry {0}" msgstr "" @@ -149,47 +149,45 @@ msgstr "" msgid "Rejecting tunnels" msgstr "Configuration des tunnels" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:50 -msgid "Ensure that nothing blocks outbound HTTP, check logs and if nothing helps, read the FAQ about reseeding manually." -msgstr "" - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:82 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:105 +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 #, fuzzy msgid "Reseeding" msgstr "Test en cours" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:146 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:128 +#, java-format +msgid "Reseed fetched only 1 router." +msgid_plural "Reseed fetched only {0} routers." +msgstr[0] "" +msgstr[1] "" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:135 +#, fuzzy +msgid "Reseed failed." +msgstr "Test en cours" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:136 +#, java-format +msgid "See {0} for help." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:137 +#, fuzzy +msgid "reseed configuration page" +msgstr "Aide avec la configuration" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:239 msgid "Reseeding: fetching seed URL." msgstr "" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:152 -msgid "Last reseed failed fully (failed reading seed URL)." -msgstr "" - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:178 -msgid "Last reseed failed fully (no routerInfo URLs at seed URL)." -msgstr "" - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:191 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281 #, java-format -msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." +msgid "" +"Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." msgstr "" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212 -#, java-format -msgid "Last reseed failed partly ({0}% of {1})." -msgstr "" - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:217 -#, java-format -msgid "Last reseed failed ({0}% of {1})." -msgstr "" - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:227 -msgid "Last reseed failed fully (exception caught)." -msgstr "" - -#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:510 +#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:512 msgid "NetDb entry" msgstr "" @@ -198,27 +196,44 @@ msgstr "" msgid "No transports (hidden or starting up?)" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:451 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:450 msgid "Unreachable on any transport" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:500 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:499 msgid "Router Transport Addresses" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:505 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:504 #, java-format msgid "{0} is used for outbound connections only" msgstr "" +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123 +msgid "Help" +msgstr "" + #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 +msgid "" +"Your transport connection limits are automatically set based on your " +"configured bandwidth." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 +msgid "" +"To override these limits, add the settings i2np.ntcp.maxConnections=nnn and " +"i2np.udp.maxConnections=nnn on the advanced configuration page." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 msgid "Definitions" msgstr "Définitions" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:520 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:715 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1888 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:735 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890 #: ../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 @@ -228,151 +243,155 @@ msgstr "Définitions" msgid "Peer" msgstr "Pair" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:520 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 msgid "The remote peer, identified by router hash" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:716 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1892 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:736 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 msgid "Dir" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:522 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 #, fuzzy msgid "Inbound connection" msgstr "Options Entrants" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 #, fuzzy msgid "Outbound connection" msgstr "Options Sortants" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 msgid "They offered to introduce us (help other peers traverse our firewall)" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 msgid "We offered to introduce them (help other peers traverse their firewall)" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "How long since a packet has been received / sent" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:717 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1893 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895 msgid "Idle" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:718 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1898 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1900 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "In/Out" msgstr "Entrant/Sortant" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 msgid "The smoothed inbound / outbound transfer rate (KBytes per second)" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 msgid "How long ago this connection was established" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:719 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1903 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905 msgid "Up" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:720 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1907 msgid "Skew" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 msgid "The difference between the peer's clock and your own" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 -msgid "The congestion window, which is how many bytes can be sent without an acknowledgement" -msgstr "" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 -msgid "The number of sent messages awaiting acknowledgement" -msgstr "" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 -msgid "The maximum number of concurrent messages to send" -msgstr "" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 -msgid "The number of pending sends which exceed congestion window" -msgstr "" - #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 -msgid "The slow start threshold" +msgid "" +"The congestion window, which is how many bytes can be sent without an " +"acknowledgement" msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 -msgid "The round trip time in milliseconds" +msgid "The number of sent messages awaiting acknowledgement" msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1915 -msgid "Dev" -msgstr "" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 -msgid "The standard deviation of the round trip time in milliseconds" +msgid "The maximum number of concurrent messages to send" msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 -msgid "The retransmit timeout in milliseconds" +msgid "The number of pending sends which exceed congestion window" msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 -msgid "Current maximum send packet size / estimated maximum receive packet size (bytes)" +msgid "The slow start threshold" msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:721 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1922 +msgid "The round trip time in milliseconds" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 +msgid "Dev" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +msgid "The standard deviation of the round trip time in milliseconds" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 +msgid "The retransmit timeout in milliseconds" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +msgid "" +"Current maximum send packet size / estimated maximum receive packet size " +"(bytes)" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 msgid "TX" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 msgid "The total number of packets sent to the peer" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:722 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:742 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926 msgid "RX" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 msgid "The total number of packets received from the peer" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1929 msgid "Dup TX" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 msgid "The total number of packets retransmitted to the peer" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1929 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1931 msgid "Dup RX" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 msgid "The total number of duplicate packets received from the peer" msgstr "" @@ -382,177 +401,178 @@ msgstr "" msgid "Excessive clock skew: {0}" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:710 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:730 msgid "NTCP connections" msgstr "connexions NTCP" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:711 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1884 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:731 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1886 msgid "Limit" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:712 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1885 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 msgid "Timeout" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:723 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:743 msgid "Out Queue" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:724 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:744 #, fuzzy msgid "Backlogged?" msgstr "Retard accumulé" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1947 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:758 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1949 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 msgid "Inbound" msgstr "Entrant" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1949 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1951 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 msgid "Outbound" msgstr "Sortant" #. buf.append("\n"); -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:787 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:807 #, fuzzy msgid "peers" msgstr "Pairs" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1883 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1885 #, fuzzy msgid "UDP connections" msgstr "connexions UDP" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1892 msgid "Sort by peer hash" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1892 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 msgid "Direction/Introduction" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1896 msgid "Sort by idle inbound" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1896 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1898 msgid "Sort by idle outbound" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1899 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1901 msgid "Sort by inbound rate" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1901 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1903 msgid "Sort by outbound rate" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1904 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1906 msgid "Sort by connection uptime" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1906 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1908 msgid "Sort by clock skew" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1909 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1911 msgid "Sort by congestion window" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1911 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1913 msgid "Sort by slow start threshold" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1914 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1916 msgid "Sort by round trip time" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1916 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918 msgid "Sort by round trip time deviation" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1920 msgid "Sort by retransmission timeout" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1921 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1923 msgid "Sort by outbound maximum transmit unit" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1923 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1925 msgid "Sort by packets sent" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1925 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927 msgid "Sort by packets received" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1928 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1930 msgid "Sort by packets retransmitted" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1930 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1932 msgid "Sort by packets received more than once" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1951 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1953 msgid "We offered to introduce them" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1953 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1955 msgid "They offered to introduce us" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1957 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1959 msgid "Choked" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1965 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1967 msgid "1 fail" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1967 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1969 #, java-format msgid "{0} fails" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1973 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1975 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:162 msgid "Banned" msgstr "Prohibé" #. buf.append("\n"); -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2105 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2106 msgid "SUMMARY" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:145 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:124 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 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:267 msgid "Dropping tunnel requests: Overloaded" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:525 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:460 msgid "Rejecting tunnels: Request overload" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:550 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:485 msgid "Rejecting tunnels: Connection limit" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:744 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:685 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:706 msgid "Dropping tunnel requests: High load" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:753 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:698 msgid "Dropping tunnel requests: Queue time" msgstr "" @@ -1442,8 +1462,7 @@ msgstr "" msgid "Venezuela" msgstr "" -#: ../java/build/Countries.java:229 -#: ../java/build/Countries.java:230 +#: ../java/build/Countries.java:229 ../java/build/Countries.java:230 msgid "Virgin Islands" msgstr "" @@ -1483,11 +1502,12 @@ msgstr "" msgid "Zimbabwe" msgstr "" -#: ../java/src/net/i2p/router/web/CSSHelper.java:57 +#: ../java/src/net/i2p/router/web/CSSHelper.java:58 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:35 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:37 #: ../java/strings/Strings.java:29 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:119 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:233 msgid "I2P Router Console" msgstr "Console du routeur I2P" @@ -1502,252 +1522,272 @@ msgstr "Configuration sauvegardé avec succès" #: ../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" +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 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:335 msgid "Save Client Configuration" msgstr "Sauvegarder Configuration Client " -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:38 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:346 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:39 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:405 +#, fuzzy +msgid "Save Interface Configuration" +msgstr "Sauvegarder Configuration Client " + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 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 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:47 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427 #, fuzzy msgid "Save Plugin Configuration" msgstr "Sauvegarder Configuration Client " -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:46 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:362 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:51 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433 msgid "Install Plugin" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:82 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:87 #, java-format msgid "Deleted plugin {0}" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:84 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:89 #, java-format msgid "Error deleting plugin {0}" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:96 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:101 #, java-format msgid "Stopped plugin {0}" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:98 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:103 #, java-format msgid "Error stopping plugin {0}" msgstr "" #. label (IE) -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:119 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:189 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:255 msgid "Start" msgstr "Démarrer" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:138 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:143 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:49 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:61 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:33 msgid "Unsupported" msgstr "Non supportée" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:184 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:189 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 "La configuration du client a été sauvegardé avec succès - redémarrer pour prendre effet. " +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:193 +msgid "" +"Client configuration saved successfully - restart required to take effect." +msgstr "" +"La configuration du client a été sauvegardé avec succès - redémarrer pour " +"prendre effet. " -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:202 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:213 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 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:392 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:379 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:384 msgid "Client" msgstr "Client" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:266 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:271 msgid "started" msgstr "démarré" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223 msgid "deleted" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:235 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:240 msgid "WebApp configuration saved." msgstr "Sauvegardé configuration WebApp" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:251 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:256 #, fuzzy msgid "Plugin configuration saved." msgstr "Configuration Client" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:266 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:58 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:271 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 msgid "WebApp" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:268 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:273 msgid "Failed to start" msgstr "Echec de démarrage" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:273 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:278 msgid "Failed to find server." msgstr "Pas pu trouver un serveur." -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:279 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:284 msgid "No plugin URL specified." msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:289 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:294 #, java-format msgid "No update URL specified for {0}" msgstr "" -#: ../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:307 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:320 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:325 msgid "Plugin or update download already in progress." msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:306 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:311 #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:118 #, java-format msgid "Downloading plugin from {0}" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:324 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:329 #, fuzzy, java-format msgid "Checking plugin {0} for updates" msgstr "Chercher des mises à jour" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:334 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:339 #, java-format msgid "Started plugin {0}" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:336 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:341 #, java-format msgid "Error starting plugin {0}" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:21 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:192 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 +#, fuzzy +msgid "" +"Interface configuration saved successfully - restart required to take effect." +msgstr "" +"La configuration du client a été sauvegardé avec succès - redémarrer pour " +"prendre effet. " + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:85 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258 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 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:94 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:331 msgid "Add Client" msgstr "Ajouter client" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:38 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 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 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 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 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 msgid "Run at Startup?" msgstr "Lancer au démarrage ?" -#: ../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 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:197 msgid "Description" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:82 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 msgid "Plugin" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:95 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:161 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:181 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185 msgid "Version" msgstr "Version" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:97 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:163 msgid "Signed by" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:114 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:180 msgid "Date" msgstr "Date" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:120 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:186 msgid "Author" msgstr "Autheur" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:136 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:202 msgid "License" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:141 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:207 msgid "Website" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:146 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:212 #, fuzzy msgid "Update link" msgstr "Méthode de mise à jour" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:194 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:260 msgid "Stop" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:196 -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:81 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:312 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:262 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:78 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:313 msgid "Check for updates" msgstr "Chercher des mises à jour" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:197 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:263 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:238 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:242 msgid "Update" msgstr "Mettre à jour" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:202 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:268 #, java-format msgid "Are you sure you want to delete {0}?" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:204 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:270 #, fuzzy msgid "Delete" msgstr "Supprimer une clé" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:18 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:324 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:325 msgid "Add key" msgstr "Ajouter une clé" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:19 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:323 msgid "Delete key" msgstr "Supprimer une clé" @@ -1795,11 +1835,14 @@ msgid "Log configuration saved" msgstr "Aide avec la configuration" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 -msgid "Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" +msgid "" +"Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" msgstr "" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:49 -msgid "Or put entries in the logger.config file. Example: 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 "" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:50 @@ -1836,7 +1879,7 @@ msgid "Select a class to add" msgstr "" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:200 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:204 msgid "Network" msgstr "Réseau" @@ -1846,7 +1889,7 @@ msgstr "" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:101 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 #: ../java/strings/Strings.java:72 msgid "Tunnels" msgstr "" @@ -1860,7 +1903,7 @@ msgid "Clients" msgstr "Clients" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:293 msgid "Keyring" msgstr "Porte-clés" @@ -1870,7 +1913,7 @@ msgstr "Enregistrements" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:107 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260 #: ../java/strings/Strings.java:67 msgid "Peers" msgstr "Pairs" @@ -1887,13 +1930,15 @@ msgstr "Avancé" #: ../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:339 -#: ../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 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:29 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:34 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:360 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:516 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:352 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:377 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:344 msgid "Save changes" msgstr "Sauvegarder" @@ -1979,25 +2024,25 @@ msgstr "Mise à jour du pourcentage de bande passante partagée" msgid "Updated bandwidth limits" msgstr "Limitations mises à jour de la bande passante " -#: ../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 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:41 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:49 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:59 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:62 msgid "unknown" msgstr "inconnu" -#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:169 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:172 msgid "bits per second" msgstr "bits par seconde" -#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:170 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:173 #, java-format msgid "or {0} bytes per month maximum" msgstr "" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:20 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:314 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:315 msgid "Ban peer until restart" msgstr "Interdire pair jusqu'au redémarrage" @@ -2017,7 +2062,7 @@ msgid "Invalid peer" msgstr "Pair pas valable" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:28 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:317 msgid "Unban peer" msgstr "" @@ -2030,8 +2075,8 @@ msgid "is not currently banned" msgstr "n'est pas actuellement interdit" #: ../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" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:343 +msgid "Adjust peer bonuses" msgstr "" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:47 @@ -2042,10 +2087,31 @@ msgstr "" msgid "Bad capacity value" msgstr "Mauvaise valeur de capacité" +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:17 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 +#, fuzzy +msgid "Save changes and reseed now" +msgstr "Sauvegarder" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:21 +#, fuzzy +msgid "Reseeding is already in progress" +msgstr "Création d'un tunnel en cours" + +#. skip the nonce checking in ReseedHandler +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:24 +msgid "Starting reseed process" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:66 +#, fuzzy +msgid "Configuration saved successfully." +msgstr "Configuration sauvegardé avec succès" + #. 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:293 msgid "Shutdown immediately" msgstr "Fermer immédiatement" @@ -2094,7 +2160,7 @@ msgid "Restart in {0}" msgstr "Redémarrage en {0}" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:53 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:290 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:291 msgid "Shutdown gracefully" msgstr "Fermer gracieusement" @@ -2107,7 +2173,7 @@ msgid "Shutdown immediately! boom bye bye bad bwoy" msgstr "Fermer immédiatement !" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:61 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:294 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:295 msgid "Cancel graceful shutdown" msgstr "Annuler fermeture gracieux" @@ -2116,7 +2182,7 @@ msgid "Graceful shutdown cancelled" msgstr "Fermeture gracieux annulée" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:64 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:307 msgid "Graceful restart" msgstr "Redémarrage gracieux" @@ -2125,7 +2191,7 @@ msgid "Graceful restart requested" msgstr "Redémarrage gracieux demandé" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:68 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:309 msgid "Hard restart" msgstr "Redémarrage immédiate" @@ -2150,107 +2216,83 @@ 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 msgid "Run I2P on startup" msgstr "Lancer I2P au démarrage" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:82 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:336 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 msgid "Don't run I2P on startup" msgstr "Ne pas lancer I2P au démarrage" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:84 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:354 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:355 msgid "Dump threads" msgstr "Dump fils d'exécution" #: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:363 msgid "View console on startup" msgstr "Montrer la console au démarrage" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:117 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:93 msgid "Console is to be shown on startup" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:118 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:364 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:94 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:365 msgid "Do not view console on startup" msgstr "Ne pas montrer la console au démarrage" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:120 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96 msgid "Console is not to be shown on startup" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:129 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:105 msgid "Service installed" msgstr "Service installé" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:131 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:107 msgid "Warning: unable to install the service" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:137 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:113 msgid "Service removed" msgstr "Service enlévé" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:139 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:115 msgid "Warning: unable to remove the service" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:118 +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:111 msgid "Stat filter and location updated successfully to" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:120 +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:113 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" +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:114 +msgid "" +"Graph list updated, may take up to 60s to be reflected here and on the Graphs Page" msgstr "" #. 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 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:135 msgid "Updated settings for all pools." msgstr "" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:140 msgid "Exploratory tunnel configuration saved successfully." msgstr "Configuration du tunnel exploratoire a été sauvegardé avec succès." -#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:144 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:36 -msgid "Error saving the configuration (applied but not saved) - please see the error logs." +msgid "" +"Error saving the configuration (applied but not saved) - please see the " +"error logs." msgstr "" #. * dummies for translation @@ -2332,83 +2374,93 @@ msgid "Refresh the page to view." msgstr "" #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +msgid "Arabic" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "English" msgstr "Anglais" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "French" msgstr "Français" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "German" msgstr "Allemand" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "Spanish" msgstr "Espagnol" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 -msgid "Chinese" -msgstr "Chinois" - -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Dutch" msgstr "Néerlandais" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 +msgid "Portuguese" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Russian" msgstr "Russe" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:54 +msgid "Chinese" +msgstr "Chinois" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:54 msgid "Swedish" msgstr "Suédois" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:88 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:85 msgid "Update available, attempting to download now" msgstr "Mise à jour disponible, en tentant de la télécharger actuellement" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:90 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:87 msgid "Update available, click button on left to download" -msgstr "Mise à jour disponible, cliquez sur le bouton sur la gauche pour la télécharger" +msgstr "" +"Mise à jour disponible, cliquez sur le bouton sur la gauche pour la " +"télécharger" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:96 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:93 msgid "No update available" msgstr "Pas de mise à jour disponible" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:104 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:101 msgid "Updating news URL to" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:112 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:109 msgid "Updating proxy host to" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:120 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:117 msgid "Updating proxy port to" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:133 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:130 msgid "Updating refresh frequency to" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:140 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:137 msgid "Updating update policy to" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:149 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:146 msgid "Updating update URLs." msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:155 msgid "Updating trusted keys." msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:166 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:163 msgid "Updating unsigned update URL to" msgstr "" #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:88 -#: ../java/src/net/i2p/router/web/GraphHelper.java:138 +#: ../java/src/net/i2p/router/web/GraphHelper.java:167 msgid "Never" msgstr "Jamais" @@ -2428,81 +2480,75 @@ msgstr "Télécharger et vérifier seulement" msgid "Download, verify, and restart" msgstr "Télécharger, vérifier et redémarrer" -#: ../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." +#: ../java/src/net/i2p/router/web/FormHandler.java:174 +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 +#: ../java/src/net/i2p/router/web/GraphHelper.java:93 msgid "Combined bandwidth graph" msgstr "" #. e.g. "statname for 60m" -#: ../java/src/net/i2p/router/web/GraphHelper.java:96 +#: ../java/src/net/i2p/router/web/GraphHelper.java:107 #, java-format msgid "{0} for {1}" msgstr "" -#: ../java/src/net/i2p/router/web/GraphHelper.java:130 +#: ../java/src/net/i2p/router/web/GraphHelper.java:146 msgid "Configure Graph Display" msgstr "Graphe affichage configuration" -#: ../java/src/net/i2p/router/web/GraphHelper.java:130 +#: ../java/src/net/i2p/router/web/GraphHelper.java:146 msgid "Select Stats" msgstr "" -#: ../java/src/net/i2p/router/web/GraphHelper.java:132 +#: ../java/src/net/i2p/router/web/GraphHelper.java:150 msgid "Periods" msgstr "Périodes" -#: ../java/src/net/i2p/router/web/GraphHelper.java:133 +#: ../java/src/net/i2p/router/web/GraphHelper.java:151 msgid "Plot averages" msgstr "Tracer les moyennes" -#: ../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 +#: ../java/src/net/i2p/router/web/GraphHelper.java:152 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:333 msgid "or" msgstr "ou" -#: ../java/src/net/i2p/router/web/GraphHelper.java:134 +#: ../java/src/net/i2p/router/web/GraphHelper.java:152 msgid "plot events" msgstr "tracer les événements" -#: ../java/src/net/i2p/router/web/GraphHelper.java:135 +#: ../java/src/net/i2p/router/web/GraphHelper.java:153 msgid "Image sizes" msgstr "Taille des images" -#: ../java/src/net/i2p/router/web/GraphHelper.java:135 +#: ../java/src/net/i2p/router/web/GraphHelper.java:153 msgid "width" msgstr "largeur" -#: ../java/src/net/i2p/router/web/GraphHelper.java:136 +#: ../java/src/net/i2p/router/web/GraphHelper.java:154 msgid "height" msgstr "hauteur" -#: ../java/src/net/i2p/router/web/GraphHelper.java:136 -#: ../java/src/net/i2p/router/web/GraphHelper.java:137 +#: ../java/src/net/i2p/router/web/GraphHelper.java:154 +#: ../java/src/net/i2p/router/web/GraphHelper.java:155 msgid "pixels" msgstr "pixels" -#: ../java/src/net/i2p/router/web/GraphHelper.java:138 +#: ../java/src/net/i2p/router/web/GraphHelper.java:156 msgid "Refresh delay" msgstr "Delai d'actualisation" -#: ../java/src/net/i2p/router/web/GraphHelper.java:138 -msgid "hour" -msgstr "heure" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:138 -msgid "minute" +#: ../java/src/net/i2p/router/web/GraphHelper.java:171 +msgid "Redraw" msgstr "" -#: ../java/src/net/i2p/router/web/GraphHelper.java:138 -msgid "minutes" -msgstr "minutes" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:139 -msgid "Redraw" +#: ../java/src/net/i2p/router/web/GraphHelper.java:203 +msgid "Graph settings saved" msgstr "" #: ../java/src/net/i2p/router/web/LogsHelper.java:13 @@ -2638,8 +2684,8 @@ msgid "Full entry" msgstr "" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:110 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:600 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:115 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 msgid "Hidden" msgstr "Caché" @@ -2692,12 +2738,12 @@ msgstr "" msgid "NTCP and SSU with introducers" msgstr "" -#: ../java/src/net/i2p/router/web/NewsFetcher.java:82 +#: ../java/src/net/i2p/router/web/NewsFetcher.java:93 #, java-format msgid "News last updated {0} ago." msgstr "Actualités mises à jour il y a {0}" -#: ../java/src/net/i2p/router/web/NewsFetcher.java:88 +#: ../java/src/net/i2p/router/web/NewsFetcher.java:99 #, java-format msgid "News last checked {0} ago." msgstr "Actualités vérifiés il y a {0}" @@ -2733,132 +2779,134 @@ msgid "Downloading plugin" msgstr "Télécharger pas signé" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:146 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:185 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:244 #, java-format msgid "{0}B transferred" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:152 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:153 msgid "Plugin downloaded" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:157 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:344 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:158 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:356 #, java-format msgid "Cannot create plugin directory {0}" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:166 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:226 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:167 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:298 #, java-format msgid "from {0}" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:176 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:177 #, java-format msgid "Plugin from {0} is corrupt" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:187 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:188 #, java-format msgid "Plugin from {0} does not contain the required configuration file" msgstr "" #. updateStatus("" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + ""); -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:200 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:201 #, java-format msgid "Plugin from {0} contains an invalid key" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:219 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:228 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:237 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:225 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:235 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:249 #, java-format msgid "Plugin signature verification of {0} failed" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:252 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:264 #, java-format msgid "Plugin from {0} has invalid name or version" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:257 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:269 #, java-format msgid "Plugin {0} has mismatched versions" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:265 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:277 #, java-format msgid "This plugin requires I2P version {0} or higher" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:273 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:285 #, java-format msgid "This plugin requires Java version {0} or higher" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:281 -msgid "Downloaded plugin is for new installs only, but the plugin is already installed" +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 +msgid "" +"Downloaded plugin is for new installs only, but the plugin is already " +"installed" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:305 msgid "Installed plugin does not contain the required configuration file" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:301 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:313 msgid "Signature of downloaded plugin does not match installed plugin" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:308 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:320 #, java-format msgid "Downloaded plugin version {0} is not newer than installed plugin" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:315 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:327 #, java-format msgid "Plugin update requires installed plugin version {0} or higher" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:322 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:334 #, java-format msgid "Plugin update requires installed plugin version {0} or lower" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:339 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351 msgid "Plugin is for upgrades only, but the plugin is not installed" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:352 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:364 #, java-format msgid "Failed to install plugin in {0}" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:359 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:371 #, java-format msgid "Plugin {0} installed, router restart required" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:361 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:373 #, java-format msgid "Plugin {0} installed" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:370 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:391 #, java-format msgid "Plugin {0} installed and started" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:372 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:394 #, java-format msgid "Plugin {0} installed but failed to start, check logs" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:374 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:396 #, java-format msgid "Plugin {0} installed but failed to start" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:384 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:406 #, java-format msgid "Failed to download plugin from {0}" msgstr "" @@ -2888,13 +2936,13 @@ msgstr "" #: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:335 msgid "Speed" msgstr "Vitesse" #: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:339 msgid "Capacity" msgstr "Capacité" @@ -2925,7 +2973,7 @@ msgid "Failing" msgstr "Défaillant" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:282 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:287 msgid "Integrated" msgstr "Intégré" @@ -3048,7 +3096,9 @@ msgid "caps" msgstr "" #: ../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" +msgid "" +"peak throughput (bytes per second) over a 1 minute period that the peer has " +"sustained in a single tunnel" msgstr "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 @@ -3095,41 +3145,41 @@ msgid "unban now" msgstr "plus interdit" #. 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 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:223 #, fuzzy msgid "Bandwidth usage" msgstr "Bande passante entrante/sortante" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:181 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:230 #, fuzzy msgid "Outbound bytes/sec" msgstr "Options Sortants" #. def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3); -#: ../java/src/net/i2p/router/web/StatSummarizer.java:183 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:232 #, fuzzy msgid "Inbound bytes/sec" msgstr "Options Entrants" -#: ../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 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:235 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:236 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:237 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:238 msgid "bytes/sec" msgstr "" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:186 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:235 #, fuzzy msgid "out average" msgstr "Tracer les moyennes" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:187 -#: ../java/src/net/i2p/router/web/StatSummarizer.java:189 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:236 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:238 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:115 msgid "max" msgstr "" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:188 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:237 #, fuzzy msgid "in average" msgstr "Tracer les moyennes" @@ -3143,7 +3193,9 @@ msgid "Statistics gathered during this router's uptime" msgstr "" #: ../java/src/net/i2p/router/web/StatsGenerator.java:63 -msgid "The data gathered is quantized over a 1 minute period, so should just be used as an estimate." +msgid "" +"The data gathered is quantized over a 1 minute period, so should just be " +"used as an estimate." msgstr "" #: ../java/src/net/i2p/router/web/StatsGenerator.java:64 @@ -3201,39 +3253,46 @@ msgstr "Tracer les moyennes" msgid "Highest average" msgstr "Tracer les moyennes" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:202 +#. breaking the sentence like before makes translation in my language impossible. +#: ../java/src/net/i2p/router/web/StatsGenerator.java:201 #, java-format -msgid "in this period which ended {0} ago." +msgid "There were {0} event(s) in this period" msgstr "" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:204 +#. buf.append(' '); +#: ../java/src/net/i2p/router/web/StatsGenerator.java:203 +#, fuzzy, java-format +msgid " which ended {0} ago." +msgstr "Actualités vérifiés il y a {0}" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:205 #, fuzzy msgid "No events" msgstr "tracer les événements" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:210 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:211 msgid "Average event count" msgstr "" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:212 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:213 msgid "Events in peak period" msgstr "" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:220 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:221 #, fuzzy msgid "Graph Data" msgstr "Graphe" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:222 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:223 msgid "Graph Event Count" msgstr "" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:225 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:226 msgid "Export Data as XML" msgstr "" #. Display the strict average -#: ../java/src/net/i2p/router/web/StatsGenerator.java:230 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:231 msgid "Lifetime average value" msgstr "" @@ -3247,7 +3306,9 @@ msgid "Help & FAQ" msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:55 -msgid "Configure startup of clients and webapps (services); manually start dormant services" +msgid "" +"Configure startup of clients and webapps (services); manually start dormant " +"services" msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:57 @@ -3295,12 +3356,12 @@ msgid "I2P Internals" msgstr "Configuration" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:99 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:379 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:384 msgid "View existing tunnels and tunnel build status" msgstr "Montrer les tunnels existants et le statut de création des tunnels" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:105 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258 msgid "Show all current peer connections" msgstr "Montrer toutes les connexions actuelles aux pairs" @@ -3341,7 +3402,7 @@ msgid "Textual router performance statistics" msgstr "La performance statistique du routeur en texte" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:365 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:370 msgid "Local Destinations" msgstr "Destinations locales" @@ -3351,232 +3412,237 @@ msgstr "Destinations locales" msgid "I2PTunnel" msgstr "tunnel sommaire I2P" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:160 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164 msgid "I2P Router Help" msgstr "Aide routeur I2P" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:162 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166 msgid "General" msgstr "Général" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:167 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171 msgid "Local Identity" msgstr "Identité locale" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:175 msgid "Your unique I2P router identity is" msgstr "L'identité unique de votre routeur est" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:175 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179 msgid "never reveal it to anyone" msgstr "ne jamais la révéler à personne" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:181 msgid "show" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:188 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192 msgid "How long we've been running for this session" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195 msgid "Uptime" msgstr "Temps de service" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198 -msgid "Help with configuring your firewall and router for optimal I2P performance" -msgstr "Aide avec la configuration du pare-feu et du routeur afin d'optimiser la performance d'I2P" +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 +msgid "" +"Help with configuring your firewall and router for optimal I2P performance" +msgstr "" +"Aide avec la configuration du pare-feu et du routeur afin d'optimiser la " +"performance d'I2P" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 msgid "Download" msgstr "Télécharger" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:236 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:240 msgid "Download Unsigned" msgstr "Télécharger pas signé" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:262 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266 msgid "Active" msgstr "Actif" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275 msgid "Fast" msgstr "Rapide" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:276 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:281 msgid "High capacity" msgstr "Haute capacité" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:293 msgid "Known" msgstr "Connu" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:303 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:308 msgid "Help with firewall configuration" msgstr "Aide avec la configuration du pare-feu" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:305 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:310 msgid "Check NAT/firewall" msgstr "Vérifier NAT/pare-feu" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:325 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:330 msgid "Reseed" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:342 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:347 msgid "Configure router bandwidth allocation" msgstr "Configurer la bande passante du routeur" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:344 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:349 msgid "Bandwidth in/out" msgstr "Bande passante entrante/sortante" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:364 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:369 msgid "Total" msgstr "Totale" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:371 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376 msgid "Used" msgstr "Utilisée" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:391 msgid "Exploratory" msgstr "Exploratoire" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:398 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403 msgid "Participating" msgstr "Participant" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:404 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:409 #, fuzzy msgid "Share ratio" msgstr "Partager" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:410 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415 msgid "What's in the router's job queue?" msgstr "Montrer les tâches du routeur qui sont à traiter " -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 msgid "Congestion" msgstr "Saturation réseau" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:422 msgid "Job lag" msgstr "Tâche décalage" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:423 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:428 msgid "Message delay" msgstr "Message retard" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:429 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:434 msgid "Tunnel lag" msgstr "Tunnel décalage" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440 msgid "Backlog" msgstr "Retard accumulé" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:101 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:106 msgid "ERR-Client Manager I2CP Error - check logs" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:108 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:113 #, fuzzy, java-format msgid "ERR-Clock Skew of {0}" msgstr "ERR - horloge décalé" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:117 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:576 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:122 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 msgid "OK" msgstr "OK" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:118 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:123 msgid "ERR-Private TCP Address" msgstr "ERR - Adresse TCP privée" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:120 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:125 msgid "ERR-SymmetricNAT" msgstr "ERR - NAT symétrique" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:123 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:128 msgid "WARN-Firewalled with Inbound TCP Enabled" msgstr "WARN - pare-feu avec TCP entrant activé" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:125 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:130 msgid "WARN-Firewalled and Floodfill" msgstr "WARN - Pare-feu et Floodfill" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:127 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:132 msgid "WARN-Firewalled and Fast" msgstr "WARN - Pare-feu et Rapide" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:128 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:580 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:133 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 msgid "Firewalled" msgstr "Bloqué par un pare-feu" -#: ../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 "" - -#: ../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" +#: ../java/src/net/i2p/router/web/SummaryHelper.java:135 +msgid "" +"ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and " +"restart" msgstr "" #: ../java/src/net/i2p/router/web/SummaryHelper.java:141 +msgid "ERR-No Active Peers, Check Network Connection and Firewall" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:144 +msgid "ERR-UDP Disabled and Inbound TCP host/port not set" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:146 msgid "WARN-Firewalled with UDP Disabled" msgstr "WARN - Pare-feu avec UDP desactivé" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:143 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:596 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:148 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 msgid "Testing" msgstr "Test en cours" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:365 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:370 msgid "Add/remove/edit & control your client and server tunnels" msgstr "Ajouter/enlever/éditer & contrôler vos tunnels client et serveur" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:377 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:382 msgid "Server" msgstr "Serveur" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:381 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:386 msgid "Show tunnels" msgstr "Montrer les tunnels" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:392 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:397 msgid "Leases expired" msgstr "Bails périmés" #. red or yellow light -#: ../java/src/net/i2p/router/web/SummaryHelper.java:392 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:393 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:397 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:398 msgid "Rebuilding" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:393 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:398 msgid "ago" msgstr "il y a" #. green light -#: ../java/src/net/i2p/router/web/SummaryHelper.java:396 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:401 msgid "Ready" msgstr "Prêt" #. yellow light -#: ../java/src/net/i2p/router/web/SummaryHelper.java:400 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 msgid "Building" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:400 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 msgid "Building tunnels" msgstr "Création des tunnels en cours" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:410 #, fuzzy msgid "none" msgstr "Connu" @@ -3585,7 +3651,7 @@ msgstr "Connu" #. 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/src/net/i2p/router/web/SummaryHelper.java:421 #: ../java/strings/Strings.java:36 msgid "shared clients" msgstr "clients partagés" @@ -3618,7 +3684,7 @@ msgstr "Connu" #: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:287 #, fuzzy msgid "configure" msgstr "configuration" @@ -3752,18 +3818,18 @@ msgid "Totals" msgstr "Totale" #: ../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:178 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:142 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:237 #, fuzzy msgid "Updating" msgstr "Mettre à jour" +#. Process the .sud/.su2 file #: ../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:189 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:214 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:261 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:286 #, fuzzy msgid "Update downloaded" msgstr "Méthode de mise à jour" @@ -3774,23 +3840,23 @@ msgid "Unsigned update file from {0} is corrupt" msgstr "" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:111 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:209 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:281 #, fuzzy msgid "Restarting" msgstr "Redémarrer" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:118 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:216 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:288 msgid "Click Restart to install" msgstr "" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:120 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:218 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:290 msgid "Click Shutdown and restart to install" msgstr "" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:121 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:220 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:292 #, fuzzy, java-format msgid "Version {0}" msgstr "Version" @@ -3800,13 +3866,24 @@ msgstr "Version" msgid "Failed copy to {0}" msgstr "Echec de démarrage" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:209 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:184 +#, fuzzy, java-format +msgid "Updating from {0}" +msgstr "Mettre à jour" + +#: ../java/src/net/i2p/router/web/UpdateHandler.java:253 +#, java-format +msgid "No new version found at {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/UpdateHandler.java:281 #, fuzzy msgid "Update verified" msgstr "Mise à jour fini" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:234 -msgid "Transfer failed" +#: ../java/src/net/i2p/router/web/UpdateHandler.java:307 +#, java-format +msgid "Transfer failed from {0}" msgstr "" #. wars for ConfigClientsHelper @@ -4072,570 +4149,698 @@ msgid "config networking" msgstr "Interconnexion configuration" #. 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_005fnl_jsp.java:220 -#: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:230 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:215 msgid "Refresh (s)" msgstr "Actualiser (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_005fnl_jsp.java:224 -#: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:231 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:219 msgid "Enable" msgstr "Activer" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:240 msgid "I2P Network Configuration" msgstr "Configuration I2P réseau" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:297 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:298 msgid "Bandwidth limiter" msgstr "Limiteur de bande passante" -#: ../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 fonctionnera mieux si vous configurez le débit de transmission et réception pour qu'ils soient égales à ceux de votre connexion internet." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:300 +msgid "" +"I2P will work best if you configure your rates to match the speed of your " +"internet connection." +msgstr "" +"I2P fonctionnera mieux si vous configurez le débit de transmission et " +"réception pour qu'ils soient égales à ceux de votre connexion internet." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:304 msgid "KBps In" msgstr "KOps entrant" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:318 msgid "KBps Out" msgstr "KOps sortant" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:333 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:334 msgid "Share" msgstr "Partager" -#: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:304 msgid "NOTE" msgstr "NOTER" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:342 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:343 #, java-format msgid "You have configured I2P to share only {0} KBps." msgstr "Vous avez configuré I2P à partager que {0} KOps." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:345 -msgid "I2P requires at least 12KBps to enable sharing. " -msgstr "I2P a besoin de plus de 12KOps afin d'activer le partage de bande passante" - #: ../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 "Veuillez activer le partage de bande passante (tunnels participants) en augmentant votre bande passante." +msgid "I2P requires at least 12KBps to enable sharing. " +msgstr "" +"I2P a besoin de plus de 12KOps afin d'activer le partage de bande passante" #: ../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 "Cela aidera votre anonymat en cachant vos données parmi les données des autres, et cela améliorera le réseau." +msgid "" +"Please enable sharing (participating in tunnels) by configuring more " +"bandwidth. " +msgstr "" +"Veuillez activer le partage de bande passante (tunnels participants) en " +"augmentant votre bande passante." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:350 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:348 +msgid "" +"It improves your anonymity by creating cover traffic, and helps the network." +msgstr "" +"Cela aidera votre anonymat en cachant vos données parmi les données des " +"autres, et cela améliorera le réseau." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:351 #, java-format msgid "You have configured I2P to share {0} KBps." msgstr "Vous avez configuré I2P à partager {0} KOps." -#: ../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 "En partageant plus de votre bande passante, vous améliorerez votre anonymat et le réseau." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:354 +msgid "" +"The higher the share bandwidth the more you improve your anonymity and help " +"the network." +msgstr "" +"En partageant plus de votre bande passante, vous améliorerez votre anonymat " +"et le réseau." -#: ../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:337 -#: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:358 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:403 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:348 +#: ../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:342 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:365 msgid "Cancel" msgstr "Annuler" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:374 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:375 msgid "IP and Transport Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:376 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:377 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:306 msgid "The default settings will work for most people." msgstr "La configuration par défaut marchera pour la plupart des gens." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:378 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:379 msgid "There is help below." msgstr "Voir les explications ci-dessous." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:380 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:381 msgid "UPnP Configuration" msgstr "Configuration UPnP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:384 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:385 msgid "Enable UPnP to open firewall ports" msgstr "Activer UPnP afin d'ouvrir les ports du pare-feu" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:386 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:387 msgid "UPnP status" msgstr "Statut UPnP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:388 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:389 msgid "IP Configuration" msgstr "Configuration 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:391 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:461 msgid "Externally reachable hostname or IP address" msgstr "Adresse IP ou nom d'hôte qui est joignable depuis l'exterieur" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:394 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395 msgid "Use all auto-detect methods" msgstr "Utiliser toute méthode d'auto-détection" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:398 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399 msgid "Disable UPnP IP address detection" msgstr "Desactiver la détection de l'adresse IP par UPnP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:402 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 msgid "Ignore local interface IP address" msgstr "Ignorer l'adresse IP de l'interface locale" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:406 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:407 msgid "Use SSU IP address detection only" msgstr "Utiliser seulement SSU pour détecter l'adresse IP" -#: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:411 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 msgid "Specify hostname or IP" msgstr "Saisir l'adresse IP ou le nom de l'hôte" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:416 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 msgid "Select Interface" msgstr "Choisir l'interface" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:430 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:431 msgid "Hidden mode - do not publish IP" msgstr "Mode caché - ne pas publier l'adresse IP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:432 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:433 msgid "(prevents participating traffic)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:434 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 msgid "Action when IP changes" msgstr "" -#: ../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" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:439 +msgid "" +"Laptop mode - Change router identity and UDP port when IP changes for " +"enhanced anonymity" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:440 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:441 msgid "Experimental" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:442 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:443 msgid "UDP Configuration:" msgstr "Configuration UDP :" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:444 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:445 msgid "UDP port:" msgstr "Port UDP :" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:458 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 msgid "TCP Configuration" msgstr "Configuration TCP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:464 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:465 msgid "Use auto-detected IP address" msgstr "Utiliser l'adresse IP qui a été auto-détectée" -#: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:467 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499 msgid "currently" msgstr "actuellement" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:470 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:471 msgid "if we are not firewalled" msgstr "s'il n'y a pas de pare-feu" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:474 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:475 msgid "Always use auto-detected IP address (Not firewalled)" -msgstr "Utiliser toujours l'adresse IP qui a été auto-détectée (pas de pare-feu)" +msgstr "" +"Utiliser toujours l'adresse IP qui a été auto-détectée (pas de pare-feu)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:484 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 msgid "Disable inbound (Firewalled)" msgstr "Desactiver les connexions entrantes (derrière un pare-feu)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:488 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:489 msgid "Completely disable" msgstr "Desactiver complètement" -#: ../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 "(selectionner seulement si derrière un pare-feu qui limite les connexions sortantes TCP)" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:491 +msgid "" +"(select only if behind a firewall that throttles or blocks outbound TCP)" +msgstr "" +"(selectionner seulement si derrière un pare-feu qui limite les connexions " +"sortantes TCP)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:492 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 msgid "Externally reachable TCP port" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:496 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 msgid "Use the same port configured for UDP" msgstr "Utiliser le même port qui a été configuré pour UDP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:504 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:505 msgid "Specify Port" msgstr "Saisir le port" -#: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:330 msgid "Note" msgstr "Noter" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:511 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:512 msgid "Changing these settings will restart your router." -msgstr "Un changement de cette configuration entraînera un redémarrage du routeur" +msgstr "" +"Un changement de cette configuration entraînera un redémarrage du routeur" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:517 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:518 msgid "Configuration Help" msgstr "Aide avec la configuration" -#: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:520 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 #, fuzzy -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 fonctionnera derrière le plupart des pares-feu, mais votre vitesse et votre intégration avec le réseau s'améliorera s'il y a la redirection du port I2P pour UDP et 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 "" +"I2P fonctionnera derrière le plupart des pares-feu, mais votre vitesse et " +"votre intégration avec le réseau s'améliorera s'il y a la redirection du " +"port I2P pour UDP et 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 "Si vous pouvez, ouvrez un port dans votre pare-feu afin de permettre la réception des les paquets TCP et UDP non sollicités." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:522 +msgid "" +"If you can, please poke a hole in your firewall to allow unsolicited UDP and " +"TCP packets to reach you." +msgstr "" +"Si vous pouvez, ouvrez un port dans votre pare-feu afin de permettre la " +"réception des les paquets TCP et UDP non sollicités." -#: ../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 "Si vous ne pouvez pas, I2P est compatible avec UPnp (Universal Plug and Play) et \"UDP hole punching\" avec \"SSU introductions\" afin de relayer le trafic I2P." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:524 +msgid "" +"If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole " +"punching with \"SSU introductions\" to relay traffic." +msgstr "" +"Si vous ne pouvez pas, I2P est compatible avec UPnp (Universal Plug and " +"Play) et \"UDP hole punching\" avec \"SSU introductions\" afin de relayer " +"le trafic I2P." -#: ../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 "Le plupart des possibilités décrites ci-avant sont pour les situtations particulieres, par exemple le cas où UPnP ne fonctionne pas correctement, ou un pare-feu empeche la connexion au réseau I2P." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:526 +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 "" +"Le plupart des possibilités décrites ci-avant sont pour les situtations " +"particulieres, par exemple le cas où UPnP ne fonctionne pas correctement, ou " +"un pare-feu empeche la connexion au réseau I2P." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:527 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:528 msgid "Certain firewalls such as symmetric NATs may not work well with I2P." -msgstr "Il y a des certains types de pare-feu (tel que les NAT symétriques) qui ne fonctionnent pas bien avec I2P." +msgstr "" +"Il y a des certains types de pare-feu (tel que les NAT symétriques) qui ne " +"fonctionnent pas bien avec 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 est utilisé pour communiquer avec des \"Internet Gateway Devices (IGDs)\" afin de détecter l'adresse IP extérieure et de contrôler la redirection des ports." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:537 +msgid "" +"UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect " +"the external IP address and forward ports." +msgstr "" +"UPnP est utilisé pour communiquer avec des \"Internet Gateway Devices " +"(IGDs)\" afin de détecter l'adresse IP extérieure et de contrôler la " +"redirection des ports." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:538 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:539 msgid "UPnP support is beta, and may not work for any number of reasons" -msgstr "UPnP est toujours en développement, et il peut arrêter de fonctionner correctement à cause de " +msgstr "" +"UPnP est toujours en développement, et il peut arrêter de fonctionner " +"correctement à cause de " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:540 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:541 msgid "No UPnP-compatible device present" msgstr "Il n'y a pas d'appareil qui est compatible avec UPnP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:542 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:543 msgid "UPnP disabled on the device" msgstr "UPnP est desactivé sur l'appareil" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:544 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:545 msgid "Software firewall interference with UPnP" msgstr "Il y a de l'intérference entre un pare-feu en software et UPnP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:546 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:547 msgid "Bugs in the device's UPnP implementation" msgstr "Il y a des bogues dans l'implementation d'UPnP dans l'appareil" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:548 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:549 msgid "Multiple firewall/routers in the internet connection path" msgstr "Il y a plusieurs routeurs/pare-feux entre le routeur I2P et l'internet" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:550 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:551 msgid "UPnP device change, reset, or address change" -msgstr "Un changement de l'appareil UPnP, une redémarrage, ou une changement d'adresse IP" +msgstr "" +"Un changement de l'appareil UPnP, une redémarrage, ou une changement " +"d'adresse IP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:552 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:553 msgid "Review the UPnP status here." msgstr "Consulter le statut de UPnP ici." -#: ../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 peut être activé ou desactivé au-dessus, mais afin de prendre en compte la changement il faut rédemarrer le routeur I2P." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 +msgid "" +"UPnP may be enabled or disabled above, but a change requires a router " +"restart to take effect." +msgstr "" +"UPnP peut être activé ou desactivé au-dessus, mais afin de prendre en compte " +"la changement il faut rédemarrer le routeur I2P." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:556 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 msgid "Hostnames entered above will be published in the network database." -msgstr "Les noms d'hôtes qui ont été saisis au-dessus seront publié dans la base de données du réseau I2P." +msgstr "" +"Les noms d'hôtes qui ont été saisis au-dessus seront publié dans la base de " +"données du réseau I2P." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:558 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 msgid "They are not private." msgstr "Ils ne sont pas privés." -#: ../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 "En plus, ne saisissez pas une adresse IP privée tel que 127.0.0.1 ou 192.168.1.1." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 +msgid "" +"Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1." +msgstr "" +"En plus, ne saisissez pas une adresse IP privée tel que 127.0.0.1 ou " +"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 "Si vous saisissez une mauvaise adresse IP ou nom d'hôte, ou configurer votre NAT ou pare-feu incorrectement, votre intégration avec le réseau I2P dégradera substantiellement." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 +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 "" +"Si vous saisissez une mauvaise adresse IP ou nom d'hôte, ou configurer votre " +"NAT ou pare-feu incorrectement, votre intégration avec le réseau I2P " +"dégradera substantiellement." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:564 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 msgid "When in doubt, leave the settings at the defaults." msgstr "Si vous n'êtes pas sûr de vous, laisser la configuration par défaut." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:566 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:572 +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 "" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575 +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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 msgid "Your UDP port does not appear to be firewalled." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:582 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 msgid "Your UDP port appears to be firewalled." msgstr "" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 +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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587 +msgid "" +"However, if it appears consistently, you should check whether both your " +"external and internal firewalls are open for your port." msgstr "" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:589 +msgid "" +"I2P will work fine when firewalled, there is no reason for concern. When " +"firewalled, the router uses \"introducers\" to relay inbound connections." msgstr "" -#: ../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)." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:591 +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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593 +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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:595 +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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:598 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 msgid "The router is currently testing whether your UDP port is firewalled." msgstr "" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603 +msgid "" +"The router is not configured to publish its address, therefore it does not " +"expect incoming connections." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:604 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 msgid "WARN - Firewalled and Fast" msgstr "WARN - Pare-feu et Rapide" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 +msgid "" +"You have configured I2P to share more than 128KBps of bandwidth, but you are " +"firewalled." msgstr "" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 +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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:610 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 msgid "WARN - Firewalled and Floodfill" msgstr "WARN - Pare-feu et 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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 +msgid "" +"You have configured I2P to be a floodfill router, but you are firewalled." msgstr "" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 +msgid "" +"For best participation as a floodfill router, you should open your firewall." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:616 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 msgid "WARN - Firewalled with Inbound TCP Enabled" msgstr "WARN - Pare-feu avec TCP entrant activé" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 +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 "" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 +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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:622 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 msgid "Please open your firewall or disable inbound TCP above." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:624 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 msgid "WARN - Firewalled with UDP Disabled" msgstr "WARN - Pare-feu avec UDP desactivé" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:626 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 msgid "You have configured inbound TCP, however you have disabled UDP." msgstr "" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 +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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:631 msgid "Please open your firewall or enable UDP." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:632 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 msgid "ERR - Clock Skew" msgstr "ERR - horloge décalé" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 +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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:637 msgid "Correct your clock setting if this error persists." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:638 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 msgid "ERR - Private TCP Address" msgstr "ERR - Adresse TCP privée" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 +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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:642 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 msgid "Correct the address or disable inbound TCP above." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:644 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 msgid "ERR - SymmetricNAT" msgstr "ERR - NAT symétrique" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:646 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 msgid "I2P detected that you are firewalled by a Symmetric NAT." msgstr "" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 +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 "" -#: ../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" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:651 +msgid "" +"ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config " +"and restart" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:652 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 msgid "I2P was unable to bind to port 8887 or other configured port." msgstr "" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:655 +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 "" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:657 +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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:659 msgid "However, a restart is always required after this error." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:660 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 msgid "ERR - UDP Disabled and Inbound TCP host/port not set" msgstr "" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:663 +msgid "" +"You have not configured inbound TCP with a hostname and port above, however " +"you have disabled UDP." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:664 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:665 msgid "Therefore your router cannot accept inbound connections." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:666 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:667 msgid "Please configure a TCP host and port above or enable UDP." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:668 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:669 msgid "ERR - Client Manager I2CP Error - check logs" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:670 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 msgid "This is usually due to a port 7654 conflict. Check the logs to verify." msgstr "" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:673 +msgid "" +"Do you have another I2P instance running? Stop the conflicting program and " +"restart I2P." msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:107 msgid "config advanced" msgstr "configuration avancé" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:242 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:241 msgid "I2P Advanced Configuration" msgstr "Configuration I2P avancé" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:299 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:301 msgid "Advanced I2P Configuration" msgstr "Configuration I2P avancé" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:311 msgid "Some changes may require a restart to take effect." msgstr "" @@ -4643,53 +4848,121 @@ msgstr "" msgid "config clients" msgstr "Clients configuration" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:244 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:243 msgid "I2P Client Configuration" msgstr "Client I2P configuration" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:312 msgid "Client Configuration" msgstr "Configuration Client" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:314 +msgid "" +"The Java clients listed below are started by the router and run in the same " +"JVM." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:318 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:401 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:415 msgid "All changes require restart to take effect." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:336 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:337 +#, fuzzy +msgid "Advanced Client Interface Configuration" +msgstr "Configuration I2P avancé" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:339 +msgid "External I2CP (I2P Client Protocol) Interface Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 +msgid "Enabled without SSL" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351 +msgid "Enabled with SSL required" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 +msgid "Disabled - Clients outside this Java process may not connect" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:359 +msgid "I2CP Port" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:363 +#, fuzzy +msgid "I2CP Interface" +msgstr "Configuration" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:379 +#, fuzzy +msgid "Authorization" +msgstr "Autheur" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:385 +msgid "Require username and password" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:387 +msgid "Username" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:391 +msgid "Password" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:397 +msgid "Any changes made here must also be configured in the external client." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:399 +msgid "Many clients do not support SSL or authorization." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:407 msgid "WebApp Configuration" msgstr "Configuration WebApp" -#: ../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)." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 +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 "" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:411 +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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:350 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:421 #, fuzzy msgid "Plugin Configuration" msgstr "Configuration Client" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:352 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 msgid "The plugins listed below are started by the webConsole client." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:358 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:429 msgid "Plugin Installation" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:360 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 msgid "To install a plugin, enter the download URL:" msgstr "" @@ -4697,39 +4970,40 @@ msgstr "" msgid "config keyring" msgstr "Configuration porte-clés" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:227 msgid "I2P Keyring Configuration" msgstr "Configuration du Porte-clés I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:294 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:295 msgid "The router keyring is used to decrypt encrypted leaseSets." msgstr "" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:298 +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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:308 msgid "Manual Keyring Addition" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:310 msgid "Enter keys for encrypted remote destinations here." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:313 msgid "Keys for local destinations must be entered on the" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:314 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:315 msgid "I2PTunnel page" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:317 msgid "Dest. name, hash, or full key" msgstr "Nom de destination, empreinte, ou clé complète" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:319 msgid "Encryption Key" msgstr "Clé d'encryption" @@ -4737,55 +5011,64 @@ msgstr "Clé d'encryption" msgid "config logging" msgstr "configuration enregistrements" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:242 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:241 msgid "I2P Logging Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:299 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 msgid "Configure I2P Logging Options" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:303 msgid "Logging filename" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307 msgid "(the symbol '@' will be replaced during log rotation)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:309 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 "(use 'd' = date, 'c' = classe, 't' = fil d'exécution, 'p' = priorité, 'm' = message)" - #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 +msgid "" +"(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" +msgstr "" +"(use 'd' = date, 'c' = classe, 't' = fil d'exécution, 'p' = priorité, 'm' = " +"message)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:315 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' = mois, 'dd' = jour, 'HH' = heure, 'mm' = minute, 'ss' = seconde, 'SSS' = milliseconde)" - #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 +msgid "" +"('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' " +"= millisecond)" +msgstr "" +"('MM' = mois, 'dd' = jour, 'HH' = heure, 'mm' = minute, 'ss' = seconde, " +"'SSS' = milliseconde)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:321 msgid "Max log file size" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:325 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)" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329 +msgid "" +"(DEBUG and INFO are not recommended defaults, as they will drastically slow " +"down your router)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:331 msgid "Log level overrides" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:333 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:335 msgid "New override" msgstr "" @@ -4793,40 +5076,45 @@ msgstr "" msgid "config peers" msgstr "Configuration des pairs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:227 msgid "I2P Peer Configuration" msgstr "Configuration des pairs I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:305 msgid "Manual Peer Controls" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:307 msgid "Router Hash" msgstr "Routeur empreinte" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:311 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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:313 +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" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:323 +msgid "Adjust Profile Bonuses" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:326 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 +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:327 msgid "profiles page" msgstr "page des profiles" -#: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:251 msgid "Banned Peers" msgstr "Pairs interdits" @@ -4834,141 +5122,259 @@ msgstr "Pairs interdits" msgid "Banned IPs" msgstr "Adresses IP interdits" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:106 +#, fuzzy +msgid "config reseeding" +msgstr "Configuration porte-clés" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:240 +#, fuzzy +msgid "I2P Reseeding Configuration" +msgstr "Configuration du Porte-clés I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:300 +#, fuzzy +msgid "Reseeding Configuration" +msgstr "Configuration du Porte-clés I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:302 +msgid "" +"Reseeding is the bootstrapping process used to find other routers when you " +"first install I2P, or when your router has too few router references " +"remaining." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304 +msgid "" +"If reseeding has failed, you should first check your network connection." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:308 +msgid "" +"Change these only if HTTP is blocked by a restrictive firewall, reseed has " +"failed, and you have access to an HTTP proxy." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +#, java-format +msgid "See {0} for instructions on reseeding manually." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +msgid "the FAQ" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:312 +msgid "Reseed URL Selection" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 +msgid "Try SSL first then non-SSL" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:324 +msgid "Use SSL only" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:330 +msgid "Use non-SSL only" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:332 +#, fuzzy +msgid "Reseed URLs" +msgstr "Actualités URL" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:336 +msgid "Enable HTTP proxy (not used for SSL)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:340 +#, fuzzy +msgid "HTTP Proxy Host" +msgstr "eeProxy hôte" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:344 +msgid "HTTP Proxy Port" +msgstr "" + #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:106 msgid "config service" msgstr "Service Configuration " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:227 msgid "I2P Service Configuration" msgstr "Service I2P Configuration" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:284 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:285 msgid "Shutdown the router" msgstr "Fermer le routeur" -#: ../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 "Une fermature gracieuse permit au routeur de satisfaire ses accords en place avec d'autres routeurs avant de fermer, mais cela prendra plusieurs minutes." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:287 +msgid "" +"Graceful shutdown lets the router satisfy the agreements it has already made " +"before shutting down, but may take a few minutes." +msgstr "" +"Une fermature gracieuse permit au routeur de satisfaire ses accords en place " +"avec d'autres routeurs avant de fermer, mais cela prendra plusieurs minutes." -#: ../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 "Si vous avez besoin d'arrêter le routeur I2P immédiatement, cette option est aussi disponible." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:289 +msgid "" +"If you need to kill the router immediately, that option is available as well." +msgstr "" +"Si vous avez besoin d'arrêter le routeur I2P immédiatement, cette option est " +"aussi disponible." -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:299 +msgid "" +"If you want the router to restart itself after shutting down, you can choose " +"one of the following." msgstr "" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:301 +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 "" -#: ../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 "Une redémarrage gracieux prendra quelques minutes (mais vos pairs apprécieront votre patience), une redémarrage immédiate est quasi instantané." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:303 +msgid "" +"A graceful restart will take a few minutes (but your peers will appreciate " +"your patience), while a hard restart does so immediately." +msgstr "" +"Une redémarrage gracieux prendra quelques minutes (mais vos pairs " +"apprécieront votre patience), une redémarrage immédiate est quasi instantané." -#: ../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 "Après la rédemmarage du routeur, il attendra 1 minute avant de se relancer." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 +msgid "" +"After tearing down the router, it will wait 1 minute before starting back up " +"again." +msgstr "" +"Après la rédemmarage du routeur, il attendra 1 minute avant de se relancer." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:314 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:315 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" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 +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 "" -#: ../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)." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 +msgid "" +"(later on, I2P client applications will be able to integrate their own " +"functionality into the system tray as well)." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:320 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 msgid "If you are on windows, you can either enable or disable that icon here." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:326 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 +msgid "Show systray icon" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 +msgid "Hide systray icon" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 msgid "Run on startup" msgstr "Lancer avec le démarrage du routeur" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:329 +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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:331 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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 +msgid "" +"If you are running I2P as service right now, removing it will shut down your " +"router immediately." msgstr "" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:343 +msgid "" +"You may want to consider shutting down gracefully, as above, then running " +"uninstall_i2p_service_winnt.bat." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:346 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 msgid "Debugging" msgstr "Débogage" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:348 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 #, fuzzy msgid "View the job queue" msgstr "queue des tâches" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 +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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:358 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 msgid "Launch browser on router startup?" msgstr "Lancer explorateur internet pendant le démarrage du routeur ?" -#: ../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" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:361 +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 "" #: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:228 msgid "I2P Stats Configuration" msgstr "Configuration I2P Statistiques" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:300 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302 msgid "Configure I2P Stat Collection" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:304 msgid "Enable full stats?" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:311 msgid "change requires restart to take effect" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:313 msgid "Stat file" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:317 msgid "Filter" msgstr "Filtre" -#: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:328 msgid "toggle all" msgstr "basculer tous" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:328 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:330 msgid "Log" msgstr "Enregistrement" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:332 msgid "Graph" msgstr "Graphe" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:369 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:371 msgid "Advanced filter" msgstr "Filtre avancé" @@ -4976,43 +5382,47 @@ msgstr "Filtre avancé" msgid "config tunnels" msgstr "Configuration des tunnels" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:240 msgid "I2P Tunnel Configuration" msgstr "Configuration des tunnels I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:306 msgid "The default settings work for most people." msgstr "La configuration défaut fonctionne pour le plupart des utilisateurs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:310 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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:313 +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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:316 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:319 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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:333 +msgid "" +"Exploratory tunnel setting changes are stored in the router.config file." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:336 msgid "Client tunnel changes are temporary and are not saved." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:338 msgid "To make permanent client tunnel changes see the" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:340 msgid "i2ptunnel page" msgstr "" @@ -5020,31 +5430,38 @@ msgstr "" msgid "config UI" msgstr "configuration IHM" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:240 msgid "I2P UI Configuration" msgstr "Configuration de l'IHM I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:291 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:292 msgid "Router Console Theme" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:310 msgid "Theme selection disabled for Internet Explorer, sorry." msgstr "" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:312 +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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:316 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 "Veuillez contribuer à la traduction du 'router console' ! Contactez les développeurs sur IRC #i2p afin de donner un coup de main." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:320 +msgid "" +"Please contribute to the router console translation project! Contact the " +"developers on IRC #i2p to help." +msgstr "" +"Veuillez contribuer à la traduction du 'router console' ! Contactez les " +"développeurs sur IRC #i2p afin de donner un coup de main." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:324 msgid "Apply" msgstr "Appliquer" @@ -5052,83 +5469,146 @@ msgstr "Appliquer" msgid "config update" msgstr "Mettre à jour la configuration" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:227 msgid "I2P Update Configuration" msgstr "Configuration du mise à jour I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:303 msgid "Check for I2P and news updates" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:305 msgid "News & I2P Updates" msgstr "Actualités et mises à jour I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:309 msgid "Update In Progress" msgstr "Mise à jour en cours" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:317 msgid "News URL" msgstr "Actualités URL" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:320 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:321 msgid "Refresh frequency" msgstr "Fréquence d'actualisation" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:326 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:327 msgid "Update policy" msgstr "Méthode de mise à jour" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331 msgid "Update through the eepProxy?" msgstr "Mettre à jour utilisant l'eeProxy ?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:334 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:335 msgid "eepProxy host" msgstr "eeProxy hôte" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:338 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:339 msgid "eepProxy port" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:342 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:343 msgid "Update URLs" msgstr "Mettre à jour à partir de ces URLs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:346 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:347 msgid "Trusted keys" msgstr "Clés auxquelles on peut faire confiance" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:350 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:351 msgid "Update with unsigned development builds?" -msgstr "Mettre à jour avec une version de développement d'i2p qui n'a pas été signée" +msgstr "" +"Mettre à jour avec une version de développement d'i2p qui n'a pas été signée" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:354 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:355 msgid "Unsigned Build URL" msgstr "L'URL de la version d'i2p qui n'a pas été signée" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 +msgid "" +"I2P updates are disabled because you do not have write permission for the " +"install directory." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:366 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:367 msgid "Save" msgstr "Sauvegarder" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:115 +msgid "Internal Error" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:117 +#, fuzzy +msgid "Router Console" +msgstr "Console du routeur I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:121 +#, fuzzy +msgid "Configuration" +msgstr "Configuration IP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129 +msgid "Sorry! There has been an internal error." +msgstr "" + +#. note to translators - both parameters are URLs +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:133 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:232 +#, java-format +msgid "Please report bugs on {0} or {1}." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 +msgid "" +"You may use the username \"guest\" and password \"guest\" if you do not wish " +"to register." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 +msgid "Please include this information in bug reports" +msgstr "Veuillez inclure cette information dans les rapports des bugs" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:141 +msgid "Error Details" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:143 +#, fuzzy, java-format +msgid "Error {0}" +msgstr "Erreur 404" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:163 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:228 +msgid "I2P Version and Running Environment" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 +msgid "" +"Note that system information, log timestamps, and log messages may provide " +"clues to your location; please review everything you include in a bug report." +msgstr "" + #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:117 msgid "Page Not Found" msgstr "Page introuvable" -#: ../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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:242 +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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:244 msgid "Error 404" msgstr "Erreur 404" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:250 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:249 msgid "not found" msgstr "pas trouvé" @@ -5136,7 +5616,7 @@ msgstr "pas trouvé" msgid "graphs" msgstr "graphes" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:227 msgid "I2P Performance Graphs" msgstr "" @@ -5148,7 +5628,7 @@ msgstr "" msgid "job queue" msgstr "queue des tâches" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:226 msgid "I2P Router Job Queue" msgstr "" @@ -5156,32 +5636,20 @@ msgstr "" msgid "logs" msgstr "fichier traces" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:226 msgid "I2P Router Logs" msgstr "Fichier traces du routeur I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:229 -msgid "I2P Version & Running Environment" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:231 -msgid "Please report bugs on trac.i2p2.i2p." -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:233 -msgid "Please include this information in bug reports" -msgstr "Veuillez inclure cette information dans les rapports des bugs" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:274 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:281 msgid "Critical Logs" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:278 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:285 #, fuzzy msgid "Router Logs" msgstr "Fichier traces du routeur I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:284 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:291 msgid "Service (Wrapper) Logs" msgstr "" @@ -5189,7 +5657,7 @@ msgstr "" msgid "network database summary" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:226 msgid "I2P Network Database Summary" msgstr "" @@ -5198,24 +5666,26 @@ msgstr "" msgid "WebApp Not Found" msgstr "Page introuvable" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:231 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:230 #, fuzzy msgid "Web Application Not Running" msgstr "Tunnels d'application" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:233 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:232 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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:234 +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 "connexions pairs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:226 msgid "I2P Network Peers" msgstr "" @@ -5223,7 +5693,7 @@ msgstr "" msgid "peer profiles" msgstr "profile des pairs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:226 msgid "I2P Network Peer Profiles" msgstr "" @@ -5231,11 +5701,11 @@ msgstr "" msgid "statistics" msgstr "statistiques" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:245 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:243 msgid "I2P Router Statistics" msgstr "Statistiques du routeur I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:244 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:247 #, java-format msgid "Disable {0} Refresh" msgstr "Désactiver {0} actualisation" @@ -5244,24 +5714,36 @@ msgstr "Désactiver {0} actualisation" msgid "tunnel summary" msgstr "sommaire tunnel" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:226 msgid "I2P Tunnel Summary" msgstr "tunnel sommaire I2P" +#~ msgid "hour" +#~ msgstr "heure" + +#~ msgid "minutes" +#~ msgstr "minutes" + #~ msgid "This is useful in some situations" #~ msgstr "C'est utile dans certains cas" + #~ msgid "Start Now" #~ msgstr "Démarrer tout de suite" + #~ msgid "Depth" #~ msgstr "Profondeur" + #~ msgid "view without" #~ msgstr "montrer sans" + #~ msgid "view with" #~ msgstr "montrer avec" + #~ msgid "Show the router's workload, and how it's performing" #~ msgstr "Montrer les tâches en cours" + #~ msgid "Jobs" #~ msgstr "Tâches" + #~ msgid "Tunnels in/out" #~ msgstr "Tunnels entrants/sortants" - diff --git a/apps/routerconsole/locale/messages_nl.po b/apps/routerconsole/locale/messages_nl.po index 1233fed98..251873a27 100644 --- a/apps/routerconsole/locale/messages_nl.po +++ b/apps/routerconsole/locale/messages_nl.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 12:17+0000\n" +"POT-Creation-Date: 2011-03-03 18:28+0000\n" "PO-Revision-Date: 2011-02-20 12:15+0000\n" "Last-Translator: ducki2p \n" "Language-Team: Dutch <>\n" +"Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #. NOTE TO TRANSLATORS: Feel free to translate all these as you see fit, there are several options... @@ -555,28 +555,29 @@ msgstr "Verbannen" msgid "SUMMARY" msgstr "SAMENVATTING" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:145 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:124 msgid "Dropping tunnel requests: Too slow" msgstr "Negeer tunnel aanvragen: Te traag" #. don't even bother, since we are so overloaded locally -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:352 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:267 msgid "Dropping tunnel requests: Overloaded" msgstr "Negeer tunnel aanvragen: Overladen" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:525 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:460 msgid "Rejecting tunnels: Request overload" msgstr "Weiger tunnels: Overladen met aanvragen" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:550 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:485 msgid "Rejecting tunnels: Connection limit" msgstr "Weiger tunnels: Connectie limiet" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:744 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:685 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:706 msgid "Dropping tunnel requests: High load" msgstr "Negeer tunnel aanvragen: Hoge load" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:753 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:698 msgid "Dropping tunnel requests: Queue time" msgstr "Negeer tunnel aanvragen: Wachttijd" @@ -1506,7 +1507,7 @@ msgstr "Zambia" msgid "Zimbabwe" msgstr "Zimbabwe" -#: ../java/src/net/i2p/router/web/CSSHelper.java:57 +#: ../java/src/net/i2p/router/web/CSSHelper.java:58 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:35 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:37 #: ../java/strings/Strings.java:29 @@ -2209,22 +2210,22 @@ msgid "Rekeying after graceful shutdown" msgstr "Hersleuteling na gecontrolleerde stop" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:80 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 msgid "Run I2P on startup" msgstr "Start I2P bij opstarten" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:82 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 msgid "Don't run I2P on startup" msgstr "Start I2P niet bij opstarten" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:84 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:355 msgid "Dump threads" msgstr "Dump threads" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:91 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:363 msgid "View console on startup" msgstr "Toon console na opstarten" @@ -2233,7 +2234,7 @@ msgid "Console is to be shown on startup" msgstr "Console wordt getoond na opstarten" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:94 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:365 msgid "Do not view console on startup" msgstr "Toon console niet na opstarten" @@ -2511,7 +2512,7 @@ msgstr "Teken gemiddelden" #: ../java/src/net/i2p/router/web/GraphHelper.java:152 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:333 msgid "or" msgstr "of" @@ -4123,6 +4124,7 @@ msgstr "configureer netwerk" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:227 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:219 @@ -4156,6 +4158,7 @@ msgstr "Ververs (s)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:231 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:223 @@ -4400,7 +4403,7 @@ msgid "Specify Port" msgstr "Specificeer Poort" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:330 msgid "Note" msgstr "Opmerking" @@ -5289,10 +5292,39 @@ msgstr "" "starten." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:315 +#, fuzzy +msgid "Systray integration" +msgstr "integratie" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 +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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 +msgid "" +"(later on, I2P client applications will be able to integrate their own " +"functionality into the system tray as well)." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 +msgid "If you are on windows, you can either enable or disable that icon here." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 +msgid "Show systray icon" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 +msgid "Hide systray icon" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 msgid "Run on startup" msgstr "Aan bij opstarten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:329 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." @@ -5300,12 +5332,12 @@ 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:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:331 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:329 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 msgid "" "If you are running I2P as service right now, removing it will shut down your " "router immediately." @@ -5313,7 +5345,7 @@ 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:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:343 msgid "" "You may want to consider shutting down gracefully, as above, then running " "uninstall_i2p_service_winnt.bat." @@ -5321,15 +5353,15 @@ 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:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 msgid "Debugging" msgstr "Debugging" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 msgid "View the job queue" msgstr "Bekijk de taak wachtrij" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 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." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 msgid "Launch browser on router startup?" msgstr "Start browser bij opstarten router?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:361 msgid "" "I2P's main configuration interface is this web console, so for your " "convenience I2P can launch a web browser on startup pointing at" @@ -5735,7 +5767,7 @@ msgstr "statistieken" msgid "I2P Router Statistics" msgstr "I2P Router Statistieken" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:248 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:247 #, java-format msgid "Disable {0} Refresh" msgstr "{0} Verversing Uitschakelen" diff --git a/apps/routerconsole/locale/messages_ru.po b/apps/routerconsole/locale/messages_ru.po index efd959b04..1a1d48ab9 100644 --- a/apps/routerconsole/locale/messages_ru.po +++ b/apps/routerconsole/locale/messages_ru.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-19 17:25+0000\n" +"POT-Creation-Date: 2011-03-03 18:28+0000\n" "PO-Revision-Date: 2011-02-19 22:43+0500\n" "Last-Translator: Hidden Z \n" "Language-Team: \n" @@ -17,7 +17,8 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Russian\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "X-Poedit-Bookmarks: 283,-1,-1,-1,-1,-1,-1,-1,-1,-1\n" #. NOTE TO TRANSLATORS: Feel free to translate all these as you see fit, there are several options... @@ -132,7 +133,8 @@ msgstr "Не принимаем туннели: Достигнут предел #. 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 "Не принимаем большую часть туннелей: Достигнут предел пропускной способности" +msgstr "" +"Не принимаем большую часть туннелей: Достигнут предел пропускной способности" #. hard to do {0} from here #. setTunnelStatus("Accepting " + (100-(int)(100.0*probReject)) + "% of tunnels"); @@ -180,12 +182,16 @@ msgstr "страница настройки начальной загрузки" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:239 msgid "Reseeding: fetching seed URL." -msgstr "Производится начальная загрузка: загружается URL каталога маршрутизаторов." +msgstr "" +"Производится начальная загрузка: загружается URL каталога маршрутизаторов." #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281 #, java-format -msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." -msgstr "Производится начальная загрузка: получение информации о маршрутизаторах ({0} удачно, {1} ошибок)." +msgid "" +"Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." +msgstr "" +"Производится начальная загрузка: получение информации о маршрутизаторах ({0} " +"удачно, {1} ошибок)." #: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:512 msgid "NetDb entry" @@ -215,12 +221,21 @@ msgid "Help" msgstr "Справка" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 -msgid "Your transport connection limits are automatically set based on your configured bandwidth." -msgstr "Лимиты транспортных соединений назначены автоматически на основе заданной вами пропускной способности." +msgid "" +"Your transport connection limits are automatically set based on your " +"configured bandwidth." +msgstr "" +"Лимиты транспортных соединений назначены автоматически на основе заданной " +"вами пропускной способности." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 -msgid "To override these limits, add the settings i2np.ntcp.maxConnections=nnn and i2np.udp.maxConnections=nnn on the advanced configuration page." -msgstr "Для переопределения этих лимитов добавьте параметры i2np.ntcp.maxConnections=nnn и i2np.udp.maxConnections=nnn на странице расширенных настроек." +msgid "" +"To override these limits, add the settings i2np.ntcp.maxConnections=nnn and " +"i2np.udp.maxConnections=nnn on the advanced configuration page." +msgstr "" +"Для переопределения этих лимитов добавьте параметры i2np.ntcp." +"maxConnections=nnn и i2np.udp.maxConnections=nnn на странице расширенных " +"настроек." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 @@ -241,7 +256,9 @@ msgstr "Пир" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 msgid "The remote peer, identified by router hash" -msgstr "Уникальный идентификатор пира (несколько начальных символов из хеша его маршрутизатора)" +msgstr "" +"Уникальный идентификатор пира (несколько начальных символов из хеша его " +"маршрутизатора)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:736 @@ -259,11 +276,15 @@ msgstr "Исходящее соединение" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 msgid "They offered to introduce us (help other peers traverse our firewall)" -msgstr "Этот пир предлагает себя в качестве нашего посредника (для того, чтобы другие пиры могли соединяться с нами в обход нашего брандмауэра)" +msgstr "" +"Этот пир предлагает себя в качестве нашего посредника (для того, чтобы " +"другие пиры могли соединяться с нами в обход нашего брандмауэра)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 msgid "We offered to introduce them (help other peers traverse their firewall)" -msgstr "Мы предлагаем себя в качестве посредника для этого пира (для того, чтобы другие пиры могли соединяться с ним в обход его брандмауэра)" +msgstr "" +"Мы предлагаем себя в качестве посредника для этого пира (для того, чтобы " +"другие пиры могли соединяться с ним в обход его брандмауэра)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "How long since a packet has been received / sent" @@ -307,8 +328,12 @@ msgid "The difference between the peer's clock and your own" msgstr "Разница хода часов между пиром и нами" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 -msgid "The congestion window, which is how many bytes can be sent without an acknowledgement" -msgstr "Congestion Window. Окно насыщения — количество байт, которое мы можем послать до ожидания подтверждения" +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:538 msgid "The number of sent messages awaiting acknowledgement" @@ -328,7 +353,9 @@ msgstr "Slow Start Threshold. Величина порога медлен #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 msgid "The round trip time in milliseconds" -msgstr "Round-Trip Time. Время между отправкой запроса и получением ответа (миллисекунды)" +msgstr "" +"Round-Trip Time. Время между отправкой запроса и получением ответа " +"(миллисекунды)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 @@ -341,11 +368,17 @@ msgstr "Среднеквадратическое отклонение RTT (ми #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 msgid "The retransmit timeout in milliseconds" -msgstr "Retransmit Time-Out. Время ожидания подтверждения перед повторной посылкой пакета (миллисекунды)" +msgstr "" +"Retransmit Time-Out. Время ожидания подтверждения перед повторной " +"посылкой пакета (миллисекунды)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 -msgid "Current maximum send packet size / estimated maximum receive packet size (bytes)" -msgstr "Maximum Transfer Unit. Текущий максимальный размер исходящего пакета / максимальный размер принятого пакета (байт) " +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:546 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 @@ -537,30 +570,32 @@ msgstr "Забанен" msgid "SUMMARY" msgstr "ИТОГО" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:145 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:124 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 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:267 msgid "Dropping tunnel requests: Overloaded" msgstr "Игнорируем запросы туннелей: Слишком высокая нагрузка" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:525 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:460 msgid "Rejecting tunnels: Request overload" msgstr "Не принимаем туннели: Слишком много запросов" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:550 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:485 msgid "Rejecting tunnels: Connection limit" msgstr "Не принимаем туннели: Достигнут предел количества соединений" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:744 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:685 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:706 msgid "Dropping tunnel requests: High load" msgstr "Игнорируем запросы туннелей: Высокая нагрузка" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:753 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:698 msgid "Dropping tunnel requests: Queue time" -msgstr "Игнорируем запросы туннелей: Слишком большое время пребывания в очереди" +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!! @@ -1448,8 +1483,7 @@ msgstr "Сент-Винсент и Гренадины" msgid "Venezuela" msgstr "Венесуэла" -#: ../java/build/Countries.java:229 -#: ../java/build/Countries.java:230 +#: ../java/build/Countries.java:229 ../java/build/Countries.java:230 msgid "Virgin Islands" msgstr "Виргинские острова" @@ -1489,7 +1523,7 @@ msgstr "Замбия" msgid "Zimbabwe" msgstr "Зимбабве" -#: ../java/src/net/i2p/router/web/CSSHelper.java:57 +#: ../java/src/net/i2p/router/web/CSSHelper.java:58 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:35 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:37 #: ../java/strings/Strings.java:29 @@ -1509,8 +1543,12 @@ 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 "Не удалось сохранить настройки (применены, но не сохранены) — загляните в логи ошибок" +msgid "" +"Error saving the configuration (applied but not saved) - please see the " +"error logs" +msgstr "" +"Не удалось сохранить настройки (применены, но не сохранены) — загляните в " +"логи ошибок" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:335 @@ -1575,8 +1613,11 @@ msgid "New client added" msgstr "Добавлен новый клиент" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:193 -msgid "Client configuration saved successfully - restart required to take effect." -msgstr "Настройки клиентов сохранены, требуется перезапуск маршрутизатора для вступления в силу." +msgid "" +"Client configuration saved successfully - restart required to take effect." +msgstr "" +"Настройки клиентов сохранены, требуется перезапуск маршрутизатора для " +"вступления в силу." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 @@ -1659,8 +1700,11 @@ msgid "Error starting plugin {0}" msgstr "Ошибка при запуске плагина {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 -msgid "Interface configuration saved successfully - restart required to take effect." -msgstr "Настройки интерфейса успешно сохранены, требуется перезапуск маршрутизатора для вступления в силу." +msgid "" +"Interface configuration saved successfully - restart required to take effect." +msgstr "" +"Настройки интерфейса успешно сохранены, требуется перезапуск маршрутизатора " +"для вступления в силу." #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:85 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258 @@ -1807,12 +1851,19 @@ msgid "Log configuration saved" msgstr "Настройки логирования сохранены" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 -msgid "Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" -msgstr "Впишите выше дополнительные настройки уровней детализации лога. Пример: net.i2p.router.tunnel=WARN" +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:49 -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" +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:50 msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT" @@ -2184,22 +2235,22 @@ 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:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 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:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 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:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:355 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:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:363 msgid "View console on startup" msgstr "Открывать веб-консоль при запуске I2P" @@ -2208,7 +2259,7 @@ msgid "Console is to be shown on startup" msgstr "Веб-консоль будет открываться при запуске I2P" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:94 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:365 msgid "Do not view console on startup" msgstr "Не открывать веб-консоль при запуске I2P" @@ -2241,8 +2292,12 @@ msgid "Failed to update the stat filter and location" msgstr "Не удалось обновить настройки файла и фильтра статистики." #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:114 -msgid "Graph list updated, may take up to 60s to be reflected here and on the Graphs Page" -msgstr "Список графиков обновлен, для обновления содержимого страницы графиков может потребоваться до 60 секунд." +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."); @@ -2256,8 +2311,12 @@ msgstr "Настройки зондирующих туннелей сохран #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:36 -msgid "Error saving the configuration (applied but not saved) - please see the error logs." -msgstr "Не удалось сохранить настройки (применены, но не сохранены) — загляните в логи ошибок" +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 @@ -2296,11 +2355,14 @@ msgstr "ОПАСНО ДЛЯ АНОНИМНОСТИ — Настройки зад #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:77 msgid "PERFORMANCE WARNING - Settings include very long tunnels." -msgstr "ОПАСНО ДЛЯ ПРОИЗВОДИТЕЛЬНОСТИ — Настройки задают слишком длинные туннели." +msgstr "" +"ОПАСНО ДЛЯ ПРОИЗВОДИТЕЛЬНОСТИ — Настройки задают слишком длинные туннели." #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:80 msgid "PERFORMANCE WARNING - Settings include high tunnel quantities." -msgstr "ОПАСНО ДЛЯ ПРОИЗВОДИТЕЛЬНОСТИ — Настройки задают слишком большие количества туннелей." +msgstr "" +"ОПАСНО ДЛЯ ПРОИЗВОДИТЕЛЬНОСТИ — Настройки задают слишком большие количества " +"туннелей." #. buf.append("\n"); #. tunnel depth @@ -2445,8 +2507,13 @@ msgid "Download, verify, and restart" msgstr "Скачать, проверить и обновить I2P" #: ../java/src/net/i2p/router/web/FormHandler.java:174 -msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit." -msgstr "Форма не принята, скорее всего это произошло из-за того, что Вы нажимали кнопку \"Назад\" или \"Обновить\" в браузере. Пожалуйста, заполните форму заново." +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:93 msgid "Combined bandwidth graph" @@ -2476,7 +2543,7 @@ msgstr "Строить график средних значений" #: ../java/src/net/i2p/router/web/GraphHelper.java:152 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:333 msgid "or" msgstr "или" @@ -2749,7 +2816,7 @@ msgid "Plugin downloaded" msgstr "Плагин загружен" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:158 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:345 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:356 #, java-format msgid "Cannot create plugin directory {0}" msgstr "Не удалось создать директорию плагина {0}" @@ -2776,95 +2843,105 @@ msgstr "Загруженный из {0} плагин не содержит не msgid "Plugin from {0} contains an invalid key" msgstr "Загруженный из {0} плагин содержит некорректный ключ" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:220 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:229 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:238 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:225 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:235 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:249 #, java-format msgid "Plugin signature verification of {0} failed" msgstr "Плагин {0} содержит недействительную подпись" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:253 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:264 #, java-format msgid "Plugin from {0} has invalid name or version" msgstr "Загруженный из {0} плагин имеет некорректное название или версию" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:258 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:269 #, java-format msgid "Plugin {0} has mismatched versions" msgstr "Плагин {0} содержит несовпадающие версии" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:266 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:277 #, java-format msgid "This plugin requires I2P version {0} or higher" msgstr "Для этого плагина требуется версия I2P {0} и выше" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:274 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:285 #, java-format msgid "This plugin requires Java version {0} or higher" msgstr "Для этого плагина требуется версия Java {0} и выше" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:282 -msgid "Downloaded plugin is for new installs only, but the plugin is already installed" -msgstr "Загруженный инсталлятор плагина предназначен только для первоначальной установки, но такой плагин уже установлен" +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 +msgid "" +"Downloaded plugin is for new installs only, but the plugin is already " +"installed" +msgstr "" +"Загруженный инсталлятор плагина предназначен только для первоначальной " +"установки, но такой плагин уже установлен" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:294 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:305 msgid "Installed plugin does not contain the required configuration file" msgstr "Установленный плагин не содержит необходимого файла настроек" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:302 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:313 msgid "Signature of downloaded plugin does not match installed plugin" msgstr "Подпись загруженного плагина не совпадает с установленным плагином" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:309 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:320 #, java-format msgid "Downloaded plugin version {0} is not newer than installed plugin" -msgstr "Версия скачанного плагина {0} не новее версии уже установленного плагина" +msgstr "" +"Версия скачанного плагина {0} не новее версии уже установленного плагина" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:316 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:327 #, java-format msgid "Plugin update requires installed plugin version {0} or higher" -msgstr "Для обновления плагина требуется установленная версия плагина {0} и выше" +msgstr "" +"Для обновления плагина требуется установленная версия плагина {0} и выше" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:323 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:334 #, java-format msgid "Plugin update requires installed plugin version {0} or lower" -msgstr "Для обновления плагина требуется установленная версия плагина {0} и ниже" +msgstr "" +"Для обновления плагина требуется установленная версия плагина {0} и ниже" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:340 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351 msgid "Plugin is for upgrades only, but the plugin is not installed" -msgstr "Загруженный инсталлятор плагина предназначен только для обновления, но такой плагин ещё не был установлен" +msgstr "" +"Загруженный инсталлятор плагина предназначен только для обновления, но такой " +"плагин ещё не был установлен" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:353 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:364 #, java-format msgid "Failed to install plugin in {0}" msgstr "Не удалось установить плагин в {0}" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:360 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:371 #, java-format msgid "Plugin {0} installed, router restart required" msgstr "Плагин {0} установлен, требуется перезапуск маршрутизатора" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:362 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:373 #, java-format msgid "Plugin {0} installed" msgstr "Плагин {0} установлен" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:380 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:391 #, java-format msgid "Plugin {0} installed and started" msgstr "Плагин {0} установлен и запущен" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:383 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:394 #, java-format msgid "Plugin {0} installed but failed to start, check logs" -msgstr "Плагин {0} установлен, но при его запуске произошел сбой, загляните в логи" +msgstr "" +"Плагин {0} установлен, но при его запуске произошел сбой, загляните в логи" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:385 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:396 #, java-format msgid "Plugin {0} installed but failed to start" msgstr "Плагин {0} установлен, но при его запуске произошел сбой" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:395 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:406 #, java-format msgid "Failed to download plugin from {0}" msgstr "Не удалось скачать плагин из {0}" @@ -3031,7 +3108,9 @@ msgstr "хорошо интегрированные пиры" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 msgid "as determined by the profile organizer" -msgstr "определяется автоматически модулем ProfileOrganizer на основании собранной информации о производительности пира" +msgstr "" +"определяется автоматически модулем ProfileOrganizer на основании собранной " +"информации о производительности пира" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 msgid "groups" @@ -3039,7 +3118,9 @@ msgstr "группы" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 msgid "capabilities in the netDb, not used to determine profiles" -msgstr "информация о пире, предоставленная сетевой базой данных; для профилирования не используется" +msgstr "" +"информация о пире, предоставленная сетевой базой данных; для профилирования " +"не используется" # This term intentionally left in English #. capabilities @@ -3049,8 +3130,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 "пиковая скорость (байты/секунду) выданная пиром на одном туннеле за 1-минутый период" +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" @@ -3062,7 +3147,8 @@ msgstr "ёмкость" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 msgid "how many tunnels can we ask them to join in an hour?" -msgstr "к скольким туннелям мы можем попросить этого пира подсоединиться за час?" +msgstr "" +"к скольким туннелям мы можем попросить этого пира подсоединиться за час?" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 msgid "how many new peers have they told us about lately?" @@ -3138,8 +3224,12 @@ msgid "Statistics gathered during this router's uptime" msgstr "Статистика собрана за время с последнего запуска маршрутизатора" #: ../java/src/net/i2p/router/web/StatsGenerator.java:63 -msgid "The data gathered is quantized over a 1 minute period, so should just be used as an estimate." -msgstr "Собираемые данные округляются за 1-минутные промежутки, поэтому используйте эту информацию только для приблизительной оценки." +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:64 msgid "These statistics are primarily used for development and debugging." @@ -3240,8 +3330,12 @@ msgid "Help & FAQ" msgstr "Справка и FAQ" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:55 -msgid "Configure startup of clients and webapps (services); manually start dormant services" -msgstr "Настройка автозапуска клиентов и веб-апплетов, ручной запуск неактивных приложений" +msgid "" +"Configure startup of clients and webapps (services); manually start dormant " +"services" +msgstr "" +"Настройка автозапуска клиентов и веб-апплетов, ручной запуск неактивных " +"приложений" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:57 msgid "I2P Services" @@ -3249,7 +3343,9 @@ msgstr "Сервисы I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:63 msgid "Manage your I2P hosts file here (I2P domain name resolution)" -msgstr "Здесь можно управлять hosts-файлами (единственный механизм, используемый I2P для отображения доменных имен)" +msgstr "" +"Здесь можно управлять hosts-файлами (единственный механизм, используемый I2P " +"для отображения доменных имен)" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:65 msgid "Addressbook" @@ -3377,8 +3473,11 @@ msgid "Uptime" msgstr "Время работы" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 -msgid "Help with configuring your firewall and router for optimal I2P performance" -msgstr "Помощь в настройке брандмауэра и маршрутизатора для обеспечения оптимальной производительности I2P" +msgid "" +"Help with configuring your firewall and router for optimal I2P performance" +msgstr "" +"Помощь в настройке брандмауэра и маршрутизатора для обеспечения оптимальной " +"производительности I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 msgid "Download" @@ -3508,8 +3607,12 @@ msgid "Firewalled" msgstr "Заблокирован извне" #: ../java/src/net/i2p/router/web/SummaryHelper.java:135 -msgid "ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" -msgstr "ОШИБКА - UDP-порт уже занят - перенастройте i2np.udp.internalPort=xxxx в дополнительных настройках и перезапустите маршрутизатор" +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:141 msgid "ERR-No Active Peers, Check Network Connection and Firewall" @@ -3517,7 +3620,8 @@ msgstr "ОШИБКА - Нет активных пиров, проверьте п #: ../java/src/net/i2p/router/web/SummaryHelper.java:144 msgid "ERR-UDP Disabled and Inbound TCP host/port not set" -msgstr "ОШИБКА - UDP отключено и не заданы адрес/порт для входящих TCP-соединений" +msgstr "" +"ОШИБКА - UDP отключено и не заданы адрес/порт для входящих TCP-соединений" #: ../java/src/net/i2p/router/web/SummaryHelper.java:146 msgid "WARN-Firewalled with UDP Disabled" @@ -4091,6 +4195,7 @@ msgstr "настройки сети" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:227 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:219 @@ -4124,6 +4229,7 @@ msgstr "Интервал автообновления
    панели (сек.) #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:231 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:223 @@ -4150,8 +4256,12 @@ msgid "Bandwidth limiter" msgstr "Ограничение скорости" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:300 -msgid "I2P will work best if you configure your rates to match the speed of your internet connection." -msgstr "I2P будет работать лучше, если Вы настроите ограничение скорости в соответствии со скоростью Вашего подключения к Интернету." +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:304 msgid "KBps In" @@ -4174,19 +4284,26 @@ msgstr "ПРИМЕЧАНИЕ" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:343 #, java-format msgid "You have configured I2P to share only {0} KBps." -msgstr "Вы настроили очень низкий лимит для транзитного трафика (всего {0} килобайт/секунду)." +msgstr "" +"Вы настроили очень низкий лимит для транзитного трафика (всего {0} килобайт/" +"секунду)." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:346 msgid "I2P requires at least 12KBps to enable sharing. " msgstr "I2P нужно как минимум 12 килобайт/секунду для включения этой функции. " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347 -msgid "Please enable sharing (participating in tunnels) by configuring more bandwidth. " +msgid "" +"Please enable sharing (participating in tunnels) by configuring more " +"bandwidth. " msgstr "Пожалуйста, повысьте долю транзитного трафика. " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:348 -msgid "It improves your anonymity by creating cover traffic, and helps the network." -msgstr "Это одновременно повысит Вашу анонимность (благодаря маскирующему транзитному трафику) и поможет сети." +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:351 #, java-format @@ -4194,8 +4311,12 @@ msgid "You have configured I2P to share {0} KBps." msgstr "Вы задали долю транзитного трафика {0} килобайт/секунду." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:354 -msgid "The higher the share bandwidth the more you improve your anonymity and help the network." -msgstr "Чем выше доля транзитного трафика, тем выше Ваша анонимность и больше Ваша помощь сети." +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:358 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514 @@ -4232,7 +4353,8 @@ msgstr "Настройки UPnP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:385 msgid "Enable UPnP to open firewall ports" -msgstr "Использовать UPnP для автоматического открытия портов на брандмауэре/роутере" +msgstr "" +"Использовать UPnP для автоматического открытия портов на брандмауэре/роутере" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:387 msgid "UPnP status" @@ -4257,7 +4379,9 @@ msgstr "Определять автоматически (без использо #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 msgid "Ignore local interface IP address" -msgstr "Определять автоматически (без использования IP-адресов локальных сетевых интерфейсов)" +msgstr "" +"Определять автоматически (без использования IP-адресов локальных сетевых " +"интерфейсов)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:407 msgid "Use SSU IP address detection only" @@ -4285,8 +4409,12 @@ msgid "Action when IP changes" msgstr "Действие при смене IP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:439 -msgid "Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity" -msgstr "Режим мобильного компьютера: автоматически менять идентификатор маршрутизатора и UDP-порт после смены IP" +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:441 msgid "Experimental" @@ -4330,8 +4458,11 @@ msgid "Completely disable" msgstr "Полностью отключить поддержку TCP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:491 -msgid "(select only if behind a firewall that throttles or blocks outbound TCP)" -msgstr "(используйте этот режим только при наличии в системе брандмауэра, который замедляет или блокирует исходящие TCP-соединения)" +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:493 msgid "Externally reachable TCP port" @@ -4346,7 +4477,7 @@ msgid "Specify Port" msgstr "Задать порт вручную" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:330 msgid "Note" msgstr "ВНИМАНИЕ" @@ -4361,32 +4492,58 @@ msgstr "Справка по настройкам сети" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:520 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 -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 соединений из интернета." +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:522 -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." +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:524 -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-посредников." +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:526 -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." +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:528 msgid "Certain firewalls such as symmetric NATs may not work well with I2P." -msgstr "Некоторые виды брандмауэров могут быть частично несовместимы с I2P (например, симметричные NAT)." +msgstr "" +"Некоторые виды брандмауэров могут быть частично несовместимы с I2P " +"(например, симметричные NAT)." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:537 -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-адреса и переадресации портов." +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:539 msgid "UPnP support is beta, and may not work for any number of reasons" -msgstr "Поддержка UPnP находится в разработке (бета-версия). В следующих случаях UPnP возможно не будет работать" +msgstr "" +"Поддержка UPnP находится в разработке (бета-версия). В следующих случаях " +"UPnP возможно не будет работать" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:541 msgid "No UPnP-compatible device present" @@ -4417,24 +4574,38 @@ msgid "Review the UPnP status here." msgstr "Посмотреть статус UPnP можно тут." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 -msgid "UPnP may be enabled or disabled above, but a change requires a router restart to take effect." -msgstr "UPnP можно включить/выключить в настройках выше. Настройка вступит в силу только после перезапуска I2P-маршрутизатора." +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:557 msgid "Hostnames entered above will be published in the network database." -msgstr "Если Вы задали вручную имена хостов, они будут опубликованы в сетевой базе." +msgstr "" +"Если Вы задали вручную имена хостов, они будут опубликованы в сетевой базе." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 msgid "They are not private." msgstr "Не вводите локальные внутрисетевые имена." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 -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." +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:563 -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/брандмауэр." +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:565 msgid "When in doubt, leave the settings at the defaults." @@ -4445,12 +4616,22 @@ msgid "Reachability Help" msgstr "Справка по статусу сетевой доступности" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:572 -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 все еще показывает, что порт закрыт. Имейте в виду, что брандмауэров может быть несколько, например, локальный программный и внешний аппаратный." +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:575 -msgid "If there is an error, the logs may also help diagnose the problem." -msgstr "В случае ошибок логи могут помочь диагностировать проблему." +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:579 msgid "Your UDP port does not appear to be firewalled." @@ -4458,79 +4639,141 @@ msgstr "Ваш UDP-порт доступен извне." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 msgid "Your UDP port appears to be firewalled." -msgstr "Ваш UDP-порт заблокирован брандмауэром и не может принимать входящие соединения." +msgstr "" +"Ваш UDP-порт заблокирован брандмауэром и не может принимать входящие " +"соединения." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 -msgid "As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error." -msgstr "Иногда это сообщение не соответствует действительности (методы обнаружения брандмауэров пока не идеальны)." +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:587 -msgid "However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port." -msgstr "Но если оно появляется постоянно, Вам следует проверить, что на всех брандмауэрах порт для I2P открыт." +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:589 -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 сможет работать даже с заблокированным портом при помощи заранее выбранных «посредников» для ретрансляции входящих соединений." +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:591 -msgid "However, you will get more participating traffic and help the network more if you can open your firewall(s)." -msgstr "С другой стороны, при работе с открытым портом Вы получите гораздо больше транзитного трафика и сможете помочь сети." +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:593 -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 "Возможно Вы собственноручно открыли порт на Вашем брандмауэре, но ошибка всё равно появляется. Имейте в виду, что Вы можете быть одновременно за программным и аппаратным брандмауэрами или за дополнительным корпоративным брандмауэром (который Вы не можете контролировать)." +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:595 -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." +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:599 msgid "The router is currently testing whether your UDP port is firewalled." -msgstr "Маршрутизатор проверяет возможность принятия входящих соединений на UDP-порт." +msgstr "" +"Маршрутизатор проверяет возможность принятия входящих соединений на UDP-порт." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603 -msgid "The router is not configured to publish its address, therefore it does not expect incoming connections." -msgstr "В настройках I2P-маршрутизатора запрещена публикация его адреса, как результат, маршрутизатор не ожидает входящих соединений." +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:605 msgid "WARN - Firewalled and Fast" msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне и Быстрый" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 -msgid "You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled." -msgstr "Вы настроили долю транзитного трафика выше 128 килобайт/секунду, при этом у Вас заблокирован входящий порт." +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:609 -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 будет работать нормально в такой конфигурации, но Вы можете помочь сети разблокировав входящий порт, если у Вас действительно быстрый интернет." +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:611 msgid "WARN - Firewalled and Floodfill" msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне и Floodfill" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 -msgid "You have configured I2P to be a floodfill router, but you are firewalled." -msgstr "Вы настроили I2P работать в режиме floodfill-маршрутизатора, при этом у Вас заблокирован входящий порт." +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:615 -msgid "For best participation as a floodfill router, you should open your firewall." -msgstr "Для оптимальной работы в качестве floodfill-маршрутизатора Вам нужно разблокировать входящий порт." +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:617 msgid "WARN - Firewalled with Inbound TCP Enabled" msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне при включенном на вход TCP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 -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-порт тоже заблокирован." +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:621 -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. Это повредит производительности сети. " +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:623 msgid "Please open your firewall or disable inbound TCP above." -msgstr "Пожалуйста, проверьте состояние TCP-порта и разблокируйте его или отключите поддержку входящих TCP-соединений." +msgstr "" +"Пожалуйста, проверьте состояние TCP-порта и разблокируйте его или отключите " +"поддержку входящих TCP-соединений." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 msgid "WARN - Firewalled with UDP Disabled" @@ -4538,11 +4781,15 @@ msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне пр #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 msgid "You have configured inbound TCP, however you have disabled UDP." -msgstr "Вы отключили поддержку UDP, однако Ваш TCP-порт заблокирован и в результате Ваш маршрутизатор не может принимать входящие соединения." +msgstr "" +"Вы отключили поддержку UDP, однако Ваш TCP-порт заблокирован и в результате " +"Ваш маршрутизатор не может принимать входящие соединения." # This string intentionally left blank #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 -msgid "You appear to be firewalled on TCP, therefore your router cannot accept inbound connections." +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:631 @@ -4554,20 +4801,30 @@ msgid "ERR - Clock Skew" msgstr "ОШИБКА - Часы сбиты" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 -msgid "Your system's clock is skewed, which will make it difficult to participate in the network." -msgstr "Ваши системные часы сильно отстают/спешат. Это помешает Вашему участию в сети." +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:637 msgid "Correct your clock setting if this error persists." -msgstr "Поправьте настройки времени, если Вы постоянно видите это сообщение об ошибке." +msgstr "" +"Поправьте настройки времени, если Вы постоянно видите это сообщение об " +"ошибке." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 msgid "ERR - Private TCP Address" msgstr "ОШИБКА - Частный TCP Адрес" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 -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-адреса." +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:643 msgid "Correct the address or disable inbound TCP above." @@ -4582,24 +4839,40 @@ 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:649 -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 не очень хорошо работает за таким типом брандмауэров. Скорее всего Вы не сможете принимать входящие соединения и это снизит эффективность Вашего участия в сети." +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:651 -msgid "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" -msgstr "ОШИБКА - UDP-порт уже занят - перенастройте i2np.udp.internalPort=xxxx в дополнительных настройках и перезапустите маршрутизатор" +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:653 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:655 -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." +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:657 -msgid "This may be a transient error, if the other program is no longer using the port." +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:659 @@ -4608,11 +4881,17 @@ msgstr "После возникновения этой ошибки необхо #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 msgid "ERR - UDP Disabled and Inbound TCP host/port not set" -msgstr "ОШИБКА - UDP отключено и не заданы адрес/порт для входящих TCP-соединений" +msgstr "" +"ОШИБКА - UDP отключено и не заданы адрес/порт для входящих TCP-соединений" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:663 -msgid "You have not configured inbound TCP with a hostname and port above, however you have disabled UDP." -msgstr "Вы не задали адрес/порт для входящих TCP-соединений и одновременно отключили поддержку UDP, в результате Ваш маршрутизатор не может принимать входящие соединения." +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:665 @@ -4629,11 +4908,17 @@ msgstr "ОШИБКА - ошибка менеджера I2CP - загляните #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 msgid "This is usually due to a port 7654 conflict. Check the logs to verify." -msgstr "Эта ошибка обычно возникает из-за конфликта порта 7654. Загляните в логи чтобы убедиться." +msgstr "" +"Эта ошибка обычно возникает из-за конфликта порта 7654. Загляните в логи " +"чтобы убедиться." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:673 -msgid "Do you have another I2P instance running? Stop the conflicting program and restart I2P." -msgstr "Не запущена ли у вас ещё одна копия I2P? Остановите вызвавшую конфликт программу и перезапустите I2P." +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" @@ -4649,7 +4934,9 @@ msgstr "Дополнительные настройки I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:311 msgid "Some changes may require a restart to take effect." -msgstr "Для вступления некоторых изменений в силу может потребоваться перезапуск I2P-маршрутизатора." +msgstr "" +"Для вступления некоторых изменений в силу может потребоваться перезапуск I2P-" +"маршрутизатора." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:106 msgid "config clients" @@ -4664,8 +4951,11 @@ msgid "Client Configuration" msgstr "Настройки клиентов" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:314 -msgid "The Java clients listed below are started by the router and run in the same JVM." -msgstr "Перечисленные ниже Java-клиенты запускаются маршрутизатором внутри своей JVM." +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:318 msgid "To change other client options, edit the file" @@ -4675,7 +4965,9 @@ msgstr "Для изменения других клиентских настро #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:401 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:415 msgid "All changes require restart to take effect." -msgstr "Для вступления изменённых настроек в силу потребуется перезапуск маршрутизатора." +msgstr "" +"Для вступления изменённых настроек в силу потребуется перезапуск " +"маршрутизатора." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:337 msgid "Advanced Client Interface Configuration" @@ -4723,7 +5015,9 @@ msgstr "Пароль" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:397 msgid "Any changes made here must also be configured in the external client." -msgstr "Любые изменения, сделанные здесь, так же должны быть выполнены во внешнем клиенте." +msgstr "" +"Любые изменения, сделанные здесь, так же должны быть выполнены во внешнем " +"клиенте." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:399 msgid "Many clients do not support SSL or authorization." @@ -4734,12 +5028,32 @@ msgid "WebApp Configuration" msgstr "Настройки веб-апплетов" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 -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)." +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:411 -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-файл и соответствующее приложение будут возвращены на свои места, поэтому отключение веб-апплетов через эту страницу это более корректный способ." +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:421 msgid "Plugin Configuration" @@ -4767,11 +5081,15 @@ msgstr "Настройки связки ключей I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:295 msgid "The router keyring is used to decrypt encrypted leaseSets." -msgstr "Маршрутизатор использует связку ключей для дешифровки зашифрованных LeaseSet." +msgstr "" +"Маршрутизатор использует связку ключей для дешифровки зашифрованных LeaseSet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:298 -msgid "The keyring may contain keys for local or remote encrypted destinations." -msgstr "Связка ключей может хранить ключи как для локальных, так и для удаленных зашифрованных адресов назначения." +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:308 msgid "Manual Keyring Addition" @@ -4822,7 +5140,8 @@ msgid "Log record format" msgstr "Формат записи" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 -msgid "(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" +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:315 @@ -4830,8 +5149,12 @@ msgid "Log date format" msgstr "Формат даты" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 -msgid "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)" -msgstr "(MM = месяц, dd = день, HH = часы, mm = минуты, ss = секунды, SSS = миллисекунды)" +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:321 msgid "Max log file size" @@ -4842,8 +5165,12 @@ msgid "Default log level" msgstr "Уровень детализации по умолчанию" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329 -msgid "(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)" -msgstr "(не рекомендуется использовать уровни DEBUG и INFO для постоянного использования, так как они сильно замедлят работу Вашего маршрутизатора)" +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:331 msgid "Log level overrides" @@ -4874,7 +5201,8 @@ msgid "Manually Ban / Unban a Peer" msgstr "Вручную забанить/разбанить этого пира" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:313 -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 "Бан запретит участие указанного пира в создаваемых Вами туннелях." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:323 @@ -4882,8 +5210,17 @@ msgid "Adjust Profile Bonuses" msgstr "Настроить бонусы для этого пира" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 -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 "Бонусы могут быть положительными и отрицательными и вводятся для управления включением пира в группы «Быстрые» и «Высокоёмкие» (Быстрые пиры используются для построения клиентских туннелей, Высокоёмкие пиры используются для некоторых зондирующих туннелей). Текущие бонусы можно посмотреть на" +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:327 msgid "profiles page" @@ -4911,21 +5248,36 @@ msgid "Reseeding Configuration" msgstr "Настройки начального обнаружения узлов (reseeding)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:302 -msgid "Reseeding is the bootstrapping process used to find other routers when you first install I2P, or when your router has too few router references remaining." -msgstr "Загрузка начального списка узлов (reseeding) - это процесс начальной загрузки (бутстрап), используемый для нахождения других роутеров, когда вы впервые установили I2P, или когда ваш роутер имеет слишком мало данных о других роутерах." +msgid "" +"Reseeding is the bootstrapping process used to find other routers when you " +"first install I2P, or when your router has too few router references " +"remaining." +msgstr "" +"Загрузка начального списка узлов (reseeding) - это процесс начальной " +"загрузки (бутстрап), используемый для нахождения других роутеров, когда вы " +"впервые установили I2P, или когда ваш роутер имеет слишком мало данных о " +"других роутерах." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304 -msgid "If reseeding has failed, you should first check your network connection." -msgstr "Если начальная загрузка не удалась, первым делом вы должны проверить соединение с сетью." +msgid "" +"If reseeding has failed, you should first check your network connection." +msgstr "" +"Если начальная загрузка не удалась, первым делом вы должны проверить " +"соединение с сетью." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:308 -msgid "Change these only if HTTP is blocked by a restrictive firewall, reseed has failed, and you have access to an HTTP proxy." -msgstr "Меняйте эти параметры только если HTTP заблокирован на брандмауэре, начальная загрузка не удалась, и вы имеете доступ к HTTP-прокси." +msgid "" +"Change these only if HTTP is blocked by a restrictive firewall, reseed has " +"failed, and you have access to an HTTP proxy." +msgstr "" +"Меняйте эти параметры только если HTTP заблокирован на брандмауэре, " +"начальная загрузка не удалась, и вы имеете доступ к HTTP-прокси." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 #, java-format msgid "See {0} for instructions on reseeding manually." -msgstr "Смотрите {0} на предмет инструкций как выполнить начальную загрузку вручную." +msgstr "" +"Смотрите {0} на предмет инструкций как выполнить начальную загрузку вручную." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 msgid "the FAQ" @@ -4976,71 +5328,151 @@ msgid "Shutdown the router" msgstr "Выключить маршрутизатор" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:287 -msgid "Graceful shutdown lets the router satisfy the agreements it has already made before shutting down, but may take a few minutes." -msgstr "Плавное выключение позволяет маршрутизатору перед остановкой отработать все поставленные задачи, но при этом на процесс выключения потребуется дополнительное время." +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:289 -msgid "If you need to kill the router immediately, that option is available as well." -msgstr "Если маршрутизатор должен быть выключен немедленно, Вы можете выбрать соответствующую команду." +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:299 -msgid "If you want the router to restart itself after shutting down, you can choose one of the following." -msgstr "Иногда, Вам нужно перегрузить маршрутизатор (например, после изменения базовых настроек, которые считываются приложением только во время запуска). В этом случае, Вам доступны два варианта. Плавный перезапуск займет несколько минут (но зато пиры, использующие Ваш маршрутизатор, будут Вам благодарны за терпение). Если Вы не можете ждать, выбирайте немедленный перезапуск. В случае немедленного перезапуска маршрутизатор запустится через одну минуту." +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:301 -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." +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:303 -msgid "A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately." +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:305 -msgid "After tearing down the router, it will wait 1 minute before starting back up again." +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:315 +msgid "Systray integration" +msgstr "Интеграция в область уведомлений" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 +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:319 +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:321 +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:323 +msgid "Show systray icon" +msgstr "Показать значок статуса" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 +msgid "Hide systray icon" +msgstr "Спрятать значок статуса" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 msgid "Run on startup" msgstr "Автоматический запуск I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 -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:319 -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:329 -msgid "If you are running I2P as service right now, removing it will shut down your router immediately." -msgstr "Если служба I2P уже была запущена, при выборе варианта \"Не запускать I2P при старте\" маршрутизатор будет моментально остановлен." +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:331 -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." +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:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 +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:343 +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:347 msgid "Debugging" msgstr "Отладка" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 msgid "View the job queue" msgstr "Просмотр очереди заданий" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 -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:353 +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:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 msgid "Launch browser on router startup?" msgstr "Запускать браузер при старте I2P?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 -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/configservice_jsp.java:361 +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" @@ -5101,11 +5533,19 @@ msgstr "Большинству пользователей подойдут на #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:310 msgid "There is a fundamental tradeoff between anonymity and performance." -msgstr "Примите во внимание, что между анонимностью и эффективностью есть обратная связь — длинные туннели более анонимны, но хуже работают." +msgstr "" +"Примите во внимание, что между анонимностью и эффективностью есть обратная " +"связь — длинные туннели более анонимны, но хуже работают." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:313 -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 хопов, а также большое количество туннелей (как обычных, так и резервных) могут привести к снижению производительности/надежности работы маршрутизатора." +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:316 @@ -5114,19 +5554,26 @@ msgstr " " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:319 msgid "Change these settings with care, and adjust them if you have problems." -msgstr "Осторожно вносите изменения в существующие настройки и возвращайте в положение по умолчанию, если у Вас возникли проблемы." +msgstr "" +"Осторожно вносите изменения в существующие настройки и возвращайте в " +"положение по умолчанию, если у Вас возникли проблемы." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:333 -msgid "Exploratory tunnel setting changes are stored in the router.config file." +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:336 msgid "Client tunnel changes are temporary and are not saved." -msgstr "Настройки клиентских туннелей нигде не сохраняются и действуют только до перезапуска." +msgstr "" +"Настройки клиентских туннелей нигде не сохраняются и действуют только до " +"перезапуска." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:338 msgid "To make permanent client tunnel changes see the" -msgstr "Для задания перманентных изменений в настройках клиентских туннелей воспользуйтесь" +msgstr "" +"Для задания перманентных изменений в настройках клиентских туннелей " +"воспользуйтесь" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:340 msgid "i2ptunnel page" @@ -5149,16 +5596,27 @@ msgid "Theme selection disabled for Internet Explorer, sorry." msgstr "Переключатель тем отключен для Internet Explorer, извините" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:312 -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 в настройках Вашего браузера (или прокси-сервера), если хотите использовать темы оформления" +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:316 msgid "Router Console Language" msgstr "Язык консоли маршрутизатора" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:320 -msgid "Please contribute to the router console translation project! Contact the developers on IRC #i2p to help." -msgstr "Пожалуйста, помогите проекту перевода консоли маршрутизатора! Разработчики доступны для связи на IRC-канале #i2p" +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:324 msgid "Apply" @@ -5225,8 +5683,12 @@ msgid "Unsigned Build URL" msgstr "URL неподписанной тестовой сборки" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 -msgid "I2P updates are disabled because you do not have write permission for the install directory." -msgstr "Функция автообновления I2P недоступна: у Вас нет прав на запись в директорию I2P." +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:367 msgid "Save" @@ -5257,8 +5719,12 @@ msgstr "Пожалуйста сообщайте об ошибках в багт #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:137 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 -msgid "You may use the username \"guest\" and password \"guest\" if you do not wish to register." -msgstr "Вы можете использовать имя пользователя \"guest\" и пароль \"guest\" если не хотите регистрироваться." +msgid "" +"You may use the username \"guest\" and password \"guest\" if you do not wish " +"to register." +msgstr "" +"Вы можете использовать имя пользователя \"guest\" и пароль \"guest\" если не " +"хотите регистрироваться." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 @@ -5281,15 +5747,22 @@ msgstr "Версия I2P и информация о среде выполнен #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 -msgid "Note that system information, log timestamps, and log messages may provide clues to your location; please review everything you include in a bug report." -msgstr "Имейте в виду, что информация о системе, временные метки в логах, и сами логи могут помочь выявить ваше местоположение; пожалуйста проверьте всё, что вы включаете в сообщение об ошибке." +msgid "" +"Note that system information, log timestamps, and log messages may provide " +"clues to your location; please review everything you include in a bug report." +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:242 -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 "Страница консоли маршрутизатора, которую вы запросили, не существует." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:244 @@ -5361,8 +5834,12 @@ msgid "The requested web application is not running." msgstr "Запрошенное веб-приложение не запущено." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:234 -msgid "Please visit the config clients page to start it." -msgstr "Пожалуйста, запустите его со страницы настроек веб-апплетов." +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" @@ -5388,7 +5865,7 @@ msgstr "статистика" msgid "I2P Router Statistics" msgstr "Статистика маршрутизатора I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:248 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:247 #, java-format msgid "Disable {0} Refresh" msgstr "Отключить {0} автообновление" @@ -5401,9 +5878,6 @@ msgstr "обзор туннелей" msgid "I2P Tunnel Summary" msgstr "Обзор туннелей I2P" -#~ msgid "Show systray icon" -#~ msgstr "Показать значок статуса" - #~ msgid "System tray icon enabled." #~ msgstr "Включен значок-индикатор статуса в области уведомлений." @@ -5416,33 +5890,9 @@ msgstr "Обзор туннелей I2P" #~ msgstr "" #~ "Предупреждение: Не удалось соединиться с менеджером области уведомлений" -#~ msgid "Hide systray icon" -#~ msgstr "Спрятать значок статуса" - #~ msgid "System tray icon disabled." #~ msgstr "Выключен значок-индикатор статуса в области уведомлений." -#~ msgid "Systray integration" -#~ msgstr "Интеграция в область уведомлений" - -#~ 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, у Вас есть возможность отслеживать статус " -#~ "маршрутизатора через значок в области уведомлений" - -#~ msgid "" -#~ "(later on, I2P client applications will be able to integrate their own " -#~ "functionality into the system tray as well)." -#~ msgstr "(когда-нибудь и клиентские приложения для I2P будут там доступны)." - -#~ msgid "" -#~ "If you are on windows, you can either enable or disable that icon here." -#~ msgstr "" -#~ "Если Вы пользуетесь I2P под Windows, то здесь Вы можете настроить " -#~ "отображение этого значка." - #~ msgid "" #~ "Ensure that nothing blocks outbound HTTP, check logs and if nothing helps, read the Graphs Page" -msgstr "曲线图列表已更新,更新后的内容可能需要最多 60s 的时间才能在这里及 统计图表页面中反映出来。" +msgid "" +"Graph list updated, may take up to 60s to be reflected here and on the Graphs Page" +msgstr "" +"曲线图列表已更新,更新后的内容可能需要最多 60s 的时间才能在这里及 统计图表页面中反映出来。" #. the count isn't really correct anyway, since we don't check for actual changes #. addFormNotice("Updated settings for " + updated + " pools."); @@ -2238,7 +2263,9 @@ msgstr "探索隧道设置保存成功。" #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:36 -msgid "Error saving the configuration (applied but not saved) - please see the error logs." +msgid "" +"Error saving the configuration (applied but not saved) - please see the " +"error logs." msgstr "配置保存出错(已应用但未保存) - 参见错误日志" #. * dummies for translation @@ -2423,7 +2450,9 @@ msgid "Download, verify, and restart" msgstr "仅下载、验证并重启" #: ../java/src/net/i2p/router/web/FormHandler.java:174 -msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit." +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:93 @@ -2454,7 +2483,7 @@ msgstr "事件均值" #: ../java/src/net/i2p/router/web/GraphHelper.java:152 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:333 msgid "or" msgstr "或" @@ -2779,7 +2808,9 @@ msgid "This plugin requires Java version {0} or higher" msgstr "插件需要 Java 版本 {0} 或更高" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 -msgid "Downloaded plugin is for new installs only, but the plugin is already installed" +msgid "" +"Downloaded plugin is for new installs only, but the plugin is already " +"installed" msgstr "所下插件包仅用于全新安装,但您已经安装过该插件" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:305 @@ -3022,7 +3053,9 @@ msgid "caps" msgstr "容量" #: ../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" +msgid "" +"peak throughput (bytes per second) over a 1 minute period that the peer has " +"sustained in a single tunnel" msgstr "该节点一分钟由单一隧道通过的数据峰值(byte/s)。" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 @@ -3111,7 +3144,9 @@ msgid "Statistics gathered during this router's uptime" msgstr "路由运行时收集的统计数据" #: ../java/src/net/i2p/router/web/StatsGenerator.java:63 -msgid "The data gathered is quantized over a 1 minute period, so should just be used as an estimate." +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:64 @@ -3213,7 +3248,9 @@ msgid "Help & FAQ" msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:55 -msgid "Configure startup of clients and webapps (services); manually start dormant services" +msgid "" +"Configure startup of clients and webapps (services); manually start dormant " +"services" msgstr "设置客户程序及Web程序(服务)的启动;手动启动重要服务" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:57 @@ -3349,7 +3386,8 @@ msgid "Uptime" msgstr "运行时间" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 -msgid "Help with configuring your firewall and router for optimal I2P performance" +msgid "" +"Help with configuring your firewall and router for optimal I2P performance" msgstr "如何正确配置防火墙和(物理)路由器优化I2P性能" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 @@ -3481,8 +3519,11 @@ msgid "Firewalled" msgstr "防火墙限制" #: ../java/src/net/i2p/router/web/SummaryHelper.java:135 -msgid "ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" -msgstr "错误-UDP端口已占用 - 在高级设置中设置 i2np.udp.internalPort=新端口并重启程序" +msgid "" +"ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and " +"restart" +msgstr "" +"错误-UDP端口已占用 - 在高级设置中设置 i2np.udp.internalPort=新端口并重启程序" #: ../java/src/net/i2p/router/web/SummaryHelper.java:141 msgid "ERR-No Active Peers, Check Network Connection and Firewall" @@ -4039,6 +4080,7 @@ msgstr "连网设置" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:227 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:219 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:219 @@ -4072,6 +4114,7 @@ msgstr "刷新(秒)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:231 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:223 @@ -4098,7 +4141,9 @@ msgid "Bandwidth limiter" msgstr "带宽限制" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:300 -msgid "I2P will work best if you configure your rates to match the speed of your internet connection." +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:304 @@ -4129,11 +4174,14 @@ msgid "I2P requires at least 12KBps to enable sharing. " msgstr "I2P 需要至少 12KBps 才能进行共享。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347 -msgid "Please enable sharing (participating in tunnels) by configuring more bandwidth. " +msgid "" +"Please enable sharing (participating in tunnels) by configuring more " +"bandwidth. " msgstr "请设置更多的带宽以便启用共享功能(加入到其他节点的隧道创建中)。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:348 -msgid "It improves your anonymity by creating cover traffic, and helps the network." +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:351 @@ -4142,7 +4190,9 @@ msgid "You have configured I2P to share {0} KBps." msgstr "您设置I2P共享 {0} KBps" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:354 -msgid "The higher the share bandwidth the more you improve your anonymity and help the network." +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:358 @@ -4233,7 +4283,9 @@ msgid "Action when IP changes" msgstr "IP改变后应" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:439 -msgid "Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity" +msgid "" +"Laptop mode - Change router identity and UDP port when IP changes for " +"enhanced anonymity" msgstr "笔记本模式 - IP变化后改变路由身份及UDP端口(拨号用户慎用)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:441 @@ -4278,7 +4330,8 @@ msgid "Completely disable" msgstr "完全禁用" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:491 -msgid "(select only if behind a firewall that throttles or blocks outbound TCP)" +msgid "" +"(select only if behind a firewall that throttles or blocks outbound TCP)" msgstr "仅在受到防火墙的流量限制或入站连接限制时使用" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 @@ -4294,7 +4347,7 @@ msgid "Specify Port" msgstr "指定端口" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:330 msgid "Note" msgstr "注意" @@ -4309,27 +4362,43 @@ msgstr "设置帮助" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:520 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 -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映射,您的速度和网络整合度会逐渐提升。" +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:522 -msgid "If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you." +msgid "" +"If you can, please poke a hole in your firewall to allow unsolicited UDP and " +"TCP packets to reach you." msgstr "如果可能,请在防火墙中添加端口并允许入站UDP/TCP数据包通过。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:524 -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)或借助“SSU中介”进行UDP端口穿透,通过它们也可以中继数据。" +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)或借助“SSU中介”进行UDP端口穿" +"透,通过它们也可以中继数据。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:526 -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不能正常工作,或外部防火墙封锁网络。" +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不能正常工作,或外部防火墙封锁网络。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:528 msgid "Certain firewalls such as symmetric NATs may not work well with I2P." msgstr "在某些防火墙下例如Symmetric,I2P可能无法有效利用NAT工作。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:537 -msgid "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports." +msgid "" +"UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect " +"the external IP address and forward ports." msgstr "UPnP与公网网关设备(IGD)通讯可以检测外部IP和映射端口。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:539 @@ -4365,7 +4434,9 @@ msgid "Review the UPnP status here." msgstr "在这里检查UPnP状态。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 -msgid "UPnP may be enabled or disabled above, but a change requires a router restart to take effect." +msgid "" +"UPnP may be enabled or disabled above, but a change requires a router " +"restart to take effect." msgstr "UPnP 的关闭或开启均需要程序重启后生效。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 @@ -4377,12 +4448,18 @@ msgid "They are not private." msgstr "他们并非私有地址。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 -msgid "Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1." +msgid "" +"Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1." msgstr "此外,请勿输入如127.0.0.1或192.168.1.1等私有地址" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 -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 "如果您设置了错误的IP地址或主机名称,或NAT/防火墙配置不当,您的网络性能将受到明显影响。" +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 "" +"如果您设置了错误的IP地址或主机名称,或NAT/防火墙配置不当,您的网络性能将受到" +"明显影响。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 msgid "When in doubt, leave the settings at the defaults." @@ -4393,11 +4470,18 @@ msgid "Reachability Help" msgstr "连通性帮助" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:572 -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仍然报告您受到防火墙阻隔,请想想您是否可能有多层防火墙,例如软件防护墙和外部的硬件路由器。" +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:575 -msgid "If there is an error, the logs may also help diagnose the problem." +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:579 @@ -4409,35 +4493,58 @@ msgid "Your UDP port appears to be firewalled." msgstr "您的UDP端口似乎因防火墙而连接受限。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 -msgid "As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error." +msgid "" +"As the firewall detection methods are not 100% reliable, this may " +"occasionally be displayed in error." msgstr "由于防火墙检测方法并非100%可靠,有时也可能错误地显示此此提示。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587 -msgid "However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port." +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:589 -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也能够正常工作,无需担心。受到防火墙阻隔时,路由器将通过“中介(Introducers)”中继入站连接。" +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也能够正常工作,无需担心。受到防火墙阻隔时,路由器将通" +"过“中介(Introducers)”中继入站连接。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:591 -msgid "However, you will get more participating traffic and help the network more if you can open your firewall(s)." -msgstr "然而,如果您能打开防火墙端口,您才能得到的共享流量,更好的帮助I2P网络。" +msgid "" +"However, you will get more participating traffic and help the network more " +"if you can open your firewall(s)." +msgstr "" +"然而,如果您能打开防火墙端口,您才能得到的共享流量,更好的帮助I2P网络。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593 -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 "如果您确信已经打开了防火墙,请想想是不是同时存在硬件和软件防火墙,或存在您无法控制的额外的机构性的防火墙。" +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:595 -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网络。" +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:599 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:603 -msgid "The router is not configured to publish its address, therefore it does not expect incoming connections." +msgid "" +"The router is not configured to publish its address, therefore it does not " +"expect incoming connections." msgstr "路由器被设置为禁止发布IP地址,因此并不需要入站连接。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 @@ -4445,23 +4552,32 @@ msgid "WARN - Firewalled and Fast" msgstr "警告 - 快速节点,因防火墙受限" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 -msgid "You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled." +msgid "" +"You have configured I2P to share more than 128KBps of bandwidth, but you are " +"firewalled." msgstr "您设置I2P共享超过128KBps的带宽,但您的连接因防火墙受阻。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 -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可以正常工作,但如果您的确能够分享超过128kps的带宽,打开防火墙端口它能工作的更好帮助网络中其他的人。" +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可以正常工作,但如果您的确能够分享超过128kps的带宽,打" +"开防火墙端口它能工作的更好帮助网络中其他的人。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 msgid "WARN - Firewalled and Floodfill" msgstr "警告 - 种子节点,因防火墙受限" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 -msgid "You have configured I2P to be a floodfill router, but you are firewalled." +msgid "" +"You have configured I2P to be a floodfill router, but you are firewalled." msgstr "您已将I2P设置为种子路由,但您的连接已因防火墙受阻。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 -msgid "For best participation as a floodfill router, you should open your firewall." +msgid "" +"For best participation as a floodfill router, you should open your firewall." msgstr "为了种子路由能够更好的参与到I2P网络中,请您的防火墙中打开端口。" # 暂不翻译方便反馈 @@ -4470,12 +4586,20 @@ msgid "WARN - Firewalled with Inbound TCP Enabled" msgstr "警告 - 入站TCP开启,但因防火墙受限" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 -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端口也被防火墙阻挡。" +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:621 -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连接,其他路由器节点将无法与您建立连接,造成网络受阻。" +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连接,其他路由器节点将无法与您" +"建立连接,造成网络受阻。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 msgid "Please open your firewall or disable inbound TCP above." @@ -4491,7 +4615,9 @@ msgid "You have configured inbound TCP, however you have disabled UDP." msgstr "您设置了使用TCP连接,然而禁用了UDP连接。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 -msgid "You appear to be firewalled on TCP, therefore your router cannot accept inbound connections." +msgid "" +"You appear to be firewalled on TCP, therefore your router cannot accept " +"inbound connections." msgstr "您的TCP连接似乎因防火墙受阻,导致您的路由器无法接收入站连接。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:631 @@ -4504,7 +4630,9 @@ msgid "ERR - Clock Skew" msgstr "错误 - 系统时滞" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 -msgid "Your system's clock is skewed, which will make it difficult to participate in the network." +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:637 @@ -4517,8 +4645,12 @@ msgid "ERR - Private TCP Address" msgstr "错误 - 私有TCP地址" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 -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一类的内网地址。" +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一类的内网地" +"址。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 msgid "Correct the address or disable inbound TCP above." @@ -4534,24 +4666,39 @@ msgid "I2P detected that you are firewalled by a Symmetric NAT." msgstr "I2P检测到您受到Symmetic NAT的阻挡。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 -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无法与此类防火墙很好的并存。您可能无法接收入站连接,这会障碍您连入I2P网络。" +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无法与此类防火墙很好的并存。您可能无法接收入站连接,这会障碍您连入I2P网" +"络。" # 暂不翻译,方便问题反馈 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:651 -msgid "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" -msgstr "错误 - UDP端口已占用 - 在高级设置中设置 i2np.udp.internalPort=新端口 并重启程序" +msgid "" +"ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config " +"and restart" +msgstr "" +"错误 - UDP端口已占用 - 在高级设置中设置 i2np.udp.internalPort=新端口 并重启程" +"序" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 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:655 -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的端口,如果是,关闭此程序或设置I2P使用不同的端口。" +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的端口,如果是,关闭此程序或设置I2P使用不同的" +"端口。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:657 -msgid "This may be a transient error, if the other program is no longer using the port." +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:659 @@ -4564,7 +4711,9 @@ 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:663 -msgid "You have not configured inbound TCP with a hostname and port above, however you have disabled UDP." +msgid "" +"You have not configured inbound TCP with a hostname and port above, however " +"you have disabled UDP." msgstr "您没有设置入站TCP的主机名称和端口,同时又关闭了UDP。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:665 @@ -4585,7 +4734,9 @@ 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:673 -msgid "Do you have another I2P instance running? Stop the conflicting program and restart I2P." +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 @@ -4617,7 +4768,9 @@ msgid "Client Configuration" msgstr "客户程序设置" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:314 -msgid "The Java clients listed below are started by the router and run in the same JVM." +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:318 @@ -4687,12 +4840,28 @@ msgid "WebApp Configuration" msgstr "WebApp 设置" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 -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 Web 程序随客户端“web控制台”一同启动,并与路由运行于同一JVM中。这些Web程序通常可以通过路由器界面直接访问。他们可能是完整的程序 (例如 i2psnark/BT客户端),其他客户端程序的前端或必须单独启动的程序(例如. susidns, i2ptunnel),甚至根本没有Web界面(例如 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 "" +"下面列出的Java Web 程序随客户端“web控制台”一同启动,并与路由运行于同一JVM中。" +"这些Web程序通常可以通过路由器界面直接访问。他们可能是完整的程序 (例如 " +"i2psnark/BT客户端),其他客户端程序的前端或必须单独启动的程序(例如. susidns, " +"i2ptunnel),甚至根本没有Web界面(例如 addressbook)。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:411 -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 "从webapps目录中删除相应的.war文件同样可以禁用Web程序;然而这些 .war 文件和Web程序在更新I2P后还会再次出现,所以推荐在这里通过设置的方法禁用不用的Web程序。" +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 "" +"从webapps目录中删除相应的.war文件同样可以禁用Web程序;然而这些 .war 文件和Web" +"程序在更新I2P后还会再次出现,所以推荐在这里通过设置的方法禁用不用的Web程序。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:421 msgid "Plugin Configuration" @@ -4723,7 +4892,8 @@ msgid "The router keyring is used to decrypt encrypted leaseSets." msgstr "路由的钥匙环被用来解密和加密赁集." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:298 -msgid "The keyring may contain keys for local or remote encrypted destinations." +msgid "" +"The keyring may contain keys for local or remote encrypted destinations." msgstr "钥匙环可以包含本地和远程的加密目标(Destination)." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:308 @@ -4775,7 +4945,8 @@ msgid "Log record format" msgstr "日志记录格式" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 -msgid "(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" +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:315 @@ -4783,8 +4954,11 @@ msgid "Log date format" msgstr "日志日期格式" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 -msgid "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)" -msgstr "('MM' = 月, 'dd' = 天, 'HH' = 小时, 'mm' = 分钟, 'ss' = 秒, 'SSS' = 毫秒)" +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:321 msgid "Max log file size" @@ -4795,7 +4969,9 @@ msgid "Default log level" msgstr "默认日志等级" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329 -msgid "(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)" +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:331 @@ -4827,7 +5003,8 @@ msgid "Manually Ban / Unban a Peer" msgstr "手动封杀/解封某个节点" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:313 -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 "封锁将阻止节点参与您的隧道创建" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:323 @@ -4835,8 +5012,14 @@ msgid "Adjust Profile Bonuses" msgstr "调整节点评分" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 -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 "评分(Bonuse)可能为正或为负并影响节点是否评为快速和高容量节点。快速节点用于客户程序通道,高容量节点用于探索隧道。当前评分显示于" +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 "" +"评分(Bonuse)可能为正或为负并影响节点是否评为快速和高容量节点。快速节点用于客" +"户程序通道,高容量节点用于探索隧道。当前评分显示于" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:327 msgid "profiles page" @@ -4864,15 +5047,23 @@ msgid "Reseeding Configuration" msgstr "网络引导设置" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:302 -msgid "Reseeding is the bootstrapping process used to find other routers when you first install I2P, or when your router has too few router references remaining." -msgstr "补种(Reseeding)是一个网络引导(Bootstrip)过程,新用户通过这个过程发现其他I2P用户,很久未上线的老用户在已知的有效节点很少时也会进入引导/补种状态。" +msgid "" +"Reseeding is the bootstrapping process used to find other routers when you " +"first install I2P, or when your router has too few router references " +"remaining." +msgstr "" +"补种(Reseeding)是一个网络引导(Bootstrip)过程,新用户通过这个过程发现其他I2P用" +"户,很久未上线的老用户在已知的有效节点很少时也会进入引导/补种状态。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304 -msgid "If reseeding has failed, you should first check your network connection." +msgid "" +"If reseeding has failed, you should first check your network connection." msgstr "如果网络引导失败请先检查您的网络设置,确定本机网络正常。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:308 -msgid "Change these only if HTTP is blocked by a restrictive firewall, reseed has failed, and you have access to an HTTP proxy." +msgid "" +"Change these only if HTTP is blocked by a restrictive firewall, reseed has " +"failed, and you have access to an HTTP proxy." msgstr "您仅需在防火墙过滤严重,造成网络引导失败时需要使用HTTP代理。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 @@ -4929,68 +5120,129 @@ msgid "Shutdown the router" msgstr "关闭路由器" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:287 -msgid "Graceful shutdown lets the router satisfy the agreements it has already made before shutting down, but may take a few minutes." -msgstr "平滑关闭让路由器在关闭前完成已达成的任务,但这可能需要花费几分钟的时间。" +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:289 -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 "当然你也可以选择立即关闭路由。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:299 -msgid "If you want the router to restart itself after shutting down, you can choose one of the following." +msgid "" +"If you want the router to restart itself after shutting down, you can choose " +"one of the following." msgstr "如果你想要路由器关闭后自动重新启动,可以选择下面的选项。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:301 -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 "此功能在如下情况下适用 - 例如当您修改了某些只在启动时读取的设置,例如路由器控制台密码,路由监听接口等。" +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 "" +"此功能在如下情况下适用 - 例如当您修改了某些只在启动时读取的设置,例如路由器控" +"制台密码,路由监听接口等。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:303 -msgid "A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately." -msgstr "平滑重启可能会等待几分钟的时间(但你的节点一定会感激你的耐心),硬重启可以立即完成。" +msgid "" +"A graceful restart will take a few minutes (but your peers will appreciate " +"your patience), while a hard restart does so immediately." +msgstr "" +"平滑重启可能会等待几分钟的时间(但你的节点一定会感激你的耐心),硬重启可以立即" +"完成。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 -msgid "After tearing down the router, it will wait 1 minute before starting back up again." +msgid "" +"After tearing down the router, it will wait 1 minute before starting back up " +"again." msgstr "路由关闭后将等待1分钟再重新启动。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:315 +msgid "Systray integration" +msgstr "使用系统托盘" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 +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:319 +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:321 +msgid "If you are on windows, you can either enable or disable that icon here." +msgstr "如果你使用Windows, 可以在这里开启或关闭这个托盘图标。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 +msgid "Show systray icon" +msgstr "显示托盘图标" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 +msgid "Hide systray icon" +msgstr "隐藏系统图标" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 msgid "Run on startup" msgstr "启动时运行" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 -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 "这里你可以通过下面的选项来设置开机后 I2P 是否启动 - I2P 将相应的安装或卸载I2P服务。" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:329 +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 "" +"这里你可以通过下面的选项来设置开机后 I2P 是否启动 - I2P 将相应的安装或卸载I2P" +"服务。" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:331 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:329 -msgid "If you are running I2P as service right now, removing it will shut down your router immediately." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 +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:331 -msgid "You may want to consider shutting down gracefully, as above, then running uninstall_i2p_service_winnt.bat." -msgstr "您可以考虑先平滑关闭路由,待退出后运行 uninstall_i2p_service_winnt.bat。" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:343 +msgid "" +"You may want to consider shutting down gracefully, as above, then running " +"uninstall_i2p_service_winnt.bat." +msgstr "" +"您可以考虑先平滑关闭路由,待退出后运行 uninstall_i2p_service_winnt.bat。" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 msgid "Debugging" msgstr "调试" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 msgid "View the job queue" msgstr "查看作业队列" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 -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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 +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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 msgid "Launch browser on router startup?" msgstr "路由器启动时运行浏览器?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 -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 "此Web控制台是I2P的主要设置界面,所以如果您您觉得有必要I2P可以在路由启动时调用浏览器打开" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:361 +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 "" +"此Web控制台是I2P的主要设置界面,所以如果您您觉得有必要I2P可以在路由启动时调用" +"浏览器打开" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:107 msgid "config stats" @@ -5054,8 +5306,13 @@ msgid "There is a fundamental tradeoff between anonymity and performance." msgstr "匿名性需要以性能为代价。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:313 -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个跳点的隧道(例如 2跳点 + 0-2跳点,3跳点 + 0-1跳点, 3跳点 + 0-2跳点),或大量常规+大量备用,可能降低性能和稳定性。" +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个跳点的隧道(例如 2跳点 + 0-2跳点,3跳点 + 0-1跳点, 3跳点 + 0-2跳点),或" +"大量常规+大量备用,可能降低性能和稳定性。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:316 msgid "High CPU and/or high outbound bandwidth usage may result." @@ -5066,7 +5323,8 @@ 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:333 -msgid "Exploratory tunnel setting changes are stored in the router.config file." +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:336 @@ -5098,16 +5356,24 @@ msgid "Theme selection disabled for Internet Explorer, sorry." msgstr "抱歉,主题功能在InternetExplorer中已禁用。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:312 -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的UserAgent;您需要设置浏览器(或过滤式代理)使用不同的UserAgent,才能访问路由控制台的主题功能。" +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的UserAgent;您需要设置浏览器(或过滤" +"式代理)使用不同的UserAgent,才能访问路由控制台的主题功能。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:316 msgid "Router Console Language" msgstr "路由控制台语言" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:320 -msgid "Please contribute to the router console translation project! Contact the developers on IRC #i2p to help." -msgstr "欢迎加入路由控制台翻译项目!提供帮助请通过IRC到#i2p房间与开发人员联系。" +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:324 msgid "Apply" @@ -5174,7 +5440,9 @@ msgid "Unsigned Build URL" msgstr "未签名软件链接" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 -msgid "I2P updates are disabled because you do not have write permission for the install directory." +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:367 @@ -5206,7 +5474,9 @@ msgstr "Bug报告请到 {0} 或 {1}。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:137 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 -msgid "You may use the username \"guest\" and password \"guest\" if you do not wish to register." +msgid "" +"You may use the username \"guest\" and password \"guest\" if you do not wish " +"to register." msgstr "如果您不想注册可以用“guest”作为用户名和密码登陆。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 @@ -5230,15 +5500,21 @@ msgstr "I2P 版本及运行环境" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 -msgid "Note that system information, log timestamps, and log messages may provide clues to your location; please review everything you include in a bug report." -msgstr "注意,系统信息、日志时间戳和日志中的部分信息中可能泄露您真实位置;提交前请仔细检查。" +msgid "" +"Note that system information, log timestamps, and log messages may provide " +"clues to your location; please review everything you include in a bug report." +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:242 -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 "抱歉!您请求的页面或资源不存在。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:244 @@ -5310,8 +5586,11 @@ msgid "The requested web application is not running." msgstr "您所访问的Web程序未启动。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:234 -msgid "Please visit the config clients page to start it." -msgstr "请先在配置客户端页面中启动它。" +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" @@ -5337,7 +5616,7 @@ msgstr "统计" msgid "I2P Router Statistics" msgstr "I2P 路由器统计数据" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:248 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:247 #, java-format msgid "Disable {0} Refresh" msgstr "停止 {0} 刷新" @@ -5352,6 +5631,7 @@ msgstr "I2P 隧道概况" #~ msgid "Client Interface Configuration (Advacned)" #~ msgstr "客户端接口设置(高级)" + #~ msgid "" #~ "Ensure that nothing blocks outbound HTTP, check logs and if nothing helps, read the 日志 ,如果问题仍无法解决,请参照 FAQ 进行手动补种。" + #~ msgid "Last reseed failed fully (failed reading seed URL)." #~ msgstr "上次补种尝试失败(读取补种URL失败)。" + #~ msgid "Last reseed failed fully (no routerInfo URLs at seed URL)." #~ msgstr "上次补种尝试失败(补种服务器未返回任何路由信息URL)。" + #~ msgid "Last reseed failed partly ({0}% of {1})." #~ msgstr "上次补种部分失败({0}%失败,共{1})" + #~ msgid "Last reseed failed ({0}% of {1})." #~ msgstr "上次补种失败({0}%失败,共{1})" + #~ msgid "Last reseed failed fully (exception caught)." #~ msgstr "上次补种失败(exception caught)." -#~ msgid "Show systray icon" -#~ msgstr "显示托盘图标" + #~ msgid "System tray icon enabled." #~ msgstr "系统托盘图标已启用" + #~ msgid "System tray icon feature not supported on this platform. Sorry!" #~ msgstr "您的平台不支持系统托盘图标功能" + #~ msgid "Warning: unable to contact the systray manager" #~ msgstr "警告:与托盘管理器通讯失败" -#~ msgid "Hide systray icon" -#~ msgstr "隐藏系统图标" + #~ msgid "System tray icon disabled." #~ msgstr "系统托盘已禁用" + #~ msgid "minute" #~ msgstr "分钟" + #~ msgid "minutes" #~ msgstr "分钟" + #~ msgid "avg value" #~ msgstr "均值" + #~ msgid "events" #~ msgstr "事件" + #~ msgid "lifetime average" #~ msgstr "总平均值" + #~ msgid "peak average" #~ msgstr "峰值平均值" -#~ msgid "Systray integration" -#~ msgstr "使用系统托盘" -#~ 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 平台允许小程序进驻系统托盘,让你可以查看路由状态" -#~ msgid "" -#~ "(later on, I2P client applications will be able to integrate their own " -#~ "functionality into the system tray as well)." -#~ msgstr "(以后的 I2P 客户端程序也会将它们的功能集成到系统托盘里)。" -#~ msgid "" -#~ "If you are on windows, you can either enable or disable that icon here." -#~ msgstr "如果你使用Windows, 可以在这里开启或关闭这个托盘图标。" + #~ msgid "" #~ "Please report bugs on trac." #~ "i2p2.i2p." #~ msgstr "" #~ "如果您发现错误请报告至trac." #~ "i2p2.i2p。" + #~ msgid "hops" #~ msgstr "跳点" + #~ msgid "tunnels" #~ msgstr "隧道" + #~ msgid "Tunnels in/out" #~ msgstr "通道(上/下行)" + #~ msgid "" #~ "WebApp configuration saved successfully - restart required to take effect." #~ msgstr "WebApp设置保存成功 - 程序重启后生效" + #~ msgid "Start Now" #~ msgstr "立即启动" + #~ msgid "Show the router's workload, and how it's performing" #~ msgstr "显示I2P路由器的负载与工作状况" + #~ msgid "Jobs" #~ msgstr "作业" + #~ msgid "This is useful in some situations" #~ msgstr "重启在某些情况下有用" + #~ msgid "I2P will install (or remove) a service accordingly." #~ msgstr "I2P将相应的将自身安装为服务(或卸载服务)。" + #~ msgid "Expl. + Client" #~ msgstr "探测+客户" + #~ msgid "Part. from + to" #~ msgstr "相邻共享节点" + #~ msgid "Depth" #~ msgstr "深度" + #~ msgid "Addresses" #~ msgstr "地址" + #~ msgid "view without" #~ msgstr "查看不含" + #~ msgid "view with" #~ msgstr "查看含" + #~ msgid "stats" #~ msgstr "统计" + #~ msgid "View" #~ msgstr "查看" + #~ msgid "Not Failing" #~ msgstr "标准" + #~ msgid "" #~ "If you want the router to restart itself after shutting down, you can " #~ "choose one of the following. This is useful in some situations - for " @@ -5464,6 +5762,7 @@ msgstr "I2P 隧道概况" #~ "- 例如当修改了客户程序仅在启动时读取的设置比如路由器控制界面的密码,监听的" #~ "接口。平滑重启可能会等待几分钟的时间 (但其他节点一定会感激你的耐心),硬重" #~ "启可以立即完成。 路由关闭后将等待1分钟再重新启动。" + #~ msgid "" #~ "On the windows platform, there is a small application to sit in the " #~ "system tray, allowing you to view the router's status (later on, I2P " @@ -5474,4 +5773,3 @@ msgstr "I2P 隧道概况" #~ "windows 平台允许小程序进驻系统托盘,让你可以查看路由状态,(以后的 I2P 客户" #~ "端程序也会将它们的功能集成到系统托盘里)。如果你使用Windows, 可以在这里开启" #~ "或关闭这个托盘图标。" - diff --git a/apps/susidns/locale/messages_ar.po b/apps/susidns/locale/messages_ar.po index cd265d2d4..6523a43a4 100644 --- a/apps/susidns/locale/messages_ar.po +++ b/apps/susidns/locale/messages_ar.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: I2P susidns\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-13 11:54+0000\n" +"POT-Creation-Date: 2011-03-03 18:29+0000\n" "PO-Revision-Date: 2011-02-25 18:40-0000\n" "Last-Translator: hamada \n" "Language-Team: duck \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -75,7 +76,9 @@ msgstr "اسم مضيف {0} موجود في دفتر العناوين." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266 #, java-format -msgid "Host name {0} is already in addressbook with a different destination. Click \"Replace\" to overwrite." +msgid "" +"Host name {0} is already in addressbook with a different destination. Click " +"\"Replace\" to overwrite." msgstr "اسم المضيف {0} موجود مسبقا في دفتر العناوين. أنقر \"عوض\" يتعويضه." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278 @@ -122,8 +125,11 @@ msgstr "خطأ: لم يتم حفظ دفتر العناوين" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:148 #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151 -msgid "Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit." -msgstr "فشل في الارسال، ربما لاستعمال زر \"رجوع\" او \"أنعش\". قم بالارسال مرة أخرى." +msgid "" +"Invalid form submission, probably because you used the \"back\" or \"reload" +"\" button on your browser. Please resubmit." +msgstr "" +"فشل في الارسال، ربما لاستعمال زر \"رجوع\" او \"أنعش\". قم بالارسال مرة أخرى." #: ../src/java/src/i2p/susi/dns/ConfigBean.java:139 #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130 @@ -153,7 +159,8 @@ msgstr "اعادة تحميل الاعدادات" #. with the correct parameters will kick off a #. config reload and fetch. #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:139 -msgid "Subscriptions saved, updating addressbook from subscription sources now." +msgid "" +"Subscriptions saved, updating addressbook from subscription sources now." msgstr "تم حفظ الاشتراكات وتحديث دفتر العناوين من مصادر اشتراك الآن." #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143 @@ -281,23 +288,40 @@ msgid "Hints" msgstr "إشارة" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134 -msgid "File and directory paths here are relative to the addressbook's working directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P\\addressbook\\ (Windows)." -msgstr "عنوان الملف والمجلد نسبي الى مجلد دفتر العناوين، الذي عادة هو ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P\\addressbook\\ (Windows)." +msgid "" +"File and directory paths here are relative to the addressbook's working " +"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P" +"\\addressbook\\ (Windows)." +msgstr "" +"عنوان الملف والمجلد نسبي الى مجلد دفتر العناوين، الذي عادة هو ~/.i2p/" +"addressbook/ (Linux) or %APPDATA%\\I2P\\addressbook\\ (Windows)." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:136 -msgid "If you want to manually add lines to an addressbook, add them to the private or master addressbooks." -msgstr "اذا اردت اضافة العناوين الى دفتر العناوين، اضفها مباشرة الى دفتر العناوين الرئيسي." +msgid "" +"If you want to manually add lines to an addressbook, add them to the private " +"or master addressbooks." +msgstr "" +"اذا اردت اضافة العناوين الى دفتر العناوين، اضفها مباشرة الى دفتر العناوين " +"الرئيسي." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:138 -msgid "The router addressbook and the published addressbook are updated by the addressbook application." -msgstr "يتم تحديث دفتر العناوين الخاص و دفتر العناوين العمومي من طرف تطبيق دفتر العناوين." +msgid "" +"The router addressbook and the published addressbook are updated by the " +"addressbook application." +msgstr "" +"يتم تحديث دفتر العناوين الخاص و دفتر العناوين العمومي من طرف تطبيق دفتر " +"العناوين." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:140 -msgid "When you publish your addressbook, ALL destinations from the master and router addressbooks appear there." +msgid "" +"When you publish your addressbook, ALL destinations from the master and " +"router addressbooks appear there." msgstr "عندما تنشر دفتر العناوين، ستظهر جميع المواقع هنا." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142 -msgid "Use the private addressbook for private destinations, these are not published." +msgid "" +"Use the private addressbook for private destinations, these are not " +"published." msgstr "استعمل دفتر العناوين الخاص من أجل العناوين الخاصة التي لن يتم نشرها." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144 @@ -313,7 +337,9 @@ msgid "Update interval in hours" msgstr "تحديث الفاصل الزمني في ساعات" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150 -msgid "Your public hosts.txt file (choose a path within your webserver document root)" +msgid "" +"Your public hosts.txt file (choose a path within your webserver document " +"root)" msgstr "hosts.txt ملف" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152 @@ -341,11 +367,15 @@ msgid "Whether to update the published addressbook" msgstr "تعديل دفتر العناوين المنشور" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164 -msgid "File containing the etags header from the fetched subscription URLs (no need to change)" +msgid "" +"File containing the etags header from the fetched subscription URLs (no need " +"to change)" msgstr "ملف يحتوي على قائمة عناوين الاشتراك" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:166 -msgid "File containing the modification timestamp for each fetched subscription URL (no need to change)" +msgid "" +"File containing the modification timestamp for each fetched subscription URL " +"(no need to change)" msgstr "ملف يحتوي على تاريخ التحديث" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168 @@ -365,55 +395,86 @@ msgid "The addressbook application is part of your i2p installation." msgstr "تطبيق دفتر العناوين هو ضمن مجموعة برامج i2p" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113 -msgid "It regularly updates your hosts.txt file from distributed sources or \"subscriptions\"." +msgid "" +"It regularly updates your hosts.txt file from distributed sources or " +"\"subscriptions\"." msgstr "يقوم بتحديث ملف hosts.txt من عدة مصادر" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115 -msgid "In the default configuration, the addressbook is only subscribed to www.i2p2.i2p." +msgid "" +"In the default configuration, the addressbook is only subscribed to www.i2p2." +"i2p." msgstr "في الاعدادت العادية، دفتر العناوين مرتبط ب www.i2p2.i2p." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117 -msgid "Subscribing to additional sites is easy, just add them to your subscriptions file." -msgstr "من السهل الانخراط في باقي المواقع فقط أضفه الى الانخراط" +msgid "" +"Subscribing to additional sites is easy, just add them to your subscriptions file." +msgstr "" +"من السهل الانخراط في باقي المواقع فقط أضفه الى الانخراط" #: ../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 "للمزيد من المعلومات حول التسميةلمحة عامة www.i2p2.i2p." +msgid "" +"For more information on naming in i2p, see the overview on www.i2p2.i2p." +msgstr "" +"للمزيد من المعلومات حول التسميةلمحة عامة www.i2p2.i2p." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121 msgid "How does the addressbook work?" msgstr "كيف يشتغل دفتر العناوين؟" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123 -msgid "The addressbook application regularly polls your subscriptions and merges their content into your \"router\" addressbook, stored in the hosts.txt file." -msgstr "دفتر العناوين الخاص بك يقوم بستمرار من الحصول على الاشتراكات و حفظ العناولن الجديدة في ملف hosts.txt." +msgid "" +"The addressbook application regularly polls your subscriptions and merges " +"their content into your \"router\" addressbook, stored in the hosts.txt file." +msgstr "" +"دفتر العناوين الخاص بك يقوم بستمرار من الحصول على الاشتراكات و حفظ العناولن " +"الجديدة في ملف hosts.txt." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125 -msgid "Then it merges your \"master\" addressbook (userhosts.txt) into the router addressbook as well." +msgid "" +"Then it merges your \"master\" addressbook (userhosts.txt) into the router " +"addressbook as well." msgstr "ثم اضافة العناوين الى دفتر العناوين أيضا." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:127 -msgid "If configured, the router addressbook is now written to the \"published\" addressbook, which will be publicly available if you are running an eepsite." +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 "اذا قمت بالاختيار لن تتم نشر دفتر العناوين " #: ../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." +msgid "" +"The router also uses a private addressbook (privatehosts.txt, not shown in " +"the picture), which is not merged or published." msgstr "الموجه يستعمل ايضا دفتر عناوين خاص الذ لا يتم نشره" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:131 -msgid "Hosts in the private addressbook can be accessed by you but their addresses are never distributed to others." -msgstr "يمكنك الإطلاع على المواقع في دفتر العناوينك الخاص توزيع أبدا لكم ولكن عناوينهم للآخرين." +msgid "" +"Hosts in the private addressbook can be accessed by you but their addresses " +"are never distributed to others." +msgstr "" +"يمكنك الإطلاع على المواقع في دفتر العناوينك الخاص توزيع أبدا لكم ولكن " +"عناوينهم للآخرين." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:133 -msgid "The private addressbook can also be used for aliases of hosts in your other addressbooks." -msgstr "ويمكن أيضا أن تستعمل دفتر العناوين الخاص لأجل الأسماء المستعارة لأخرى الخاصة بك." +msgid "" +"The private addressbook can also be used for aliases of hosts in your other " +"addressbooks." +msgstr "" +"ويمكن أيضا أن تستعمل دفتر العناوين الخاص لأجل الأسماء المستعارة لأخرى " +"الخاصة بك." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132 msgid "The subscription file contains a list of i2p URLs." msgstr "ملف الاشتراك يحتوي على قائمة مواقع i2p." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134 -msgid "The addressbook application regularly checks this list for new eepsites." +msgid "" +"The addressbook application regularly checks this list for new eepsites." msgstr "دفتر العناوين تقوم يستمرار بالتحقق من قائمة eepsites." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136 @@ -421,14 +482,20 @@ msgid "Those URLs refer to published hosts.txt files." msgstr "هذه العناوين لملف hosts.txt." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138 -msgid "The default subscription is the hosts.txt from www.i2p2.i2p, which is updated infrequently." -msgstr "الاشتراك العادي هو لملف hosts.txt from www.i2p2.i2p الذي يتم ترقيته باستمرار." +msgid "" +"The default subscription is the hosts.txt from www.i2p2.i2p, which is " +"updated infrequently." +msgstr "" +"الاشتراك العادي هو لملف hosts.txt from www.i2p2.i2p الذي يتم ترقيته باستمرار." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:140 -msgid "So it is a good idea to add additional subscriptions to sites that have the latest addresses." -msgstr "انها فكرة جيدة لإضافة اشتراكات إضافية إلى المواقع التي تحتوي على أحدث العناوين." +msgid "" +"So it is a good idea to add additional subscriptions to sites that have the " +"latest addresses." +msgstr "" +"انها فكرة جيدة لإضافة اشتراكات إضافية إلى المواقع التي تحتوي على أحدث " +"العناوين." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142 msgid "See the FAQ for a list of subscription URLs." msgstr "أنظر الأسئلة الشائعة للخصول على قائمة بالعناوين" - diff --git a/apps/susidns/locale/messages_de.po b/apps/susidns/locale/messages_de.po index 3e983ffec..d8f2b2e57 100644 --- a/apps/susidns/locale/messages_de.po +++ b/apps/susidns/locale/messages_de.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: I2P susidns\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-11-08 18:21+0000\n" +"POT-Creation-Date: 2011-03-03 18:29+0000\n" "PO-Revision-Date: 2010-12-19 04:36+0100\n" "Last-Translator: mixxy \n" "Language-Team: foo \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -75,8 +76,12 @@ msgstr "Hostname {0} ist bereits im Adressbuch, nicht geändert." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266 #, java-format -msgid "Host name {0} is already in addressbook with a different destination. Click \"Replace\" to overwrite." -msgstr "Hostname {0} ist mit einem anderen Ziel bereits im Adressbuch. Klicken Sie auf \"Ersetzen\", um den alten Eintrag zu ersetzen!" +msgid "" +"Host name {0} is already in addressbook with a different destination. Click " +"\"Replace\" to overwrite." +msgstr "" +"Hostname {0} ist mit einem anderen Ziel bereits im Adressbuch. Klicken Sie " +"auf \"Ersetzen\", um den alten Eintrag zu ersetzen!" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278 #, java-format @@ -122,8 +127,12 @@ msgstr "FEHLER: Konnte Adressbuchdatei nicht schreiben." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:148 #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151 -msgid "Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit." -msgstr "Ungültige Datenübertragung, vielleicht haben Sie die \"Zurück\"- oder \"Neu laden\"-Schalter in Ihrem Browser genutzt. Bitte neu senden!" +msgid "" +"Invalid form submission, probably because you used the \"back\" or \"reload" +"\" button on your browser. Please resubmit." +msgstr "" +"Ungültige Datenübertragung, vielleicht haben Sie die \"Zurück\"- oder \"Neu " +"laden\"-Schalter in Ihrem Browser genutzt. Bitte neu senden!" #: ../src/java/src/i2p/susi/dns/ConfigBean.java:139 #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130 @@ -153,8 +162,11 @@ msgstr "Einstellungen neu geladen" #. with the correct parameters will kick off a #. config reload and fetch. #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:139 -msgid "Subscriptions saved, updating addressbook from subscription sources now." -msgstr "Abonnement gespeichert, aktualisiere jetzt das Adressbuch von untenstehenden Aboquellen." +msgid "" +"Subscriptions saved, updating addressbook from subscription sources now." +msgstr "" +"Abonnement gespeichert, aktualisiere jetzt das Adressbuch von untenstehenden " +"Aboquellen." #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143 msgid "Subscriptions saved." @@ -281,24 +293,46 @@ msgid "Hints" msgstr "Hinweise" #: ../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 "Dateien und Verzeichnispfade sind relativ zum Arbeitsverzeichnis des Adressbuchs - normalerweise ~/.i2p/addressbook/ (Linux) oder %APPDATA%\\I2P\\addressbook\\ (Windows)." +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 "" +"Dateien und Verzeichnispfade sind relativ zum Arbeitsverzeichnis des " +"Adressbuchs - normalerweise ~/.i2p/addressbook/ (Linux) oder %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 "Falls Sie manuell Einträge zum Adressbuch hinzufügen möchten, fügen Sie diese zum privaten oder zum Master-Adressbuch hinzu!" +msgid "" +"If you want to manually add lines to an addressbook, add them to the private " +"or master addressbooks." +msgstr "" +"Falls Sie manuell Einträge zum Adressbuch hinzufügen möchten, fügen Sie " +"diese zum privaten oder zum Master-Adressbuch hinzu!" #: ../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 "Das Router-Adressbuch und das veröffentlichte Adressbuch werden von der Adressbuch-Anwendung aktualisiert." +msgid "" +"The router addressbook and the published addressbook are updated by the " +"addressbook application." +msgstr "" +"Das Router-Adressbuch und das veröffentlichte Adressbuch werden von der " +"Adressbuch-Anwendung aktualisiert." #: ../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 "Falls Sie das Adressbuch veröffentlichen, erscheinen dort ALLE Ziele aus dem Master- und dem Router-Adressbuch." +msgid "" +"When you publish your addressbook, ALL destinations from the master and " +"router addressbooks appear there." +msgstr "" +"Falls Sie das Adressbuch veröffentlichen, erscheinen dort ALLE Ziele aus dem " +"Master- und dem Router-Adressbuch." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142 -msgid "Use the private addressbook for private destinations, these are not published." -msgstr "Benutzen Sie das private Adressbuch für private Ziele. Diese werden nicht veröffentlicht." +msgid "" +"Use the private addressbook for private destinations, these are not " +"published." +msgstr "" +"Benutzen Sie das private Adressbuch für private Ziele. Diese werden nicht " +"veröffentlicht." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144 msgid "Options" @@ -306,15 +340,20 @@ msgstr "Optionen" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146 msgid "File containing the list of subscriptions URLs (no need to change)" -msgstr "Datei mit der Liste von Abonnement-URLs (braucht nicht geändert zu werden)" +msgstr "" +"Datei mit der Liste von Abonnement-URLs (braucht nicht geändert zu werden)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148 msgid "Update interval in hours" msgstr "Aktualisierungsintervall in Stunden" #: ../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 "Ihre öffentliche hosts.txt-Datei (Wählen Sie einen Pfad in Ihrem Webserver Wurzelverzeichnis!)" +msgid "" +"Your public hosts.txt file (choose a path within your webserver document " +"root)" +msgstr "" +"Ihre öffentliche hosts.txt-Datei (Wählen Sie einen Pfad in Ihrem Webserver " +"Wurzelverzeichnis!)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152 msgid "Your hosts.txt (don't change)" @@ -341,16 +380,26 @@ msgid "Whether to update the published addressbook" msgstr "Soll Ihr veröffentlichtes Adressbuch aktualisiert werden?" #: ../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 "Datei, die die etags-Kopfzeilen der bereits aktualisierten Abonnement-URLs enthält (braucht nicht geändert zu werden)" +msgid "" +"File containing the etags header from the fetched subscription URLs (no need " +"to change)" +msgstr "" +"Datei, die die etags-Kopfzeilen der bereits aktualisierten Abonnement-URLs " +"enthält (braucht nicht geändert zu werden)" #: ../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 "Datei, welche die Zeitstempel der letzten Modifikation für jede bereits aktualisierte Abonnement-URL enthält (braucht nicht geändert zu werden)" +msgid "" +"File containing the modification timestamp for each fetched subscription URL " +"(no need to change)" +msgstr "" +"Datei, welche die Zeitstempel der letzten Modifikation für jede bereits " +"aktualisierte Abonnement-URL enthält (braucht nicht geändert zu werden)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168 msgid "File to log activity to (change to /dev/null if you like)" -msgstr "Berichte zu Aktivitäten werden in dieser Datei gespeichert. (Ändern Sie es zu /dev/null, wenn Sie möchten!)" +msgstr "" +"Berichte zu Aktivitäten werden in dieser Datei gespeichert. (Ändern Sie es " +"zu /dev/null, wenn Sie möchten!)" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:91 msgid "Introduction" @@ -365,70 +414,122 @@ msgid "The addressbook application is part of your i2p installation." msgstr "Das Adressbuch ist ein Teil Ihrer I2P-Installation." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113 -msgid "It regularly updates your hosts.txt file from distributed sources or \"subscriptions\"." -msgstr "Es aktualisiert regelmäßig Ihre hosts.txt-Datei aus verteilten Quellen oder den \"Abonnementquellen\"." +msgid "" +"It regularly updates your hosts.txt file from distributed sources or " +"\"subscriptions\"." +msgstr "" +"Es aktualisiert regelmäßig Ihre hosts.txt-Datei aus verteilten Quellen oder " +"den \"Abonnementquellen\"." #: ../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 der Standardeinstellung bezieht das Adressbuch sein Abonnement nur von www.i2p2.i2p." +msgid "" +"In the default configuration, the addressbook is only subscribed to www.i2p2." +"i2p." +msgstr "" +"In der Standardeinstellung bezieht das Adressbuch sein Abonnement nur von " +"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 "Zusätzliche Abonnementquellen hinzuzufügen ist einfach: Geben Sie dazu deren URL in Ihrer Abonnement-Datei an." +msgid "" +"Subscribing to additional sites is easy, just add them to your subscriptions file." +msgstr "" +"Zusätzliche Abonnementquellen hinzuzufügen ist einfach: Geben Sie dazu deren " +"URL in Ihrer Abonnement-Datei an." #: ../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 "Für mehr Informationen über das Namenssystem in I2P konsultieren Sie bitte die Übersichtsseite auf www.i2p2.i2p." +msgid "" +"For more information on naming in i2p, see the overview on www.i2p2.i2p." +msgstr "" +"Für mehr Informationen über das Namenssystem in I2P konsultieren Sie bitte " +"die Übersichtsseite auf www." +"i2p2.i2p." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121 msgid "How does the addressbook work?" msgstr "Wie funktioniert das Adressbuch?" #: ../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 "Die Adressbuch-Anwendung bezieht regelmäßig ihre Abonnements und führt deren Inhalt mit dem Ihres \"Router\"-Adressbuchs zusammen, welches in der hosts.txt-Datei gespeichert ist." +msgid "" +"The addressbook application regularly polls your subscriptions and merges " +"their content into your \"router\" addressbook, stored in the hosts.txt file." +msgstr "" +"Die Adressbuch-Anwendung bezieht regelmäßig ihre Abonnements und führt deren " +"Inhalt mit dem Ihres \"Router\"-Adressbuchs zusammen, welches in der hosts." +"txt-Datei gespeichert ist." #: ../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 "Dann fügt sie auch Ihr \"Master\"-Adressbuch (userhosts.txt) dem Router-Adressbuch hinzu." +msgid "" +"Then it merges your \"master\" addressbook (userhosts.txt) into the router " +"addressbook as well." +msgstr "" +"Dann fügt sie auch Ihr \"Master\"-Adressbuch (userhosts.txt) dem Router-" +"Adressbuch hinzu." #: ../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 "Falls eingestellt, wird das Router-Adressbuch jetzt in das \"veröffentlichte\" Adressbuch kopiert. Dieses ist öffentlich erreichbar, solange Sie eine Eepseite betreiben." +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 "" +"Falls eingestellt, wird das Router-Adressbuch jetzt in das \"veröffentlichte" +"\" Adressbuch kopiert. Dieses ist öffentlich erreichbar, solange Sie eine " +"Eepseite betreiben." #: ../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 "Der Router besitzt auch ein privates Adressbuch (privatehosts.txt, nicht im Bild gezeigt), welches nicht mit anderen vereinigt oder veröffentlicht wird." +msgid "" +"The router also uses a private addressbook (privatehosts.txt, not shown in " +"the picture), which is not merged or published." +msgstr "" +"Der Router besitzt auch ein privates Adressbuch (privatehosts.txt, nicht im " +"Bild gezeigt), welches nicht mit anderen vereinigt oder veröffentlicht wird." #: ../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 Ihrem privatem Adressbuch können von Ihnen aufgerufen werden, aber ihre Adressen werden nicht an andere verteilt." +msgid "" +"Hosts in the private addressbook can be accessed by you but their addresses " +"are never distributed to others." +msgstr "" +"Hosts in Ihrem privatem Adressbuch können von Ihnen aufgerufen werden, aber " +"ihre Adressen werden nicht an andere verteilt." #: ../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 "Das private Adressbuch kann auch für Verweise auf Hosts in Ihren anderen Adressbüchern genutzt werden." +msgid "" +"The private addressbook can also be used for aliases of hosts in your other " +"addressbooks." +msgstr "" +"Das private Adressbuch kann auch für Verweise auf Hosts in Ihren anderen " +"Adressbüchern genutzt werden." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132 msgid "The subscription file contains a list of i2p URLs." msgstr "Die Abonnementdatei enthält eine Liste von I2P-URLs." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134 -msgid "The addressbook application regularly checks this list for new eepsites." -msgstr "Die Adressbuchanwendung prüft diese Liste regelmäßig auf neue Eepsites." +msgid "" +"The addressbook application regularly checks this list for new eepsites." +msgstr "" +"Die Adressbuchanwendung prüft diese Liste regelmäßig auf neue Eepsites." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136 msgid "Those URLs refer to published hosts.txt files." msgstr "Diese URLs verweisen auf veröffentlichte hosts.txt-Dateien." #: ../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 "Das Standardabonnement ist die hosts.txt-Datei von www.i2p2.i2p, welche nicht regelmäßig aktualisiert wird." +msgid "" +"The default subscription is the hosts.txt from www.i2p2.i2p, which is " +"updated infrequently." +msgstr "" +"Das Standardabonnement ist die hosts.txt-Datei von www.i2p2.i2p, welche " +"nicht regelmäßig aktualisiert wird." #: ../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 "Somit ist es eine gute Idee, weitere Abonnements von Seiten mit den neuesten Adressen hinzuzufügen." +msgid "" +"So it is a good idea to add additional subscriptions to sites that have the " +"latest addresses." +msgstr "" +"Somit ist es eine gute Idee, weitere Abonnements von Seiten mit den neuesten " +"Adressen hinzuzufügen." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142 msgid "See the FAQ for a list of subscription URLs." msgstr "Schauen Sie in den FAQ nach einer Liste von Abonnement-URLs!" - diff --git a/apps/susidns/locale/messages_en.po b/apps/susidns/locale/messages_en.po index df26745b7..f907ba154 100644 --- a/apps/susidns/locale/messages_en.po +++ b/apps/susidns/locale/messages_en.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: I2P susidns\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-13 11:54+0000\n" +"POT-Creation-Date: 2011-03-03 18:29+0000\n" "PO-Revision-Date: 2010-06-15 14:09+0100\n" "Last-Translator: duck \n" "Language-Team: duck \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/apps/susidns/locale/messages_nl.po b/apps/susidns/locale/messages_nl.po index 524ab5551..7664c92c8 100644 --- a/apps/susidns/locale/messages_nl.po +++ b/apps/susidns/locale/messages_nl.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-20 12:18+0000\n" +"POT-Creation-Date: 2011-03-03 18:29+0000\n" "PO-Revision-Date: 2011-02-20 12:15+0000\n" "Last-Translator: ducki2p \n" "Language-Team: Dutch <>\n" +"Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:200 diff --git a/apps/susidns/locale/messages_ru.po b/apps/susidns/locale/messages_ru.po index 7e689c89a..22752452a 100644 --- a/apps/susidns/locale/messages_ru.po +++ b/apps/susidns/locale/messages_ru.po @@ -8,125 +8,135 @@ msgid "" msgstr "" "Project-Id-Version: I2P susidns\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-05-25 21:15+0000\n" +"POT-Creation-Date: 2011-03-03 18:29+0000\n" "PO-Revision-Date: 2010-05-25 21:43+0000\n" "Last-Translator: 4get \n" "Language-Team: foo \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Russian\n" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:199 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:200 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:193 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:197 msgid "Search" msgstr "Поиск" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:203 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:204 msgid "Search within filtered list" msgstr "Поиск в отфильтрованном списке" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:205 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206 msgid "Filtered list" msgstr "Отфильтрованный список" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:209 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:210 msgid "no matches" msgstr "ничего не найдено" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:212 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:213 msgid "Addressbook" msgstr "Адресная книга" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:214 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:215 msgid "contains no entries" msgstr "не содержит записей" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:216 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:217 msgid "contains 1 entry" msgstr "содержит одну запись" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:218 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:219 #, java-format msgid "contains {0} entries" msgstr "содержит {0} записей" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:228 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:229 #, java-format msgid "Showing {0} of {1}" msgstr "Показаны {0} из {1}" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:259 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:368 msgid "Add" msgstr "Добавить" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:259 -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:265 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:366 msgid "Replace" msgstr "Заменить" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:263 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264 #, java-format msgid "Host name {0} is already in addressbook, unchanged." msgstr "Для узла {0} уже существует запись с совпадающим адресом назначения." -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:265 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266 #, java-format -msgid "Host name {0} is already in addressbook with a different destination. Click \"Replace\" to overwrite." -msgstr "Для узла {0} уже существует запись с другим адресом назначения. Нажмите \"Заменить\" для перезаписи." +msgid "" +"Host name {0} is already in addressbook with a different destination. Click " +"\"Replace\" to overwrite." +msgstr "" +"Для узла {0} уже существует запись с другим адресом назначения. Нажмите " +"\"Заменить\" для перезаписи." -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:277 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278 #, java-format msgid "Destination added for {0}." msgstr "Добавлен адрес для {0}." -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:279 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:280 #, java-format msgid "Destination changed for {0}." msgstr "Заменён адрес для {0}." -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:284 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:285 msgid "Invalid Base 64 destination." msgstr "Некорректный Base-64 адрес." -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:288 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:289 msgid "Please enter a host name and destination" msgstr "Пожалуйста, введите имя узла и адрес назначения" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:292 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:293 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314 msgid "Delete Selected" msgstr "Удалить выделенное" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:302 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:303 #, java-format msgid "Destination {0} deleted." msgstr "Адрес {0} удален." -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:304 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305 #, java-format msgid "{0} destinations deleted." msgstr "{0} адресов удалено." -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:310 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:311 msgid "Addressbook saved." msgstr "Адресная книга сохранена." -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:313 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:314 msgid "ERROR: Could not write addressbook file." msgstr "ОШИБКА: Не удалось сохранить файл адресной книги." -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:318 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:148 -#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:150 -msgid "Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit." -msgstr "Форма не принята, скорее всего это произошло из-за того, что Вы нажимали кнопку \"Назад\" или \"Обновить\" в браузере. Пожалуйста, заполните форму заново." +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151 +msgid "" +"Invalid form submission, probably because you used the \"back\" or \"reload" +"\" button on your browser. Please resubmit." +msgstr "" +"Форма не принята, скорее всего это произошло из-за того, что Вы нажимали " +"кнопку \"Назад\" или \"Обновить\" в браузере. Пожалуйста, заполните форму " +"заново." #: ../src/java/src/i2p/susi/dns/ConfigBean.java:139 -#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:129 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:130 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:130 msgid "Save" @@ -137,7 +147,7 @@ msgid "Configuration saved." msgstr "Настройки сохранены." #: ../src/java/src/i2p/susi/dns/ConfigBean.java:142 -#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:144 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:128 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:128 msgid "Reload" @@ -147,15 +157,22 @@ msgstr "Перезагрузить" msgid "Configuration reloaded." msgstr "Настройки перезагружены." -#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:138 -msgid "Subscriptions saved, updating addressbook from subscription sources now." -msgstr "Подписки сохранены, запущена загрузка подписок и обновление адресной книги." +#. Yes this is a hack. +#. No it doesn't work on a text-mode browser. +#. Fetching from the addressbook servlet +#. with the correct parameters will kick off a +#. config reload and fetch. +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:139 +msgid "" +"Subscriptions saved, updating addressbook from subscription sources now." +msgstr "" +"Подписки сохранены, запущена загрузка подписок и обновление адресной книги." -#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:142 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143 msgid "Subscriptions saved." msgstr "Подписки сохранены." -#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:146 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147 msgid "Subscriptions reloaded." msgstr "Подписки перезагружены." @@ -276,24 +293,46 @@ msgid "Hints" msgstr "Примечания" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134 -msgid "File and directory paths here are relative to the addressbook's working directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P\\addressbook\\ (Windows)." -msgstr "Пути указываются относительно домашней директории адресной книги, которая обычно расположена в ~/.i2p/addressbook/ (под Linux) или в %APPDATA%\\I2P\\addressbook\\ (под Windows)." +msgid "" +"File and directory paths here are relative to the addressbook's working " +"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P" +"\\addressbook\\ (Windows)." +msgstr "" +"Пути указываются относительно домашней директории адресной книги, которая " +"обычно расположена в ~/.i2p/addressbook/ (под Linux) или в %APPDATA%\\I2P" +"\\addressbook\\ (под Windows)." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:136 -msgid "If you want to manually add lines to an addressbook, add them to the private or master addressbooks." -msgstr "Если Вы хотите вручную добавлять записи в адресную книгу, то добавляйте их в «приватную» или «основную»." +msgid "" +"If you want to manually add lines to an addressbook, add them to the private " +"or master addressbooks." +msgstr "" +"Если Вы хотите вручную добавлять записи в адресную книгу, то добавляйте их в " +"«приватную» или «основную»." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:138 -msgid "The router addressbook and the published addressbook are updated by the addressbook application." -msgstr "Адресные книги «маршрутизатор» и «публикуемая» создаются/перезаписываются автоматически." +msgid "" +"The router addressbook and the published addressbook are updated by the " +"addressbook application." +msgstr "" +"Адресные книги «маршрутизатор» и «публикуемая» создаются/перезаписываются " +"автоматически." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:140 -msgid "When you publish your addressbook, ALL destinations from the master and router addressbooks appear there." -msgstr "Когда Вы публикуете свою адресную книгу, то публикуются ВСЕ записи из адресных книг «основная» и «маршрутизатор»." +msgid "" +"When you publish your addressbook, ALL destinations from the master and " +"router addressbooks appear there." +msgstr "" +"Когда Вы публикуете свою адресную книгу, то публикуются ВСЕ записи из " +"адресных книг «основная» и «маршрутизатор»." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142 -msgid "Use the private addressbook for private destinations, these are not published." -msgstr "Пользуйтесь «приватной» адресной книгой для адресов, которые Вы не хотите публиковать." +msgid "" +"Use the private addressbook for private destinations, these are not " +"published." +msgstr "" +"Пользуйтесь «приватной» адресной книгой для адресов, которые Вы не хотите " +"публиковать." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144 msgid "Options" @@ -301,15 +340,20 @@ msgstr "Параметры" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146 msgid "File containing the list of subscriptions URLs (no need to change)" -msgstr "Файл для хранения списка URL подписок (перенастраивать нет необходимости)" +msgstr "" +"Файл для хранения списка URL подписок (перенастраивать нет необходимости)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148 msgid "Update interval in hours" msgstr "Интервал обновления (часы)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150 -msgid "Your public hosts.txt file (choose a path within your webserver document root)" -msgstr "hosts.txt для публикации (по умолчанию сохраняется в корневой директории встроенного в I2P маршутизатор вебсервера)" +msgid "" +"Your public hosts.txt file (choose a path within your webserver document " +"root)" +msgstr "" +"hosts.txt для публикации (по умолчанию сохраняется в корневой директории " +"встроенного в I2P маршутизатор вебсервера)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152 msgid "Your hosts.txt (don't change)" @@ -336,12 +380,20 @@ msgid "Whether to update the published addressbook" msgstr "Обновлять ли публикуемую адресную книгу (true/false)" #: ../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 "Файл для хранения etags-заголовков от загруженных адресов подписок (перенастраивать нет необходимости)" +msgid "" +"File containing the etags header from the fetched subscription URLs (no need " +"to change)" +msgstr "" +"Файл для хранения etags-заголовков от загруженных адресов подписок " +"(перенастраивать нет необходимости)" #: ../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 "Файл для хранения даты/времени модификации каждого загруженного адреса подписки (перенастраивать нет необходимости)" +msgid "" +"File containing the modification timestamp for each fetched subscription URL " +"(no need to change)" +msgstr "" +"Файл для хранения даты/времени модификации каждого загруженного адреса " +"подписки (перенастраивать нет необходимости)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168 msgid "File to log activity to (change to /dev/null if you like)" @@ -360,68 +412,120 @@ msgid "The addressbook application is part of your i2p installation." msgstr "Адресная книга — это приложение в составе Вашего I2P маршрутизатора." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113 -msgid "It regularly updates your hosts.txt file from distributed sources or \"subscriptions\"." -msgstr "Его задача регулярно пополнять Ваш hosts.txt адресами из настраиваемых источников («подписок»)." +msgid "" +"It regularly updates your hosts.txt file from distributed sources or " +"\"subscriptions\"." +msgstr "" +"Его задача регулярно пополнять Ваш hosts.txt адресами из настраиваемых " +"источников («подписок»)." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115 -msgid "In the default configuration, the addressbook is only subscribed to www.i2p2.i2p." -msgstr "По умолчанию в адресной книге настроена лишь одна подписка — на www.i2p2.i2p." +msgid "" +"In the default configuration, the addressbook is only subscribed to www.i2p2." +"i2p." +msgstr "" +"По умолчанию в адресной книге настроена лишь одна подписка — на www.i2p2.i2p." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117 -msgid "Subscribing to additional sites is easy, just add them to your subscriptions file." -msgstr "Добавить другие подписки просто, достаточно вписать их URL в файл подписок." +msgid "" +"Subscribing to additional sites is easy, just add them to your subscriptions file." +msgstr "" +"Добавить другие подписки просто, достаточно вписать их URL в файл подписок." #: ../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 "Подробнее о механизме доменных имен в I2P читайте на странице Naming in I2P." +msgid "" +"For more information on naming in i2p, see the overview on www.i2p2.i2p." +msgstr "" +"Подробнее о механизме доменных имен в I2P читайте на странице Naming in I2P." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121 msgid "How does the addressbook work?" msgstr "Как работает адресная книга?" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123 -msgid "The addressbook application regularly polls your subscriptions and merges their content into your \"router\" addressbook, stored in the hosts.txt file." -msgstr "Адресная книга периодически опрашивает Ваши подписки и добавляет их содержимое в Вашу «маршрутизаторную» адресную книгу, которая хранится в файле hosts.txt." +msgid "" +"The addressbook application regularly polls your subscriptions and merges " +"their content into your \"router\" addressbook, stored in the hosts.txt file." +msgstr "" +"Адресная книга периодически опрашивает Ваши подписки и добавляет их " +"содержимое в Вашу «маршрутизаторную» адресную книгу, которая хранится в " +"файле hosts.txt." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125 -msgid "Then it merges your \"master\" addressbook (userhosts.txt) into the router addressbook as well." -msgstr "После этого туда добавляется содержимое Вашей «основной» адресной книги (userhosts.txt)." +msgid "" +"Then it merges your \"master\" addressbook (userhosts.txt) into the router " +"addressbook as well." +msgstr "" +"После этого туда добавляется содержимое Вашей «основной» адресной книги " +"(userhosts.txt)." #: ../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 "Если разрешена публикация, то «маршрутизаторная» адресная книга копируется в «публикуемую» адресную книгу. «Публикуемая» адресная книга доступна публично, если у Вас запущен Ваш I2P-сайт." +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 "" +"Если разрешена публикация, то «маршрутизаторная» адресная книга копируется в " +"«публикуемую» адресную книгу. «Публикуемая» адресная книга доступна " +"публично, если у Вас запущен Ваш I2P-сайт." #: ../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 "Маршрутизатор также использует приватную адресную книгу (privatehosts.txt, на иллюстрации не показано), которая никуда не копируется и не публикуется." +msgid "" +"The router also uses a private addressbook (privatehosts.txt, not shown in " +"the picture), which is not merged or published." +msgstr "" +"Маршрутизатор также использует приватную адресную книгу (privatehosts.txt, " +"на иллюстрации не показано), которая никуда не копируется и не публикуется." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:131 -msgid "Hosts in the private addressbook can be accessed by you but their addresses are never distributed to others." -msgstr "Таким образом Вы можете пользоваться адресами из этой адресной книги, не раскрывая другим её содержимое." +msgid "" +"Hosts in the private addressbook can be accessed by you but their addresses " +"are never distributed to others." +msgstr "" +"Таким образом Вы можете пользоваться адресами из этой адресной книги, не " +"раскрывая другим её содержимое." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:133 -msgid "The private addressbook can also be used for aliases of hosts in your other addressbooks." -msgstr "Приватную адресную книгу также удобно иcпользовать для хранения альтернативных/коротких адресов." +msgid "" +"The private addressbook can also be used for aliases of hosts in your other " +"addressbooks." +msgstr "" +"Приватную адресную книгу также удобно иcпользовать для хранения " +"альтернативных/коротких адресов." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132 msgid "The subscription file contains a list of i2p URLs." msgstr "Файл подписок содержит список i2p URL." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134 -msgid "The addressbook application regularly checks this list for new eepsites." -msgstr "Адресная книга периодически проверяет этот список на наличие новых адресов I2P-сайтов." +msgid "" +"The addressbook application regularly checks this list for new eepsites." +msgstr "" +"Адресная книга периодически проверяет этот список на наличие новых адресов " +"I2P-сайтов." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136 msgid "Those URLs refer to published hosts.txt files." msgstr "Каждый URL указывает на опубликованный hosts.txt файл." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138 -msgid "The default subscription is the hosts.txt from www.i2p2.i2p, which is updated infrequently." -msgstr "По умолчанию в списке задана только ссылка на hosts.txt с www.i2p2.i2p, который обновляется очень редко." +msgid "" +"The default subscription is the hosts.txt from www.i2p2.i2p, which is " +"updated infrequently." +msgstr "" +"По умолчанию в списке задана только ссылка на hosts.txt с www.i2p2.i2p, " +"который обновляется очень редко." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:140 -msgid "So it is a good idea to add additional subscriptions to sites that have the latest addresses." -msgstr "Поэтому не помешает дополнительно подписаться на hosts.txt с более часто обновляемых сайтов." +msgid "" +"So it is a good idea to add additional subscriptions to sites that have the " +"latest addresses." +msgstr "" +"Поэтому не помешает дополнительно подписаться на hosts.txt с более часто " +"обновляемых сайтов." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142 msgid "See the FAQ for a list of subscription URLs." @@ -429,4 +533,3 @@ msgstr "В соответствующем разделе FAQ можно найт #~ msgid "Delete" #~ msgstr "Удалить" - diff --git a/apps/susidns/locale/messages_zh.po b/apps/susidns/locale/messages_zh.po index 02944af36..52f1c3727 100644 --- a/apps/susidns/locale/messages_zh.po +++ b/apps/susidns/locale/messages_zh.po @@ -3,503 +3,504 @@ # 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: 2011-02-09 15:10+0000\n" -"PO-Revision-Date: 2010-05-29 12:51+0800\n" -"Last-Translator: walking \n" -"Language-Team: foo \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Chinese\n" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:200 -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:193 -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:197 -msgid "Search" -msgstr "搜索" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:204 -msgid "Search within filtered list" -msgstr "在过滤结果中搜索" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206 -msgid "Filtered list" -msgstr "过滤结果列表" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:210 -msgid "no matches" -msgstr "无匹配项目" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:213 -msgid "Addressbook" -msgstr "地址簿" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:215 -msgid "contains no entries" -msgstr "包含 0 个项目" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:217 -msgid "contains 1 entry" -msgstr "包含 1 个项目" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:219 -#, java-format -msgid "contains {0} entries" -msgstr "包含 {0} 个项目" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:229 -#, java-format -msgid "Showing {0} of {1}" -msgstr "显示 {0} 个项目共 {1}" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260 -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:368 -msgid "Add" -msgstr "添加" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260 -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:265 -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:366 -msgid "Replace" -msgstr "替换" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264 -#, java-format -msgid "Host name {0} is already in addressbook, unchanged." -msgstr "主机名称{0}已存在于地址簿中,本次操作未更新。" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266 -#, java-format -msgid "" -"Host name {0} is already in addressbook with a different destination. Click " -"\"Replace\" to overwrite." -msgstr "域名{0}已以不同目标密钥的存在于地址簿中,点击“替换”进行覆盖" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278 -#, java-format -msgid "Destination added for {0}." -msgstr "目标密钥已添加为{0}。" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:280 -#, java-format -msgid "Destination changed for {0}." -msgstr "目标已更新为{0}。" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:285 -msgid "Invalid Base 64 destination." -msgstr "无效的Base64目标密钥" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:289 -msgid "Please enter a host name and destination" -msgstr "请输入主机名称与目标" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:293 -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314 -msgid "Delete Selected" -msgstr "删除选中项" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:303 -#, java-format -msgid "Destination {0} deleted." -msgstr "目标 {0} 已删除" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305 -#, java-format -msgid "{0} destinations deleted." -msgstr "{0} 个目标已删除" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:311 -msgid "Addressbook saved." -msgstr "地址簿已保存" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:314 -msgid "ERROR: Could not write addressbook file." -msgstr "错误:无法写入地址簿文件" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319 -#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148 -#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151 -msgid "" -"Invalid form submission, probably because you used the \"back\" or \"reload" -"\" button on your browser. Please resubmit." -msgstr "" -"提交数据无效,可能的原因是您使用了浏览器中的“前进”或“后退”按钮造成会话过期," -"请重新提交。" - -#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139 -#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130 -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:130 -#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:130 -msgid "Save" -msgstr "保存" - -#: ../src/java/src/i2p/susi/dns/ConfigBean.java:141 -msgid "Configuration saved." -msgstr "配置已保存" - -#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142 -#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145 -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:128 -#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:128 -msgid "Reload" -msgstr "刷新" - -#: ../src/java/src/i2p/susi/dns/ConfigBean.java:144 -msgid "Configuration reloaded." -msgstr "配置已重新载入" - -#. Yes this is a hack. -#. No it doesn't work on a text-mode browser. -#. Fetching from the addressbook servlet -#. with the correct parameters will kick off a -#. config reload and fetch. -#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:139 -msgid "" -"Subscriptions saved, updating addressbook from subscription sources now." -msgstr "订阅已保存,正在通过订阅地址更新地址簿。" - -#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143 -msgid "Subscriptions saved." -msgstr "订阅已保存。" - -#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147 -msgid "Subscriptions reloaded." -msgstr "订阅设置已重新载入。" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125 -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145 -msgid "addressbook" -msgstr "地址簿" - -#: ../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 "地址簿" - -#: ../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 "私人" - -#: ../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 "主要" - -#: ../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 "路由" - -#: ../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 "发布" - -#: ../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 "订阅" - -#: ../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 "配置" - -#: ../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 "介绍" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:163 -msgid "Filter" -msgstr "过滤器" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:166 -msgid "all" -msgstr "全部" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:177 -msgid "Current filter" -msgstr "当前过滤器" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:182 -msgid "clear filter" -msgstr "清除过滤器" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:224 -msgid "Name" -msgstr "名称" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:226 -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:362 -msgid "Destination" -msgstr "目标" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:257 -msgid "Mark for deletion" -msgstr "标记为删除" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:279 -msgid "address helper link" -msgstr "地址簿助手链接" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:312 -msgid "Cancel" -msgstr "取消" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345 -msgid "This addressbook is empty." -msgstr "此地址簿为空" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:356 -msgid "Add new destination" -msgstr "添加新目标" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:358 -msgid "Hostname" -msgstr "主机名称" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:132 -msgid "Hints" -msgstr "提示" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134 -msgid "" -"File and directory paths here are relative to the addressbook's working " -"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P" -"\\addressbook\\ (Windows)." -msgstr "" -"此处使用的路径是以地址簿工作目录为参照的相对路径,通常为 ~/.i2p/addressbook/ " -"(Linux) 或 %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 "如果您希望想地址簿手动添加地址条目,请将其加入私有地址簿或主地址簿。" - -#: ../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 "路由地址簿与已发布地址簿会由地址簿程序负责更新。" - -#: ../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 "" -"当您发布地址簿时,主地址簿与路由地址簿中的所有地址条目都会显示于已发布地址簿" -"中。" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142 -msgid "" -"Use the private addressbook for private destinations, these are not " -"published." -msgstr "私有地址簿用来记录需要保密的私人目标,其中的条目不会被发布。" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144 -msgid "Options" -msgstr "选项" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146 -msgid "File containing the list of subscriptions URLs (no need to change)" -msgstr "含有订阅URL列表的文件(无需修改)" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148 -msgid "Update interval in hours" -msgstr "更新周期(小时)" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150 -msgid "" -"Your public hosts.txt file (choose a path within your webserver document " -"root)" -msgstr "" -"您发布的公开地址簿 hosts.txt (请指定为您Web服务器目录中的某个路径以便发布。)" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152 -msgid "Your hosts.txt (don't change)" -msgstr "您的 host.txt (无需修改)" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:154 -msgid "Your personal addressbook, these hosts will be published" -msgstr "您的个人地址簿,其中的地址会参与发布。" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:156 -msgid "Your private addressbook, it is never published" -msgstr "您的私有地址簿,其中的地址不会被发布。" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158 -msgid "Port for your eepProxy (no need to change)" -msgstr "您的I2P代理端口(无需修改)" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160 -msgid "Hostname for your eepProxy (no need to change)" -msgstr "您的I2P代理主机名(无需修改)" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162 -msgid "Whether to update the published addressbook" -msgstr "是否更新发布地址簿" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164 -msgid "" -"File containing the etags header from the fetched subscription URLs (no need " -"to change)" -msgstr "此文件含有订阅URL返回的etag头(无需修改)" - -#: ../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 "此文件含有每个地址簿订阅URL上次获取时的修改时间(无需修改)" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168 -msgid "File to log activity to (change to /dev/null if you like)" -msgstr "活动日志文件(关闭可设为/dev/null [Linux])" - -#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:91 -msgid "Introduction" -msgstr "介绍" - -#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:109 -msgid "What is the addressbook?" -msgstr "什么是地址簿" - -#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:111 -msgid "The addressbook application is part of your i2p installation." -msgstr "地址簿程序是I2P安装程序的一部分。" - -#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113 -msgid "" -"It regularly updates your hosts.txt file from distributed sources or " -"\"subscriptions\"." -msgstr "" -"他通过分散的来源或称地址簿“订阅”(概念类似RSS)更新您的地址簿文件 host.txt。" - -#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115 -msgid "" -"In the default configuration, the addressbook is only subscribed to www.i2p2." -"i2p." -msgstr "默认设置中地址簿仅订阅 www.i2p2.i2p 的项目。" - -#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117 -msgid "" -"Subscribing to additional sites is easy, just add them to your subscriptions file." -msgstr "" -"订阅其他网站的地址簿也很简单,只需将它们加入 订" -"阅 文件即可。" - -#: ../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 "" -"关于I2P网络域名系统的更多信息,参见 www.i2p2.i2p 网站上的“概述” ." - -#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121 -msgid "How does the addressbook work?" -msgstr "那么地址簿是如何工作的呢?" - -#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123 -msgid "" -"The addressbook application regularly polls your subscriptions and merges " -"their content into your \"router\" addressbook, stored in the hosts.txt file." -msgstr "" -"地址簿程序定期通过订阅的URL获取新的地址簿条目并将它们合并入您的“路由”地址簿" -"中,保存与 hosts.txt 文件内。" - -#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125 -msgid "" -"Then it merges your \"master\" addressbook (userhosts.txt) into the router " -"addressbook as well." -msgstr "随后他还会将您的“主要”地址簿(userhost.txt)合并入路由器地址簿。" - -#: ../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 "" -"如果启用了相关配置,路由器地址簿会写入您的“发布”地址簿中,如果您有自己的" -"eepsite匿名站点,那么它可以通过您的站点公开发布。" - -#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:129 -msgid "" -"The router also uses a private addressbook (privatehosts.txt, not shown in " -"the picture), which is not merged or published." -msgstr "" -"路由器同时提供了私有地址簿(privatehost.txt,图片中为出现),其中的项目不会被合并" -"或发布。" - -#: ../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 "" -"您可以访问私有地址簿中的网站,但它们的地址绝不会通过您的公开地址簿发布给别" -"人。" - -#: ../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 "私有地址簿还可以被用来设置网站别名。" - -#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132 -msgid "The subscription file contains a list of i2p URLs." -msgstr "订阅文件是一个I2P链接列表。" - -#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134 -msgid "" -"The addressbook application regularly checks this list for new eepsites." -msgstr "地址簿程序定期通过这些链接检查是否有新的I2P匿名网站。" - -#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136 -msgid "Those URLs refer to published hosts.txt files." -msgstr "这些URL指向公开发布的hosts.txt文件。" - -#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138 -msgid "" -"The default subscription is the hosts.txt from www.i2p2.i2p, which is " -"updated infrequently." -msgstr "默认订阅是 www.i2p2.i2p 提供的 hosts.txt,此文件很少更新。" - -#: ../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 "所以订阅一些网站的最新地址簿是个不错的主意。" - -#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142 -msgid "See the FAQ for a list of subscription URLs." -msgstr "" -"其他来源的订阅链接参见I2P站点的 FAQ" - -#~ msgid "Delete" -#~ msgstr "删除" +# +msgid "" +msgstr "" +"Project-Id-Version: I2P susidns\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-03-03 18:29+0000\n" +"PO-Revision-Date: 2010-05-29 12:51+0800\n" +"Last-Translator: walking \n" +"Language-Team: foo \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Chinese\n" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:200 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:193 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:197 +msgid "Search" +msgstr "搜索" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:204 +msgid "Search within filtered list" +msgstr "在过滤结果中搜索" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206 +msgid "Filtered list" +msgstr "过滤结果列表" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:210 +msgid "no matches" +msgstr "无匹配项目" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:213 +msgid "Addressbook" +msgstr "地址簿" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:215 +msgid "contains no entries" +msgstr "包含 0 个项目" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:217 +msgid "contains 1 entry" +msgstr "包含 1 个项目" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:219 +#, java-format +msgid "contains {0} entries" +msgstr "包含 {0} 个项目" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:229 +#, java-format +msgid "Showing {0} of {1}" +msgstr "显示 {0} 个项目共 {1}" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:368 +msgid "Add" +msgstr "添加" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:265 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:366 +msgid "Replace" +msgstr "替换" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264 +#, java-format +msgid "Host name {0} is already in addressbook, unchanged." +msgstr "主机名称{0}已存在于地址簿中,本次操作未更新。" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266 +#, java-format +msgid "" +"Host name {0} is already in addressbook with a different destination. Click " +"\"Replace\" to overwrite." +msgstr "域名{0}已以不同目标密钥的存在于地址簿中,点击“替换”进行覆盖" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278 +#, java-format +msgid "Destination added for {0}." +msgstr "目标密钥已添加为{0}。" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:280 +#, java-format +msgid "Destination changed for {0}." +msgstr "目标已更新为{0}。" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:285 +msgid "Invalid Base 64 destination." +msgstr "无效的Base64目标密钥" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:289 +msgid "Please enter a host name and destination" +msgstr "请输入主机名称与目标" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:293 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314 +msgid "Delete Selected" +msgstr "删除选中项" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:303 +#, java-format +msgid "Destination {0} deleted." +msgstr "目标 {0} 已删除" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305 +#, java-format +msgid "{0} destinations deleted." +msgstr "{0} 个目标已删除" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:311 +msgid "Addressbook saved." +msgstr "地址簿已保存" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:314 +msgid "ERROR: Could not write addressbook file." +msgstr "错误:无法写入地址簿文件" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319 +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151 +msgid "" +"Invalid form submission, probably because you used the \"back\" or \"reload" +"\" button on your browser. Please resubmit." +msgstr "" +"提交数据无效,可能的原因是您使用了浏览器中的“前进”或“后退”按钮造成会话过期," +"请重新提交。" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:130 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:130 +msgid "Save" +msgstr "保存" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:141 +msgid "Configuration saved." +msgstr "配置已保存" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:128 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:128 +msgid "Reload" +msgstr "刷新" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:144 +msgid "Configuration reloaded." +msgstr "配置已重新载入" + +#. Yes this is a hack. +#. No it doesn't work on a text-mode browser. +#. Fetching from the addressbook servlet +#. with the correct parameters will kick off a +#. config reload and fetch. +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:139 +msgid "" +"Subscriptions saved, updating addressbook from subscription sources now." +msgstr "订阅已保存,正在通过订阅地址更新地址簿。" + +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143 +msgid "Subscriptions saved." +msgstr "订阅已保存。" + +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147 +msgid "Subscriptions reloaded." +msgstr "订阅设置已重新载入。" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145 +msgid "addressbook" +msgstr "地址簿" + +#: ../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 "地址簿" + +#: ../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 "私人" + +#: ../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 "主要" + +#: ../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 "路由" + +#: ../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 "发布" + +#: ../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 "订阅" + +#: ../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 "配置" + +#: ../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 "介绍" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:163 +msgid "Filter" +msgstr "过滤器" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:166 +msgid "all" +msgstr "全部" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:177 +msgid "Current filter" +msgstr "当前过滤器" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:182 +msgid "clear filter" +msgstr "清除过滤器" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:224 +msgid "Name" +msgstr "名称" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:226 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:362 +msgid "Destination" +msgstr "目标" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:257 +msgid "Mark for deletion" +msgstr "标记为删除" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:279 +msgid "address helper link" +msgstr "地址簿助手链接" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:312 +msgid "Cancel" +msgstr "取消" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345 +msgid "This addressbook is empty." +msgstr "此地址簿为空" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:356 +msgid "Add new destination" +msgstr "添加新目标" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:358 +msgid "Hostname" +msgstr "主机名称" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:132 +msgid "Hints" +msgstr "提示" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134 +msgid "" +"File and directory paths here are relative to the addressbook's working " +"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P" +"\\addressbook\\ (Windows)." +msgstr "" +"此处使用的路径是以地址簿工作目录为参照的相对路径,通常为 ~/.i2p/addressbook/ " +"(Linux) 或 %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 "如果您希望想地址簿手动添加地址条目,请将其加入私有地址簿或主地址簿。" + +#: ../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 "路由地址簿与已发布地址簿会由地址簿程序负责更新。" + +#: ../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 "" +"当您发布地址簿时,主地址簿与路由地址簿中的所有地址条目都会显示于已发布地址簿" +"中。" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142 +msgid "" +"Use the private addressbook for private destinations, these are not " +"published." +msgstr "私有地址簿用来记录需要保密的私人目标,其中的条目不会被发布。" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144 +msgid "Options" +msgstr "选项" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146 +msgid "File containing the list of subscriptions URLs (no need to change)" +msgstr "含有订阅URL列表的文件(无需修改)" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148 +msgid "Update interval in hours" +msgstr "更新周期(小时)" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150 +msgid "" +"Your public hosts.txt file (choose a path within your webserver document " +"root)" +msgstr "" +"您发布的公开地址簿 hosts.txt (请指定为您Web服务器目录中的某个路径以便发布。)" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152 +msgid "Your hosts.txt (don't change)" +msgstr "您的 host.txt (无需修改)" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:154 +msgid "Your personal addressbook, these hosts will be published" +msgstr "您的个人地址簿,其中的地址会参与发布。" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:156 +msgid "Your private addressbook, it is never published" +msgstr "您的私有地址簿,其中的地址不会被发布。" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158 +msgid "Port for your eepProxy (no need to change)" +msgstr "您的I2P代理端口(无需修改)" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160 +msgid "Hostname for your eepProxy (no need to change)" +msgstr "您的I2P代理主机名(无需修改)" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162 +msgid "Whether to update the published addressbook" +msgstr "是否更新发布地址簿" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164 +msgid "" +"File containing the etags header from the fetched subscription URLs (no need " +"to change)" +msgstr "此文件含有订阅URL返回的etag头(无需修改)" + +#: ../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 "此文件含有每个地址簿订阅URL上次获取时的修改时间(无需修改)" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168 +msgid "File to log activity to (change to /dev/null if you like)" +msgstr "活动日志文件(关闭可设为/dev/null [Linux])" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:91 +msgid "Introduction" +msgstr "介绍" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:109 +msgid "What is the addressbook?" +msgstr "什么是地址簿" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:111 +msgid "The addressbook application is part of your i2p installation." +msgstr "地址簿程序是I2P安装程序的一部分。" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113 +msgid "" +"It regularly updates your hosts.txt file from distributed sources or " +"\"subscriptions\"." +msgstr "" +"他通过分散的来源或称地址簿“订阅”(概念类似RSS)更新您的地址簿文件 host.txt。" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115 +msgid "" +"In the default configuration, the addressbook is only subscribed to www.i2p2." +"i2p." +msgstr "默认设置中地址簿仅订阅 www.i2p2.i2p 的项目。" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117 +msgid "" +"Subscribing to additional sites is easy, just add them to your subscriptions file." +msgstr "" +"订阅其他网站的地址簿也很简单,只需将它们加入 订" +"阅 文件即可。" + +#: ../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 "" +"关于I2P网络域名系统的更多信息,参见 www.i2p2.i2p 网站上的“概述” ." + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121 +msgid "How does the addressbook work?" +msgstr "那么地址簿是如何工作的呢?" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123 +msgid "" +"The addressbook application regularly polls your subscriptions and merges " +"their content into your \"router\" addressbook, stored in the hosts.txt file." +msgstr "" +"地址簿程序定期通过订阅的URL获取新的地址簿条目并将它们合并入您的“路由”地址簿" +"中,保存与 hosts.txt 文件内。" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125 +msgid "" +"Then it merges your \"master\" addressbook (userhosts.txt) into the router " +"addressbook as well." +msgstr "随后他还会将您的“主要”地址簿(userhost.txt)合并入路由器地址簿。" + +#: ../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 "" +"如果启用了相关配置,路由器地址簿会写入您的“发布”地址簿中,如果您有自己的" +"eepsite匿名站点,那么它可以通过您的站点公开发布。" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:129 +msgid "" +"The router also uses a private addressbook (privatehosts.txt, not shown in " +"the picture), which is not merged or published." +msgstr "" +"路由器同时提供了私有地址簿(privatehost.txt,图片中为出现),其中的项目不会被合并" +"或发布。" + +#: ../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 "" +"您可以访问私有地址簿中的网站,但它们的地址绝不会通过您的公开地址簿发布给别" +"人。" + +#: ../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 "私有地址簿还可以被用来设置网站别名。" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132 +msgid "The subscription file contains a list of i2p URLs." +msgstr "订阅文件是一个I2P链接列表。" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134 +msgid "" +"The addressbook application regularly checks this list for new eepsites." +msgstr "地址簿程序定期通过这些链接检查是否有新的I2P匿名网站。" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136 +msgid "Those URLs refer to published hosts.txt files." +msgstr "这些URL指向公开发布的hosts.txt文件。" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138 +msgid "" +"The default subscription is the hosts.txt from www.i2p2.i2p, which is " +"updated infrequently." +msgstr "默认订阅是 www.i2p2.i2p 提供的 hosts.txt,此文件很少更新。" + +#: ../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 "所以订阅一些网站的最新地址簿是个不错的主意。" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142 +msgid "See the FAQ for a list of subscription URLs." +msgstr "" +"其他来源的订阅链接参见I2P站点的 FAQ" + +#~ msgid "Delete" +#~ msgstr "删除" From 0e854623c136eddd5722cf11a86f56af6e66d421 Mon Sep 17 00:00:00 2001 From: hamada Date: Fri, 4 Mar 2011 17:51:03 +0000 Subject: [PATCH 275/463] Last update of Arabic translation --- apps/routerconsole/jsp/help_ar.jsp | 148 +++++++++++------------ apps/routerconsole/locale/messages_ar.po | 37 +++--- 2 files changed, 86 insertions(+), 99 deletions(-) diff --git a/apps/routerconsole/jsp/help_ar.jsp b/apps/routerconsole/jsp/help_ar.jsp index b01c18df8..b1a4c6f92 100644 --- a/apps/routerconsole/jsp/help_ar.jsp +++ b/apps/routerconsole/jsp/help_ar.jsp @@ -21,85 +21,77 @@
    يمكن ايضاI2P منتدى او بالدردشة على IRC.

    -

    Summary Bar Information

    -Many of the stats on the summary bar may be -configured to be -graphed for further analysis. -

    General

      -
    • Ident: -The first four characters (24 bits) of your 44-character (256-bit) Base64 router hash. -The full hash is shown on your router info page. -Never reveal this to anyone, as your router info contains your IP. -
    • Version: -The version of the I2P software you are running. -
    • Now: -The current time (UTC) and the skew, if any. I2P requires your computer's time be accurate. -If the skew is more than a few seconds, please correct the problem by adjusting -your computer's time. -
    • Reachability: -The router's view of whether it can be contacted by other routers. -Further information is on the configuration page. -

    Peers

      -
    • Active: -The first number is the number of peers you've sent or received a message from in the last few minutes. -This may range from 8-10 to several hundred, depending on your total bandwidth, -shared bandwidth, and locally-generated traffic. -The second number is the number of peers seen in the last hour or so. -Do not be concerned if these numbers vary widely. -[Enable graphing]. -
    • Fast: -This is the number of peers you use for building client tunnels. It is generally in the -range 8-30. Your fast peers are shown on the profiles page. -[Enable graphing]. -
    • High Capacity: -This is the number of peers you use for building some of your exploratory tunnels. It is generally in the -range 8-75. The fast peers are included in the high capacity tier. -Your high capacity peers are shown on the profiles page. -[Enable graphing]. -
    • Well Integrated: -This is the number of peers you use for network database inquiries. -These are usually the "floodfill" peers. -Your well integrated peers are shown on the bottom of the profiles page. -
    • Known: -This is the total number of routers you know about. -They are listed on the network database page. -This may range from under 100 to 1000 or more. -This number is not the total size of the network; -it may vary widely depending on your total bandwidth, -shared bandwidth, and locally-generated traffic. -I2P does not require a router to know every other router. -

    Bandwidth in/out

    -Should be self-explanatory. All values are in bytes per second, not bits per second. -Change your bandwidth limits on the configuration page. -Bandwidth is graphed by default.
    +

    شريط المعلومات

    +يمكن للاحصائات أن +تتغير لكي تظهر على شكل +رسم بياني للمزيد من التحاليل +

    عام

      +
    • :هوية +الحروف الأولى (24 bits) من 44-حرف (256-) Base64 hash. +The full hash is shown on your صفحة معلومات الموجه. +هذا لا يكشف عن عنوان IP الخاص بك لأحد. +
    • الاصدار +اصدار I2P المستعمل +
    • الآن +الوقت الحالي (UTC)والانحراف الممكن. يحتاج I2P الى ساعة مضبوطة. اذا كان انحراف الساعة اكثر من بضع ثواني، قم بتصحيح الخلل. +
    • إمكانية الوصول +امكانية الاتصال الخارجي بالموجه +المزيد من التفاصيل في صفحة الاعدادات. +

    النظائر

      +
    • مفعل +هذا هو عدد النظائر التي تم إرسال أو تلقيها رسالة في الدقائق القليلة الماضية. +قد يكون هذا النطاق 8-10 الى عدة مئات، اعتمادا على عرض النطاق الترددي الإجمالي ، +تقاسم عرض النطاق الترددي ، وحركة المرور المولدة محليا. +والرقم الثاني هو عدد من نظرائه ينظر في آخر ساعة أو نحو ذلك. +لا تشعر بالقلق إذا كانت هذه الأرقام تختلف على نطاق واسع. +[تفعيل الرسم البياني]. +
    • سريع +هذا هو عدد النظائر التي تستعملها لانشاء أنفاق جديدة. هي في نطاق 8-30. النظائر السريعة في + صفحة البروفايل. +[تفعيل الرسم البياني]. +
    • قدرة عالية +هذا هو عدد النظائر التي تستعملها لانشاء أنفاق الاكتشاف. هي في نطاق 8-75. النظائر السريعة. النظائر القدرة عالية تظهر هنا. + صفحة البروفايل. +[تفعيل الرسم البياني]. +
    • المندمجة جيدا +هذا هو عدد النظائر المستعملة في الاتصال بقاعدة البيانات. النظائر المندمجة جيدا موجودة في أسفل +صفحة البروفايل. +
    • المعروفة +هذا هو عدد الموجهات المعروفة. +والظاهرة في صفحة قاعدة البيانات +هي مابين 100 الى 1000 او أكثر. +هذا العدد ليس حجم الاجمالي للشبكة، +يمكنه ان بتغيير حسب سرعة الاتصال. -

      Local destinations

      -The local applications connecting through your router. -These may be clients started through I2PTunnel -or external programs connecting through SAM, BOB, or directly to I2CP. -

      Tunnels in/out

      -The actual tunnels are shown on the the tunnels page.
        -
      • Exploratory: -Tunnels built by your router and used for communication with the floodfill peers, -building new tunnels, and testing existing tunnels.
        -
      • Client: -Tunnels built by your router for each client's use. -
      • Participating: -Tunnels built by other routers through your router. -This may vary widely depending on network demand, your -shared bandwidth, and amount of locally-generated traffic. -The recommended method for limiting participating tunnels is -to change your share percentage on the configuration page. +

      سرعة الاتصال الداخلي/خارجي

      +السرعة ب بايت في الثانية +غير السرعة في صفحة الاعدادات. +السرعة مرسومة
      +

      الوجهات الداخلية

      +الاتصالات الداخلية +البرامج المحلية المتصلة عبر الموجه +I2PTunnel +او برامج خارجية متصلة SAM, BOB, او مباشرة بـ I2CP. +

      الأنفاق الداخلة/خارجة

      +الأنفاق الحالية موجودة في صفحة الأنفاق.
        +
      • تصفح +الأنفاق المستخدمة من طرف الموجه تستعمل في الاتصال مع النظائر، انشاء انفاق جديدة. +
        +
      • المستخدمين +الأنفاق المستخدمة من طرف الموجه +
      • المشاركة +الأنفاق المنشئة من طرف موجهات أخرى عبر موجهك. +هذا ينبني على درجة استخدام الشبكة، مقدار المشاركة... +يمكنك تغيير درجة المشاركة بـ صفحة الاعدادات. You may also limit the total number by setting router.maxParticipatingTunnels=nnn on -the advanced configuration page. [Enable graphing]. -
      • Share ratio: -The number of participating tunnels you route for others, divided by the total number of hops in -all your exploratory and client tunnels. -A number greater than 1.00 means you are contributing more tunnels to the network than you are using. +the صفحة الاعدادات المتقدمة. [تفعيل الرسم البياني]. +
      • نسبة المشاركة +عدد الانفاق المشاركة، مقسوما على عدد اجمالي الانفاق. +عدد أكبر من 1.00 يعني انك تساهم في الشبكة بعدد اكبر مما تستهلك.
      -

      Congestion

      -Some basic indications of router overload:
        +

        ازدحام

        +بعض مشرات ازدحام الموجه
        • Job lag: How long jobs are waiting before execution. The job queue is listed on the jobs page. Unfortunately, there are several other job queues in the router that may be congested, @@ -107,21 +99,21 @@ and their status is not available in the router console. The job lag should generally be zero. If it is consistently higher than 500ms, your computer is very slow, or the router has serious problems. -[Enable graphing]. +[تفعيل الرسم البياني].
        • Message delay: How long an outbound message waits in the queue. This should generally be a few hundred milliseconds or less. If it is consistently higher than 1000ms, your computer is very slow, or you should adjust your bandwidth limits, or your (bittorrent?) clients may be sending too much data and should have their transmit bandwidth limit reduced. -[Enable graphing] (transport.sendProcessingTime). +[تفعيل الرسم البياني] (transport.sendProcessingTime).
        • Tunnel lag: This is the round trip time for a tunnel test, which sends a single message out a client tunnel and in an exploratory tunnel, or vice versa. It should usually be less than 5 seconds. If it is consistently higher than that, your computer is very slow, or you should adjust your bandwidth limits, or there are network problems. -[Enable graphing] (tunnel.testSuccessTime). +[تفعيل الرسم البياني] (tunnel.testSuccessTime).
        • Handle backlog: This is the number of pending requests from other routers to build a participating tunnel through your router. diff --git a/apps/routerconsole/locale/messages_ar.po b/apps/routerconsole/locale/messages_ar.po index 29127b267..f66b0cd2c 100644 --- a/apps/routerconsole/locale/messages_ar.po +++ b/apps/routerconsole/locale/messages_ar.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-03 18:27+0000\n" -"PO-Revision-Date: 2011-03-03 21:10-0000\n" +"PO-Revision-Date: 2011-03-04 14:02-0000\n" "Last-Translator: hamada \n" "Language-Team: hamada@mail.i2p\n" "Language: ar\n" @@ -1674,7 +1674,6 @@ msgid "Error starting plugin {0}" msgstr "خطأ في تطلاق الملحق {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 -#, fuzzy msgid "Interface configuration saved successfully - restart required to take effect." msgstr "تم حفظ العدادات بنجاح - يجب اعادة التشغيل لأخذها بالاعتبار" @@ -3210,9 +3209,9 @@ msgstr "هناك {0} حدث في هذه المدة" #. buf.append(' '); #: ../java/src/net/i2p/router/web/StatsGenerator.java:203 -#, fuzzy, java-format +#, java-format msgid " which ended {0} ago." -msgstr "آخر تحديث للأخبار {0} " +msgstr "انتهت منذ {0} " #: ../java/src/net/i2p/router/web/StatsGenerator.java:205 msgid "No events" @@ -3581,7 +3580,7 @@ msgstr "جاري بناء النفق" #: ../java/src/net/i2p/router/web/SummaryHelper.java:410 msgid "none" -msgstr "" +msgstr "ﻻشيئ" #. tunnel nicknames, taken from i2ptunnel.config so they will display #. nicely under 'local destinations' in the summary bar @@ -3635,7 +3634,7 @@ msgstr "من" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:72 msgid "Receive on" -msgstr "" +msgstr "استقبل في" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 msgid "Expiration" @@ -4684,7 +4683,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:359 msgid "I2CP Port" -msgstr "" +msgstr "I2CP منفذ" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:363 msgid "I2CP Interface" @@ -4764,11 +4763,11 @@ msgstr "اضافة المفاتيح يدويا" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:310 msgid "Enter keys for encrypted remote destinations here." -msgstr "" +msgstr "ادخل مفاتيح الوجهات المشفرة هنا" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:313 msgid "Keys for local destinations must be entered on the" -msgstr "" +msgstr "يجب ادخال مفاتيح الوجهات المحلية في" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:315 msgid "I2PTunnel page" @@ -4888,14 +4887,12 @@ msgid "config reseeding" msgstr "اعدادات اعادة التوزيع" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:240 -#, fuzzy msgid "I2P Reseeding Configuration" -msgstr "اعدادات المفاتيح I2P" +msgstr "اعدادات اعادة التوزيع" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:300 -#, fuzzy msgid "Reseeding Configuration" -msgstr "اعدادات المفاتيح I2P" +msgstr "اعدادات اعادة التوزيع" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:302 msgid "Reseeding is the bootstrapping process used to find other routers when you first install I2P, or when your router has too few router references remaining." @@ -4935,9 +4932,8 @@ msgid "Use non-SSL only" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:332 -#, fuzzy msgid "Reseed URLs" -msgstr "اعادة توزيع" +msgstr "اعادة توزيع العناوين" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:336 msgid "Enable HTTP proxy (not used for SSL)" @@ -4948,9 +4944,8 @@ msgid "HTTP Proxy Host" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:344 -#, fuzzy msgid "HTTP Proxy Port" -msgstr "eepProxy منفذ" +msgstr "HTTP Proxy منفذ" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:106 msgid "config service" @@ -5022,7 +5017,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:331 msgid "If you prefer the command line, you can also run the " -msgstr "" +msgstr "اذا كنت تفضل استعمال سطر الأوامر، يمكنك تطبيق" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 msgid "If you are running I2P as service right now, removing it will shut down your router immediately." @@ -5243,7 +5238,7 @@ msgstr "حفظ" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:115 msgid "Internal Error" -msgstr "" +msgstr "مشكل داخلي" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:117 msgid "Router Console" @@ -5255,7 +5250,7 @@ msgstr "اعدادات" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129 msgid "Sorry! There has been an internal error." -msgstr "" +msgstr "خطأ هذا مشكل داخلي" #. note to translators - both parameters are URLs #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:133 @@ -5339,7 +5334,7 @@ msgstr "I2P سجل الموجه" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:281 msgid "Critical Logs" -msgstr "" +msgstr "سجلات هامة" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:285 msgid "Router Logs" From 6e607e6bfe9699cefd655665ea83bd3567eabd4a Mon Sep 17 00:00:00 2001 From: m1xxy Date: Fri, 4 Mar 2011 18:52:50 +0000 Subject: [PATCH 276/463] s/bit/bytes --- apps/routerconsole/locale/messages_de.po | 914 ++++++----------------- 1 file changed, 224 insertions(+), 690 deletions(-) diff --git a/apps/routerconsole/locale/messages_de.po b/apps/routerconsole/locale/messages_de.po index 9ad72024f..9f6319ca5 100644 --- a/apps/routerconsole/locale/messages_de.po +++ b/apps/routerconsole/locale/messages_de.po @@ -9,10 +9,9 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-03 18:27+0000\n" -"PO-Revision-Date: 2011-02-27 18:31+0100\n" -"Last-Translator: \n" -"Language-Team: echelon , Sperreingang \n" +"PO-Revision-Date: 2011-03-04 19:51+0100\n" +"Last-Translator: mixxy \n" +"Language-Team: echelon , Sperreingang \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -178,11 +177,8 @@ msgstr "Reseed: Hole die Seed-URL" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281 #, java-format -msgid "" -"Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." -msgstr "" -"Reseed: Holen der Router-Informationen von Seed-URL ({0} erfolgreich, {1} " -"Fehler)." +msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." +msgstr "Reseed: Holen der Router-Informationen von Seed-URL ({0} erfolgreich, {1} Fehler)." #: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:512 msgid "NetDb entry" @@ -212,21 +208,12 @@ msgid "Help" msgstr "Hilfe" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 -msgid "" -"Your transport connection limits are automatically set based on your " -"configured bandwidth." -msgstr "" -"Ihre Verbindungseinstellungen werden, basierend auf der von Ihnen zur " -"Verfügung gestellten Bandbreite, automatisch vorgenommen." +msgid "Your transport connection limits are automatically set based on your configured bandwidth." +msgstr "Ihre Verbindungseinstellungen werden, basierend auf der von Ihnen zur Verfügung gestellten Bandbreite, automatisch vorgenommen." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 -msgid "" -"To override these limits, add the settings i2np.ntcp.maxConnections=nnn and " -"i2np.udp.maxConnections=nnn on the advanced configuration page." -msgstr "" -"Um diese Einstellungen zu umgehen, fügen Sie folgende Einstellungen der " -"Seite \"Erweiterte Einstellungen\" hinzu: i2np.ntcp.maxConnections=nnn und " -"i2np.udp.maxConnections=nnn" +msgid "To override these limits, add the settings i2np.ntcp.maxConnections=nnn and i2np.udp.maxConnections=nnn on the advanced configuration page." +msgstr "Um diese Einstellungen zu umgehen, fügen Sie folgende Einstellungen der Seite \"Erweiterte Einstellungen\" hinzu: i2np.ntcp.maxConnections=nnn und i2np.udp.maxConnections=nnn" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 @@ -265,15 +252,11 @@ msgstr "Ausgehende Verbindungen" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 msgid "They offered to introduce us (help other peers traverse our firewall)" -msgstr "" -"Sie boten an, uns bekannt zu machen (anderen Teilnehmern helfen, unsere " -"Firewall zu überwinden)" +msgstr "Sie boten an, uns bekannt zu machen (anderen Teilnehmern helfen, unsere Firewall zu überwinden)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 msgid "We offered to introduce them (help other peers traverse their firewall)" -msgstr "" -"Wir bieten an, sie bekannt zu machen (anderen Teilnehmern helfen, ihre " -"Firewall zu überwinden)" +msgstr "Wir bieten an, sie bekannt zu machen (anderen Teilnehmern helfen, ihre Firewall zu überwinden)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "How long since a packet has been received / sent" @@ -317,12 +300,8 @@ msgid "The difference between the peer's clock and your own" msgstr "Der Unterschied zwischen Ihrer und der Uhr des Teilnehmers" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 -msgid "" -"The congestion window, which is how many bytes can be sent without an " -"acknowledgement" -msgstr "" -"Der Pufferspeicher, der angibt, wieviele Bytes Sie ohne Bestätigung senden " -"können" +msgid "The congestion window, which is how many bytes can be sent without an acknowledgement" +msgstr "Der Pufferspeicher, der angibt, wieviele Bytes Sie ohne Bestätigung senden können" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 msgid "The number of sent messages awaiting acknowledgement" @@ -334,9 +313,7 @@ msgstr "Die maximale Anzahl von gleichzeitig sendbaren Nachrichten" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 msgid "The number of pending sends which exceed congestion window" -msgstr "" -"Die Anzahl der ausstehenden Sendeanforderungen, die den Pufferspeicher " -"überschreiten." +msgstr "Die Anzahl der ausstehenden Sendeanforderungen, die den Pufferspeicher überschreiten." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 msgid "The slow start threshold" @@ -360,12 +337,8 @@ msgid "The retransmit timeout in milliseconds" msgstr "Der Timeout beim erneuten Senden (in Millisekunden)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 -msgid "" -"Current maximum send packet size / estimated maximum receive packet size " -"(bytes)" -msgstr "" -"Derzeit maximale Größe der gesendeten Pakete / geschätzte maximale Größe der " -"empfangenen Pakete (Bytes)" +msgid "Current maximum send packet size / estimated maximum receive packet size (bytes)" +msgstr "Derzeit maximale Größe der gesendeten Pakete / geschätzte maximale Größe der empfangenen Pakete (Bytes)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 @@ -1469,7 +1442,8 @@ msgstr "St. Vincent und die Grenadinen" 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 "US-Jungferninseln" @@ -1520,9 +1494,7 @@ msgstr "I2P-Routerkonsole" #: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:57 msgid "Error updating the configuration - please see the error logs" -msgstr "" -"Fehler beim Aktualisieren der Einstellungen - Bitte schau in die " -"Fehlerberichte!" +msgstr "Fehler beim Aktualisieren der Einstellungen - Bitte schau in die Fehlerberichte!" #: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:69 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:266 @@ -1531,12 +1503,8 @@ msgstr "Einstellungen erfolgreich gespeichert" #: ../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 "" -"Fehler beim Speichern der Einstellungen (angewendet aber nicht gespeichert) " -"- Bitte schau in die Fehlerberichte!" +msgid "Error saving the configuration (applied but not saved) - please see the error logs" +msgstr "Fehler beim Speichern der Einstellungen (angewendet aber nicht gespeichert) - Bitte schau in die Fehlerberichte!" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:335 @@ -1601,11 +1569,8 @@ msgid "New client added" msgstr "Neuer Klient hinzugefügt" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:193 -msgid "" -"Client configuration saved successfully - restart required to take effect." -msgstr "" -"Klienteninstellungen erfolgreich gespeichert - Neustart zum Übernehmen " -"erforderlich" +msgid "Client configuration saved successfully - restart required to take effect." +msgstr "Klienteninstellungen erfolgreich gespeichert - Neustart zum Übernehmen erforderlich" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 @@ -1688,11 +1653,8 @@ msgid "Error starting plugin {0}" msgstr "Fehler beim Starten des Zusatzprogramms {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 -msgid "" -"Interface configuration saved successfully - restart required to take effect." -msgstr "" -"Interface-Einstellungen erfolgreich gespeichert - Neustart zum Übernehmen " -"erforderlich" +msgid "Interface configuration saved successfully - restart required to take effect." +msgstr "Interface-Einstellungen erfolgreich gespeichert - Neustart zum Übernehmen erforderlich" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:85 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258 @@ -1839,19 +1801,12 @@ msgid "Log configuration saved" msgstr "Einstellungen der Berichte gespeichert." #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 -msgid "" -"Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" -msgstr "" -"Fügen Sie weitere Log-Anweisungen oben hinzu. Zum Beispiel: net.i2p.router." -"tunnel=WARN" +msgid "Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" +msgstr "Fügen Sie weitere Log-Anweisungen oben hinzu. Zum Beispiel: net.i2p.router.tunnel=WARN" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:49 -msgid "" -"Or put entries in the logger.config file. Example: logger.record.net.i2p." -"router.tunnel=WARN" -msgstr "" -"Oder machen sie Einträge in die logger.config-Datei. Zum Beispiel: net.i2p." -"router.tunnel=WARN" +msgid "Or put entries in the logger.config file. Example: logger.record.net.i2p.router.tunnel=WARN" +msgstr "Oder machen sie Einträge in die logger.config-Datei. Zum Beispiel: net.i2p.router.tunnel=WARN" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:50 msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT" @@ -2021,8 +1976,7 @@ msgstr "Benötige SSU-Hilfsrouter" #. 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 "" -"Starte I2P kontrolliert neu, um die veröffentlichte Router-Adresse zu ändern" +msgstr "Starte I2P kontrolliert neu, um die veröffentlichte Router-Adresse zu ändern" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:314 msgid "Updating bandwidth share percentage" @@ -2276,12 +2230,8 @@ msgid "Failed to update the stat filter and location" msgstr "Konnte Statusfilter und Speicherort nicht aktualisieren" #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:114 -msgid "" -"Graph list updated, may take up to 60s to be reflected here and on the Graphs Page" -msgstr "" -"Liste der Grafiken aktualisiert. Es dauert bis zu 60s, um hier und auf Graphenseite angezeigt zu werden." +msgid "Graph list updated, may take up to 60s to be reflected here and on the Graphs Page" +msgstr "Liste der Grafiken aktualisiert. Es dauert bis zu 60s, um hier und auf Graphenseite angezeigt zu werden." #. the count isn't really correct anyway, since we don't check for actual changes #. addFormNotice("Updated settings for " + updated + " pools."); @@ -2295,9 +2245,7 @@ msgstr "Erkundungstunneleinstellungen erfolgreich gespeichert" #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:36 -msgid "" -"Error saving the configuration (applied but not saved) - please see the " -"error logs." +msgid "Error saving the configuration (applied but not saved) - please see the error logs." msgstr "" "Fehler beim Speichern der Einstellungen (angewendet aber nicht gespeichert)\n" "- sieh bitte in die Fehlerberichte!" @@ -2329,14 +2277,11 @@ msgstr "Kliententunnel für" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:69 msgid "ANONYMITY WARNING - Settings include 0-hop tunnels." -msgstr "" -"ANONYMITÄTSWARNUNG - Einstellungen beinhalten Tunnel ohne Zwischenstationen" +msgstr "ANONYMITÄTSWARNUNG - Einstellungen beinhalten Tunnel ohne Zwischenstationen" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74 msgid "ANONYMITY WARNING - Settings include 1-hop tunnels." -msgstr "" -"ANONYMITÄTSWARNUNG - Einstellungen beinhalten Tunnel mit nur einer " -"Zwischenstation" +msgstr "ANONYMITÄTSWARNUNG - Einstellungen beinhalten Tunnel mit nur einer Zwischenstation" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:77 msgid "PERFORMANCE WARNING - Settings include very long tunnels." @@ -2429,8 +2374,7 @@ msgstr "Aktualisierung verfügbar; versuche, diese herunterzuladen" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:87 msgid "Update available, click button on left to download" -msgstr "" -"Aktualisierung verfügbar. Klick auf den Knopf links, um sie herunterzuladen!" +msgstr "Aktualisierung verfügbar. Klick auf den Knopf links, um sie herunterzuladen!" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:93 msgid "No update available" @@ -2490,13 +2434,8 @@ msgid "Download, verify, and restart" msgstr "Herunterladen, überprüfen und neustarten" #: ../java/src/net/i2p/router/web/FormHandler.java:174 -msgid "" -"Invalid form submission, probably because you used the 'back' or 'reload' " -"button on your browser. Please resubmit." -msgstr "" -"Ungültige Übertragung der eingegebenen Daten, möglicherweise da Sie den " -"'Zurück'- oder 'Neu Laden'-Knopf in Ihrem Browser gedrückt haben. Bitte " -"erneut senden." +msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit." +msgstr "Ungültige Übertragung der eingegebenen Daten, möglicherweise da Sie den 'Zurück'- oder 'Neu Laden'-Knopf in Ihrem Browser gedrückt haben. Bitte erneut senden." #: ../java/src/net/i2p/router/web/GraphHelper.java:93 msgid "Combined bandwidth graph" @@ -2851,51 +2790,35 @@ msgid "This plugin requires Java version {0} or higher" msgstr "Dieses Zusatzprogramm benötigt Java-Version {0} oder neuer" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 -msgid "" -"Downloaded plugin is for new installs only, but the plugin is already " -"installed" -msgstr "" -"Heruntergeladenes Zusatzprogramm lässt sich nur neu installieren, jedoch ist " -"es ist bereits installiert." +msgid "Downloaded plugin is for new installs only, but the plugin is already installed" +msgstr "Heruntergeladenes Zusatzprogramm lässt sich nur neu installieren, jedoch ist es ist bereits installiert." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:305 msgid "Installed plugin does not contain the required configuration file" -msgstr "" -"Das installierte Zusatzprogramm enthält nicht die benötigte " -"Konfigurationsdatei" +msgstr "Das installierte Zusatzprogramm enthält nicht die benötigte Konfigurationsdatei" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:313 msgid "Signature of downloaded plugin does not match installed plugin" -msgstr "" -"Die Signatur des heruntergeladenen Zusatzprogramms stimmt nicht mit dem " -"installierten Zusatzprogramm überein." +msgstr "Die Signatur des heruntergeladenen Zusatzprogramms stimmt nicht mit dem installierten Zusatzprogramm überein." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:320 #, java-format msgid "Downloaded plugin version {0} is not newer than installed plugin" -msgstr "" -"Version {0} des heruntergeladenen Zusatzprogramms ist nicht neuer als die " -"installierte Version" +msgstr "Version {0} des heruntergeladenen Zusatzprogramms ist nicht neuer als die installierte Version" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:327 #, java-format msgid "Plugin update requires installed plugin version {0} or higher" -msgstr "" -"Aktualisierung des Zusatzprogramms benötigt Version {0} oder höher des " -"Zusatzprogramms" +msgstr "Aktualisierung des Zusatzprogramms benötigt Version {0} oder höher des Zusatzprogramms" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:334 #, java-format msgid "Plugin update requires installed plugin version {0} or lower" -msgstr "" -"Aktualisierung des Zusatzprogramms benötigt installierte Version {0} oder " -"älter des Zusatzprogramms" +msgstr "Aktualisierung des Zusatzprogramms benötigt installierte Version {0} oder älter des Zusatzprogramms" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351 msgid "Plugin is for upgrades only, but the plugin is not installed" -msgstr "" -"Dieses Zusatzprogramm ist nur für Aktualisierungen, aber das Zusatzprogramm " -"ist noch nicht installiert" +msgstr "Dieses Zusatzprogramm ist nur für Aktualisierungen, aber das Zusatzprogramm ist noch nicht installiert" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:364 #, java-format @@ -2920,9 +2843,7 @@ msgstr "Zusatzprogramm {0} installiert und gestartet" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:394 #, java-format msgid "Plugin {0} installed but failed to start, check logs" -msgstr "" -"Zusatzprogramm {0} wurde installiert konnte jedoch nicht gestartet werden. " -"Überprüfen Sie die Berichte!" +msgstr "Zusatzprogramm {0} wurde installiert konnte jedoch nicht gestartet werden. Überprüfen Sie die Berichte!" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:396 #, java-format @@ -3103,8 +3024,7 @@ msgstr "Gruppen" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 msgid "capabilities in the netDb, not used to determine profiles" -msgstr "" -"Werte in der Netzwerkdatenbank, nicht zum Ermitteln der Profile verwendet" +msgstr "Werte in der Netzwerkdatenbank, nicht zum Ermitteln der Profile verwendet" #. capabilities #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 @@ -3113,12 +3033,8 @@ msgid "caps" msgstr "Kategorien" #: ../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 "" -"maximaler Durchsatz (Bytes je Tunnel) innerhalb einer Minute, den ein " -"Teilnehmer in einem einzelnen Tunnel erreicht hat" +msgid "peak throughput (bytes per second) over a 1 minute period that the peer has sustained in a single tunnel" +msgstr "maximaler Durchsatz (Bytes je Tunnel) innerhalb einer Minute, den ein Teilnehmer in einem einzelnen Tunnel erreicht hat" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 msgid "speed" @@ -3130,9 +3046,7 @@ msgstr "Kapazität" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 msgid "how many tunnels can we ask them to join in an hour?" -msgstr "" -"Wie viele Tunnel können wir bei diesem Teilnehmer innerhalb einer Stunde " -"bekommen?" +msgstr "Wie viele Tunnel können wir bei diesem Teilnehmer innerhalb einer Stunde bekommen?" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 msgid "how many new peers have they told us about lately?" @@ -3144,9 +3058,7 @@ msgstr "Integration" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 msgid "is the peer banned, or unreachable, or failing tunnel tests?" -msgstr "" -"Ist der Teilnehmer gesperrt, unerreichbar, oder schlagen die Tunneltests " -"fehl?" +msgstr "Ist der Teilnehmer gesperrt, unerreichbar, oder schlagen die Tunneltests fehl?" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 msgid "status" @@ -3210,17 +3122,12 @@ msgid "Statistics gathered during this router's uptime" msgstr "Zur Laufzeit dieses Routers gesammelte Statistiken" #: ../java/src/net/i2p/router/web/StatsGenerator.java:63 -msgid "" -"The data gathered is quantized over a 1 minute period, so should just be " -"used as an estimate." -msgstr "" -"Die Daten werden über jeweils 1 Minute erhoben und repräsentieren daher nur " -"eine Näherung." +msgid "The data gathered is quantized over a 1 minute period, so should just be used as an estimate." +msgstr "Die Daten werden über jeweils 1 Minute erhoben und repräsentieren daher nur eine Näherung." #: ../java/src/net/i2p/router/web/StatsGenerator.java:64 msgid "These statistics are primarily used for development and debugging." -msgstr "" -"Diese Statistiken dienen vorrangig der Entwicklung und Fehlerbeseitigung." +msgstr "Diese Statistiken dienen vorrangig der Entwicklung und Fehlerbeseitigung." #: ../java/src/net/i2p/router/web/StatsGenerator.java:105 #: ../java/src/net/i2p/router/web/StatsGenerator.java:156 @@ -3233,8 +3140,7 @@ msgstr "Häufigkeit" #: ../java/src/net/i2p/router/web/StatsGenerator.java:120 msgid "Rolling average events per period" -msgstr "" -"Fortschreitender Durchschnittshäufigkeit von Ereignissen je Zeitintervall" +msgstr "Fortschreitender Durchschnittshäufigkeit von Ereignissen je Zeitintervall" #: ../java/src/net/i2p/router/web/StatsGenerator.java:124 msgid "Highest events per period" @@ -3318,12 +3224,8 @@ msgid "Help & FAQ" msgstr "Hilfe & FAQ" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:55 -msgid "" -"Configure startup of clients and webapps (services); manually start dormant " -"services" -msgstr "" -"Autostart-Einstellungen der Klienten und WebApplikationen (Services); " -"manuelles Starten der ruhenden Services" +msgid "Configure startup of clients and webapps (services); manually start dormant services" +msgstr "Autostart-Einstellungen der Klienten und WebApplikationen (Services); manuelles Starten der ruhenden Services" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:57 msgid "I2P Services" @@ -3458,11 +3360,8 @@ msgid "Uptime" msgstr "Laufzeit" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 -msgid "" -"Help with configuring your firewall and router for optimal I2P performance" -msgstr "" -"Hilfe bei der Konfiguration Ihrer Firewall und Ihres Routers für eine " -"optimale Leistung." +msgid "Help with configuring your firewall and router for optimal I2P performance" +msgstr "Hilfe bei der Konfiguration Ihrer Firewall und Ihres Routers für eine optimale Leistung." #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 msgid "Download" @@ -3594,18 +3493,12 @@ msgid "Firewalled" msgstr "Firewall aktiv" #: ../java/src/net/i2p/router/web/SummaryHelper.java:135 -msgid "" -"ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and " -"restart" -msgstr "" -"FEHLER: UDP Port ist belegt. Setze i2np.udp.internalPort=xxxx in der " -"Konfiguration für Profis und starte I2P neu!" +msgid "ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" +msgstr "FEHLER: UDP Port ist belegt. Setze i2np.udp.internalPort=xxxx in der Konfiguration für Profis und starte I2P neu!" #: ../java/src/net/i2p/router/web/SummaryHelper.java:141 msgid "ERR-No Active Peers, Check Network Connection and Firewall" -msgstr "" -"FEHLER: Keine aktiven Teilnehmer. Überprüfen Sie Firewall und " -"Netzwekrverbindung!" +msgstr "FEHLER: Keine aktiven Teilnehmer. Überprüfen Sie Firewall und Netzwekrverbindung!" #: ../java/src/net/i2p/router/web/SummaryHelper.java:144 msgid "ERR-UDP Disabled and Inbound TCP host/port not set" @@ -4219,9 +4112,7 @@ msgid "Bandwidth limiter" msgstr "Bandbreitenbegrenzer" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:300 -msgid "" -"I2P will work best if you configure your rates to match the speed of your " -"internet connection." +msgid "I2P will work best if you configure your rates to match the speed of your internet connection." msgstr "" "I2P funktioniert am besten, wenn Sie die Werte so konfigurieren, \n" "dass die Geschwindigkeit zu Ihrer Internetverbindung passt." @@ -4254,16 +4145,13 @@ msgid "I2P requires at least 12KBps to enable sharing. " msgstr "I2P benötigt mindestens 12 kbit/s, um das Durchleiten zu ermöglichen. " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347 -msgid "" -"Please enable sharing (participating in tunnels) by configuring more " -"bandwidth. " +msgid "Please enable sharing (participating in tunnels) by configuring more bandwidth. " msgstr "" "Bitte aktivieren Sie die gemeinsame Nutzung (Teilnahme an Tunneln),\n" "indem Sie mehr Bandbreite freigeben. " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:348 -msgid "" -"It improves your anonymity by creating cover traffic, and helps the network." +msgid "It improves your anonymity by creating cover traffic, and helps the network." msgstr "" "Es verbessert Ihre Anonymität durch Herstellen von s. g. Rauschen und \n" "es hilft zudem dem Netzwerk." @@ -4271,15 +4159,12 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:351 #, java-format msgid "You have configured I2P to share {0} KBps." -msgstr "Sie haben I2P konfiguriert, {0} kbit/s durchzuleiten. " +msgstr "Sie haben I2P konfiguriert, {0} kBytes/s durchzuleiten. " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:354 -msgid "" -"The higher the share bandwidth the more you improve your anonymity and help " -"the network." +msgid "The higher the share bandwidth the more you improve your anonymity and help the network." msgstr "" -"Je höher der Anteil an geteilter Bandbreite ist, desto mehr verbessert " -"sich \n" +"Je höher der Anteil an geteilter Bandbreite ist, desto mehr verbessert sich \n" "Ihre Anonymität, und darüber hinaus hilft es dem Netz. " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:358 @@ -4370,12 +4255,8 @@ msgid "Action when IP changes" msgstr "Aktion wenn sich die IP-Adresse ändert" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:439 -msgid "" -"Laptop mode - Change router identity and UDP port when IP changes for " -"enhanced anonymity" -msgstr "" -"Laptop Modus - ändert zur Erhöhung der Anonymität Ihre Router-Identifikation " -"und den UDP-Port, wenn sich Ihre IP ändert" +msgid "Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity" +msgstr "Laptop Modus - ändert zur Erhöhung der Anonymität Ihre Router-Identifikation und den UDP-Port, wenn sich Ihre IP ändert" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:441 msgid "Experimental" @@ -4408,8 +4289,7 @@ msgstr "wenn keine Firewall aktiv ist" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:475 msgid "Always use auto-detected IP address (Not firewalled)" -msgstr "" -"Immer die automatisch erkannte IP-Adresse benutzen (bei inaktiver Firewall)" +msgstr "Immer die automatisch erkannte IP-Adresse benutzen (bei inaktiver Firewall)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 msgid "Disable inbound (Firewalled)" @@ -4420,11 +4300,9 @@ msgid "Completely disable" msgstr "Komplett deaktivieren" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:491 -msgid "" -"(select only if behind a firewall that throttles or blocks outbound TCP)" +msgid "(select only if behind a firewall that throttles or blocks outbound TCP)" msgstr "" -"(nur auswählen, wenn dieser Router hinter einer Firewall ist, die " -"ausgehenden \n" +"(nur auswählen, wenn dieser Router hinter einer Firewall ist, die ausgehenden \n" "TCP-Verkehr blokiertt oder begrenzt)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 @@ -4455,41 +4333,26 @@ msgstr "Konfigurationshilfe" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:520 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 -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 funktioniert auch hinter den meisten Firewalls, aber die Geschwindigkeit " -"und Integration ins I2P-Netz erhöhen sich, wenn der I2P-Port in der Firewall " -"für TCP und UDP freigegeben und auf Ihren Computer weitergeleitet wird." +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 funktioniert auch hinter den meisten Firewalls, aber die Geschwindigkeit und Integration ins I2P-Netz erhöhen sich, wenn der I2P-Port in der Firewall für TCP und UDP freigegeben und auf Ihren Computer weitergeleitet wird." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:522 -msgid "" -"If you can, please poke a hole in your firewall to allow unsolicited UDP and " -"TCP packets to reach you." +msgid "If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you." msgstr "" "Falls es Ihnen möglich ist, richten Sie bitte Ihre Firewall so ein, dass \n" "TCP- und UDP-Pakete Ihren Computer unverändert erreichen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:524 -msgid "" -"If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole " -"punching with \"SSU introductions\" to relay traffic." +msgid "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic." msgstr "" -"Falls Ihnen das nicht möglich ist, hat I2P UPnP-Unterstützung " -"(Universelles \n" -"Plug and Play) und UDP-Weiterleitung mit Hilfe der „SSU-Hilfsrouter“ " -"eingebaut." +"Falls Ihnen das nicht möglich ist, hat I2P UPnP-Unterstützung (Universelles \n" +"Plug and Play) und UDP-Weiterleitung mit Hilfe der „SSU-Hilfsrouter“ eingebaut." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:526 -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." +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 "" "Die meisten der obenstehenden Optionen sind für besondere Situationen,\n" -"wenn z. B. UPnP nicht funktioniert oder die Firewall nicht geändert " -"werden \n" +"wenn z. B. UPnP nicht funktioniert oder die Firewall nicht geändert werden \n" "kann und Probleme bereitet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:528 @@ -4499,12 +4362,9 @@ msgstr "" "nicht gut mit I2P zusammen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:537 -msgid "" -"UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect " -"the external IP address and forward ports." +msgid "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports." msgstr "" -"UPnP kommuniziert normalerweise mit den Internet Gateway Devices (IGDs), " -"um \n" +"UPnP kommuniziert normalerweise mit den Internet Gateway Devices (IGDs), um \n" "die extern erreichbare IP-Adresse zu ermitteln und die Ports weiterzuleiten." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:539 @@ -4542,67 +4402,50 @@ msgid "Review the UPnP status here." msgstr "Überprüfen Sie hier den UPnP-Status." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 -msgid "" -"UPnP may be enabled or disabled above, but a change requires a router " -"restart to take effect." +msgid "UPnP may be enabled or disabled above, but a change requires a router restart to take effect." msgstr "" "UPnP kann aktiviert oder deaktiviert werden, aber ein wechseln \n" "erfordert einen Routerneustart um wirksam zu werden." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 msgid "Hostnames entered above will be published in the network database." -msgstr "" -"Oben eingegebene Hostnamen werden in der Netzwerk-Datenbank veröffentlicht." +msgstr "Oben eingegebene Hostnamen werden in der Netzwerk-Datenbank veröffentlicht." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 msgid "They are not private." msgstr "Sie sind nicht geheim." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 -msgid "" -"Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1." +msgid "Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1." msgstr "" "Geben Sie auch keine IP-Adresse für den privaten Gebrauch wie\n" "127.0.0.1 oder 192.168.1.1 an!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 -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." +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 "" -"Wenn Sie eine falsche IP-Adresse oder einen falschen Hostnamen angeben, oder " -"Ihre Firewall oder NAT nicht richtig konfigurieren, \n" +"Wenn Sie eine falsche IP-Adresse oder einen falschen Hostnamen angeben, oder Ihre Firewall oder NAT nicht richtig konfigurieren, \n" "wird sich Ihre Netzwerk-Performance erheblich verschlechtern." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 msgid "When in doubt, leave the settings at the defaults." -msgstr "" -"Wenn Sie Zweifel haben, lassen Sie die Einstellungen auf den Standardwerten." +msgstr "Wenn Sie Zweifel haben, lassen Sie die Einstellungen auf den Standardwerten." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 msgid "Reachability Help" msgstr "Hilfe zur Erreichbarkeit" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:572 -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." +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 "" -"Wenn Sie meinen, Sie haben Ihre Firewall geöffnet und I2P breichtet dennoch, " -"es wäre\n" -"hinter einer Firewall, dann prüfen Sie, ob Sie möglicherweise mehrere " -"Firewalls\n" +"Wenn Sie meinen, Sie haben Ihre Firewall geöffnet und I2P breichtet dennoch, es wäre\n" +"hinter einer Firewall, dann prüfen Sie, ob Sie möglicherweise mehrere Firewalls\n" "- zum Beispiel sowohl Software- als auch externer Hardware-Router - haben." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575 -msgid "" -"If there is an error, the logs may also help " -"diagnose the problem." +msgid "If there is an error, the logs may also help diagnose the problem." msgstr "" -"Wenn ein Fehler auftritt, können die Berichte " -"helfen, \n" +"Wenn ein Fehler auftritt, können die Berichte helfen, \n" "das Problem zu diagnostizieren." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 @@ -4614,139 +4457,83 @@ msgid "Your UDP port appears to be firewalled." msgstr "Ihr UDP-Port wird anscheinend von der Firewall geblockt." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 -msgid "" -"As the firewall detection methods are not 100% reliable, this may " -"occasionally be displayed in error." +msgid "As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error." msgstr "" "Da die Firewall-Nachweismethoden nicht zu 100% zuverlässig sind, ist die \n" "Anzeige gelegentlich fehlerhaft." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587 -msgid "" -"However, if it appears consistently, you should check whether both your " -"external and internal firewalls are open for your port." +msgid "However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port." msgstr "" -"Wenn es allerdings dauerhaft angezeigt wird, sollten Sie überprüfen, ob Ihre " -"Ports,\n" +"Wenn es allerdings dauerhaft angezeigt wird, sollten Sie überprüfen, ob Ihre Ports,\n" "sowohl der externen wie auch der internen Firewall, geöffnet sind." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:589 -msgid "" -"I2P will work fine when firewalled, there is no reason for concern. When " -"firewalled, the router uses \"introducers\" to relay inbound connections." +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 wird auch mit geschlossener Firewall gut funktionieren, es besteht " -"kein \n" +"I2P wird auch mit geschlossener Firewall gut funktionieren, es besteht kein \n" "Grund zur Besorgnis. Bei geschlossener Firewall verwendet der Router \n" "\"Hilfsrouter\", um eingehende Verbindungen zu übertragen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:591 -msgid "" -"However, you will get more participating traffic and help the network more " -"if you can open your firewall(s)." -msgstr "" -"Falls Sie Ihre Firewall(s) öffnen, helfen Sie dem Netzwerk mehr und " -"gleichzeitig erhöhen Sie Ihre Anonymität durch die Teilnahme an fremden " -"Tunneln." +msgid "However, you will get more participating traffic and help the network more if you can open your firewall(s)." +msgstr "Falls Sie Ihre Firewall(s) öffnen, helfen Sie dem Netzwerk mehr und gleichzeitig erhöhen Sie Ihre Anonymität durch die Teilnahme an fremden Tunneln." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593 -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 "" -"Falls Sie dies schon getan haben, denken Sie bitte daran, dass Sie eine " -"Hardware- und eine Software-Firewall haben könnten, oder aber hinter einer " -"Firewall sind, die Sie nicht ändern können (z.B. seitens Ihres Providers)." +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 "Falls Sie dies schon getan haben, denken Sie bitte daran, dass Sie eine Hardware- und eine Software-Firewall haben könnten, oder aber hinter einer Firewall sind, die Sie nicht ändern können (z.B. seitens Ihres Providers)." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:595 -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 "" -"Auch können manche Router nicht TCP und UDP korrekt auf dem selben Port " -"weiterleiten, oder haben andere Beschränkungen oder Fehler, die die " -"Portweiterleitung an den I2P-Router behindern." +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 "Auch können manche Router nicht TCP und UDP korrekt auf dem selben Port weiterleiten, oder haben andere Beschränkungen oder Fehler, die die Portweiterleitung an den I2P-Router behindern." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 msgid "The router is currently testing whether your UDP port is firewalled." msgstr "Der Router testet gerade, ob Ihr UDP-Port offen ist." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603 -msgid "" -"The router is not configured to publish its address, therefore it does not " -"expect incoming connections." -msgstr "" -"Die Einstellungen des Routers verhindern die Veröffentlichung der Adresse, " -"deswegen akzeptiert er keine eingehenden Verbindungen." +msgid "The router is not configured to publish its address, therefore it does not expect incoming connections." +msgstr "Die Einstellungen des Routers verhindern die Veröffentlichung der Adresse, deswegen akzeptiert er keine eingehenden Verbindungen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 msgid "WARN - Firewalled and Fast" msgstr "WARNUNG: Firewall aktiv und schnell" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 -msgid "" -"You have configured I2P to share more than 128KBps of bandwidth, but you are " -"firewalled." -msgstr "" -"Sie haben I2P angewiesen, mehr als 128 kbit/s Bandbreite zu teilen, aber " -"leider sind Sie hinter einer Firewall." +msgid "You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled." +msgstr "Sie haben I2P angewiesen, mehr als 128 kbit/s Bandbreite zu teilen, aber leider sind Sie hinter einer Firewall." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 -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 funktioniert zwar auch mit dieser Einstellung, falls Sie jedoch wirklich " -"über mehr als 128 kbit/s Bandbreite zum Teilen verfügen, sind Sie mit einer " -"offenen Firewall viel hilfreicher für das Netzwerk." +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 funktioniert zwar auch mit dieser Einstellung, falls Sie jedoch wirklich über mehr als 128 kbit/s Bandbreite zum Teilen verfügen, sind Sie mit einer offenen Firewall viel hilfreicher für das Netzwerk." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 msgid "WARN - Firewalled and Floodfill" msgstr "WARNUNG: Firewall und Floodfillfunktion aktiv" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 -msgid "" -"You have configured I2P to be a floodfill router, but you are firewalled." -msgstr "" -"Sie haben I2P als Floodfill-Router eingerichtet, jedoch sind sie hinter " -"einer Firewall." +msgid "You have configured I2P to be a floodfill router, but you are firewalled." +msgstr "Sie haben I2P als Floodfill-Router eingerichtet, jedoch sind sie hinter einer Firewall." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 -msgid "" -"For best participation as a floodfill router, you should open your firewall." -msgstr "" -"Für die beste Teilnahme als Floodfill-Router, sollten Sie Ihre Firewall " -"öffnen." +msgid "For best participation as a floodfill router, you should open your firewall." +msgstr "Für die beste Teilnahme als Floodfill-Router, sollten Sie Ihre Firewall öffnen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 msgid "WARN - Firewalled with Inbound TCP Enabled" msgstr "WARNUNG: von Firewall geblockt und ankommendes TCP aktiviert" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 -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 "" -"Sie haben eingehendes TCP konfiguriert, jedoch ist ihr UDP-Port hinter einer " -"Firewall. Deswegen ist es wahrscheinlich, dass Ihr TCP-Port auch hinter " -"einer Firewall ist." +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 "Sie haben eingehendes TCP konfiguriert, jedoch ist ihr UDP-Port hinter einer Firewall. Deswegen ist es wahrscheinlich, dass Ihr TCP-Port auch hinter einer Firewall ist." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 -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 "" -"Falls Ihr TCP Port gesperrt ist und Sie \"eingehendes TCP\" aktiviert haben, " -"werden andere Router Sie nicht via TCP erreichen können. Dies schadet dem " -"Netzwerk." +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 "Falls Ihr TCP Port gesperrt ist und Sie \"eingehendes TCP\" aktiviert haben, werden andere Router Sie nicht via TCP erreichen können. Dies schadet dem Netzwerk." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 msgid "Please open your firewall or disable inbound TCP above." -msgstr "" -"Bitte öffnen Sie Ihre Firewall oder schalten Sie ankommendes TCP oben aus" +msgstr "Bitte öffnen Sie Ihre Firewall oder schalten Sie ankommendes TCP oben aus" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 msgid "WARN - Firewalled with UDP Disabled" @@ -4757,12 +4544,8 @@ msgid "You have configured inbound TCP, however you have disabled UDP." msgstr "Sie haben eingehendes TCP aktiviert, jedoch UDP deaktiviert." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 -msgid "" -"You appear to be firewalled on TCP, therefore your router cannot accept " -"inbound connections." -msgstr "" -"Sie scheinen auf TCP eine Firewall zu haben, deswegen kann Ihr Router keine " -"eingehenden Verbindungen entgegennehmen." +msgid "You appear to be firewalled on TCP, therefore your router cannot accept inbound connections." +msgstr "Sie scheinen auf TCP eine Firewall zu haben, deswegen kann Ihr Router keine eingehenden Verbindungen entgegennehmen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:631 msgid "Please open your firewall or enable UDP." @@ -4773,12 +4556,8 @@ msgid "ERR - Clock Skew" msgstr "FEHLER: Uhr nicht synchron" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 -msgid "" -"Your system's clock is skewed, which will make it difficult to participate " -"in the network." -msgstr "" -"Ihre Uhrzeit ist nicht synchron mit dem Netzwerk, dies macht es schwierig, " -"am Netzwerk teilzunehmen." +msgid "Your system's clock is skewed, which will make it difficult to participate in the network." +msgstr "Ihre Uhrzeit ist nicht synchron mit dem Netzwerk, dies macht es schwierig, am Netzwerk teilzunehmen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:637 msgid "Correct your clock setting if this error persists." @@ -4789,17 +4568,12 @@ msgid "ERR - Private TCP Address" msgstr "FEHLER: Private TCP-Adresse" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 -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 "" -"Sie dürfen nie eine nicht routebare IP wie 127.0.0.1 oder 192.168.1.1 als " -"Ihre extern erreichbare Adresse angeben." +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 "Sie dürfen nie eine nicht routebare IP wie 127.0.0.1 oder 192.168.1.1 als Ihre extern erreichbare Adresse angeben." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 msgid "Correct the address or disable inbound TCP above." -msgstr "" -"Korrigieren Sie die Adresse oder deaktivieren Sie eingehendes TCP oben!" +msgstr "Korrigieren Sie die Adresse oder deaktivieren Sie eingehendes TCP oben!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 msgid "ERR - SymmetricNAT" @@ -4807,47 +4581,27 @@ msgstr "FEHLER: symmetrische NAT" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 msgid "I2P detected that you are firewalled by a Symmetric NAT." -msgstr "" -"I2P hat erkannt, dass Sie hinter einer symmetrischen NAT gesperrt sind." +msgstr "I2P hat erkannt, dass Sie hinter einer symmetrischen NAT gesperrt sind." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 -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 funktioniert hinter diesem Typ Firewall nicht gut. Sie können " -"wahrscheinlich keine eingehenden Verbindungen akzeptieren, was Ihre " -"Teilnahme am Netzwerk beeinträchtigt." +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 funktioniert hinter diesem Typ Firewall nicht gut. Sie können wahrscheinlich keine eingehenden Verbindungen akzeptieren, was Ihre Teilnahme am Netzwerk beeinträchtigt." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:651 -msgid "" -"ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config " -"and restart" -msgstr "" -"FEHLER: UDP-Port wird schon benutzt. Setzen Sie i2np.udp.internalPort=xxxx " -"in den erweiterten Einstellungen und starten Sie neu!" +msgid "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" +msgstr "FEHLER: UDP-Port wird schon benutzt. Setzen Sie i2np.udp.internalPort=xxxx in den erweiterten Einstellungen und starten Sie neu!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 msgid "I2P was unable to bind to port 8887 or other configured port." msgstr "I2P konnte sich nicht auf den konfigurierten Port binden." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:655 -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 "" -"Überprüfen Sie, ob ein anderes Programm den eingestellten Port benutzt. " -"Falls ja, beenden Sie dieses Programm oder wählen Sie einen anderen Port für " -"I2P!" +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 "Überprüfen Sie, ob ein anderes Programm den eingestellten Port benutzt. Falls ja, beenden Sie dieses Programm oder wählen Sie einen anderen Port für I2P!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:657 -msgid "" -"This may be a transient error, if the other program is no longer using the " -"port." -msgstr "" -"Dies kann ein vorübergehender Fehler sein, falls das andere Programm diesen " -"Port nicht mehr nutzt." +msgid "This may be a transient error, if the other program is no longer using the port." +msgstr "Dies kann ein vorübergehender Fehler sein, falls das andere Programm diesen Port nicht mehr nutzt." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:659 msgid "However, a restart is always required after this error." @@ -4855,16 +4609,11 @@ msgstr "Jedoch ist nach diesem Fehler immer ein Neustart erforderlich." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 msgid "ERR - UDP Disabled and Inbound TCP host/port not set" -msgstr "" -"FEHLER: UDP deaktiviert und eingehende TCP-Adresse/Port nicht konfiguriert" +msgstr "FEHLER: UDP deaktiviert und eingehende TCP-Adresse/Port nicht konfiguriert" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:663 -msgid "" -"You have not configured inbound TCP with a hostname and port above, however " -"you have disabled UDP." -msgstr "" -"Sie haben unter TCP eingehend keinen Hostnamen und Port eingetragen und " -"dennoch UDP deaktiviert." +msgid "You have not configured inbound TCP with a hostname and port above, however you have disabled UDP." +msgstr "Sie haben unter TCP eingehend keinen Hostnamen und Port eingetragen und dennoch UDP deaktiviert." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:665 msgid "Therefore your router cannot accept inbound connections." @@ -4872,9 +4621,7 @@ msgstr "Somit kann Ihr Router keine eigehenden Verbindungen akzeptieren." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:667 msgid "Please configure a TCP host and port above or enable UDP." -msgstr "" -"Bitte konfigurieren Sie eine Adresse und einen Port im oberen Bereich für " -"TCP oder aktivieren Sie UDP!" +msgstr "Bitte konfigurieren Sie eine Adresse und einen Port im oberen Bereich für TCP oder aktivieren Sie UDP!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:669 msgid "ERR - Client Manager I2CP Error - check logs" @@ -4882,17 +4629,11 @@ msgstr "FEHLER: Klientenmanager I2CP Fehler - Schauen Sie in die Berichte!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 msgid "This is usually due to a port 7654 conflict. Check the logs to verify." -msgstr "" -"Dies geschieht für gewöhnlich wegen eines Konflikts auf Port 7654. Prüfen " -"Sie die Berichte, um dies zu verifizieren!" +msgstr "Dies geschieht für gewöhnlich wegen eines Konflikts auf Port 7654. Prüfen Sie die Berichte, um dies zu verifizieren!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:673 -msgid "" -"Do you have another I2P instance running? Stop the conflicting program and " -"restart I2P." -msgstr "" -"Haben Sie eine zweite I2P-Instanz laufen? Beenden Sie das störende Programm " -"und starten Sie I2P neu!" +msgid "Do you have another I2P instance running? Stop the conflicting program and restart I2P." +msgstr "Haben Sie eine zweite I2P-Instanz laufen? Beenden Sie das störende Programm und starten Sie I2P neu!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:107 msgid "config advanced" @@ -4908,8 +4649,7 @@ msgstr "Erweiterte I2P-Einstellungen" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:311 msgid "Some changes may require a restart to take effect." -msgstr "" -"Einige Einstellungen benötigen einen Routerneustart, um aktiv zu werden." +msgstr "Einige Einstellungen benötigen einen Routerneustart, um aktiv zu werden." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:106 msgid "config clients" @@ -4924,12 +4664,9 @@ msgid "Client Configuration" msgstr "Klienten-Konfiguration" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:314 -msgid "" -"The Java clients listed below are started by the router and run in the same " -"JVM." +msgid "The Java clients listed below are started by the router and run in the same JVM." msgstr "" -"Die Java-Klienten unten werden durch den Router gestartet und laufen in " -"der \n" +"Die Java-Klienten unten werden durch den Router gestartet und laufen in der \n" "selben JVM." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:318 @@ -4960,9 +4697,7 @@ msgstr "Aktiviert, SSL erforderlich" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 msgid "Disabled - Clients outside this Java process may not connect" -msgstr "" -"Deaktiviert - Klienten außerhalb dieses Javaprozesses können sich nicht " -"verbinden" +msgstr "Deaktiviert - Klienten außerhalb dieses Javaprozesses können sich nicht verbinden" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:359 msgid "I2CP Port" @@ -4990,9 +4725,7 @@ msgstr "Passwort" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:397 msgid "Any changes made here must also be configured in the external client." -msgstr "" -"Alle hier vorgenommenen Änderungen müssen auch in den externen Klienten " -"vorgenommen werden." +msgstr "Alle hier vorgenommenen Änderungen müssen auch in den externen Klienten vorgenommen werden." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:399 msgid "Many clients do not support SSL or authorization." @@ -5003,32 +4736,12 @@ msgid "WebApp Configuration" msgstr "WebApp-Einstellungen" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 -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 "" -"Untengenannte Java-Anwendungen werden vom WebKonsolen-Klienten gestartet und " -"laufen in der selben JVM wie der Router. Es handelt sich dabei normalerweise " -"Web-Anwendungen, die über die Routerkonsole erreichbar sind. Es können " -"komplette Anwendungen (z.B. i2psnark), reine Oberflächen für andere " -"Klienten, Anwendungen, die separat aktiviert werden müssen (z.B. susidns, " -"i2ptunnel), oder Anwendungen ohne Oberfläche (Adressbuch) sein." +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 "Untengenannte Java-Anwendungen werden vom WebKonsolen-Klienten gestartet und laufen in der selben JVM wie der Router. Es handelt sich dabei normalerweise Web-Anwendungen, die über die Routerkonsole erreichbar sind. Es können komplette Anwendungen (z.B. i2psnark), reine Oberflächen für andere Klienten, Anwendungen, die separat aktiviert werden müssen (z.B. susidns, i2ptunnel), oder Anwendungen ohne Oberfläche (Adressbuch) sein." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:411 -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 "" -"Eine Webanwendung kann auch durch das Entfernen der .war-Datei deaktiviert " -"werden. Jedoch werden die .war-Datei und die Anwendung nach einer " -"Aktualisierung des Routers wieder erscheinen. Somit ist das Deaktivieren der " -"Web-Anwendung hier die bevorzugte Methode." +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 "Eine Webanwendung kann auch durch das Entfernen der .war-Datei deaktiviert werden. Jedoch werden die .war-Datei und die Anwendung nach einer Aktualisierung des Routers wieder erscheinen. Somit ist das Deaktivieren der Web-Anwendung hier die bevorzugte Methode." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:421 msgid "Plugin Configuration" @@ -5036,9 +4749,7 @@ msgstr "Konfiguration der Zusatzprogramme" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 msgid "The plugins listed below are started by the webConsole client." -msgstr "" -"Die unten aufgelisteten Zusatzprogramme werden vom WebKonsolen-Klienten " -"gestartet." +msgstr "Die unten aufgelisteten Zusatzprogramme werden vom WebKonsolen-Klienten gestartet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:429 msgid "Plugin Installation" @@ -5046,8 +4757,7 @@ msgstr "Installation von Zusatzprogrammen" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 msgid "To install a plugin, enter the download URL:" -msgstr "" -"Für die Installation eines Zusatzprogramms bitte die Download-URL eingeben:" +msgstr "Für die Installation eines Zusatzprogramms bitte die Download-URL eingeben:" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:106 msgid "config keyring" @@ -5059,16 +4769,11 @@ msgstr "Einstellungen des I2P-Schlüsselbunds" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:295 msgid "The router keyring is used to decrypt encrypted leaseSets." -msgstr "" -"Der Router-Schlüsselbund wird zum Entschlüsseln verschlüsselter LeaseSets " -"verwendet." +msgstr "Der Router-Schlüsselbund wird zum Entschlüsseln verschlüsselter LeaseSets verwendet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:298 -msgid "" -"The keyring may contain keys for local or remote encrypted destinations." -msgstr "" -"Der Schlüsselbund kann Schlüssel für lokale oder entfernte verschlüsselte " -"Leasesets enthalten." +msgid "The keyring may contain keys for local or remote encrypted destinations." +msgstr "Der Schlüsselbund kann Schlüssel für lokale oder entfernte verschlüsselte Leasesets enthalten." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:308 msgid "Manual Keyring Addition" @@ -5119,23 +4824,16 @@ msgid "Log record format" msgstr "Format der Berichtedatei" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 -msgid "" -"(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" -msgstr "" -"(Benutzen Sie 'd' = Datum, 'c' = Klasse, 't' = Thread, 'p' = Priorität, 'm' " -"= Nachricht)" +msgid "(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" +msgstr "(Benutzen Sie 'd' = Datum, 'c' = Klasse, 't' = Thread, 'p' = Priorität, 'm' = Nachricht)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:315 msgid "Log date format" msgstr "Datumsformat der Berichte" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 -msgid "" -"('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' " -"= millisecond)" -msgstr "" -"('MM' = Monat, 'dd' = Tag, 'HH' = Stunde, 'mm' = Minute, 'ss' = Sekunde, " -"'SSS' = Millisekunde)" +msgid "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)" +msgstr "('MM' = Monat, 'dd' = Tag, 'HH' = Stunde, 'mm' = Minute, 'ss' = Sekunde, 'SSS' = Millisekunde)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:321 msgid "Max log file size" @@ -5146,12 +4844,8 @@ msgid "Default log level" msgstr "Standardlevel für Berichte" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329 -msgid "" -"(DEBUG and INFO are not recommended defaults, as they will drastically slow " -"down your router)" -msgstr "" -"(DEBUG und INFO sind nicht empfohlen, da diese den Router drastisch " -"verlangsamen)" +msgid "(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)" +msgstr "(DEBUG und INFO sind nicht empfohlen, da diese den Router drastisch verlangsamen)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:331 msgid "Log level overrides" @@ -5182,28 +4876,16 @@ msgid "Manually Ban / Unban a Peer" msgstr "Einen Teilnehmer manuell sperren/entsperren" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:313 -msgid "" -"Banning will prevent the participation of this peer in tunnels you create." -msgstr "" -"Eine Sperrung verhindert, dass der Teilnehmer in von Ihnen aufgebauten " -"Tunneln partizipiert." +msgid "Banning will prevent the participation of this peer in tunnels you create." +msgstr "Eine Sperrung verhindert, dass der Teilnehmer in von Ihnen aufgebauten Tunneln partizipiert." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:323 msgid "Adjust Profile Bonuses" msgstr "Profilboni anpassen" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 -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 "" -"Boni können positiv oder negativ sein. Sie beeinflussen die Aufnahme der " -"Teilnehmer in die Klassen schneller Router und Router hoher Kapazität. " -"Schnelle Teilnehmer werden für Klienten-Tunnel genutzt, Teilnehmer mit hoher " -"Kapazität für einige Erkundungstunnel. Derzeitige Boni werden dargestellt " -"auf der " +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 "Boni können positiv oder negativ sein. Sie beeinflussen die Aufnahme der Teilnehmer in die Klassen schneller Router und Router hoher Kapazität. Schnelle Teilnehmer werden für Klienten-Tunnel genutzt, Teilnehmer mit hoher Kapazität für einige Erkundungstunnel. Derzeitige Boni werden dargestellt auf der " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:327 msgid "profiles page" @@ -5231,31 +4913,16 @@ msgid "Reseeding Configuration" msgstr "Reseed-Einstellungen" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:302 -msgid "" -"Reseeding is the bootstrapping process used to find other routers when you " -"first install I2P, or when your router has too few router references " -"remaining." -msgstr "" -"Der Reseed ist ein \"bootstrapping\"-Prozess, der das erstmalige Verbinden " -"mit dem Netzwerk ermöglicht. Hierbei werden andere Netzwerkteilnehmer " -"gefunden. Dies ist nötig nach der Installation oder wenn der Router aus " -"anderen Gründen nur noch sehr wenige Kontakte gespeichert hat." +msgid "Reseeding is the bootstrapping process used to find other routers when you first install I2P, or when your router has too few router references remaining." +msgstr "Der Reseed ist ein \"bootstrapping\"-Prozess, der das erstmalige Verbinden mit dem Netzwerk ermöglicht. Hierbei werden andere Netzwerkteilnehmer gefunden. Dies ist nötig nach der Installation oder wenn der Router aus anderen Gründen nur noch sehr wenige Kontakte gespeichert hat." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304 -msgid "" -"If reseeding has failed, you should first check your network connection." -msgstr "" -"Schlägt der Reseed fehl, solltest du zuallererst deine Internetverbindung " -"überprüfen." +msgid "If reseeding has failed, you should first check your network connection." +msgstr "Schlägt der Reseed fehl, solltest du zuallererst deine Internetverbindung überprüfen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:308 -msgid "" -"Change these only if HTTP is blocked by a restrictive firewall, reseed has " -"failed, and you have access to an HTTP proxy." -msgstr "" -"Ändere diese Einstellungen nur wenn HTTP von einer restriktiven Firewall " -"blockiert wird, der Reseed fehlschlägt, und dir ein HTTP-Proxy zur Verfügung " -"steht." +msgid "Change these only if HTTP is blocked by a restrictive firewall, reseed has failed, and you have access to an HTTP proxy." +msgstr "Ändere diese Einstellungen nur wenn HTTP von einer restriktiven Firewall blockiert wird, der Reseed fehlschlägt, und dir ein HTTP-Proxy zur Verfügung steht." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 #, java-format @@ -5311,79 +4978,44 @@ msgid "Shutdown the router" msgstr "Router herunterfahren" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:287 -msgid "" -"Graceful shutdown lets the router satisfy the agreements it has already made " -"before shutting down, but may take a few minutes." -msgstr "" -"Das kontrollierte Herunterfahren lässt dem Router Zeit, alle Zusagen, die er " -"gemacht hat, noch zu erfüllen. Dafür benötigt er bis zu 11 Minuten." +msgid "Graceful shutdown lets the router satisfy the agreements it has already made before shutting down, but may take a few minutes." +msgstr "Das kontrollierte Herunterfahren lässt dem Router Zeit, alle Zusagen, die er gemacht hat, noch zu erfüllen. Dafür benötigt er bis zu 11 Minuten." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:289 -msgid "" -"If you need to kill the router immediately, that option is available as well." -msgstr "" -"Es gibt auch eine Option zum sofortigen Beenden des Routers, falls Sie diese " -"benötigen." +msgid "If you need to kill the router immediately, that option is available as well." +msgstr "Es gibt auch eine Option zum sofortigen Beenden des Routers, falls Sie diese benötigen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:299 -msgid "" -"If you want the router to restart itself after shutting down, you can choose " -"one of the following." -msgstr "" -"Falls Sie den Router nach dem Herunterfahren automatisch wieder starten " -"lassen wollen, wählen Sie eine der folgenden Optionen aus." +msgid "If you want the router to restart itself after shutting down, you can choose one of the following." +msgstr "Falls Sie den Router nach dem Herunterfahren automatisch wieder starten lassen wollen, wählen Sie eine der folgenden Optionen aus." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:301 -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 "" -"Dies ist in manchen Situationen hilfreich - zum Beispiel wenn Sie einige " -"Optionen geändert haben, die die Klienten-Anwendung nur beim Starten " -"einliest (Routerkonsolen-Passwort oder das Interface auf dem es arbeitet)." +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 "Dies ist in manchen Situationen hilfreich - zum Beispiel wenn Sie einige Optionen geändert haben, die die Klienten-Anwendung nur beim Starten einliest (Routerkonsolen-Passwort oder das Interface auf dem es arbeitet)." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:303 -msgid "" -"A graceful restart will take a few minutes (but your peers will appreciate " -"your patience), while a hard restart does so immediately." -msgstr "" -"Ein kontrollierter Neustart benötigt bis zu 11 Minuten (Ihre Teilnehmer sind " -"für Ihre Geduld dankbar); ein harter Neustart erfolgt sofort." +msgid "A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately." +msgstr "Ein kontrollierter Neustart benötigt bis zu 11 Minuten (Ihre Teilnehmer sind für Ihre Geduld dankbar); ein harter Neustart erfolgt sofort." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 -msgid "" -"After tearing down the router, it will wait 1 minute before starting back up " -"again." -msgstr "" -"Nachdem der Router heruntergefahren ist, wartet er eine Minute, bevor er " -"wieder startet." +msgid "After tearing down the router, it will wait 1 minute before starting back up again." +msgstr "Nachdem der Router heruntergefahren ist, wartet er eine Minute, bevor er wieder startet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:315 msgid "Systray integration" msgstr "Systemtray-Integration" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 -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 "" -"Auf Windows-Systemen gibt es eine kleine Anwendung, die es Ihnen ermöglicht, " -"den Routerstatus im Systemtray zu sehen." +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 "Auf Windows-Systemen gibt es eine kleine Anwendung, die es Ihnen ermöglicht, den Routerstatus im Systemtray zu sehen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 -msgid "" -"(later on, I2P client applications will be able to integrate their own " -"functionality into the system tray as well)." -msgstr "" -"(Später werden I2P-Anwendungen auch ihre eigenen Funktionen in den " -"Systemtray integrieren können)" +msgid "(later on, I2P client applications will be able to integrate their own functionality into the system tray as well)." +msgstr "(Später werden I2P-Anwendungen auch ihre eigenen Funktionen in den Systemtray integrieren können)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 msgid "If you are on windows, you can either enable or disable that icon here." -msgstr "" -"Falls Sie Windows nutzen, können Sie hier dieses Symbol aktiveren oder " -"deaktivieren." +msgstr "Falls Sie Windows nutzen, können Sie hier dieses Symbol aktiveren oder deaktivieren." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 msgid "Show systray icon" @@ -5398,35 +5030,20 @@ msgid "Run on startup" msgstr "Beim Hochfahren starten" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:329 -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 "" -"Sie können mit folgenden Optionen festlegen, ob I2P beim Hochfahren " -"gestartet wird oder nicht - I2P wird dementsprechend einen Service " -"einrichten (oder ggf. entfernen)." +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 "Sie können mit folgenden Optionen festlegen, ob I2P beim Hochfahren gestartet wird oder nicht - I2P wird dementsprechend einen Service einrichten (oder ggf. entfernen)." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:331 msgid "If you prefer the command line, you can also run the " -msgstr "" -"Falls Sie die Eingabeaufforderung bevorzugen, können Sie auch folgendes " -"ausführen" +msgstr "Falls Sie die Eingabeaufforderung bevorzugen, können Sie auch folgendes ausführen" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 -msgid "" -"If you are running I2P as service right now, removing it will shut down your " -"router immediately." -msgstr "" -"Falls Sie I2P zurzeit als Service gestartet haben, wird ein Entfernen des " -"Services den Router sofort beenden." +msgid "If you are running I2P as service right now, removing it will shut down your router immediately." +msgstr "Falls Sie I2P zurzeit als Service gestartet haben, wird ein Entfernen des Services den Router sofort beenden." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:343 -msgid "" -"You may want to consider shutting down gracefully, as above, then running " -"uninstall_i2p_service_winnt.bat." -msgstr "" -"Sie sollten I2P, wie oben beschrieben, kontrolliert herunterfahren und dann " -"uninstall_i2p_service_winnt.bat ausführen." +msgid "You may want to consider shutting down gracefully, as above, then running uninstall_i2p_service_winnt.bat." +msgstr "Sie sollten I2P, wie oben beschrieben, kontrolliert herunterfahren und dann uninstall_i2p_service_winnt.bat ausführen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 msgid "Debugging" @@ -5437,28 +5054,16 @@ msgid "View the job queue" msgstr "Die Auftragswarteschlange ansehen" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 -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 "" -"Manchmal ist es zur Fehlerbeseitigung in I2P hilfreich, eine Liste der " -"aktiven Prozesse zu erzeugen. Dafür wählen Sie bitte folgende Option aus und " -"überprüfen die Liste der aktiven Prozesse in der wrapper.log Datei!" +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 "Manchmal ist es zur Fehlerbeseitigung in I2P hilfreich, eine Liste der aktiven Prozesse zu erzeugen. Dafür wählen Sie bitte folgende Option aus und überprüfen die Liste der aktiven Prozesse in der wrapper.log Datei!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 msgid "Launch browser on router startup?" msgstr "Beim Starten einen Browser aufrufen?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:361 -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 "" -"Die Web-Konsole ist I2Ps wichtigstes Interface für Einstellungen. I2P kann " -"für Sie beim Starten einen Browser öffnen und die Routerkonsole anzeigen, " -"unter" +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 "Die Web-Konsole ist I2Ps wichtigstes Interface für Einstellungen. I2P kann für Sie beim Starten einen Browser öffnen und die Routerkonsole anzeigen, unter" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:107 msgid "config stats" @@ -5519,47 +5124,31 @@ msgstr "Die Standardeinstellungen funktionieren für die meisten." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:310 msgid "There is a fundamental tradeoff between anonymity and performance." -msgstr "" -"Es gibt einen grundsätzlichen Kompromiss zwischen Anonymität und Performance." +msgstr "Es gibt einen grundsätzlichen Kompromiss zwischen Anonymität und Performance." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:313 -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 "" -"Tunnel mit mehr als 3 Zwischenstationen (z.B. 2+0-2, 3+0-1 oder 3+0-2) oder " -"eine große Anzahl an Tunneln + Ersatztunneln kann die Performance oder " -"Zuverlässigkeit erheblich verringern." +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 "Tunnel mit mehr als 3 Zwischenstationen (z.B. 2+0-2, 3+0-1 oder 3+0-2) oder eine große Anzahl an Tunneln + Ersatztunneln kann die Performance oder Zuverlässigkeit erheblich verringern." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:316 msgid "High CPU and/or high outbound bandwidth usage may result." -msgstr "" -"Eine hohe CPU-Last und/oder hohe ausgehende Bandbreite können die Folge sein." +msgstr "Eine hohe CPU-Last und/oder hohe ausgehende Bandbreite können die Folge sein." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:319 msgid "Change these settings with care, and adjust them if you have problems." -msgstr "" -"Ändern Sie diese Einstellungen nur, wenn Sie Probleme haben, und stets mit " -"besonderer Vorsicht!" +msgstr "Ändern Sie diese Einstellungen nur, wenn Sie Probleme haben, und stets mit besonderer Vorsicht!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:333 -msgid "" -"Exploratory tunnel setting changes are stored in the router.config file." -msgstr "" -"Einstellungen der Erkundungstunnel sind in der Datei router.config " -"gespeichert." +msgid "Exploratory tunnel setting changes are stored in the router.config file." +msgstr "Einstellungen der Erkundungstunnel sind in der Datei router.config gespeichert." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:336 msgid "Client tunnel changes are temporary and are not saved." -msgstr "" -"Änderungen an den Kliententunneln sind nur temporär und werden nicht " -"gespeichert." +msgstr "Änderungen an den Kliententunneln sind nur temporär und werden nicht gespeichert." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:338 msgid "To make permanent client tunnel changes see the" -msgstr "" -"Um permanente Änderungen an den Kliententunneln zu machen, gehen Sie auf die " +msgstr "Um permanente Änderungen an den Kliententunneln zu machen, gehen Sie auf die " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:340 msgid "i2ptunnel page" @@ -5582,24 +5171,15 @@ msgid "Theme selection disabled for Internet Explorer, sorry." msgstr "Themenauswahl für den Internet Explorer ist ausgeschaltet, bedauere." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:312 -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 "" -"Falls Sie nicht den Internet Explorer (IE) benutzen, gibt Ihr Browser " -"wahrscheinlich vor, IE zu sein. Wenn Sie die Konsolenthemen nutzen möchten, " -"ändern Sie bitte Ihren Browser (oder Proxy) so, dass er einen anderen User-" -"Agenten sendet!" +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 "Falls Sie nicht den Internet Explorer (IE) benutzen, gibt Ihr Browser wahrscheinlich vor, IE zu sein. Wenn Sie die Konsolenthemen nutzen möchten, ändern Sie bitte Ihren Browser (oder Proxy) so, dass er einen anderen User-Agenten sendet!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:316 msgid "Router Console Language" msgstr "Sprache der Routerkonsole" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:320 -msgid "" -"Please contribute to the router console translation project! Contact the " -"developers on IRC #i2p to help." +msgid "Please contribute to the router console translation project! Contact the developers on IRC #i2p to help." msgstr "" "Bitte tragen Sie zum Routerkonsolen-Übersetzungsprojekt bei! Kontaktieren \n" "Sie hierzu die Entwickler über den IRC-Kanal #i2p!" @@ -5669,12 +5249,8 @@ msgid "Unsigned Build URL" msgstr "URL für nicht signierte Aktualisierungen" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 -msgid "" -"I2P updates are disabled because you do not have write permission for the " -"install directory." -msgstr "" -"Aktualisierungen für I2P sind deaktiviert, da Sie (I2P) keine " -"Schreibberechtigung im Installationsverzeichnis haben." +msgid "I2P updates are disabled because you do not have write permission for the install directory." +msgstr "Aktualisierungen für I2P sind deaktiviert, da Sie (I2P) keine Schreibberechtigung im Installationsverzeichnis haben." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:367 msgid "Save" @@ -5705,12 +5281,8 @@ msgstr "Bitte melden Sie Fehler unter {0} oder {1}!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:137 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 -msgid "" -"You may use the username \"guest\" and password \"guest\" if you do not wish " -"to register." -msgstr "" -"Sie können hierfür den Benutzernamen \"guest\" und das Passwort \"guest\" " -"verwenden, wenn Sie sich nicht registrieren wollen." +msgid "You may use the username \"guest\" and password \"guest\" if you do not wish to register." +msgstr "Sie können hierfür den Benutzernamen \"guest\" und das Passwort \"guest\" verwenden, wenn Sie sich nicht registrieren wollen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 @@ -5733,22 +5305,15 @@ msgstr "I2P-Version & Laufzeitumgebung" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 -msgid "" -"Note that system information, log timestamps, and log messages may provide " -"clues to your location; please review everything you include in a bug report." -msgstr "" -"Beachten Sie, dass Systeminformationen, Zeitstempel der Berichte sowie die " -"Fehlerberichte selbst Hinweise auf Ihren Standort enthalten können. Bitte " -"überprüfen Sie Fehlerberichte, die Sie einreichen wollen, diesbezüglich!" +msgid "Note that system information, log timestamps, and log messages may provide clues to your location; please review everything you include in a bug report." +msgstr "Beachten Sie, dass Systeminformationen, Zeitstempel der Berichte sowie die Fehlerberichte selbst Hinweise auf Ihren Standort enthalten können. Bitte überprüfen Sie Fehlerberichte, die Sie einreichen wollen, diesbezüglich!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:117 msgid "Page Not Found" msgstr "Seite nicht gefunden" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:242 -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 "" "Bedaure. Anscheinend haben Sie eine nicht vorhandene Routerkonsolenseite\n" "oder -Ressource angefordert." @@ -5822,12 +5387,8 @@ msgid "The requested web application is not running." msgstr "Die angeforderte Web-Anwendung ist nicht aktiv." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:234 -msgid "" -"Please visit the config clients page to start it." -msgstr "" -"Bitte besuchen Sie die Klienten-" -"Konfigurations Seite, um diese zu starten." +msgid "Please visit the config clients page to start it." +msgstr "Bitte besuchen Sie die Klienten-Konfigurations Seite, um diese zu starten." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:105 msgid "peer connections" @@ -5876,97 +5437,70 @@ msgstr "I2P-Tunnel Zusammenfassung" #~ "\">Berichte, und wenn gar nichts hilft, lesen Sie die FAQ über das manuelle " #~ "Reseeden." - #~ msgid "System tray icon enabled." #~ msgstr "Systemtray-Icon aktiviert" - #~ msgid "System tray icon feature not supported on this platform. Sorry!" #~ msgstr "Systemtry-Icon wird auf diesem System leider nicht unterstützt." - #~ msgid "Warning: unable to contact the systray manager" #~ msgstr "Warnung: kann den Systemtray-Manager nicht erreichen" - #~ msgid "System tray icon disabled." #~ msgstr "Systemtry-Icon deaktiviert" - #~ msgid "hour" #~ msgstr "Stunde" - #~ msgid "minute" #~ msgstr "Minute" - #~ msgid "minutes" #~ msgstr "Minuten" - #~ msgid "Last reseed failed fully (failed reading seed URL)." #~ msgstr "" #~ "Letztes Reseed komplett gescheitert (konnte die Seed-URL nicht lesen)." - #~ msgid "Last reseed failed fully (no routerInfo URLs at seed URL)." #~ msgstr "" #~ "Letztes Reseed komplett gescheitert (keine RouterInfo-URLs unter der Seed-" #~ "URL)." - #~ msgid "Last reseed failed partly ({0}% of {1})." #~ msgstr "Letzes Reseed teilweise gescheitert ({0}% von {1})." - #~ msgid "Last reseed failed ({0}% of {1})." #~ msgstr "Letzes Reseed gescheitert ({0}% von {1})." - #~ msgid "Last reseed failed fully (exception caught)." #~ msgstr "Letzes Reseed gescheitert (Fehler aufgetreten)." - #~ msgid "" #~ "Please report bugs on trac." #~ "i2p2.i2p." #~ msgstr "" #~ "Bitte berichten Sie über Fehler auf trac.i2p2.i2p!" - #~ msgid "avg value" #~ msgstr "Durchschnitt" - #~ msgid "events" #~ msgstr "Ereignisse" - #~ msgid "lifetime average" #~ msgstr "Mittelwert seit Start" - #~ msgid "peak average" #~ msgstr "Mittelwert der Maximalwerte" - #~ msgid "" #~ "WebApp configuration saved successfully - restart required to take effect." #~ msgstr "" #~ "WebApplikationseinstellungen erfolgreich gespeichert - Neustart zum " #~ "Übernehmen erforderlich" - #~ msgid "Start Now" #~ msgstr "Starte jetzt" - #~ msgid "tunnels" #~ msgstr "Tunnel" - #~ msgid "Depth" #~ msgstr "Tiefe" - #~ msgid "Show the router's workload, and how it's performing" #~ msgstr "Zeige die Aktivitäten des Routers und wie performant dieser ist" - #~ msgid "Jobs" #~ msgstr "Aufgaben" - #~ msgid "Tunnels in/out" #~ msgstr "Tunnels ein- / ausgehend" - #~ msgid "Expl. + Client" #~ msgstr "Erkundungs + Klienten" - #~ msgid "Part. from + to" #~ msgstr "Teilnehmend von + zu" - #~ msgid "This is useful in some situations" #~ msgstr "Dies ist Sinnvoll in manchen Situationen" - #~ msgid "I2P will install (or remove) a service accordingly." #~ msgstr "I2P wird demzuolge einen Service installieren (oder entfernen)." + From f9b2c0bc63b986a8c1fff8f2f078a34d92d9d021 Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 8 Mar 2011 03:01:02 +0000 Subject: [PATCH 277/463] * i2psnark: - More efficient metainfo handling, reduce instantiations - Improved handling of storage errors - Improved handling of duplicate file names - More metainfo sanity checks - Metadata transfer error handling improvements - Code cleanup, remove dead and duplicated code --- .../java/src/org/klomp/snark/MagnetState.java | 11 +- .../java/src/org/klomp/snark/MetaInfo.java | 161 +++++++++---- .../src/org/klomp/snark/PeerCoordinator.java | 18 +- .../java/src/org/klomp/snark/Snark.java | 10 +- .../src/org/klomp/snark/SnarkManager.java | 4 + .../java/src/org/klomp/snark/Storage.java | 225 +++++++++--------- .../src/org/klomp/snark/bencode/BDecoder.java | 49 ++-- .../org/klomp/snark/web/I2PSnarkServlet.java | 8 +- 8 files changed, 286 insertions(+), 200 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/MagnetState.java b/apps/i2psnark/java/src/org/klomp/snark/MagnetState.java index f19f1091a..da89f5577 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/MagnetState.java +++ b/apps/i2psnark/java/src/org/klomp/snark/MagnetState.java @@ -191,14 +191,21 @@ class MagnetState { */ public MetaInfo buildMetaInfo() throws Exception { // top map has nothing in it but the info map (no announce) - Map map = new HashMap(); + Map map = new HashMap(); InputStream is = new ByteArrayInputStream(metainfoBytes); BDecoder dec = new BDecoder(is); BEValue bev = dec.bdecodeMap(); map.put("info", bev); MetaInfo newmeta = new MetaInfo(map); - if (!DataHelper.eq(newmeta.getInfoHash(), infohash)) + if (!DataHelper.eq(newmeta.getInfoHash(), infohash)) { + // Disaster. Start over. ExtensionHandler will catch + // the IOE and disconnect the peer, hopefully we will + // find a new peer. + // TODO: Count fails and give up eventually + have = new BitField(totalChunks); + requested = new BitField(totalChunks); throw new IOException("info hash mismatch"); + } return newmeta; } } diff --git a/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java b/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java index 3e13c7a42..5889db89e 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java +++ b/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java @@ -20,6 +20,7 @@ package org.klomp.snark; +import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.security.MessageDigest; @@ -34,6 +35,7 @@ import java.util.Map; import net.i2p.I2PAppContext; import net.i2p.crypto.SHA1; import net.i2p.data.Base64; +import net.i2p.data.DataHelper; import net.i2p.util.Log; import org.klomp.snark.bencode.BDecoder; @@ -82,6 +84,12 @@ public class MetaInfo this.piece_hashes = piece_hashes; this.length = length; + // TODO if we add a parameter for other keys + //if (other != null) { + // otherInfo = new HashMap(2); + // otherInfo.putAll(other); + //} + this.info_hash = calculateInfoHash(); //infoMap = null; } @@ -101,10 +109,14 @@ public class MetaInfo * Creates a new MetaInfo from the given BDecoder. The BDecoder * must have a complete dictionary describing the torrent. */ - public MetaInfo(BDecoder be) throws IOException + private MetaInfo(BDecoder be) throws IOException { // Note that evaluation order matters here... this(be.bdecodeMap().getMap()); + byte[] origInfohash = be.get_special_map_digest(); + // shouldn't ever happen + if (!DataHelper.eq(origInfohash, info_hash)) + throw new InvalidBEncodingException("Infohash mismatch, please report"); } /** @@ -116,11 +128,11 @@ public class MetaInfo * WILL throw a InvalidBEncodingException if the given map does not * contain a valid info dictionary. */ - public MetaInfo(Map m) throws InvalidBEncodingException + public MetaInfo(Map m) throws InvalidBEncodingException { if (_log.shouldLog(Log.DEBUG)) _log.debug("Creating a metaInfo: " + m, new Exception("source")); - BEValue val = (BEValue)m.get("announce"); + BEValue val = m.get("announce"); // Disabled check, we can get info from a magnet now if (val == null) { //throw new InvalidBEncodingException("Missing announce string"); @@ -129,34 +141,37 @@ public class MetaInfo this.announce = val.getString(); } - val = (BEValue)m.get("info"); + val = m.get("info"); if (val == null) throw new InvalidBEncodingException("Missing info map"); - Map info = val.getMap(); + Map info = val.getMap(); infoMap = Collections.unmodifiableMap(info); - val = (BEValue)info.get("name"); + val = info.get("name"); if (val == null) throw new InvalidBEncodingException("Missing name string"); name = val.getString(); + // We could silently replace the '/', but that messes up the info hash, so just throw instead. + if (name.indexOf('/') >= 0) + throw new InvalidBEncodingException("Invalid name containing '/' " + name); - val = (BEValue)info.get("name.utf-8"); + val = info.get("name.utf-8"); if (val != null) name_utf8 = val.getString(); else name_utf8 = null; - val = (BEValue)info.get("piece length"); + val = info.get("piece length"); if (val == null) throw new InvalidBEncodingException("Missing piece length number"); piece_length = val.getInt(); - val = (BEValue)info.get("pieces"); + val = info.get("pieces"); if (val == null) throw new InvalidBEncodingException("Missing piece bytes"); piece_hashes = val.getBytes(); - val = (BEValue)info.get("length"); + val = info.get("length"); if (val != null) { // Single file case. @@ -168,7 +183,7 @@ public class MetaInfo else { // Multi file case. - val = (BEValue)info.get("files"); + val = info.get("files"); if (val == null) throw new InvalidBEncodingException ("Missing length number and/or files list"); @@ -189,8 +204,14 @@ public class MetaInfo if (val == null) throw new InvalidBEncodingException("Missing length number"); long len = val.getLong(); + if (len < 0) + throw new InvalidBEncodingException("Negative file length"); m_lengths.add(Long.valueOf(len)); + // check for overflowing the long + long oldTotal = l; l += len; + if (l < oldTotal) + throw new InvalidBEncodingException("Huge total length"); val = (BEValue)desc.get("path"); if (val == null) @@ -202,8 +223,19 @@ public class MetaInfo List file = new ArrayList(path_length); Iterator it = path_list.iterator(); - while (it.hasNext()) - file.add(it.next().getString()); + while (it.hasNext()) { + String s = it.next().getString(); + // We could throw an IBEE, but just silently replace instead. + if (s.indexOf('/') >= 0) + s = s.replace("/", "_"); + file.add(s); + } + + // quick dup check - case sensitive, etc. - Storage does a better job + for (int j = 0; j < i; j++) { + if (file.equals(m_files.get(j))) + throw new InvalidBEncodingException("Duplicate file path " + DataHelper.toString(file)); + } m_files.add(Collections.unmodifiableList(file)); @@ -229,6 +261,28 @@ public class MetaInfo info_hash = calculateInfoHash(); } + /** + * Efficiently returns the name and the 20 byte SHA1 hash of the info dictionary in a torrent file + * Caller must close stream. + * + * @param infoHashOut 20-byte out parameter + * @since 0.8.5 + */ + public static String getNameAndInfoHash(InputStream in, byte[] infoHashOut) throws IOException { + BDecoder bd = new BDecoder(in); + Map m = bd.bdecodeMap().getMap(); + BEValue ibev = m.get("info"); + if (ibev == null) + throw new InvalidBEncodingException("Missing info map"); + Map i = ibev.getMap(); + BEValue rvbev = i.get("name"); + if (rvbev == null) + throw new InvalidBEncodingException("Missing name"); + byte[] h = bd.get_special_map_digest(); + System.arraycopy(h, 0, infoHashOut, 0, 20); + return rvbev.getString(); + } + /** * Returns the string representing the URL of the tracker for this torrent. * @return may be null! @@ -318,11 +372,13 @@ public class MetaInfo */ public boolean checkPiece(int piece, byte[] bs, int off, int length) { - if (true) + //if (true) return fast_checkPiece(piece, bs, off, length); - else - return orig_checkPiece(piece, bs, off, length); + //else + // return orig_checkPiece(piece, bs, off, length); } + +/**** private boolean orig_checkPiece(int piece, byte[] bs, int off, int length) { // Check digest MessageDigest sha1; @@ -342,6 +398,7 @@ public class MetaInfo return false; return true; } +****/ private boolean fast_checkPiece(int piece, byte[] bs, int off, int length) { SHA1 sha1 = new SHA1(); @@ -365,7 +422,7 @@ public class MetaInfo @Override public String toString() { - return "MetaInfo[info_hash='" + hexencode(info_hash) + return "MetaInfo[info_hash='" + I2PSnarkUtil.toHex(info_hash) + "', announce='" + announce + "', name='" + name + "', files=" + files @@ -375,23 +432,6 @@ public class MetaInfo + "']"; } - /** - * Encode a byte array as a hex encoded string. - */ - private static String hexencode(byte[] bs) - { - StringBuilder sb = new StringBuilder(bs.length*2); - for (int i = 0; i < bs.length; i++) - { - int c = bs[i] & 0xFF; - if (c < 16) - sb.append('0'); - sb.append(Integer.toHexString(c)); - } - - return sb.toString(); - } - /** * Creates a copy of this MetaInfo that shares everything except the * announce URL. @@ -427,7 +467,8 @@ public class MetaInfo /** @return an unmodifiable view of the Map */ private Map createInfoMap() { - // if we loaded this metainfo from a file, we have the map + // If we loaded this metainfo from a file, we have the map, and we must use it + // or else we will lose any non-standard keys and corrupt the infohash. if (infoMap != null) return Collections.unmodifiableMap(infoMap); // otherwise we must create it @@ -453,27 +494,29 @@ public class MetaInfo } info.put("files", l); } + + // TODO if we add the ability for other keys in the first constructor + //if (otherInfo != null) + // info.putAll(otherInfo); + infoMap = info; return Collections.unmodifiableMap(infoMap); } private byte[] calculateInfoHash() { - Map info = createInfoMap(); - StringBuilder buf = new StringBuilder(128); - buf.append("info: "); - for (Iterator iter = info.entrySet().iterator(); iter.hasNext(); ) { - Map.Entry entry = (Map.Entry)iter.next(); - String key = (String)entry.getKey(); - Object val = entry.getValue(); - buf.append(key).append('='); - if (val instanceof byte[]) - buf.append(Base64.encode((byte[])val, true)); - else + Map info = createInfoMap(); + if (_log.shouldLog(Log.DEBUG)) { + StringBuilder buf = new StringBuilder(128); + buf.append("info: "); + for (Map.Entry entry : info.entrySet()) { + String key = entry.getKey(); + Object val = entry.getValue(); + buf.append(key).append('='); buf.append(val.toString()); - } - if (_log.shouldLog(Log.DEBUG)) + } _log.debug(buf.toString()); + } byte[] infoBytes = BEncoder.bencode(info); //_log.debug("info bencoded: [" + Base64.encode(infoBytes, true) + "]"); try @@ -481,7 +524,7 @@ public class MetaInfo MessageDigest digest = MessageDigest.getInstance("SHA"); byte hash[] = digest.digest(infoBytes); if (_log.shouldLog(Log.DEBUG)) - _log.debug("info hash: [" + net.i2p.data.Base64.encode(hash) + "]"); + _log.debug("info hash: " + I2PSnarkUtil.toHex(hash)); return hash; } catch(NoSuchAlgorithmException nsa) @@ -490,5 +533,23 @@ public class MetaInfo } } - + /** @since 0.8.5 */ + public static void main(String[] args) { + if (args.length <= 0) { + System.err.println("Usage: MetaInfo files..."); + return; + } + for (int i = 0; i < args.length; i++) { + InputStream in = null; + try { + in = new FileInputStream(args[i]); + MetaInfo meta = new MetaInfo(in); + System.out.println(args[i] + " InfoHash: " + I2PSnarkUtil.toHex(meta.getInfoHash())); + } catch (IOException ioe) { + System.err.println("Error in file " + args[i] + ": " + ioe); + } finally { + try { if (in != null) in.close(); } catch (IOException ioe) {} + } + } + } } diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java index cdf1e58b5..3aec9394c 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java @@ -783,6 +783,8 @@ public class PeerCoordinator implements PeerListener /** * Returns a byte array containing the requested piece or null of * the piece is unknown. + * + * @throws RuntimeException on IOE getting the data */ public byte[] gotRequest(Peer peer, int piece, int off, int len) { @@ -798,8 +800,11 @@ public class PeerCoordinator implements PeerListener catch (IOException ioe) { snark.stopTorrent(); - _log.error("Error reading the storage for " + metainfo.getName(), ioe); - throw new RuntimeException("B0rked"); + String msg = "Error reading the storage (piece " + piece + ") for " + metainfo.getName() + ": " + ioe; + _log.error(msg, ioe); + SnarkManager.instance().addMessage(msg); + SnarkManager.instance().addMessage("Fatal storage error: Stopping torrent " + metainfo.getName()); + throw new RuntimeException(msg, ioe); } } @@ -829,6 +834,8 @@ public class PeerCoordinator implements PeerListener * Returns false if the piece is no good (according to the hash). * In that case the peer that supplied the piece should probably be * blacklisted. + * + * @throws RuntimeException on IOE saving the piece */ public boolean gotPiece(Peer peer, int piece, byte[] bs) { @@ -872,8 +879,11 @@ public class PeerCoordinator implements PeerListener catch (IOException ioe) { snark.stopTorrent(); - _log.error("Error writing storage for " + metainfo.getName(), ioe); - throw new RuntimeException("B0rked"); + String msg = "Error writing storage (piece " + piece + ") for " + metainfo.getName() + ": " + ioe; + _log.error(msg, ioe); + SnarkManager.instance().addMessage(msg); + SnarkManager.instance().addMessage("Fatal storage error: Stopping torrent " + metainfo.getName()); + throw new RuntimeException(msg, ioe); } wantedPieces.remove(p); } diff --git a/apps/i2psnark/java/src/org/klomp/snark/Snark.java b/apps/i2psnark/java/src/org/klomp/snark/Snark.java index 1908a1193..c43679ed3 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Snark.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Snark.java @@ -40,8 +40,6 @@ import net.i2p.client.streaming.I2PServerSocket; import net.i2p.data.Destination; import net.i2p.util.I2PThread; -import org.klomp.snark.bencode.BDecoder; - /** * Main Snark program startup class. * @@ -360,7 +358,7 @@ public class Snark in = new FileInputStream(torrentFile); } } - meta = new MetaInfo(new BDecoder(in)); + meta = new MetaInfo(in); infoHash = meta.getInfoHash(); } catch(IOException ioe) @@ -589,7 +587,7 @@ public class Snark pc.halt(); Storage st = storage; if (st != null) { - boolean changed = storage.changed; + boolean changed = storage.isChanged(); try { storage.close(); } catch (IOException ioe) { @@ -1013,7 +1011,7 @@ public class Snark //if (debug >= INFO && t != null) // t.printStackTrace(); stopTorrent(); - throw new RuntimeException(s + (t == null ? "" : ": " + t)); + throw new RuntimeException(s, t); } /** @@ -1111,7 +1109,7 @@ public class Snark allChecked = true; checking = false; - if (storage.changed && completeListener != null) + if (storage.isChanged() && completeListener != null) completeListener.updateStatus(this); } diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index e47ffcc0c..365eb14b3 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -572,6 +572,9 @@ public class SnarkManager implements Snark.CompleteListener { } try { + // This is somewhat wasteful as this metainfo is thrown away, + // the real one is created in the Snark constructor. + // TODO: Make a Snark constructor where we pass the MetaInfo in as a parameter. MetaInfo info = new MetaInfo(fis); try { fis.close(); @@ -622,6 +625,7 @@ public class SnarkManager implements Snark.CompleteListener { return; } catch (OutOfMemoryError oom) { addMessage(_("ERROR - Out of memory, cannot create torrent from {0}", sfile.getName()) + ": " + oom.getMessage()); + return; } finally { if (fis != null) try { fis.close(); } catch (IOException ioe) {} } diff --git a/apps/i2psnark/java/src/org/klomp/snark/Storage.java b/apps/i2psnark/java/src/org/klomp/snark/Storage.java index dfc229dce..f9d93ca07 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Storage.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Storage.java @@ -53,10 +53,10 @@ public class Storage private int needed; // Number of pieces needed private boolean _probablyComplete; // use this to decide whether to open files RO - // XXX - Not always set correctly - int piece_size; - int pieces; - boolean changed; + private final int piece_size; + private final int pieces; + private final long total_length; + private boolean changed; /** The default piece size. */ private static final int MIN_PIECE_SIZE = 256*1024; @@ -81,6 +81,9 @@ public class Storage needed = metainfo.getPieces(); _probablyComplete = false; bitfield = new BitField(needed); + piece_size = metainfo.getPieceLength(0); + pieces = needed; + total_length = metainfo.getTotalLength(); } /** @@ -108,17 +111,17 @@ public class Storage lengthsList.add(Long.valueOf(length)); } - piece_size = MIN_PIECE_SIZE; - pieces = (int) ((total - 1)/piece_size) + 1; - while (pieces > MAX_PIECES && piece_size < MAX_PIECE_SIZE) + int pc_size = MIN_PIECE_SIZE; + int pcs = (int) ((total - 1)/pc_size) + 1; + while (pcs > MAX_PIECES && pc_size < MAX_PIECE_SIZE) { - piece_size = piece_size*2; - pieces = (int) ((total - 1)/piece_size) +1; + pc_size *= 2; + pcs = (int) ((total - 1)/pc_size) +1; } + piece_size = pc_size; + pieces = pcs; + total_length = total; - // Note that piece_hashes and the bitfield will be filled after - // the MetaInfo is created. - byte[] piece_hashes = new byte[20*pieces]; bitfield = new BitField(pieces); needed = 0; @@ -142,69 +145,26 @@ public class Storage lengthsList = null; } - // Note that the piece_hashes are not correctly setup yet. + byte[] piece_hashes = fast_digestCreate(); metainfo = new MetaInfo(announce, baseFile.getName(), null, files, lengthsList, piece_size, piece_hashes, total); } - // Creates piece hashes for a new storage. - // This does NOT create the files, just the hashes - public void create() throws IOException - { -// if (true) { - fast_digestCreate(); -// } else { -// orig_digestCreate(); -// } - } - -/* - private void orig_digestCreate() throws IOException { - // Calculate piece_hashes - MessageDigest digest = null; - try - { - digest = MessageDigest.getInstance("SHA"); - } - catch(NoSuchAlgorithmException nsa) - { - throw new InternalError(nsa.toString()); - } - - byte[] piece_hashes = metainfo.getPieceHashes(); - - byte[] piece = new byte[piece_size]; - for (int i = 0; i < pieces; i++) - { - int length = getUncheckedPiece(i, piece); - digest.update(piece, 0, length); - byte[] hash = digest.digest(); - for (int j = 0; j < 20; j++) - piece_hashes[20 * i + j] = hash[j]; - - bitfield.set(i); - - if (listener != null) - listener.storageChecked(this, i, true); - } - - if (listener != null) - listener.storageAllChecked(this); - - // Reannounce to force recalculating the info_hash. - metainfo = metainfo.reannounce(metainfo.getAnnounce()); - } -*/ - - /** FIXME we can run out of fd's doing this, + /** + * Creates piece hashes for a new storage. + * This does NOT create the files, just the hashes. + * Also sets all the bitfield bits. + * + * FIXME we can run out of fd's doing this, * maybe some sort of global close-RAF-right-away flag - * would do the trick */ - private void fast_digestCreate() throws IOException { + * would do the trick + */ + private byte[] fast_digestCreate() throws IOException { // Calculate piece_hashes SHA1 digest = new SHA1(); - byte[] piece_hashes = metainfo.getPieceHashes(); + byte[] piece_hashes = new byte[20 * pieces]; byte[] piece = new byte[piece_size]; for (int i = 0; i < pieces; i++) @@ -212,14 +172,10 @@ public class Storage int length = getUncheckedPiece(i, piece); digest.update(piece, 0, length); byte[] hash = digest.digest(); - for (int j = 0; j < 20; j++) - piece_hashes[20 * i + j] = hash[j]; - + System.arraycopy(hash, 0, piece_hashes, 20 * i, 20); bitfield.set(i); } - - // Reannounce to force recalculating the info_hash. - metainfo = metainfo.reannounce(metainfo.getAnnounce()); + return piece_hashes; } private void getFiles(File base) throws IOException @@ -294,6 +250,14 @@ public class Storage return needed == 0; } + /** + * Has the storage changed since instantiation? + * @since 0.8.5 + */ + public boolean isChanged() { + return changed; + } + /** * @param file canonical path (non-directory) * @return number of bytes remaining; -1 if unknown file @@ -315,14 +279,13 @@ public class Storage if (f != null && canonical.equals(file)) { if (complete()) return 0; - int psz = metainfo.getPieceLength(0); + int psz = piece_size; long start = bytes; long end = start + lengths[i]; int pc = (int) (bytes / psz); long rv = 0; if (!bitfield.get(pc)) rv = Math.min(psz - (start % psz), lengths[i]); - int pieces = metainfo.getPieces(); for (int j = pc + 1; (((long)j) * psz) < end && j < pieces; j++) { if (!bitfield.get(j)) { if (((long)(j+1))*psz < end) @@ -418,7 +381,7 @@ public class Storage int file = 0; long pcEnd = -1; long fileEnd = lengths[0] - 1; - int psz = metainfo.getPieceLength(0); + int psz = piece_size; for (int i = 0; i < rv.length; i++) { pcEnd += psz; int pri = priorities[file]; @@ -469,7 +432,7 @@ public class Storage File base = new SecureFile(rootDir, filterName(metainfo.getName())); boolean useSavedBitField = savedTime > 0 && savedBitField != null; - List files = metainfo.getFiles(); + List> files = metainfo.getFiles(); if (files == null) { // Create base as file. @@ -500,7 +463,7 @@ public class Storage if (!base.mkdir() && !base.isDirectory()) throw new IOException("Could not create directory " + base); - List ls = metainfo.getLengths(); + List ls = metainfo.getLengths(); int size = files.size(); long total = 0; lengths = new long[size]; @@ -511,8 +474,28 @@ public class Storage RAFfile = new File[size]; for (int i = 0; i < size; i++) { - File f = createFileFromNames(base, (List)files.get(i)); - lengths[i] = ((Long)ls.get(i)).longValue(); + List path = files.get(i); + File f = createFileFromNames(base, path); + // dup file name check after filtering + for (int j = 0; j < i; j++) { + if (f.equals(RAFfile[j])) { + // Rename and start the check over again + // Copy path since metainfo list is unmodifiable + path = new ArrayList(path); + int last = path.size() - 1; + String lastPath = path.get(last); + int dot = lastPath.lastIndexOf('.'); + // foo.mp3 -> foo_.mp3; foo -> _foo + if (dot >= 0) + lastPath = lastPath.substring(0, dot) + '_' + lastPath.substring(dot); + else + lastPath = '_' + lastPath; + path.set(last, lastPath); + f = createFileFromNames(base, path); + j = 0; + } + } + lengths[i] = ls.get(i).longValue(); RAFlock[i] = new Object(); RAFfile[i] = f; total += lengths[i]; @@ -551,36 +534,19 @@ public class Storage } /** - * Reopen the file descriptors for a restart - * Do existence check but no length check or data reverification + * Doesn't really reopen the file descriptors for a restart. + * Just does an existence check but no length check or data reverification + * + * @param rootDir ignored + * @throws IOE on fail */ public void reopen(String rootDir) throws IOException { - File base = new File(rootDir, filterName(metainfo.getName())); - - List files = metainfo.getFiles(); - if (files == null) - { - // Reopen base as file. - _util.debug("Reopening file: " + base, Snark.NOTICE); - if (!base.exists()) - throw new IOException("Could not reopen file " + base); - } - else - { - // Reopen base as dir. - _util.debug("Reopening directory: " + base, Snark.NOTICE); - if (!base.isDirectory()) - throw new IOException("Could not reopen directory " + base); - - int size = files.size(); - for (int i = 0; i < size; i++) - { - File f = getFileFromNames(base, (List)files.get(i)); - if (!f.exists()) - throw new IOException("Could not reopen file " + f); - } - + if (RAFfile == null) + throw new IOException("Storage not checked yet"); + for (int i = 0; i < RAFfile.length; i++) { + if (!RAFfile[i].exists()) + throw new IOException("File does not exist: " + RAFfile[i]); } } @@ -609,13 +575,18 @@ public class Storage return rv; } - private File createFileFromNames(File base, List names) throws IOException + /** + * Note that filtering each path element individually may lead to + * things going in the wrong place if there are duplicates + * in intermediate path elements after filtering. + */ + private static File createFileFromNames(File base, List names) throws IOException { File f = null; - Iterator it = names.iterator(); + Iterator it = names.iterator(); while (it.hasNext()) { - String name = filterName((String)it.next()); + String name = filterName(it.next()); if (it.hasNext()) { // Another dir in the hierarchy. @@ -635,12 +606,12 @@ public class Storage return f; } - public static File getFileFromNames(File base, List names) + public static File getFileFromNames(File base, List names) { - Iterator it = names.iterator(); + Iterator it = names.iterator(); while (it.hasNext()) { - String name = filterName((String)it.next()); + String name = filterName(it.next()); base = new File(base, name); } return base; @@ -690,7 +661,10 @@ public class Storage } catch (IOException ioe) {} } } else { - _util.debug("File '" + names[i] + "' exists, but has wrong length - repairing corruption", Snark.ERROR); + String msg = "File '" + names[i] + "' exists, but has wrong length (expected " + + lengths[i] + " but found " + length + ") - repairing corruption"; + SnarkManager.instance().addMessage(msg); + _util.debug(msg, Snark.ERROR); changed = true; _probablyComplete = false; // to force RW synchronized(RAFlock[i]) { @@ -706,8 +680,7 @@ public class Storage // Check which pieces match and which don't if (resume) { - pieces = metainfo.getPieces(); - byte[] piece = new byte[metainfo.getPieceLength(0)]; + byte[] piece = new byte[piece_size]; int file = 0; long fileEnd = lengths[0]; long pieceEnd = 0; @@ -775,7 +748,7 @@ public class Storage // the whole file? if (listener != null) listener.storageCreateFile(this, names[nr], lengths[nr]); - final int ZEROBLOCKSIZE = metainfo.getPieceLength(0); + final int ZEROBLOCKSIZE = piece_size; byte[] zeros; try { zeros = new byte[ZEROBLOCKSIZE]; @@ -868,7 +841,7 @@ public class Storage } // Early typecast, avoid possibly overflowing a temp integer - long start = (long) piece * (long) metainfo.getPieceLength(0); + long start = (long) piece * (long) piece_size; int i = 0; long raflen = lengths[i]; while (start > raflen) @@ -935,10 +908,24 @@ public class Storage return true; } + /** + * This is a dup of MetaInfo.getPieceLength() but we need it + * before the MetaInfo is created in our second constructor. + * @since 0.8.5 + */ + private int getPieceLength(int piece) { + if (piece >= 0 && piece < pieces -1) + return piece_size; + else if (piece == pieces -1) + return (int)(total_length - ((long)piece * piece_size)); + else + throw new IndexOutOfBoundsException("no piece: " + piece); + } + private int getUncheckedPiece(int piece, byte[] bs) throws IOException { - return getUncheckedPiece(piece, bs, 0, metainfo.getPieceLength(piece)); + return getUncheckedPiece(piece, bs, 0, getPieceLength(piece)); } private int getUncheckedPiece(int piece, byte[] bs, int off, int length) @@ -947,7 +934,7 @@ public class Storage // XXX - copy/paste code from putPiece(). // Early typecast, avoid possibly overflowing a temp integer - long start = ((long) piece * (long) metainfo.getPieceLength(0)) + off; + long start = ((long) piece * (long) piece_size) + off; int i = 0; long raflen = lengths[i]; diff --git a/apps/i2psnark/java/src/org/klomp/snark/bencode/BDecoder.java b/apps/i2psnark/java/src/org/klomp/snark/bencode/BDecoder.java index 4c59bcb93..4f394d01e 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/bencode/BDecoder.java +++ b/apps/i2psnark/java/src/org/klomp/snark/bencode/BDecoder.java @@ -60,22 +60,30 @@ public class BDecoder private int indicator = 0; // Used for ugly hack to get SHA hash over the metainfo info map - private String special_map = "info"; + private final String special_map = "info"; private boolean in_special_map = false; - private final MessageDigest sha_digest; + /** creation deferred until we encounter the special map, to make processing of announce replies more efficient */ + private MessageDigest sha_digest; - // Ugly hack. Return the SHA has over bytes that make up the special map. + /** + * Ugly hack. Return the SHA has over bytes that make up the special map. + * @return null if there was no special map + */ public byte[] get_special_map_digest() { + if (sha_digest == null) + return null; byte[] result = sha_digest.digest(); return result; } +/**** // Ugly hack. Name defaults to "info". public void set_special_map_name(String name) { special_map = name; } +****/ /** * Initalizes a new BDecoder. Nothing is read from the given @@ -84,15 +92,6 @@ public class BDecoder public BDecoder(InputStream in) { this.in = in; - // XXX - Used for ugly hack. - try - { - sha_digest = MessageDigest.getInstance("SHA"); - } - catch(NoSuchAlgorithmException nsa) - { - throw new InternalError(nsa.toString()); - } } /** @@ -112,6 +111,24 @@ public class BDecoder return new BDecoder(in).bdecode(); } + /** + * Used for SHA1 hack + * @since 0.8.5 + */ + private void createDigest() { + if (sha_digest == null) { + try { + sha_digest = MessageDigest.getInstance("SHA"); + } catch(NoSuchAlgorithmException nsa) { + throw new InternalError(nsa.toString()); + } + } else { + // there are two info maps, but not one inside the other, + // the resulting hash will be incorrect + // throw something? - no, the check in the MetaInfo constructor will catch it. + } + } + /** * Returns what the next bencoded object will be on the stream or -1 * when the end of stream has been reached. Can return something @@ -294,9 +311,13 @@ public class BDecoder String key = bdecode().getString(); // XXX ugly hack - boolean special = special_map.equals(key); - if (special) + // This will not screw up if an info map contains an info map, + // but it will if there are two info maps (not one inside the other) + boolean special = (!in_special_map) && special_map.equals(key); + if (special) { + createDigest(); in_special_map = true; + } BEValue value = bdecode(); result.put(key, value); diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 788741bd8..f3ef456dc 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -643,7 +643,6 @@ public class I2PSnarkServlet extends Default { // This may take a long time to check the storage, but since it already exists, // it shouldn't be THAT bad, so keep it in this thread. Storage s = new Storage(_manager.util(), baseFile, announceURL, null); - s.create(); s.close(); // close the files... maybe need a way to pass this Storage to addTorrent rather than starting over MetaInfo info = s.getMetaInfo(); File torrentFile = new File(_manager.getDataDir(), s.getBaseName() + ".torrent"); @@ -1968,16 +1967,15 @@ private static class FetchAndAdd implements Runnable { FileInputStream in = null; try { in = new FileInputStream(file); - // we do not retain this MetaInfo object, hopefully it will go away quickly - MetaInfo info = new MetaInfo(in); + byte[] fileInfoHash = new byte[20]; + String name = MetaInfo.getNameAndInfoHash(in, fileInfoHash); try { in.close(); } catch (IOException ioe) {} - Snark snark = _manager.getTorrentByInfoHash(info.getInfoHash()); + Snark snark = _manager.getTorrentByInfoHash(fileInfoHash); if (snark != null) { _manager.addMessage(_("Torrent with this info hash is already running: {0}", snark.getBaseName())); return; } - String name = info.getName(); name = Storage.filterName(name); name = name + ".torrent"; File torrentFile = new File(_manager.getDataDir(), name); From b02fe536bcb94f12313006c3675225d2464e2e20 Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 8 Mar 2011 03:07:02 +0000 Subject: [PATCH 278/463] * Console: - Parameterize download button tags (ticket #425) - Clean up summary bar HTML warnings - Just display a summary bar link for text browsers - Move welcome div from the readme files to index.jsp - Require a nonce to change language --- .../src/net/i2p/router/web/CSSHelper.java | 17 +++++-- .../src/net/i2p/router/web/ContentHelper.java | 4 +- .../i2p/router/web/SummaryBarRenderer.java | 32 ++++++------- apps/routerconsole/jsp/configlogging.jsp | 2 +- apps/routerconsole/jsp/css.jsi | 5 +- apps/routerconsole/jsp/index.jsp | 25 ++++++++-- apps/routerconsole/jsp/summary.jsi | 46 +++++++++++++------ apps/routerconsole/jsp/summaryframe.jsp | 4 +- history.txt | 17 ++++++- installer/resources/readme/readme.html | 16 ------- installer/resources/readme/readme_ar.html | 16 ------- installer/resources/readme/readme_de.html | 16 ------- installer/resources/readme/readme_es.html | 16 ------- installer/resources/readme/readme_fr.html | 16 ------- installer/resources/readme/readme_nl.html | 16 ------- installer/resources/readme/readme_pt.html | 16 ------- installer/resources/readme/readme_ru.html | 16 ------- installer/resources/readme/readme_sv.html | 16 ------- installer/resources/readme/readme_zh.html | 15 ------ .../themes/console/classic/console.css | 10 ---- .../resources/themes/console/dark/console.css | 17 ++----- .../themes/console/light/console.css | 27 +---------- .../themes/console/midnight/console.css | 10 ---- .../src/net/i2p/router/RouterVersion.java | 2 +- 24 files changed, 114 insertions(+), 263 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java index e65f9ec90..8a1b92046 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java @@ -28,11 +28,13 @@ public class CSSHelper extends HelperBase { return url; } - /** change default language for the router but don't save it */ + /** change default language for the router AND save it */ public void setLang(String lang) { - // TODO: Protect with nonce or require POST - if (lang != null && lang.length() == 2) + // Protected with nonce in css.jsi + if (lang != null && lang.length() == 2 && !lang.equals(_context.getProperty(Messages.PROP_LANG))) { _context.router().setConfigSetting(Messages.PROP_LANG, lang); + _context.router().saveConfig(); + } } /** needed for conditional css loads for zh */ @@ -61,4 +63,13 @@ public class CSSHelper extends HelperBase { .append(""); return buf.toString(); } + + /** + * Should we allow a refreshing IFrame? + * @since 0.8.5 + */ + public boolean allowIFrame(String ua) { + return ua == null || !(ua.startsWith("Lynx") || ua.startsWith("w3m") || + ua.startsWith("ELinks") || ua.startsWith("Dillo")); + } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java index 1853ff246..b56108be3 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java @@ -19,15 +19,14 @@ public class ContentHelper extends HelperBase { _startAtBeginning = Boolean.valueOf(""+moo).booleanValue(); } public void setLang(String l) { +/***** if((_lang == null || !_lang.equals(l)) && (l != null)) { //Set language for router console _lang = l; -/***** TODO - Temporary for 0.8.4 Needed for desktopgui. But there's no nonce protection. Move the following to CSSHelper setLang(), or disable completely, See comments in CSSHelper -*****/ if(_context == null) { setContextId(null); } @@ -39,6 +38,7 @@ public class ContentHelper extends HelperBase { _context.setProperty(Messages.PROP_LANG, _lang); } } +*****/ } public void setMaxLines(String lines) { diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java index 55c7b009c..e21102c7f 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java @@ -224,25 +224,21 @@ public class SummaryBarRenderer { System.setProperty("net.i2p.router.web.UpdateHandler.noncePrev", prev); System.setProperty("net.i2p.router.web.UpdateHandler.nonce", nonce+""); String uri = _helper.getRequestURI(); - buf.append("

          \n"); + buf.append("\n"); buf.append("\n"); if (_helper.updateAvailable()) { buf.append("\n"); + // Note to translators: parameter is a version, e.g. "0.8.4" + .append(_("Download {0} Update", _helper.getUpdateVersion())) + .append("
          \n"); } if (_helper.unsignedUpdateAvailable()) { buf.append("\n"); + // Note to translators: parameter is a date and time, e.g. "02-Mar 20:34 UTC" + //
          is optional, to help the browser make the lines even in the button + // If the translation is shorter than the English, you should probably not include
          + .append(_("Download Unsigned
          Update {0}", _helper.getUnsignedUpdateVersion())) + .append("
          \n"); } buf.append("\n"); } @@ -251,10 +247,9 @@ public class SummaryBarRenderer { - buf.append("

          ") - .append(ConfigRestartBean.renderStatus(_helper.getRequestURI(), _helper.getAction(), _helper.getConsoleNonce())) + buf.append(ConfigRestartBean.renderStatus(_helper.getRequestURI(), _helper.getAction(), _helper.getConsoleNonce())) - .append("


          ") .append(_("Peers")) @@ -456,4 +451,9 @@ public class SummaryBarRenderer { private String _(String s) { return Messages.getString(s, _context); } + + /** translate a string with a parameter */ + private String _(String s, Object o) { + return Messages.getString(s, o, _context); + } } diff --git a/apps/routerconsole/jsp/configlogging.jsp b/apps/routerconsole/jsp/configlogging.jsp index c87fd367d..bd80b8086 100644 --- a/apps/routerconsole/jsp/configlogging.jsp +++ b/apps/routerconsole/jsp/configlogging.jsp @@ -41,7 +41,7 @@
          <%=intl._("('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)")%>

    - + diff --git a/apps/routerconsole/jsp/css.jsi b/apps/routerconsole/jsp/css.jsi index 613b32a67..e259d0707 100644 --- a/apps/routerconsole/jsp/css.jsi +++ b/apps/routerconsole/jsp/css.jsi @@ -26,7 +26,10 @@ " /> <% - intl.setLang(request.getParameter("lang")); + String conNonceParam = request.getParameter("consoleNonce"); + if (conNonceParam != null && conNonceParam.equals(System.getProperty("router.consoleNonce"))) { + intl.setLang(request.getParameter("lang")); + } %> console.css" rel="stylesheet" type="text/css"> <% diff --git a/apps/routerconsole/jsp/index.jsp b/apps/routerconsole/jsp/index.jsp index 6f29573e6..5aeeeea98 100644 --- a/apps/routerconsole/jsp/index.jsp +++ b/apps/routerconsole/jsp/index.jsp @@ -7,9 +7,11 @@ <%=intl.title("home")%> <% -if (System.getProperty("router.consoleNonce") == null) { - System.setProperty("router.consoleNonce", new java.util.Random().nextLong() + ""); -} + String consoleNonce = System.getProperty("router.consoleNonce"); + if (consoleNonce == null) { + consoleNonce = Long.toString(new java.util.Random().nextLong()); + System.setProperty("router.consoleNonce", consoleNonce); + } %> <%@include file="summary.jsi" %>

    <%=intl._("I2P Router Console")%>

    @@ -26,10 +28,25 @@ if (System.getProperty("router.consoleNonce") == null) {

    +
    +
    + English + عربية + 中文 + Deutsch + Français + Español + Português + Nederlands + Русский + Svenska +
    + +

    <%=intl._("Welcome to I2P")%>

    +
    <% fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getBaseDir(), "docs/readme.html"); %> - " /> " />
    diff --git a/apps/routerconsole/jsp/summary.jsi b/apps/routerconsole/jsp/summary.jsi index 5a81e7af3..46cb366fe 100644 --- a/apps/routerconsole/jsp/summary.jsi +++ b/apps/routerconsole/jsp/summary.jsi @@ -1,27 +1,41 @@ -<% // put width here too to prevent bad layout at startup %> -<% // let's remove that for now since we're no longer using percentage width here %>
    <% - // skip the iframe if refresh disabled - String d = request.getParameter("refresh"); - String newDelay = ""; - if (d == null || "".equals(d)) - d = intl.getRefresh(); - else { - d = net.i2p.data.DataHelper.stripHTML(d); // XSS - // pass the new delay parameter to the iframe - newDelay = "?refresh=" + d; + // The refresh delay, 0 to disable + String d = "0"; + boolean allowIFrame = intl.allowIFrame(request.getHeader("User-Agent")); + if (allowIFrame) { + // skip the iframe if refresh disabled + d = request.getParameter("refresh"); + String newDelay = ""; + if (d == null || "".equals(d)) + d = intl.getRefresh(); + else { + d = net.i2p.data.DataHelper.stripHTML(d); // XSS + // pass the new delay parameter to the iframe + newDelay = "?refresh=" + d; + } + if (!"0".equals(d)) + out.print("\n"); - } else { + } else if (allowIFrame) { // since we don't have an iframe this will reload the base page, and // the new delay will be passed to the iframe above out.print("
    \n"); @@ -34,6 +48,8 @@ out.print(intl._("Enable")); out.print("\n"); out.print("
    \n"); + } else { + out.print("\n"); } %> diff --git a/apps/routerconsole/jsp/summaryframe.jsp b/apps/routerconsole/jsp/summaryframe.jsp index e59fbd44f..d0eb8b72a 100644 --- a/apps/routerconsole/jsp/summaryframe.jsp +++ b/apps/routerconsole/jsp/summaryframe.jsp @@ -15,7 +15,9 @@ String action = request.getParameter("action"); String d = request.getParameter("refresh"); // Normal browsers send value, IE sends button label - boolean shutdownSoon = "shutdownImmediate".equals(action) || "restartImmediate".equals(action) || + boolean allowIFrame = intl.allowIFrame(request.getHeader("User-Agent")); + boolean shutdownSoon = (!allowIFrame) || + "shutdownImmediate".equals(action) || "restartImmediate".equals(action) || "Shutdown immediately".equals(action) || "Restart immediately".equals(action); if (!shutdownSoon) { if (d == null || "".equals(d)) { diff --git a/history.txt b/history.txt index fba494287..0c11021ed 100644 --- a/history.txt +++ b/history.txt @@ -1,8 +1,23 @@ +2011-03-08 zzz + * Console: + - Parameterize download button tags (ticket #425) + - Clean up summary bar HTML warnings + - Just display a summary bar link for text browsers + - Move welcome div from the readme files to index.jsp + - Require a nonce to change language + * i2psnark: + - More efficient metainfo handling, reduce instantiations + - Improved handling of storage errors + - Improved handling of duplicate file names + - More metainfo sanity checks + - Metadata transfer error handling improvements + - Code cleanup, remove dead and duplicated code + 2011-03-02 zzz * BuildHandler: - Limit request queue size - Concurrent request queue - - Remove dead code for queued rely handling + - Remove dead code for queued reply handling * OutNetMessage: Remove dead code * Tunnel cleanups, final, javadoc diff --git a/installer/resources/readme/readme.html b/installer/resources/readme/readme.html index 680a6c52b..a9eda7181 100644 --- a/installer/resources/readme/readme.html +++ b/installer/resources/readme/readme.html @@ -1,20 +1,4 @@
    -
    -
    - English - عربية - 中文 - Deutsch - Français - Español - Português - Nederlands - Русский - Svenska -
    - -

    Welcome to the Invisible Internet

    -
    ") + .append(_("Torrent")).append(": ").append(snark.getBaseName()); + int pieces = snark.getPieces(); + double completion = (pieces - snark.getNeeded()) / (double) pieces; + if (completion < 1.0) + buf.append("
    ").append(_("Completion")).append(": ").append((new DecimalFormat("0.00%")).format(completion)); + else + buf.append("
    ").append(_("Complete")); + // else unknown + buf.append("
    ").append(_("Size")).append(": ").append(formatSize(snark.getTotalLength())); + MetaInfo meta = snark.getMetaInfo(); + if (meta != null) { + List files = meta.getFiles(); + int fileCount = files != null ? files.size() : 1; + buf.append("
    ").append(_("Files")).append(": ").append(fileCount); + } + buf.append("
    ").append(_("Pieces")).append(": ").append(pieces); + buf.append("
    ").append(_("Piece size")).append(": ").append(formatSize(snark.getPieceLength(0))); + String hex = toHex(snark.getInfoHash()); + buf.append("
    ").append(_("Magnet link")).append(": ") + .append(MAGNET).append(hex).append(""); + // We don't have the hash of the torrent file + //buf.append("
    ").append(_("Maggot link")).append(": ") + // .append(MAGGOT).append(hex).append(':').append(hex).append(""); + buf.append("
    ") .append("\"\" ") - .append(title).append("") + .append(_("Directory")).append(": ").append(directory).append("") .append("\"\" ") .append(_("Size")); buf.append("") @@ -1767,6 +1799,21 @@ public class I2PSnarkServlet extends Default { return "\"""; } + /** + * Like DataHelper.toHexString but ensures no loss of leading zero bytes + * @since 0.8.4 + */ + private static String toHex(byte[] b) { + StringBuilder buf = new StringBuilder(40); + for (int i = 0; i < b.length; i++) { + int bi = b[i] & 0xff; + if (bi < 16) + buf.append('0'); + buf.append(Integer.toHexString(bi)); + } + return buf.toString(); + } + /** @since 0.8.1 */ private void savePriorities(Snark snark, Map postParams) { Storage storage = snark.getStorage(); From b97ad6c5f02822756955916c724dd0411295d08a Mon Sep 17 00:00:00 2001 From: zzz Date: Wed, 22 Dec 2010 22:23:34 +0000 Subject: [PATCH 020/463] generics --- .../java/src/org/klomp/snark/bencode/BEncoder.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/bencode/BEncoder.java b/apps/i2psnark/java/src/org/klomp/snark/bencode/BEncoder.java index b8129f477..1a9236248 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/bencode/BEncoder.java +++ b/apps/i2psnark/java/src/org/klomp/snark/bencode/BEncoder.java @@ -59,7 +59,7 @@ public class BEncoder else if (o instanceof List) bencode((List)o, out); else if (o instanceof Map) - bencode((Map)o, out); + bencode((Map)o, out); else if (o instanceof BEValue) bencode(((BEValue)o).getValue(), out); else @@ -153,7 +153,7 @@ public class BEncoder out.write(bs); } - public static byte[] bencode(Map m) + public static byte[] bencode(Map m) { try { @@ -167,20 +167,20 @@ public class BEncoder } } - public static void bencode(Map m, OutputStream out) throws IOException + public static void bencode(Map m, OutputStream out) throws IOException { out.write('d'); // Keys must be sorted. XXX - But is this the correct order? - Set s = m.keySet(); - List l = new ArrayList(s); + Set s = m.keySet(); + List l = new ArrayList(s); Collections.sort(l); - Iterator it = l.iterator(); + Iterator it = l.iterator(); while(it.hasNext()) { // Keys must be Strings. - String key = (String)it.next(); + String key = it.next(); Object value = m.get(key); bencode(key, out); bencode(value, out); From 12fae66948dffc247956756c1c64b8d8ce711fcb Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 26 Dec 2010 12:27:40 +0000 Subject: [PATCH 021/463] - Fix about 9 NPEs - Fix numwant in magnet mode - Send metadata size in extension handshake - Open trackers are primary if we don't have primary trackers - Add missing break in port message handling - Increase max msg size to account for metadata msg - Remember magnets across restarts - Drop peers w/o extensions if we need metainfo - Fix DATA messages - Fix tracker transition to non-magnet - Fix infohash for non-magnet - Fix up peer transition to non-magnet - More logging --- .../src/org/klomp/snark/bencode/BEncoder.java | 2 ++ .../org/klomp/snark/web/I2PSnarkServlet.java | 20 +++---------------- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/bencode/BEncoder.java b/apps/i2psnark/java/src/org/klomp/snark/bencode/BEncoder.java index 1a9236248..9584b0d9d 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/bencode/BEncoder.java +++ b/apps/i2psnark/java/src/org/klomp/snark/bencode/BEncoder.java @@ -50,6 +50,8 @@ public class BEncoder public static void bencode(Object o, OutputStream out) throws IOException, IllegalArgumentException { + if (o == null) + throw new NullPointerException("Cannot bencode null"); if (o instanceof String) bencode((String)o, out); else if (o instanceof byte[]) diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 61c9c8e57..bd08dc46d 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -35,6 +35,7 @@ import net.i2p.util.I2PAppThread; import net.i2p.util.Log; import net.i2p.util.SecureFileOutputStream; +import org.klomp.snark.I2PSnarkUtil; import org.klomp.snark.MetaInfo; import org.klomp.snark.Peer; import org.klomp.snark.Snark; @@ -1389,7 +1390,7 @@ public class I2PSnarkServlet extends Default { _manager.addMessage(_("Invalid info hash in magnet URL {0}", url)); return; } - _manager.addMagnet(name, ih); + _manager.addMagnet(name, ih, true); } /** copied from ConfigTunnelsHelper */ @@ -1574,7 +1575,7 @@ public class I2PSnarkServlet extends Default { } buf.append("
    ").append(_("Pieces")).append(": ").append(pieces); buf.append("
    ").append(_("Piece size")).append(": ").append(formatSize(snark.getPieceLength(0))); - String hex = toHex(snark.getInfoHash()); + String hex = I2PSnarkUtil.toHex(snark.getInfoHash()); buf.append("
    ").append(_("Magnet link")).append(": ") .append(MAGNET).append(hex).append(""); // We don't have the hash of the torrent file @@ -1799,21 +1800,6 @@ public class I2PSnarkServlet extends Default { return "\"""; } - /** - * Like DataHelper.toHexString but ensures no loss of leading zero bytes - * @since 0.8.4 - */ - private static String toHex(byte[] b) { - StringBuilder buf = new StringBuilder(40); - for (int i = 0; i < b.length; i++) { - int bi = b[i] & 0xff; - if (bi < 16) - buf.append('0'); - buf.append(Integer.toHexString(bi)); - } - return buf.toString(); - } - /** @since 0.8.1 */ private void savePriorities(Snark snark, Map postParams) { Storage storage = snark.getStorage(); From 71043c41f1c490a02ec1eaef4448426ba06e4718 Mon Sep 17 00:00:00 2001 From: zzz Date: Mon, 27 Dec 2010 17:13:24 +0000 Subject: [PATCH 022/463] - Hide I2CP settings when in router context - Better BEValue.toString() (most of the following got missed in the last checkin) - Fix about 9 NPEs - Fix numwant in magnet mode - Send metadata size in extension handshake - Open trackers are primary if we don't have primary trackers - Add missing break in port message handling - Increase max msg size to account for metadata msg - Remember magnets across restarts - Drop peers w/o extensions if we need metainfo - Fix DATA messages - Fix tracker transition to non-magnet - Fix infohash for non-magnet - Fix up peer transition to non-magnet - More logging --- .../src/org/klomp/snark/ExtensionHandler.java | 55 ++++++++++---- .../src/org/klomp/snark/I2PSnarkUtil.java | 15 ++++ .../java/src/org/klomp/snark/MagnetState.java | 10 +-- .../java/src/org/klomp/snark/Message.java | 4 +- .../java/src/org/klomp/snark/Peer.java | 15 +++- .../src/org/klomp/snark/PeerConnectionIn.java | 16 ++-- .../src/org/klomp/snark/PeerCoordinator.java | 10 ++- .../java/src/org/klomp/snark/PeerState.java | 2 + .../java/src/org/klomp/snark/Snark.java | 15 +++- .../src/org/klomp/snark/SnarkManager.java | 74 +++++++++++++++++-- .../src/org/klomp/snark/TrackerClient.java | 21 +++--- .../java/src/org/klomp/snark/TrackerInfo.java | 23 +++--- .../src/org/klomp/snark/bencode/BEValue.java | 12 ++- .../org/klomp/snark/web/I2PSnarkServlet.java | 18 +++-- 14 files changed, 213 insertions(+), 77 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java b/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java index e212f6f61..5b7b0b038 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java +++ b/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java @@ -21,7 +21,6 @@ import org.klomp.snark.bencode.InvalidBEncodingException; */ abstract class ExtensionHandler { - private static final byte[] _handshake = buildHandshake(); private static final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(ExtensionHandler.class); public static final int ID_METADATA = 3; @@ -32,17 +31,15 @@ abstract class ExtensionHandler { /** + * @param metasize -1 if unknown * @return bencoded outgoing handshake message */ - public static byte[] getHandshake() { - return _handshake; - } - - /** outgoing handshake message */ - private static byte[] buildHandshake() { + public static byte[] getHandshake(int metasize) { Map handshake = new HashMap(); Map m = new HashMap(); m.put(TYPE_METADATA, Integer.valueOf(ID_METADATA)); + if (metasize >= 0) + handshake.put("metadata_size", Integer.valueOf(metasize)); handshake.put("m", m); handshake.put("p", Integer.valueOf(6881)); handshake.put("v", "I2PSnark"); @@ -51,6 +48,8 @@ abstract class ExtensionHandler { } public static void handleMessage(Peer peer, PeerListener listener, int id, byte[] bs) { + if (_log.shouldLog(Log.INFO)) + _log.info("Got extension msg " + id + " length " + bs.length + " from " + peer); if (id == 0) handleHandshake(peer, listener, bs); else if (id == ID_METADATA) @@ -71,10 +70,24 @@ abstract class ExtensionHandler { peer.setHandshakeMap(map); Map msgmap = map.get("m").getMap(); - // rv not used, just to throw an NPE to get out of here - msgmap.get(TYPE_METADATA).getInt(); + if (msgmap.get(TYPE_METADATA) == null) { + if (_log.shouldLog(Log.WARN)) + _log.debug("Peer does not support metadata extension: " + peer); + // drop if we need metainfo ? + return; + } + + BEValue msize = map.get("metadata_size"); + if (msize == null) { + if (_log.shouldLog(Log.WARN)) + _log.debug("Peer does not have the metainfo size yet: " + peer); + // drop if we need metainfo ? + return; + } + int metaSize = msize.getInt(); + if (_log.shouldLog(Log.WARN)) + _log.debug("Got the metainfo size: " + metaSize); - int metaSize = map.get("metadata_size").getInt(); MagnetState state = peer.getMagnetState(); int remaining; synchronized(state) { @@ -83,12 +96,16 @@ abstract class ExtensionHandler { if (state.isInitialized()) { if (state.getSize() != metaSize) { + if (_log.shouldLog(Log.WARN)) + _log.debug("Wrong metainfo size " + metaSize + " from: " + peer); peer.disconnect(); return; } } else { // initialize it if (metaSize > MAX_METADATA_SIZE) { + if (_log.shouldLog(Log.WARN)) + _log.debug("Huge metainfo size " + metaSize + " from: " + peer); peer.disconnect(false); return; } @@ -112,8 +129,7 @@ abstract class ExtensionHandler { } } catch (Exception e) { if (_log.shouldLog(Log.WARN)) - _log.info("Handshake exception from " + peer, e); - //peer.disconnect(false); + _log.warn("Handshake exception from " + peer, e); } } @@ -140,6 +156,8 @@ abstract class ExtensionHandler { MagnetState state = peer.getMagnetState(); if (type == TYPE_REQUEST) { + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Got request for " + piece + " from: " + peer); byte[] pc; synchronized(state) { pc = state.getChunk(piece); @@ -150,12 +168,19 @@ abstract class ExtensionHandler { listener.uploaded(peer, pc.length); } else if (type == TYPE_DATA) { int size = map.get("total_size").getInt(); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Got data for " + piece + " length " + size + " from: " + peer); boolean done; int chk = -1; synchronized(state) { if (state.isComplete()) return; int len = is.available(); + if (len != size) { + // probably fatal + if (_log.shouldLog(Log.WARN)) + _log.warn("total_size " + size + " but avail data " + len); + } peer.downloaded(len); listener.downloaded(peer, len); done = state.saveChunk(piece, bs, bs.length - len, len); @@ -219,15 +244,15 @@ abstract class ExtensionHandler { private static void sendPiece(Peer peer, int piece, byte[] data) { Map map = new HashMap(); - map.put("msg_type", Integer.valueOf(TYPE_REQUEST)); + map.put("msg_type", Integer.valueOf(TYPE_DATA)); map.put("piece", Integer.valueOf(piece)); map.put("total_size", Integer.valueOf(data.length)); byte[] dict = BEncoder.bencode(map); byte[] payload = new byte[dict.length + data.length]; System.arraycopy(dict, 0, payload, 0, dict.length); - System.arraycopy(data, 0, payload, dict.length, payload.length); + System.arraycopy(data, 0, payload, dict.length, data.length); try { - int hisMsgCode = peer.getHandshakeMap().get("m").getMap().get("METADATA").getInt(); + int hisMsgCode = peer.getHandshakeMap().get("m").getMap().get(TYPE_METADATA).getInt(); peer.sendExtension(hisMsgCode, payload); } catch (Exception e) { // NPE, no metadata caps diff --git a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java index ef194ac3f..775d4cc4a 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java +++ b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java @@ -446,6 +446,21 @@ public class I2PSnarkUtil { return Boolean.valueOf(rv).booleanValue(); } + /** + * Like DataHelper.toHexString but ensures no loss of leading zero bytes + * @since 0.8.4 + */ + public static String toHex(byte[] b) { + StringBuilder buf = new StringBuilder(40); + for (int i = 0; i < b.length; i++) { + int bi = b[i] & 0xff; + if (bi < 16) + buf.append('0'); + buf.append(Integer.toHexString(bi)); + } + return buf.toString(); + } + /** hook between snark's logger and an i2p log */ void debug(String msg, int snarkDebugLevel) { debug(msg, snarkDebugLevel, null); diff --git a/apps/i2psnark/java/src/org/klomp/snark/MagnetState.java b/apps/i2psnark/java/src/org/klomp/snark/MagnetState.java index fb7e5a542..e9eb56389 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/MagnetState.java +++ b/apps/i2psnark/java/src/org/klomp/snark/MagnetState.java @@ -53,8 +53,6 @@ class MagnetState { metainfo = meta; initialize(meta.getInfoBytes().length); complete = true; - } else { - metainfoBytes = new byte[metaSize]; } } @@ -68,10 +66,13 @@ class MagnetState { isInitialized = true; metaSize = size; totalChunks = (size + (CHUNK_SIZE - 1)) / CHUNK_SIZE; - if (metainfo == null) { + if (metainfo != null) { + metainfoBytes = metainfo.getInfoBytes(); + } else { // we don't need these if complete have = new BitField(totalChunks); requested = new BitField(totalChunks); + metainfoBytes = new byte[metaSize]; } } @@ -194,8 +195,7 @@ class MagnetState { InputStream is = new ByteArrayInputStream(metainfoBytes); BDecoder dec = new BDecoder(is); BEValue bev = dec.bdecodeMap(); - Map info = bev.getMap(); - map.put("info", info); + map.put("info", bev); MetaInfo newmeta = new MetaInfo(map); if (!DataHelper.eq(newmeta.getInfoHash(), infohash)) throw new IOException("info hash mismatch"); diff --git a/apps/i2psnark/java/src/org/klomp/snark/Message.java b/apps/i2psnark/java/src/org/klomp/snark/Message.java index 57fecf43d..01c474216 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Message.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Message.java @@ -104,7 +104,7 @@ class Message if (type == REQUEST || type == CANCEL) datalen += 4; - // length is 1 byte + // msg type is 1 byte if (type == EXTENSION) datalen += 1; @@ -167,6 +167,8 @@ class Message return "PIECE(" + piece + "," + begin + "," + length + ")"; case CANCEL: return "CANCEL(" + piece + "," + begin + "," + length + ")"; + case PORT: + return "PORT(" + piece + ")"; case EXTENSION: return "EXTENSION(" + piece + ',' + data.length + ')'; default: diff --git a/apps/i2psnark/java/src/org/klomp/snark/Peer.java b/apps/i2psnark/java/src/org/klomp/snark/Peer.java index de8d2b1d0..18c9ad229 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Peer.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Peer.java @@ -120,7 +120,7 @@ public class Peer implements Comparable this.peerID = new PeerID(id, sock.getPeerDestination()); _id = ++__id; if (_log.shouldLog(Log.DEBUG)) - _log.debug("Creating a new peer with " + peerID.toString(), new Exception("creating " + _id)); + _log.debug("Creating a new peer " + peerID.toString(), new Exception("creating " + _id)); } /** @@ -261,14 +261,22 @@ public class Peer implements Comparable _log.debug("Already have din [" + sock + "] with " + toString()); } + // bad idea? + if (metainfo == null && (options & OPTION_EXTENSION) == 0) { + if (_log.shouldLog(Log.INFO)) + _log.info("Peer does not support extensions and we need metainfo, dropping"); + throw new IOException("Peer does not support extensions and we need metainfo, dropping"); + } + PeerConnectionIn in = new PeerConnectionIn(this, din); PeerConnectionOut out = new PeerConnectionOut(this, dout); PeerState s = new PeerState(this, listener, metainfo, in, out); if ((options & OPTION_EXTENSION) != 0) { if (_log.shouldLog(Log.DEBUG)) - _log.debug("Peer supports extensions, sending test message"); - out.sendExtension(0, ExtensionHandler.getHandshake()); + _log.debug("Peer supports extensions, sending reply message"); + int metasize = metainfo != null ? metainfo.getInfoBytes().length : -1; + out.sendExtension(0, ExtensionHandler.getHandshake(metasize)); } if ((options & OPTION_DHT) != 0 && util.getDHT() != null) { @@ -423,6 +431,7 @@ public class Peer implements Comparable * @since 0.8.4 */ public void setMetaInfo(MetaInfo meta) { + metainfo = meta; PeerState s = state; if (s != null) s.setMetaInfo(meta); diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionIn.java b/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionIn.java index a27fc1c9d..33da75263 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionIn.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionIn.java @@ -32,6 +32,13 @@ class PeerConnectionIn implements Runnable private final Peer peer; private final DataInputStream din; + // The max length of a complete message in bytes. + // The biggest is the piece message, for which the length is the + // request size (32K) plus 9. (we could also check if Storage.MAX_PIECES / 8 + // in the bitfield message is bigger but it's currently 5000/8 = 625 so don't bother) + private static final int MAX_MSG_SIZE = Math.max(PeerState.PARTSIZE + 9, + MagnetState.CHUNK_SIZE + 100); // 100 for the ext msg dictionary + private Thread thread; private volatile boolean quit; @@ -77,13 +84,9 @@ class PeerConnectionIn implements Runnable int len; // Wait till we hear something... - // The length of a complete message in bytes. - // The biggest is the piece message, for which the length is the - // request size (32K) plus 9. (we could also check if Storage.MAX_PIECES / 8 - // in the bitfield message is bigger but it's currently 5000/8 = 625 so don't bother) int i = din.readInt(); lastRcvd = System.currentTimeMillis(); - if (i < 0 || i > PeerState.PARTSIZE + 9) + if (i < 0 || i > MAX_MSG_SIZE) throw new IOException("Unexpected length prefix: " + i); if (i == 0) @@ -176,13 +179,14 @@ class PeerConnectionIn implements Runnable ps.portMessage(port); if (_log.shouldLog(Log.DEBUG)) _log.debug("Received port message from " + peer); + break; case 20: // Extension message int id = din.readUnsignedByte(); byte[] payload = new byte[i-2]; din.readFully(payload); - ps.extensionMessage(id, payload); if (_log.shouldLog(Log.DEBUG)) _log.debug("Received extension message from " + peer); + ps.extensionMessage(id, payload); break; default: byte[] bs = new byte[i-1]; diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java index 504749b62..74a840fc7 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java @@ -410,7 +410,7 @@ public class PeerCoordinator implements PeerListener name = "Magnet"; else name = metainfo.getName(); - _log.info("New connection to peer: " + peer + " for " + metainfo.getName()); + _log.info("New connection to peer: " + peer + " for " + name); } // Add it to the beginning of the list. @@ -1169,9 +1169,6 @@ public class PeerCoordinator implements PeerListener _log.warn("Got completed metainfo via extension"); metainfo = magnetState.getMetaInfo(); listener.gotMetaInfo(this, metainfo); - for (Peer p : peers) { - p.setMetaInfo(metainfo); - } } } } @@ -1184,6 +1181,11 @@ public class PeerCoordinator implements PeerListener */ public void setStorage(Storage stg) { storage = stg; + setWantedPieces(); + // ok we should be in business + for (Peer p : peers) { + p.setMetaInfo(metainfo); + } } /** diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerState.java b/apps/i2psnark/java/src/org/klomp/snark/PeerState.java index 4164e310a..6989f1ea6 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerState.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerState.java @@ -511,6 +511,8 @@ class PeerState implements DataLoader //bitfield = new BitField(meta.getPieces()); } metainfo = meta; + if (bitfield.count() > 0) + setInteresting(true); } /** @since 0.8.4 */ diff --git a/apps/i2psnark/java/src/org/klomp/snark/Snark.java b/apps/i2psnark/java/src/org/klomp/snark/Snark.java index 45231965f..d114fe0ee 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Snark.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Snark.java @@ -243,7 +243,7 @@ public class Snark public static final String PROP_MAX_CONNECTIONS = "i2psnark.maxConnections"; /** most of these used to be public, use accessors below instead */ - private final String torrent; + private String torrent; private MetaInfo meta; private Storage storage; private PeerCoordinator coordinator; @@ -360,6 +360,7 @@ public class Snark } } meta = new MetaInfo(new BDecoder(in)); + infoHash = meta.getInfoHash(); } catch(IOException ioe) { @@ -1028,8 +1029,13 @@ public class Snark meta = metainfo; try { storage = new Storage(_util, meta, this); - if (completeListener != null) - completeListener.gotMetaInfo(this); + storage.check(rootDataDir); + if (completeListener != null) { + String newName = completeListener.gotMetaInfo(this); + if (newName != null) + torrent = newName; + // else some horrible problem + } coordinator.setStorage(storage); } catch (IOException ioe) { if (storage != null) { @@ -1125,9 +1131,10 @@ public class Snark * metainfo and storage. The listener should now call getMetaInfo() * and save the data to disk. * + * @return the new name for the torrent or null on error * @since 0.8.4 */ - public void gotMetaInfo(Snark snark); + public String gotMetaInfo(Snark snark); // not really listeners but the easiest way to get back to an optional SnarkManager public long getSavedTorrentTime(Snark snark); diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index 27640d53b..1e5ba10bf 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -68,7 +68,7 @@ public class SnarkManager implements Snark.CompleteListener { public static final String PROP_META_PREFIX = "i2psnark.zmeta."; public static final String PROP_META_BITFIELD_SUFFIX = ".bitfield"; public static final String PROP_META_PRIORITY_SUFFIX = ".priority"; - public static final String PROP_META_MAGNET_SUFFIX = ".magnet"; + public static final String PROP_META_MAGNET_PREFIX = "i2psnark.magnet."; private static final String CONFIG_FILE = "i2psnark.config"; public static final String PROP_AUTO_START = "i2snark.autoStart"; // oops @@ -340,7 +340,9 @@ public class SnarkManager implements Snark.CompleteListener { int oldI2CPPort = _util.getI2CPPort(); String oldI2CPHost = _util.getI2CPHost(); int port = oldI2CPPort; - try { port = Integer.parseInt(i2cpPort); } catch (NumberFormatException nfe) {} + if (i2cpPort != null) { + try { port = Integer.parseInt(i2cpPort); } catch (NumberFormatException nfe) {} + } String host = oldI2CPHost; Map opts = new HashMap(); if (i2cpOpts == null) i2cpOpts = ""; @@ -627,7 +629,7 @@ public class SnarkManager implements Snark.CompleteListener { * @throws RuntimeException via Snark.fatal() * @since 0.8.4 */ - public void addMagnet(String name, byte[] ih) { + public void addMagnet(String name, byte[] ih, boolean updateStatus) { Snark torrent = new Snark(_util, name, ih, this, _peerCoordinatorSet, _connectionAcceptor, false, getDataDir().getPath()); @@ -640,6 +642,8 @@ public class SnarkManager implements Snark.CompleteListener { } // Tell the dir monitor not to delete us _magnets.add(name); + if (updateStatus) + saveMagnetStatus(ih); _snarks.put(name, torrent); } if (shouldAutoStart()) { @@ -667,6 +671,7 @@ public class SnarkManager implements Snark.CompleteListener { } snark.stopTorrent(); _magnets.remove(snark.getName()); + removeMagnetStatus(snark.getInfoHash()); } /** @@ -914,6 +919,28 @@ public class SnarkManager implements Snark.CompleteListener { saveConfig(); } + /** + * Just remember we have it + * @since 0.8.4 + */ + public void saveMagnetStatus(byte[] ih) { + String infohash = Base64.encode(ih); + infohash = infohash.replace('=', '$'); + _config.setProperty(PROP_META_MAGNET_PREFIX + infohash, "."); + saveConfig(); + } + + /** + * Remove the magnet marker from the config file. + * @since 0.8.4 + */ + public void removeMagnetStatus(byte[] ih) { + String infohash = Base64.encode(ih); + infohash = infohash.replace('=', '$'); + _config.remove(PROP_META_MAGNET_PREFIX + infohash); + saveConfig(); + } + /** * Does not really delete on failure, that's the caller's responsibility. * Warning - does not validate announce URL - use TrackerClient.isValidAnnounce() @@ -1032,12 +1059,10 @@ public class SnarkManager implements Snark.CompleteListener { } } -//start magnets - - // here because we need to delay until I2CP is up // although the user will see the default until then getBWLimit(); + boolean doMagnets = true; while (true) { File dir = getDataDir(); if (_log.shouldLog(Log.DEBUG)) @@ -1050,6 +1075,10 @@ public class SnarkManager implements Snark.CompleteListener { } catch (Exception e) { _log.error("Error in the DirectoryMonitor", e); } + if (doMagnets) { + addMagnets(); + doMagnets = false; + } try { Thread.sleep(60*1000); } catch (InterruptedException ie) {} } } @@ -1090,9 +1119,10 @@ public class SnarkManager implements Snark.CompleteListener { * and save the data to disk. * A Snark.CompleteListener method. * + * @return the new name for the torrent or null on error * @since 0.8.4 */ - public void gotMetaInfo(Snark snark) { + public String gotMetaInfo(Snark snark) { MetaInfo meta = snark.getMetaInfo(); Storage storage = snark.getStorage(); if (meta != null && storage != null) { @@ -1100,23 +1130,51 @@ public class SnarkManager implements Snark.CompleteListener { if (rejectMessage != null) { addMessage(rejectMessage); snark.stopTorrent(); - return; + return null; } saveTorrentStatus(meta, storage.getBitField(), null); // no file priorities String name = (new File(getDataDir(), storage.getBaseName() + ".torrent")).getAbsolutePath(); try { synchronized (_snarks) { locked_writeMetaInfo(meta, name); + // put it in the list under the new name + _snarks.remove(snark.getName()); + _snarks.put(name, snark); } + _magnets.remove(snark.getName()); + removeMagnetStatus(snark.getInfoHash()); + addMessage(_("Metainfo received for {0}", snark.getName())); + addMessage(_("Starting up torrent {0}", storage.getBaseName())); + return name; } catch (IOException ioe) { addMessage(_("Failed to copy torrent file to {0}", name)); _log.error("Failed to write torrent file", ioe); } } + return null; } // End Snark.CompleteListeners + /** + * Add all magnets from the config file + * @since 0.8.4 + */ + private void addMagnets() { + for (Object o : _config.keySet()) { + String k = (String) o; + if (k.startsWith(PROP_META_MAGNET_PREFIX)) { + String b64 = k.substring(PROP_META_MAGNET_PREFIX.length()); + b64 = b64.replace('$', '='); + byte[] ih = Base64.decode(b64); + // ignore value + if (ih != null && ih.length == 20) + addMagnet("Magnet: " + I2PSnarkUtil.toHex(ih), ih, false); + // else remove from config? + } + } + } + private void monitorTorrents(File dir) { String fileNames[] = dir.list(TorrentFilenameFilter.instance()); List foundNames = new ArrayList(0); diff --git a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java index 719edee69..d03753d6b 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java +++ b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java @@ -173,7 +173,8 @@ public class TrackerClient extends I2PAppThread continue; if (primary.startsWith("http://i2p/" + dest)) continue; - trackers.add(new Tracker(url, false)); + // opentrackers are primary if we don't have primary + trackers.add(new Tracker(url, primary.equals(""))); _log.debug("Additional announce: [" + url + "] for infoHash: " + infoHash); } } @@ -238,7 +239,7 @@ public class TrackerClient extends I2PAppThread uploaded = coordinator.getUploaded(); downloaded = coordinator.getDownloaded(); - left = coordinator.getLeft(); + left = coordinator.getLeft(); // -1 in magnet mode // First time we got a complete download? String event; @@ -289,7 +290,7 @@ public class TrackerClient extends I2PAppThread } } - if ( (left > 0) && (!completed) ) { + if ( (left != 0) && (!completed) ) { // we only want to talk to new people if we need things // from them (duh) List ordered = new ArrayList(peers); @@ -344,7 +345,7 @@ public class TrackerClient extends I2PAppThread // FIXME this needs to be in its own thread if (_util.getDHT() != null && !stop) { int numwant; - if (left <= 0 || event.equals(STOPPED_EVENT) || !coordinator.needPeers()) + if (left == 0 || event.equals(STOPPED_EVENT) || !coordinator.needPeers()) numwant = 1; else numwant = _util.getMaxConnections(); @@ -362,7 +363,7 @@ public class TrackerClient extends I2PAppThread List peers = new ArrayList(hashes.size()); for (Hash h : hashes) { PeerID pID = new PeerID(h.getData()); - peers.add(new Peer(pID, snark.getID(), snark.getInfoHash(), meta)); + peers.add(new Peer(pID, snark.getID(), snark.getInfoHash(), snark.getMetaInfo())); } Collections.shuffle(peers, r); Iterator it = peers.iterator(); @@ -370,7 +371,7 @@ public class TrackerClient extends I2PAppThread Peer cur = it.next(); if (coordinator.addPeer(cur)) { int delay = DELAY_MUL; - delay *= ((int)cur.getPeerID().getAddress().calculateHash().toBase64().charAt(0)) % 10; + delay *= r.nextInt(10); delay += DELAY_MIN; try { Thread.sleep(delay); } catch (InterruptedException ie) {} } @@ -418,6 +419,8 @@ public class TrackerClient extends I2PAppThread long downloaded, long left, String event) throws IOException { + // What do we send for left in magnet mode? Can we omit it? + long tleft = left >= 0 ? left : 1; String s = tr.announce + "?info_hash=" + infoHash + "&peer_id=" + peerID @@ -425,10 +428,10 @@ public class TrackerClient extends I2PAppThread + "&ip=" + _util.getOurIPString() + ".i2p" + "&uploaded=" + uploaded + "&downloaded=" + downloaded - + "&left=" + left + + "&left=" + tleft + "&compact=1" // NOTE: opentracker will return 400 for &compact alone + ((! event.equals(NO_EVENT)) ? ("&event=" + event) : ""); - if (left <= 0 || event.equals(STOPPED_EVENT) || !coordinator.needPeers()) + if (left == 0 || event.equals(STOPPED_EVENT) || !coordinator.needPeers()) s += "&numwant=0"; else s += "&numwant=" + _util.getMaxConnections(); @@ -445,7 +448,7 @@ public class TrackerClient extends I2PAppThread in = new FileInputStream(fetched); TrackerInfo info = new TrackerInfo(in, snark.getID(), - snark.getMetaInfo()); + snark.getInfoHash(), snark.getMetaInfo()); _util.debug("TrackerClient response: " + info, Snark.INFO); String failure = info.getFailureReason(); diff --git a/apps/i2psnark/java/src/org/klomp/snark/TrackerInfo.java b/apps/i2psnark/java/src/org/klomp/snark/TrackerInfo.java index ef67fc58b..1b829d0ee 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/TrackerInfo.java +++ b/apps/i2psnark/java/src/org/klomp/snark/TrackerInfo.java @@ -46,19 +46,20 @@ public class TrackerInfo private int complete; private int incomplete; - public TrackerInfo(InputStream in, byte[] my_id, MetaInfo metainfo) + /** @param metainfo may be null */ + public TrackerInfo(InputStream in, byte[] my_id, byte[] infohash, MetaInfo metainfo) throws IOException { - this(new BDecoder(in), my_id, metainfo); + this(new BDecoder(in), my_id, infohash, metainfo); } - public TrackerInfo(BDecoder be, byte[] my_id, MetaInfo metainfo) + private TrackerInfo(BDecoder be, byte[] my_id, byte[] infohash, MetaInfo metainfo) throws IOException { - this(be.bdecodeMap().getMap(), my_id, metainfo); + this(be.bdecodeMap().getMap(), my_id, infohash, metainfo); } - public TrackerInfo(Map m, byte[] my_id, MetaInfo metainfo) + private TrackerInfo(Map m, byte[] my_id, byte[] infohash, MetaInfo metainfo) throws IOException { BEValue reason = (BEValue)m.get("failure reason"); @@ -84,10 +85,10 @@ public class TrackerInfo Set p; try { // One big string (the official compact format) - p = getPeers(bePeers.getBytes(), my_id, metainfo); + p = getPeers(bePeers.getBytes(), my_id, infohash, metainfo); } catch (InvalidBEncodingException ibe) { // List of Dictionaries or List of Strings - p = getPeers(bePeers.getList(), my_id, metainfo); + p = getPeers(bePeers.getList(), my_id, infohash, metainfo); } peers = p; } @@ -123,7 +124,7 @@ public class TrackerInfo ******/ /** List of Dictionaries or List of Strings */ - private static Set getPeers(List l, byte[] my_id, MetaInfo metainfo) + private static Set getPeers(List l, byte[] my_id, byte[] infohash, MetaInfo metainfo) throws IOException { Set peers = new HashSet(l.size()); @@ -144,7 +145,7 @@ public class TrackerInfo continue; } } - peers.add(new Peer(peerID, my_id, metainfo.getInfoHash(), metainfo)); + peers.add(new Peer(peerID, my_id, infohash, metainfo)); } return peers; @@ -156,7 +157,7 @@ public class TrackerInfo * One big string of concatenated 32-byte hashes * @since 0.8.1 */ - private static Set getPeers(byte[] l, byte[] my_id, MetaInfo metainfo) + private static Set getPeers(byte[] l, byte[] my_id, byte[] infohash, MetaInfo metainfo) throws IOException { int count = l.length / HASH_LENGTH; @@ -172,7 +173,7 @@ public class TrackerInfo // won't happen continue; } - peers.add(new Peer(peerID, my_id, metainfo.getInfoHash(), metainfo)); + peers.add(new Peer(peerID, my_id, infohash, metainfo)); } return peers; diff --git a/apps/i2psnark/java/src/org/klomp/snark/bencode/BEValue.java b/apps/i2psnark/java/src/org/klomp/snark/bencode/BEValue.java index 986e45643..75a63bab1 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/bencode/BEValue.java +++ b/apps/i2psnark/java/src/org/klomp/snark/bencode/BEValue.java @@ -24,6 +24,8 @@ import java.io.UnsupportedEncodingException; import java.util.List; import java.util.Map; +import net.i2p.data.Base64; + /** * Holds different types that a bencoded byte array can represent. * You need to call the correct get method to get the correct java @@ -180,10 +182,14 @@ public class BEValue { byte[] bs = (byte[])value; // XXX - Stupid heuristic... and not UTF-8 - if (bs.length <= 12) - valueString = new String(bs); + //if (bs.length <= 12) + // valueString = new String(bs); + //else + // valueString = "bytes:" + bs.length; + if (bs.length <= 32) + valueString = bs.length + " bytes: " + Base64.encode(bs); else - valueString = "bytes:" + bs.length; + valueString = bs.length + " bytes"; } else valueString = value.toString(); diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index bd08dc46d..077b24351 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -1314,15 +1314,17 @@ public class I2PSnarkServlet extends Default { out.write("     "); out.write(renderOptions(0, 4, options.remove("outbound.length"), "outbound.length", HOP)); - out.write("
    "); - out.write(_("I2CP host")); - out.write(": "); + if (!_context.isRouterContext()) { + out.write("
    "); + out.write(_("I2CP host")); + out.write(": "); - out.write("
    "); - out.write(_("I2CP port")); - out.write(":
    \n"); + out.write("
    "); + out.write(_("I2CP port")); + out.write(":
    \n"); + } StringBuilder opts = new StringBuilder(64); for (Iterator iter = options.entrySet().iterator(); iter.hasNext(); ) { From 2ae91a9801ab7cd266e130248c21aed8632b6111 Mon Sep 17 00:00:00 2001 From: zzz Date: Mon, 27 Dec 2010 18:08:43 +0000 Subject: [PATCH 023/463] listing info tweaks --- .../org/klomp/snark/web/I2PSnarkServlet.java | 81 +++++++++++++------ 1 file changed, 56 insertions(+), 25 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 077b24351..6b8273455 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -827,32 +827,13 @@ public class I2PSnarkServlet extends Default { out.write(statusString + "
    "); - // temporarily hardcoded for postman* and anonymity, requires bytemonsoon patch for lookup by info_hash String announce = null; - if (isValid) + if (isValid) { announce = meta.getAnnounce(); - if (announce != null && (announce.startsWith("http://YRgrgTLG") || announce.startsWith("http://8EoJZIKr") || - announce.startsWith("http://lnQ6yoBT") || announce.startsWith("http://tracker2.postman.i2p/") || - announce.startsWith("http://ahsplxkbhemefwvvml7qovzl5a2b5xo5i7lyai7ntdunvcyfdtna.b32.i2p/"))) { - Map trackers = _manager.getTrackers(); - for (Iterator iter = trackers.entrySet().iterator(); iter.hasNext(); ) { - Map.Entry entry = (Map.Entry)iter.next(); - String name = (String)entry.getKey(); - String baseURL = (String)entry.getValue(); - if (!(baseURL.startsWith(announce) || // vvv hack for non-b64 announce in list vvv - (announce.startsWith("http://lnQ6yoBT") && baseURL.startsWith("http://tracker2.postman.i2p/")) || - (announce.startsWith("http://ahsplxkbhemefwvvml7qovzl5a2b5xo5i7lyai7ntdunvcyfdtna.b32.i2p/") && baseURL.startsWith("http://tracker2.postman.i2p/")))) - continue; - int e = baseURL.indexOf('='); - if (e < 0) - continue; - baseURL = baseURL.substring(e + 1); - out.write(""); - out.write("\"""); - out.write(""); - break; + if (announce != null) { + String trackerLink = getTrackerLink(announce, snark.getInfoHash()); + if (trackerLink != null) + out.write(trackerLink); } } @@ -1094,6 +1075,39 @@ public class I2PSnarkServlet extends Default { } } + /** + * @return string or null + * @since 0.8.4 + */ + private String getTrackerLink(String announce, byte[] infohash) { + // temporarily hardcoded for postman* and anonymity, requires bytemonsoon patch for lookup by info_hash + if (announce != null && (announce.startsWith("http://YRgrgTLG") || announce.startsWith("http://8EoJZIKr") || + announce.startsWith("http://lnQ6yoBT") || announce.startsWith("http://tracker2.postman.i2p/") || + announce.startsWith("http://ahsplxkbhemefwvvml7qovzl5a2b5xo5i7lyai7ntdunvcyfdtna.b32.i2p/"))) { + Map trackers = _manager.getTrackers(); + for (Map.Entry entry : trackers.entrySet()) { + String baseURL = entry.getValue(); + if (!(baseURL.startsWith(announce) || // vvv hack for non-b64 announce in list vvv + (announce.startsWith("http://lnQ6yoBT") && baseURL.startsWith("http://tracker2.postman.i2p/")) || + (announce.startsWith("http://ahsplxkbhemefwvvml7qovzl5a2b5xo5i7lyai7ntdunvcyfdtna.b32.i2p/") && baseURL.startsWith("http://tracker2.postman.i2p/")))) + continue; + int e = baseURL.indexOf('='); + if (e < 0) + continue; + baseURL = baseURL.substring(e + 1); + String name = entry.getKey(); + StringBuilder buf = new StringBuilder(128); + buf.append("" + + "\"").append(_("Info")).append("\""); + return buf.toString(); + } + } + return null; + } + private void writeAddForm(PrintWriter out, HttpServletRequest req) throws IOException { String uri = req.getRequestURI(); String newURL = req.getParameter("newURL"); @@ -1577,8 +1591,25 @@ public class I2PSnarkServlet extends Default { } buf.append("
    ").append(_("Pieces")).append(": ").append(pieces); buf.append("
    ").append(_("Piece size")).append(": ").append(formatSize(snark.getPieceLength(0))); + + if (meta != null) { + String announce = meta.getAnnounce(); + if (announce != null) { + String trackerLink = getTrackerLink(announce, snark.getInfoHash()); + if (trackerLink != null) { + if (announce.startsWith("http://")) + announce = announce.substring(7); + int slsh = announce.indexOf('/'); + if (slsh > 0) + announce = announce.substring(0, slsh); + buf.append("
    ").append(trackerLink).append(' ').append(announce); + } + } + } + String hex = I2PSnarkUtil.toHex(snark.getInfoHash()); - buf.append("
    ").append(_("Magnet link")).append(": ") + buf.append("
    ").append(toImg("magnet", _("Magnet link"))).append("
    ") .append(MAGNET).append(hex).append(""); // We don't have the hash of the torrent file //buf.append("
    ").append(_("Maggot link")).append(": ") From 01b67acfa017ef92e5215431396b1f8c4b56a2a8 Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 28 Dec 2010 15:46:45 +0000 Subject: [PATCH 024/463] - Catch OOM when creating torrent (tickets #364 and #366) - Fix changing 'use open trackers' config setting (old bug) - More TrackerClient fixes for no primary announce - More BEValue.toString() improvements for debugging --- .../src/org/klomp/snark/I2PSnarkUtil.java | 15 +++++--- .../java/src/org/klomp/snark/Snark.java | 2 + .../src/org/klomp/snark/SnarkManager.java | 7 +++- .../src/org/klomp/snark/TrackerClient.java | 10 ++--- .../src/org/klomp/snark/bencode/BEValue.java | 37 +++++++++++++++---- .../org/klomp/snark/web/I2PSnarkServlet.java | 2 + 6 files changed, 53 insertions(+), 20 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java index 775d4cc4a..16edc12f6 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java +++ b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java @@ -60,6 +60,7 @@ public class I2PSnarkUtil { private int _maxConnections; private File _tmpDir; private int _startupDelay; + private boolean _shouldUseOT; private KRPC _krpc; public static final int DEFAULT_STARTUP_DELAY = 3; @@ -83,6 +84,7 @@ public class I2PSnarkUtil { _maxUpBW = DEFAULT_MAX_UP_BW; _maxConnections = MAX_CONNECTIONS; _startupDelay = DEFAULT_STARTUP_DELAY; + _shouldUseOT = DEFAULT_USE_OPENTRACKERS; // This is used for both announce replies and .torrent file downloads, // so it must be available even if not connected to I2CP. // so much for multiple instances @@ -425,10 +427,10 @@ public class I2PSnarkUtil { /** comma delimited list open trackers to use as backups */ /** sorted map of name to announceURL=baseURL */ - public List getOpenTrackers() { + public List getOpenTrackers() { if (!shouldUseOpenTrackers()) return null; - List rv = new ArrayList(1); + List rv = new ArrayList(1); String trackers = getOpenTrackerString(); StringTokenizer tok = new StringTokenizer(trackers, ", "); while (tok.hasMoreTokens()) @@ -439,11 +441,12 @@ public class I2PSnarkUtil { return rv; } + public void setUseOpenTrackers(boolean yes) { + _shouldUseOT = yes; + } + public boolean shouldUseOpenTrackers() { - String rv = (String) _opts.get(PROP_USE_OPENTRACKERS); - if (rv == null) - return DEFAULT_USE_OPENTRACKERS; - return Boolean.valueOf(rv).booleanValue(); + return _shouldUseOT; } /** diff --git a/apps/i2psnark/java/src/org/klomp/snark/Snark.java b/apps/i2psnark/java/src/org/klomp/snark/Snark.java index d114fe0ee..e3a99bdc9 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Snark.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Snark.java @@ -394,6 +394,8 @@ public class Snark */ else fatal("Cannot open '" + torrent + "'", ioe); + } catch (OutOfMemoryError oom) { + fatal("ERROR - Out of memory, cannot create torrent " + torrent + ": " + oom.getMessage()); } finally { if (in != null) try { in.close(); } catch (IOException ioe) {} diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index 1e5ba10bf..6ac7261e3 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -263,7 +263,9 @@ public class SnarkManager implements Snark.CompleteListener { String ot = _config.getProperty(I2PSnarkUtil.PROP_OPENTRACKERS); if (ot != null) _util.setOpenTrackerString(ot); - // FIXME set util use open trackers property somehow + String useOT = _config.getProperty(I2PSnarkUtil.PROP_USE_OPENTRACKERS); + boolean bOT = useOT == null || Boolean.valueOf(useOT).booleanValue(); + _util.setUseOpenTrackers(bOT); getDataDir().mkdirs(); } @@ -434,6 +436,7 @@ public class SnarkManager implements Snark.CompleteListener { addMessage(_("Enabled open trackers - torrent restart required to take effect.")); else addMessage(_("Disabled open trackers - torrent restart required to take effect.")); + _util.setUseOpenTrackers(useOpenTrackers); changed = true; } if (openTrackers != null) { @@ -605,6 +608,8 @@ public class SnarkManager implements Snark.CompleteListener { if (sfile.exists()) sfile.delete(); return; + } catch (OutOfMemoryError oom) { + addMessage(_("ERROR - Out of memory, cannot create torrent from {0}", sfile.getName()) + ": " + oom.getMessage()); } finally { if (fis != null) try { fis.close(); } catch (IOException ioe) {} } diff --git a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java index d03753d6b..9cf9f7f09 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java +++ b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java @@ -137,18 +137,18 @@ public class TrackerClient extends I2PAppThread // the primary tracker, that we don't add it twice. // todo: check for b32 matches as well trackers = new ArrayList(2); - String primary; + String primary = null; if (meta != null) { primary = meta.getAnnounce(); if (isValidAnnounce(primary)) { trackers.add(new Tracker(meta.getAnnounce(), true)); + _log.debug("Announce: [" + primary + "] infoHash: " + infoHash); } else { _log.warn("Skipping invalid or non-i2p announce: " + primary); } - } else { - primary = ""; } - _log.debug("Announce: [" + primary + "] infoHash: " + infoHash); + if (primary == null) + primary = ""; List tlist = _util.getOpenTrackers(); if (tlist != null) { for (int i = 0; i < tlist.size(); i++) { @@ -179,7 +179,7 @@ public class TrackerClient extends I2PAppThread } } - if (tlist.isEmpty()) { + if (trackers.isEmpty()) { // FIXME really need to get this message to the gui stop = true; _log.error("No valid trackers for infoHash: " + infoHash); diff --git a/apps/i2psnark/java/src/org/klomp/snark/bencode/BEValue.java b/apps/i2psnark/java/src/org/klomp/snark/bencode/BEValue.java index 75a63bab1..4cae2881a 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/bencode/BEValue.java +++ b/apps/i2psnark/java/src/org/klomp/snark/bencode/BEValue.java @@ -180,15 +180,36 @@ public class BEValue String valueString; if (value instanceof byte[]) { + // try to do a nice job for debugging byte[] bs = (byte[])value; - // XXX - Stupid heuristic... and not UTF-8 - //if (bs.length <= 12) - // valueString = new String(bs); - //else - // valueString = "bytes:" + bs.length; - if (bs.length <= 32) - valueString = bs.length + " bytes: " + Base64.encode(bs); - else + if (bs.length == 0) + valueString = "0 bytes"; + else if (bs.length <= 32) { + StringBuilder buf = new StringBuilder(32); + boolean bin = false; + for (int i = 0; i < bs.length; i++) { + int b = bs[i] & 0xff; + // no UTF-8 + if (b < ' ' || b > 0x7e) { + bin = true; + break; + } + } + if (bin && bs.length <= 8) { + buf.append(bs.length).append(" bytes: 0x"); + for (int i = 0; i < bs.length; i++) { + int b = bs[i] & 0xff; + if (b < 16) + buf.append('0'); + buf.append(Integer.toHexString(b)); + } + } else if (bin) { + buf.append(bs.length).append(" bytes: ").append(Base64.encode(bs)); + } else { + buf.append('"').append(new String(bs)).append('"'); + } + valueString = buf.toString(); + } else valueString = bs.length + " bytes"; } else diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 6b8273455..5890c0df6 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -1902,6 +1902,8 @@ private static class FetchAndAdd implements Runnable { } } catch (IOException ioe) { _manager.addMessage(_("Torrent at {0} was not valid", urlify(_url)) + ": " + ioe.getMessage()); + } catch (OutOfMemoryError oom) { + _manager.addMessage(_("ERROR - Out of memory, cannot create torrent from {0}", urlify(_url)) + ": " + oom.getMessage()); } finally { try { if (in != null) in.close(); } catch (IOException ioe) {} } From 5a4af0eeb8a56967963e052ffeb40e3499326f02 Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 30 Dec 2010 15:33:36 +0000 Subject: [PATCH 025/463] fixup after prop --- .../src/org/klomp/snark/web/I2PSnarkServlet.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 058461fc4..c71c06cdf 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -374,7 +374,7 @@ public class I2PSnarkServlet extends Default { Snark snark = (Snark)snarks.get(i); boolean showDebug = "2".equals(peerParam); boolean showPeers = showDebug || "1".equals(peerParam) || Base64.encode(snark.getInfoHash()).equals(peerParam); - displaySnark(out, snark, uri, i, stats, showPeers, isDegraded, showDebug); + displaySnark(out, snark, uri, i, stats, showPeers, isDegraded, noThinsp, showDebug); } if (snarks.isEmpty()) { @@ -735,7 +735,7 @@ public class I2PSnarkServlet extends Default { private static final int MAX_DISPLAYED_FILENAME_LENGTH = 50; private static final int MAX_DISPLAYED_ERROR_LENGTH = 43; private void displaySnark(PrintWriter out, Snark snark, String uri, int row, long stats[], boolean showPeers, - boolean isDegraded, boolean showDebug) throws IOException { + boolean isDegraded, boolean noThinsp, boolean showDebug) throws IOException { String filename = snark.getName(); File f = new File(filename); filename = f.getName(); // the torrent may be the canonical name, so lets just grab the local name @@ -785,7 +785,7 @@ public class I2PSnarkServlet extends Default { if (isRunning && curPeers > 0 && !showPeers) statusString = "\"\"
    " + _("Tracker Error") + ": " + - curPeers + thinsp(isDegraded) + + curPeers + thinsp(noThinsp) + ngettext("1 peer", "{0} peers", knownPeers) + ""; else if (isRunning) statusString = "\"\"" + _("Tracker Error") + @@ -801,7 +801,7 @@ public class I2PSnarkServlet extends Default { if (isRunning && curPeers > 0 && !showPeers) statusString = "\"\"" + _("Seeding") + ": " + - curPeers + thinsp(isDegraded) + + curPeers + thinsp(noThinsp) + ngettext("1 peer", "{0} peers", knownPeers) + ""; else if (isRunning) statusString = "\"\"" + _("Seeding") + @@ -813,7 +813,7 @@ public class I2PSnarkServlet extends Default { if (isRunning && curPeers > 0 && downBps > 0 && !showPeers) statusString = "\"\"" + _("OK") + ": " + - curPeers + thinsp(isDegraded) + + curPeers + thinsp(noThinsp) + ngettext("1 peer", "{0} peers", knownPeers) + ""; else if (isRunning && curPeers > 0 && downBps > 0) statusString = "\"\"" + _("OK") + @@ -822,7 +822,7 @@ public class I2PSnarkServlet extends Default { else if (isRunning && curPeers > 0 && !showPeers) statusString = "\"\"" + _("Stalled") + ": " + - curPeers + thinsp(isDegraded) + + curPeers + thinsp(noThinsp) + ngettext("1 peer", "{0} peers", knownPeers) + ""; else if (isRunning && curPeers > 0) statusString = "\"\"" + _("Stalled") + @@ -893,7 +893,7 @@ public class I2PSnarkServlet extends Default { out.write(""); if (remaining > 0) - out.write(formatSize(total-remaining) + thinsp(isDegraded) + formatSize(total)); + out.write(formatSize(total-remaining) + thinsp(noThinsp) + formatSize(total)); else if (remaining == 0) out.write(formatSize(total)); // 3GB else From 4d4bfa00b3082f3d865c1261c36e3f5352fa8afe Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 1 Jan 2011 14:59:41 +0000 Subject: [PATCH 026/463] add dht stub --- .../src/org/klomp/snark/I2PSnarkUtil.java | 9 +- .../src/org/klomp/snark/PeerCoordinator.java | 8 +- .../src/org/klomp/snark/TrackerClient.java | 2 +- .../java/src/org/klomp/snark/dht/DHT.java | 83 +++++++++++++++++++ 4 files changed, 93 insertions(+), 9 deletions(-) create mode 100644 apps/i2psnark/java/src/org/klomp/snark/dht/DHT.java diff --git a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java index 16edc12f6..89f5087b1 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java +++ b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java @@ -34,6 +34,7 @@ import net.i2p.util.SimpleScheduler; import net.i2p.util.SimpleTimer; import net.i2p.util.Translate; +import org.klomp.snark.dht.DHT; import org.klomp.snark.dht.KRPC; /** @@ -61,7 +62,7 @@ public class I2PSnarkUtil { private File _tmpDir; private int _startupDelay; private boolean _shouldUseOT; - private KRPC _krpc; + private DHT _dht; public static final int DEFAULT_STARTUP_DELAY = 3; public static final String PROP_USE_OPENTRACKERS = "i2psnark.useOpentrackers"; @@ -195,8 +196,8 @@ public class I2PSnarkUtil { _manager = I2PSocketManagerFactory.createManager(_i2cpHost, _i2cpPort, opts); } // FIXME this only instantiates krpc once, left stuck with old manager - if (ENABLE_DHT && _manager != null && _krpc == null) - _krpc = new KRPC(_context, _manager.getSession()); + if (ENABLE_DHT && _manager != null && _dht == null) + _dht = new KRPC(_context, _manager.getSession()); return (_manager != null); } @@ -204,7 +205,7 @@ public class I2PSnarkUtil { * @return null if disabled or not started * @since 0.8.4 */ - public KRPC getDHT() { return _krpc; } + public DHT getDHT() { return _dht; } public boolean connected() { return _manager != null; } diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java index 74a840fc7..dbecc757e 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java @@ -36,7 +36,7 @@ import net.i2p.util.I2PAppThread; import net.i2p.util.Log; import net.i2p.util.SimpleTimer2; -import org.klomp.snark.dht.KRPC; +import org.klomp.snark.dht.DHT; /** * Coordinates what peer does what. @@ -1194,9 +1194,9 @@ public class PeerCoordinator implements PeerListener * @since 0.8.4 */ public void gotPort(Peer peer, int port) { - KRPC krpc = _util.getDHT(); - if (krpc != null) - krpc.ping(peer.getDestination(), port); + DHT dht = _util.getDHT(); + if (dht != null) + dht.ping(peer.getDestination(), port); } /** Return number of allowed uploaders for this torrent. diff --git a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java index 9cf9f7f09..d03ca55db 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java +++ b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java @@ -38,7 +38,7 @@ import net.i2p.data.Hash; import net.i2p.util.I2PAppThread; import net.i2p.util.Log; -import org.klomp.snark.dht.KRPC; +import org.klomp.snark.dht.DHT; /** * Informs metainfo tracker of events and gets new peers for peer diff --git a/apps/i2psnark/java/src/org/klomp/snark/dht/DHT.java b/apps/i2psnark/java/src/org/klomp/snark/dht/DHT.java new file mode 100644 index 000000000..29e0fa20b --- /dev/null +++ b/apps/i2psnark/java/src/org/klomp/snark/dht/DHT.java @@ -0,0 +1,83 @@ +package org.klomp.snark.dht; + +/* + * Copyright 2010 zzz (zzz@mail.i2p) + * GPLv2 + */ + +import java.util.List; + +import net.i2p.data.Destination; +import net.i2p.data.Hash; + + +/** + * Stub for KRPC + */ +public interface DHT { + + + /** + * @return The UDP port that should be included in a PORT message. + */ + public int getPort(); + + /** + * Ping. We don't have a NID yet so the node is presumed + * to be absent from our DHT. + * Non-blocking, does not wait for pong. + * If and when the pong is received the node will be inserted in our DHT. + */ + public void ping(Destination dest, int port); + + /** + * Get peers for a torrent. + * Blocking! + * Caller should run in a thread. + * + * @param ih the Info Hash (torrent) + * @param max maximum number of peers to return + * @param maxWait the maximum time to wait (ms) must be > 0 + * @return list or empty list (never null) + */ + public List getPeers(byte[] ih, int max, long maxWait); + + /** + * Announce to ourselves. + * Non-blocking. + * + * @param ih the Info Hash (torrent) + */ + public void announce(byte[] ih); + + /** + * Announce somebody else we know about. + * Non-blocking. + * + * @param ih the Info Hash (torrent) + * @param peer the peer's Hash + */ + public void announce(byte[] ih, byte[] peerHash); + + /** + * Remove reference to ourselves in the local tracker. + * Use when shutting down the torrent locally. + * Non-blocking. + * + * @param ih the Info Hash (torrent) + */ + public void unannounce(byte[] ih); + + /** + * Announce to the closest DHT peers. + * Blocking unless maxWait <= 0 + * Caller should run in a thread. + * This also automatically announces ourself to our local tracker. + * For best results do a getPeers() first so we have tokens. + * + * @param ih the Info Hash (torrent) + * @param maxWait the maximum total time to wait (ms) or 0 to do all in parallel and return immediately. + * @return the number of successful announces, not counting ourselves. + */ + public int announce(byte[] ih, int max, long maxWait); +} From 0eebfbacd75b6d072aa24f74c5fbe7e38d25666b Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 1 Jan 2011 20:07:34 +0000 Subject: [PATCH 027/463] generics --- .../router/networkdb/kademlia/XORComparator.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/XORComparator.java b/router/java/src/net/i2p/router/networkdb/kademlia/XORComparator.java index 3c2b9d2d2..71dbefc6e 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/XORComparator.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/XORComparator.java @@ -9,7 +9,7 @@ import net.i2p.data.Hash; * Help sort Hashes in relation to a base key using the XOR metric * */ -class XORComparator implements Comparator { +class XORComparator implements Comparator { private Hash _base; /** * @param target key to compare distances with @@ -17,15 +17,11 @@ class XORComparator implements Comparator { public XORComparator(Hash target) { _base = target; } - public int compare(Object lhs, Object rhs) { + public int compare(Hash lhs, Hash rhs) { if (lhs == null) throw new NullPointerException("LHS is null"); if (rhs == null) throw new NullPointerException("RHS is null"); - if ( (lhs instanceof Hash) && (rhs instanceof Hash) ) { - byte lhsDelta[] = DataHelper.xor(((Hash)lhs).getData(), _base.getData()); - byte rhsDelta[] = DataHelper.xor(((Hash)rhs).getData(), _base.getData()); - return DataHelper.compareTo(lhsDelta, rhsDelta); - } else { - throw new ClassCastException(lhs.getClass().getName() + " / " + rhs.getClass().getName()); - } + byte lhsDelta[] = DataHelper.xor(lhs.getData(), _base.getData()); + byte rhsDelta[] = DataHelper.xor(rhs.getData(), _base.getData()); + return DataHelper.compareTo(lhsDelta, rhsDelta); } } From 378490886f202b47af10dc4d643f974210005c7f Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 2 Jan 2011 14:23:26 +0000 Subject: [PATCH 028/463] * NetDB, DatabaseeStoreMessage: - Convert everything from DataStructure to the new DatabaseEntry superclass - Optimizations made possible by DatabaseEntry - Don't rescan netDb directory unless changed --- .../i2p/data/i2np/DatabaseStoreMessage.java | 131 +++++++---------- .../router/DummyNetworkDatabaseFacade.java | 2 + .../net/i2p/router/NetworkDatabaseFacade.java | 6 + .../OutboundClientMessageJobHelper.java | 3 +- .../HandleDatabaseLookupMessageJob.java | 17 ++- .../HandleDatabaseStoreMessageJob.java | 18 ++- .../router/networkdb/kademlia/DataStore.java | 20 ++- .../networkdb/kademlia/ExpireLeasesJob.java | 5 +- .../kademlia/FloodOnlyLookupMatchJob.java | 12 +- .../networkdb/kademlia/FloodSearchJob.java | 3 +- .../FloodfillNetworkDatabaseFacade.java | 31 ++-- .../networkdb/kademlia/FloodfillStoreJob.java | 15 +- .../kademlia/FloodfillVerifyStoreJob.java | 15 +- ...ndleFloodfillDatabaseLookupMessageJob.java | 4 +- ...andleFloodfillDatabaseStoreMessageJob.java | 28 ++-- .../KademliaNetworkDatabaseFacade.java | 136 ++++++++++-------- .../kademlia/PersistentDataStore.java | 109 +++++++------- .../router/networkdb/kademlia/SearchJob.java | 11 +- .../kademlia/SearchUpdateReplyFoundJob.java | 15 +- .../router/networkdb/kademlia/StoreJob.java | 27 ++-- .../router/networkdb/kademlia/StoreState.java | 10 +- .../kademlia/TransientDataStore.java | 47 ++++-- .../i2p/router/peermanager/PeerTestJob.java | 3 +- .../router/transport/ntcp/NTCPConnection.java | 3 +- .../transport/udp/EstablishmentManager.java | 3 +- .../router/transport/udp/UDPTransport.java | 16 ++- .../tunnel/InboundMessageDistributor.java | 13 +- 27 files changed, 355 insertions(+), 348 deletions(-) diff --git a/router/java/src/net/i2p/data/i2np/DatabaseStoreMessage.java b/router/java/src/net/i2p/data/i2np/DatabaseStoreMessage.java index 0a2ee498b..b0a4cfc6d 100644 --- a/router/java/src/net/i2p/data/i2np/DatabaseStoreMessage.java +++ b/router/java/src/net/i2p/data/i2np/DatabaseStoreMessage.java @@ -12,6 +12,7 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import net.i2p.I2PAppContext; +import net.i2p.data.DatabaseEntry; import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; import net.i2p.data.Hash; @@ -28,59 +29,39 @@ import net.i2p.data.TunnelId; public class DatabaseStoreMessage extends I2NPMessageImpl { public final static int MESSAGE_TYPE = 1; private Hash _key; - private int _type; - private LeaseSet _leaseSet; - private RouterInfo _info; - private byte[] _leaseSetCache; - private byte[] _routerInfoCache; + private DatabaseEntry _dbEntry; + private byte[] _byteCache; private long _replyToken; private TunnelId _replyTunnel; private Hash _replyGateway; - public final static int KEY_TYPE_ROUTERINFO = 0; - public final static int KEY_TYPE_LEASESET = 1; - public DatabaseStoreMessage(I2PAppContext context) { super(context); - setValueType(-1); } /** * Defines the key in the network database being stored * */ - public Hash getKey() { return _key; } - public void setKey(Hash key) { _key = key; } - - /** - * Defines the router info value in the network database being stored - * - */ - public RouterInfo getRouterInfo() { return _info; } - public void setRouterInfo(RouterInfo routerInfo) { - _info = routerInfo; - if (_info != null) - setValueType(KEY_TYPE_ROUTERINFO); + public Hash getKey() { + if (_key != null) + return _key; // receive + if (_dbEntry != null) + return _dbEntry.getHash(); // create + return null; } /** - * Defines the lease set value in the network database being stored - * + * Defines the entry in the network database being stored */ - public LeaseSet getLeaseSet() { return _leaseSet; } - public void setLeaseSet(LeaseSet leaseSet) { - _leaseSet = leaseSet; - if (_leaseSet != null) - setValueType(KEY_TYPE_LEASESET); - } - + public DatabaseEntry getEntry() { return _dbEntry; } + /** - * Defines type of key being stored in the network database - - * either KEY_TYPE_ROUTERINFO or KEY_TYPE_LEASESET - * + * This also sets the key */ - public int getValueType() { return _type; } - public void setValueType(int type) { _type = type; } + public void setEntry(DatabaseEntry entry) { + _dbEntry = entry; + } /** * If a reply is desired, this token specifies the message ID that should @@ -90,6 +71,7 @@ public class DatabaseStoreMessage extends I2NPMessageImpl { * @return positive reply token ID, or 0 if no reply is necessary. */ public long getReplyToken() { return _replyToken; } + /** * Update the reply token. * @@ -113,13 +95,10 @@ public class DatabaseStoreMessage extends I2NPMessageImpl { if (type != MESSAGE_TYPE) throw new I2NPMessageException("Message type is incorrect for this message"); int curIndex = offset; - //byte keyData[] = new byte[Hash.HASH_LENGTH]; - //System.arraycopy(data, curIndex, keyData, 0, Hash.HASH_LENGTH); _key = Hash.create(data, curIndex); curIndex += Hash.HASH_LENGTH; - //_key = new Hash(keyData); - _type = (int)DataHelper.fromLong(data, curIndex, 1); + type = (int)DataHelper.fromLong(data, curIndex, 1); curIndex++; _replyToken = DataHelper.fromLong(data, curIndex, 4); @@ -131,39 +110,38 @@ public class DatabaseStoreMessage extends I2NPMessageImpl { _replyTunnel = new TunnelId(tunnel); curIndex += 4; - //byte gw[] = new byte[Hash.HASH_LENGTH]; - //System.arraycopy(data, curIndex, gw, 0, Hash.HASH_LENGTH); _replyGateway = Hash.create(data, curIndex); curIndex += Hash.HASH_LENGTH; - //_replyGateway = new Hash(gw); } else { _replyTunnel = null; _replyGateway = null; } - if (_type == KEY_TYPE_LEASESET) { - _leaseSet = new LeaseSet(); + if (type == DatabaseEntry.KEY_TYPE_LEASESET) { + _dbEntry = new LeaseSet(); try { - _leaseSet.readBytes(new ByteArrayInputStream(data, curIndex, data.length-curIndex)); + _dbEntry.readBytes(new ByteArrayInputStream(data, curIndex, data.length-curIndex)); } catch (DataFormatException dfe) { throw new I2NPMessageException("Error reading the leaseSet", dfe); } - } else if (_type == KEY_TYPE_ROUTERINFO) { - _info = new RouterInfo(); + } else if (type == DatabaseEntry.KEY_TYPE_ROUTERINFO) { + _dbEntry = new RouterInfo(); int compressedSize = (int)DataHelper.fromLong(data, curIndex, 2); curIndex += 2; try { byte decompressed[] = DataHelper.decompress(data, curIndex, compressedSize); - _info.readBytes(new ByteArrayInputStream(decompressed)); + _dbEntry.readBytes(new ByteArrayInputStream(decompressed)); } catch (DataFormatException dfe) { throw new I2NPMessageException("Error reading the routerInfo", dfe); } catch (IOException ioe) { throw new I2NPMessageException("Compressed routerInfo was corrupt", ioe); } } else { - throw new I2NPMessageException("Invalid type of key read from the structure - " + _type); + throw new I2NPMessageException("Invalid type of key read from the structure - " + type); } + //if (!key.equals(_dbEntry.getHash())) + // throw new I2NPMessageException("Hash mismatch in DSM"); } @@ -172,28 +150,28 @@ public class DatabaseStoreMessage extends I2NPMessageImpl { int len = Hash.HASH_LENGTH + 1 + 4; // key+type+replyToken if (_replyToken > 0) len += 4 + Hash.HASH_LENGTH; // replyTunnel+replyGateway - if (_type == KEY_TYPE_LEASESET) { - _leaseSetCache = _leaseSet.toByteArray(); - len += _leaseSetCache.length; - } else if (_type == KEY_TYPE_ROUTERINFO) { - byte uncompressed[] = _info.toByteArray(); - byte compressed[] = DataHelper.compress(uncompressed); - _routerInfoCache = compressed; - len += compressed.length + 2; + if (_dbEntry.getType() == DatabaseEntry.KEY_TYPE_LEASESET) { + _byteCache = _dbEntry.toByteArray(); + } else if (_dbEntry.getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO) { + byte uncompressed[] = _dbEntry.toByteArray(); + _byteCache = DataHelper.compress(uncompressed); + len += 2; } + len += _byteCache.length; return len; } + /** write the message body to the output array, starting at the given index */ protected int writeMessageBody(byte out[], int curIndex) throws I2NPMessageException { - if (_key == null) throw new I2NPMessageException("Invalid key"); - if ( (_type != KEY_TYPE_LEASESET) && (_type != KEY_TYPE_ROUTERINFO) ) throw new I2NPMessageException("Invalid key type"); - if ( (_type == KEY_TYPE_LEASESET) && (_leaseSet == null) ) throw new I2NPMessageException("Missing lease set"); - if ( (_type == KEY_TYPE_ROUTERINFO) && (_info == null) ) throw new I2NPMessageException("Missing router info"); + if (_dbEntry == null) throw new I2NPMessageException("Missing entry"); + int type = _dbEntry.getType(); + if (type != DatabaseEntry.KEY_TYPE_LEASESET && type != DatabaseEntry.KEY_TYPE_ROUTERINFO) + throw new I2NPMessageException("Invalid key type"); - System.arraycopy(_key.getData(), 0, out, curIndex, Hash.HASH_LENGTH); + // Use the hash of the DatabaseEntry + System.arraycopy(getKey().getData(), 0, out, curIndex, Hash.HASH_LENGTH); curIndex += Hash.HASH_LENGTH; - byte type[] = DataHelper.toLong(1, _type); - out[curIndex++] = type[0]; + out[curIndex++] = (byte) type; byte tok[] = DataHelper.toLong(4, _replyToken); System.arraycopy(tok, 0, out, curIndex, 4); curIndex += 4; @@ -209,17 +187,14 @@ public class DatabaseStoreMessage extends I2NPMessageImpl { curIndex += Hash.HASH_LENGTH; } - if (_type == KEY_TYPE_LEASESET) { - // initialized in calculateWrittenLength - System.arraycopy(_leaseSetCache, 0, out, curIndex, _leaseSetCache.length); - curIndex += _leaseSetCache.length; - } else if (_type == KEY_TYPE_ROUTERINFO) { - byte len[] = DataHelper.toLong(2, _routerInfoCache.length); + // _byteCache initialized in calculateWrittenLength + if (type == DatabaseEntry.KEY_TYPE_ROUTERINFO) { + byte len[] = DataHelper.toLong(2, _byteCache.length); out[curIndex++] = len[0]; out[curIndex++] = len[1]; - System.arraycopy(_routerInfoCache, 0, out, curIndex, _routerInfoCache.length); - curIndex += _routerInfoCache.length; } + System.arraycopy(_byteCache, 0, out, curIndex, _byteCache.length); + curIndex += _byteCache.length; return curIndex; } @@ -228,9 +203,7 @@ public class DatabaseStoreMessage extends I2NPMessageImpl { @Override public int hashCode() { return DataHelper.hashCode(getKey()) + - DataHelper.hashCode(getLeaseSet()) + - DataHelper.hashCode(getRouterInfo()) + - getValueType() + + DataHelper.hashCode(_dbEntry) + (int)getReplyToken() + DataHelper.hashCode(getReplyTunnel()) + DataHelper.hashCode(getReplyGateway()); @@ -241,9 +214,7 @@ public class DatabaseStoreMessage extends I2NPMessageImpl { if ( (object != null) && (object instanceof DatabaseStoreMessage) ) { DatabaseStoreMessage msg = (DatabaseStoreMessage)object; return DataHelper.eq(getKey(),msg.getKey()) && - DataHelper.eq(getLeaseSet(),msg.getLeaseSet()) && - DataHelper.eq(getRouterInfo(),msg.getRouterInfo()) && - _type == msg.getValueType() && + DataHelper.eq(_dbEntry,msg.getEntry()) && getReplyToken() == msg.getReplyToken() && DataHelper.eq(getReplyTunnel(), msg.getReplyTunnel()) && DataHelper.eq(getReplyGateway(), msg.getReplyGateway()); @@ -259,9 +230,7 @@ public class DatabaseStoreMessage extends I2NPMessageImpl { buf.append("\n\tExpiration: ").append(getMessageExpiration()); buf.append("\n\tUnique ID: ").append(getUniqueId()); buf.append("\n\tKey: ").append(getKey()); - buf.append("\n\tValue Type: ").append(getValueType()); - buf.append("\n\tRouter Info: ").append(getRouterInfo()); - buf.append("\n\tLease Set: ").append(getLeaseSet()); + buf.append("\n\tEntry: ").append(_dbEntry); buf.append("\n\tReply token: ").append(getReplyToken()); buf.append("\n\tReply tunnel: ").append(getReplyTunnel()); buf.append("\n\tReply gateway: ").append(getReplyGateway()); diff --git a/router/java/src/net/i2p/router/DummyNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/DummyNetworkDatabaseFacade.java index 6031cf630..0f06f507c 100644 --- a/router/java/src/net/i2p/router/DummyNetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/DummyNetworkDatabaseFacade.java @@ -16,6 +16,7 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; +import net.i2p.data.DatabaseEntry; import net.i2p.data.Hash; import net.i2p.data.LeaseSet; import net.i2p.data.RouterInfo; @@ -36,6 +37,7 @@ class DummyNetworkDatabaseFacade extends NetworkDatabaseFacade { _routers.put(info.getIdentity().getHash(), info); } + public DatabaseEntry lookupLocally(Hash key) { return null; } public void lookupLeaseSet(Hash key, Job onFindJob, Job onFailedLookupJob, long timeoutMs) {} public LeaseSet lookupLeaseSetLocally(Hash key) { return null; } public void lookupRouterInfo(Hash key, Job onFindJob, Job onFailedLookupJob, long timeoutMs) { diff --git a/router/java/src/net/i2p/router/NetworkDatabaseFacade.java b/router/java/src/net/i2p/router/NetworkDatabaseFacade.java index 50b9d5364..741f94953 100644 --- a/router/java/src/net/i2p/router/NetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/NetworkDatabaseFacade.java @@ -13,6 +13,7 @@ import java.io.Writer; import java.util.Collections; import java.util.Set; +import net.i2p.data.DatabaseEntry; import net.i2p.data.Hash; import net.i2p.data.LeaseSet; import net.i2p.data.RouterInfo; @@ -32,6 +33,11 @@ public abstract class NetworkDatabaseFacade implements Service { */ public abstract Set findNearestRouters(Hash key, int maxNumRouters, Set peersToIgnore); + /** + * @return RouterInfo, LeaseSet, or null + * @since 0.8.3 + */ + public abstract DatabaseEntry lookupLocally(Hash key); public abstract void lookupLeaseSet(Hash key, Job onFindJob, Job onFailedLookupJob, long timeoutMs); public abstract LeaseSet lookupLeaseSetLocally(Hash key); public abstract void lookupRouterInfo(Hash key, Job onFindJob, Job onFailedLookupJob, long timeoutMs); diff --git a/router/java/src/net/i2p/router/message/OutboundClientMessageJobHelper.java b/router/java/src/net/i2p/router/message/OutboundClientMessageJobHelper.java index 9025fd22b..0ba55213e 100644 --- a/router/java/src/net/i2p/router/message/OutboundClientMessageJobHelper.java +++ b/router/java/src/net/i2p/router/message/OutboundClientMessageJobHelper.java @@ -227,9 +227,8 @@ class OutboundClientMessageJobHelper { clove.setExpiration(expiration); clove.setId(ctx.random().nextLong(I2NPMessage.MAX_ID_VALUE)); DatabaseStoreMessage msg = new DatabaseStoreMessage(ctx); - msg.setLeaseSet(replyLeaseSet); + msg.setEntry(replyLeaseSet); msg.setMessageExpiration(expiration); - msg.setKey(replyLeaseSet.getDestination().calculateHash()); clove.setPayload(msg); clove.setRecipientPublicKey(null); clove.setRequestAck(false); diff --git a/router/java/src/net/i2p/router/networkdb/HandleDatabaseLookupMessageJob.java b/router/java/src/net/i2p/router/networkdb/HandleDatabaseLookupMessageJob.java index ce907ae71..8cdc87e6f 100644 --- a/router/java/src/net/i2p/router/networkdb/HandleDatabaseLookupMessageJob.java +++ b/router/java/src/net/i2p/router/networkdb/HandleDatabaseLookupMessageJob.java @@ -12,7 +12,7 @@ import java.util.HashSet; import java.util.Iterator; import java.util.Set; -import net.i2p.data.DataStructure; +import net.i2p.data.DatabaseEntry; import net.i2p.data.Hash; import net.i2p.data.LeaseSet; import net.i2p.data.RouterIdentity; @@ -227,20 +227,19 @@ public class HandleDatabaseLookupMessageJob extends JobImpl { return routerHashSet.contains(getContext().routerHash()); } - private void sendData(Hash key, DataStructure data, Hash toPeer, TunnelId replyTunnel) { + private void sendData(Hash key, DatabaseEntry data, Hash toPeer, TunnelId replyTunnel) { + if (!key.equals(data.getHash())) { + _log.error("Hash mismatch HDLMJ"); + return; + } if (_log.shouldLog(Log.DEBUG)) _log.debug("Sending data matching key " + key.toBase64() + " to peer " + toPeer.toBase64() + " tunnel " + replyTunnel); DatabaseStoreMessage msg = new DatabaseStoreMessage(getContext()); - msg.setKey(key); - if (data instanceof LeaseSet) { - msg.setLeaseSet((LeaseSet)data); - msg.setValueType(DatabaseStoreMessage.KEY_TYPE_LEASESET); + if (data.getType() == DatabaseEntry.KEY_TYPE_LEASESET) { getContext().statManager().addRateData("netDb.lookupsMatchedLeaseSet", 1, 0); - } else if (data instanceof RouterInfo) { - msg.setRouterInfo((RouterInfo)data); - msg.setValueType(DatabaseStoreMessage.KEY_TYPE_ROUTERINFO); } + msg.setEntry(data); getContext().statManager().addRateData("netDb.lookupsMatched", 1, 0); getContext().statManager().addRateData("netDb.lookupsHandled", 1, 0); sendMessage(msg, toPeer, replyTunnel); diff --git a/router/java/src/net/i2p/router/networkdb/HandleDatabaseStoreMessageJob.java b/router/java/src/net/i2p/router/networkdb/HandleDatabaseStoreMessageJob.java index a61f947a5..183d1da04 100644 --- a/router/java/src/net/i2p/router/networkdb/HandleDatabaseStoreMessageJob.java +++ b/router/java/src/net/i2p/router/networkdb/HandleDatabaseStoreMessageJob.java @@ -10,9 +10,11 @@ package net.i2p.router.networkdb; import java.util.Date; +import net.i2p.data.DatabaseEntry; import net.i2p.data.Hash; import net.i2p.data.LeaseSet; import net.i2p.data.RouterIdentity; +import net.i2p.data.RouterInfo; import net.i2p.data.i2np.DatabaseStoreMessage; import net.i2p.data.i2np.DeliveryStatusMessage; import net.i2p.router.JobImpl; @@ -59,16 +61,17 @@ public class HandleDatabaseStoreMessageJob extends JobImpl { String invalidMessage = null; boolean wasNew = false; - if (_message.getValueType() == DatabaseStoreMessage.KEY_TYPE_LEASESET) { + DatabaseEntry entry = _message.getEntry(); + if (entry.getType() == DatabaseEntry.KEY_TYPE_LEASESET) { getContext().statManager().addRateData("netDb.storeLeaseSetHandled", 1, 0); try { - LeaseSet ls = _message.getLeaseSet(); + LeaseSet ls = (LeaseSet) entry; // mark it as something we received, so we'll answer queries // for it. this flag does NOT get set on entries that we // receive in response to our own lookups. ls.setReceivedAsPublished(true); - LeaseSet match = getContext().netDb().store(_message.getKey(), _message.getLeaseSet()); + LeaseSet match = getContext().netDb().store(_message.getKey(), ls); if (match == null) { wasNew = true; } else { @@ -78,13 +81,14 @@ public class HandleDatabaseStoreMessageJob extends JobImpl { } catch (IllegalArgumentException iae) { invalidMessage = iae.getMessage(); } - } else if (_message.getValueType() == DatabaseStoreMessage.KEY_TYPE_ROUTERINFO) { + } else if (entry.getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO) { + RouterInfo ri = (RouterInfo) entry; getContext().statManager().addRateData("netDb.storeRouterInfoHandled", 1, 0); if (_log.shouldLog(Log.INFO)) _log.info("Handling dbStore of router " + _message.getKey() + " with publishDate of " - + new Date(_message.getRouterInfo().getPublished())); + + new Date(ri.getPublished())); try { - Object match = getContext().netDb().store(_message.getKey(), _message.getRouterInfo()); + Object match = getContext().netDb().store(_message.getKey(), ri); wasNew = (null == match); getContext().profileManager().heardAbout(_message.getKey()); } catch (IllegalArgumentException iae) { @@ -92,7 +96,7 @@ public class HandleDatabaseStoreMessageJob extends JobImpl { } } else { if (_log.shouldLog(Log.ERROR)) - _log.error("Invalid DatabaseStoreMessage data type - " + _message.getValueType() + _log.error("Invalid DatabaseStoreMessage data type - " + entry.getType() + ": " + _message); } diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/DataStore.java b/router/java/src/net/i2p/router/networkdb/kademlia/DataStore.java index b4b55f3f8..ab064e2b0 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/DataStore.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/DataStore.java @@ -8,21 +8,27 @@ package net.i2p.router.networkdb.kademlia; * */ +import java.util.Collection; +import java.util.Map; import java.util.Set; -import net.i2p.data.DataStructure; +import net.i2p.data.DatabaseEntry; import net.i2p.data.Hash; public interface DataStore { public boolean isInitialized(); public boolean isKnown(Hash key); - public DataStructure get(Hash key); - public DataStructure get(Hash key, boolean persist); - public boolean put(Hash key, DataStructure data); - public boolean put(Hash key, DataStructure data, boolean persist); - public DataStructure remove(Hash key); - public DataStructure remove(Hash key, boolean persist); + public DatabaseEntry get(Hash key); + public DatabaseEntry get(Hash key, boolean persist); + public boolean put(Hash key, DatabaseEntry data); + public boolean put(Hash key, DatabaseEntry data, boolean persist); + public DatabaseEntry remove(Hash key); + public DatabaseEntry remove(Hash key, boolean persist); public Set getKeys(); + /** @since 0.8.3 */ + public Collection getEntries(); + /** @since 0.8.3 */ + public Set> getMapEntries(); public void stop(); public void restart(); public void rescan(); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/ExpireLeasesJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/ExpireLeasesJob.java index 7d4be1336..59d8fc429 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/ExpireLeasesJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/ExpireLeasesJob.java @@ -12,6 +12,7 @@ import java.util.HashSet; import java.util.Iterator; import java.util.Set; +import net.i2p.data.DatabaseEntry; import net.i2p.data.Hash; import net.i2p.data.LeaseSet; import net.i2p.router.JobImpl; @@ -61,8 +62,8 @@ class ExpireLeasesJob extends JobImpl { Set toExpire = new HashSet(128); for (Iterator iter = keys.iterator(); iter.hasNext(); ) { Hash key = (Hash)iter.next(); - Object obj = _facade.getDataStore().get(key); - if (obj instanceof LeaseSet) { + DatabaseEntry obj = _facade.getDataStore().get(key); + if (obj.getType() == DatabaseEntry.KEY_TYPE_LEASESET) { LeaseSet ls = (LeaseSet)obj; if (!ls.isCurrent(Router.CLOCK_FUDGE_FACTOR)) toExpire.add(key); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlyLookupMatchJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlyLookupMatchJob.java index 20572667e..34b0e4e2b 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlyLookupMatchJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlyLookupMatchJob.java @@ -1,5 +1,8 @@ package net.i2p.router.networkdb.kademlia; +import net.i2p.data.DatabaseEntry; +import net.i2p.data.LeaseSet; +import net.i2p.data.RouterInfo; import net.i2p.data.i2np.DatabaseSearchReplyMessage; import net.i2p.data.i2np.DatabaseStoreMessage; import net.i2p.data.i2np.I2NPMessage; @@ -61,14 +64,15 @@ class FloodOnlyLookupMatchJob extends JobImpl implements ReplyJob { // We do it here first to make sure it is in the DB before // runJob() and search.success() is called??? // Should we just pass the DataStructure directly back to somebody? - if (dsm.getValueType() == DatabaseStoreMessage.KEY_TYPE_LEASESET) { + if (dsm.getEntry().getType() == DatabaseEntry.KEY_TYPE_LEASESET) { // Since HFDSMJ wants to setReceivedAsPublished(), we have to // set a flag saying this was really the result of a query, // so don't do that. - dsm.getLeaseSet().setReceivedAsReply(); - getContext().netDb().store(dsm.getKey(), dsm.getLeaseSet()); + LeaseSet ls = (LeaseSet) dsm.getEntry(); + ls.setReceivedAsReply(); + getContext().netDb().store(dsm.getKey(), ls); } else { - getContext().netDb().store(dsm.getKey(), dsm.getRouterInfo()); + getContext().netDb().store(dsm.getKey(), (RouterInfo) dsm.getEntry()); } } catch (IllegalArgumentException iae) { if (_log.shouldLog(Log.WARN)) diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodSearchJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodSearchJob.java index bfa5c59ea..1cecc2074 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodSearchJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodSearchJob.java @@ -182,8 +182,7 @@ public class FloodSearchJob extends JobImpl { _search = job; } public void runJob() { - if ( (getContext().netDb().lookupLeaseSetLocally(_search.getKey()) != null) || - (getContext().netDb().lookupRouterInfoLocally(_search.getKey()) != null) ) { + if (getContext().netDb().lookupLocally(_search.getKey()) != null) { _search.success(); } else { int remaining = _search.getLookupsRemaining(); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java index 540173ed6..5ba670135 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java @@ -7,8 +7,8 @@ import java.util.List; import java.util.Map; import java.util.Set; +import net.i2p.data.DatabaseEntry; import net.i2p.data.DataFormatException; -import net.i2p.data.DataStructure; import net.i2p.data.Hash; import net.i2p.data.LeaseSet; import net.i2p.data.RouterInfo; @@ -93,11 +93,11 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad } @Override - public void sendStore(Hash key, DataStructure ds, Job onSuccess, Job onFailure, long sendTimeout, Set toIgnore) { + public void sendStore(Hash key, DatabaseEntry ds, Job onSuccess, Job onFailure, long sendTimeout, Set toIgnore) { // if we are a part of the floodfill netDb, don't send out our own leaseSets as part // of the flooding - instead, send them to a random floodfill peer so *they* can flood 'em out. // perhaps statistically adjust this so we are the source every 1/N times... or something. - if (floodfillEnabled() && (ds instanceof RouterInfo)) { + if (floodfillEnabled() && (ds.getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO)) { flood(ds); if (onSuccess != null) _context.jobQueue().addJob(onSuccess); @@ -129,12 +129,8 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad * We do this to implement Kademlia within the floodfills, i.e. * we flood to those closest to the key. */ - public void flood(DataStructure ds) { - Hash key; - if (ds instanceof LeaseSet) - key = ((LeaseSet)ds).getDestination().calculateHash(); - else - key = ((RouterInfo)ds).getIdentity().calculateHash(); + public void flood(DatabaseEntry ds) { + Hash key = ds.getHash(); Hash rkey = _context.routingKeyGenerator().getRoutingKey(key); FloodfillPeerSelector sel = (FloodfillPeerSelector)getPeerSelector(); List peers = sel.selectFloodfillParticipants(rkey, MAX_TO_FLOOD, getKBuckets()); @@ -151,12 +147,7 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad if (peer.equals(_context.routerHash())) continue; DatabaseStoreMessage msg = new DatabaseStoreMessage(_context); - if (ds instanceof LeaseSet) { - msg.setLeaseSet((LeaseSet)ds); - } else { - msg.setRouterInfo((RouterInfo)ds); - } - msg.setKey(key); + msg.setEntry(ds); msg.setReplyGateway(null); msg.setReplyToken(0); msg.setReplyTunnel(null); @@ -242,13 +233,9 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad List rv = new ArrayList(); DataStore ds = getDataStore(); if (ds != null) { - Set keys = ds.getKeys(); - if (keys != null) { - for (Iterator iter = keys.iterator(); iter.hasNext(); ) { - Object o = ds.get((Hash)iter.next()); - if (o instanceof RouterInfo) - rv.add((RouterInfo)o); - } + for (DatabaseEntry o : ds.getEntries()) { + if (o.getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO) + rv.add((RouterInfo)o); } } return rv; diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillStoreJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillStoreJob.java index 14969df83..babd35dd2 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillStoreJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillStoreJob.java @@ -12,7 +12,7 @@ import java.util.Iterator; import java.util.NoSuchElementException; import java.util.Set; -import net.i2p.data.DataStructure; +import net.i2p.data.DatabaseEntry; import net.i2p.data.Hash; import net.i2p.data.LeaseSet; import net.i2p.data.RouterInfo; @@ -30,7 +30,7 @@ class FloodfillStoreJob extends StoreJob { * Send a data structure to the floodfills * */ - public FloodfillStoreJob(RouterContext context, FloodfillNetworkDatabaseFacade facade, Hash key, DataStructure data, Job onSuccess, Job onFailure, long timeoutMs) { + public FloodfillStoreJob(RouterContext context, FloodfillNetworkDatabaseFacade facade, Hash key, DatabaseEntry data, Job onSuccess, Job onFailure, long timeoutMs) { this(context, facade, key, data, onSuccess, onFailure, timeoutMs, null); } @@ -38,7 +38,7 @@ class FloodfillStoreJob extends StoreJob { * @param toSkip set of peer hashes of people we dont want to send the data to (e.g. we * already know they have it). This can be null. */ - public FloodfillStoreJob(RouterContext context, FloodfillNetworkDatabaseFacade facade, Hash key, DataStructure data, Job onSuccess, Job onFailure, long timeoutMs, Set toSkip) { + public FloodfillStoreJob(RouterContext context, FloodfillNetworkDatabaseFacade facade, Hash key, DatabaseEntry data, Job onSuccess, Job onFailure, long timeoutMs, Set toSkip) { super(context, facade, key, data, onSuccess, onFailure, timeoutMs, toSkip); _facade = facade; } @@ -63,15 +63,12 @@ class FloodfillStoreJob extends StoreJob { } // Get the time stamp from the data we sent, so the Verify job can meke sure that // it finds something stamped with that time or newer. - long published = 0; - DataStructure data = _state.getData(); - boolean isRouterInfo = data instanceof RouterInfo; + DatabaseEntry data = _state.getData(); + boolean isRouterInfo = data.getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO; + long published = data.getDate(); if (isRouterInfo) { - published = ((RouterInfo) data).getPublished(); // Temporarily disable return; - } else if (data instanceof LeaseSet) { - published = ((LeaseSet) data).getEarliestLeaseDate(); } // we should always have exactly one successful entry Hash sentTo = null; diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillVerifyStoreJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillVerifyStoreJob.java index fa944f384..c7dca1271 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillVerifyStoreJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillVerifyStoreJob.java @@ -4,7 +4,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import net.i2p.data.DataStructure; +import net.i2p.data.DatabaseEntry; import net.i2p.data.Hash; import net.i2p.data.RouterInfo; import net.i2p.data.i2np.DatabaseLookupMessage; @@ -201,10 +201,7 @@ public class FloodfillVerifyStoreJob extends JobImpl { // Verify it's as recent as the one we sent boolean success = false; DatabaseStoreMessage dsm = (DatabaseStoreMessage)_message; - if (_isRouterInfo && dsm.getValueType() == DatabaseStoreMessage.KEY_TYPE_ROUTERINFO) - success = dsm.getRouterInfo().getPublished() >= _published; - else if ((!_isRouterInfo) && dsm.getValueType() == DatabaseStoreMessage.KEY_TYPE_LEASESET) - success = dsm.getLeaseSet().getEarliestLeaseDate() >= _published; + success = dsm.getEntry().getDate() >= _published; if (success) { // store ok, w00t! getContext().profileManager().dbLookupSuccessful(_target, delay); @@ -218,7 +215,7 @@ public class FloodfillVerifyStoreJob extends JobImpl { if (_log.shouldLog(Log.WARN)) _log.warn("Verify failed (older) for " + _key); if (_log.shouldLog(Log.INFO)) - _log.info("Rcvd older lease: " + dsm.getLeaseSet()); + _log.info("Rcvd older lease: " + dsm.getEntry()); } else if (_message instanceof DatabaseSearchReplyMessage) { // assume 0 old, all new, 0 invalid, 0 dup getContext().profileManager().dbLookupReply(_target, 0, @@ -245,11 +242,7 @@ public class FloodfillVerifyStoreJob extends JobImpl { * So at least we'll try THREE ffs round-robin if things continue to fail... */ private void resend() { - DataStructure ds; - if (_isRouterInfo) - ds = _facade.lookupRouterInfoLocally(_key); - else - ds = _facade.lookupLeaseSetLocally(_key); + DatabaseEntry ds = _facade.lookupLocally(_key); if (ds != null) { Set toSkip = new HashSet(2); if (_sentTo != null) diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseLookupMessageJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseLookupMessageJob.java index 4e3c9c30c..1409ecc2a 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseLookupMessageJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseLookupMessageJob.java @@ -57,9 +57,7 @@ public class HandleFloodfillDatabaseLookupMessageJob extends HandleDatabaseLooku // that would increment the netDb.lookupsHandled and netDb.lookupsMatched stats DatabaseStoreMessage msg = new DatabaseStoreMessage(getContext()); RouterInfo me = getContext().router().getRouterInfo(); - msg.setKey(me.getIdentity().getHash()); - msg.setRouterInfo(me); - msg.setValueType(DatabaseStoreMessage.KEY_TYPE_ROUTERINFO); + msg.setEntry(me); sendMessage(msg, toPeer, replyTunnel); } } diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java index ea53c1566..a546ad7a2 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java @@ -11,6 +11,7 @@ package net.i2p.router.networkdb.kademlia; import java.util.Date; import java.util.Set; +import net.i2p.data.DatabaseEntry; import net.i2p.data.Hash; import net.i2p.data.LeaseSet; import net.i2p.data.RouterIdentity; @@ -55,7 +56,8 @@ public class HandleFloodfillDatabaseStoreMessageJob extends JobImpl { boolean wasNew = false; RouterInfo prevNetDb = null; Hash key = _message.getKey(); - if (_message.getValueType() == DatabaseStoreMessage.KEY_TYPE_LEASESET) { + DatabaseEntry entry = _message.getEntry(); + if (entry.getType() == DatabaseEntry.KEY_TYPE_LEASESET) { getContext().statManager().addRateData("netDb.storeLeaseSetHandled", 1, 0); if (_log.shouldLog(Log.INFO)) _log.info("Handling dbStore of leaseset " + _message); @@ -75,7 +77,7 @@ public class HandleFloodfillDatabaseStoreMessageJob extends JobImpl { throw new IllegalArgumentException("Peer attempted to store local leaseSet: " + key.toBase64().substring(0, 4)); } - LeaseSet ls = _message.getLeaseSet(); + LeaseSet ls = (LeaseSet) entry; //boolean oldrar = ls.getReceivedAsReply(); //boolean oldrap = ls.getReceivedAsPublished(); // If this was received as a response to a query, @@ -91,10 +93,10 @@ public class HandleFloodfillDatabaseStoreMessageJob extends JobImpl { //boolean rap = ls.getReceivedAsPublished(); //if (_log.shouldLog(Log.INFO)) // _log.info("oldrap? " + oldrap + " oldrar? " + oldrar + " newrap? " + rap); - LeaseSet match = getContext().netDb().store(key, _message.getLeaseSet()); + LeaseSet match = getContext().netDb().store(key, ls); if (match == null) { wasNew = true; - } else if (match.getEarliestLeaseDate() < _message.getLeaseSet().getEarliestLeaseDate()) { + } else if (match.getEarliestLeaseDate() < ls.getEarliestLeaseDate()) { wasNew = true; // If it is in our keyspace and we are talking to it @@ -117,11 +119,12 @@ public class HandleFloodfillDatabaseStoreMessageJob extends JobImpl { } catch (IllegalArgumentException iae) { invalidMessage = iae.getMessage(); } - } else if (_message.getValueType() == DatabaseStoreMessage.KEY_TYPE_ROUTERINFO) { + } else if (entry.getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO) { + RouterInfo ri = (RouterInfo) entry; getContext().statManager().addRateData("netDb.storeRouterInfoHandled", 1, 0); if (_log.shouldLog(Log.INFO)) _log.info("Handling dbStore of router " + key + " with publishDate of " - + new Date(_message.getRouterInfo().getPublished())); + + new Date(ri.getPublished())); try { // Never store our RouterInfo received from somebody else. // This generally happens from a FloodfillVerifyStoreJob. @@ -132,8 +135,8 @@ public class HandleFloodfillDatabaseStoreMessageJob extends JobImpl { // throw rather than return, so that we send the ack below (prevent easy attack) throw new IllegalArgumentException("Peer attempted to store our RouterInfo"); } - prevNetDb = getContext().netDb().store(key, _message.getRouterInfo()); - wasNew = ((null == prevNetDb) || (prevNetDb.getPublished() < _message.getRouterInfo().getPublished())); + prevNetDb = getContext().netDb().store(key, ri); + wasNew = ((null == prevNetDb) || (prevNetDb.getPublished() < ri.getPublished())); // Check new routerinfo address against blocklist if (wasNew) { if (prevNetDb == null) { @@ -143,7 +146,7 @@ public class HandleFloodfillDatabaseStoreMessageJob extends JobImpl { _log.warn("Blocklisting new peer " + key); } else { Set oldAddr = prevNetDb.getAddresses(); - Set newAddr = _message.getRouterInfo().getAddresses(); + Set newAddr = ri.getAddresses(); if (newAddr != null && (!newAddr.equals(oldAddr)) && (!getContext().shitlist().isShitlistedForever(key)) && getContext().blocklist().isBlocklisted(key) && @@ -157,7 +160,7 @@ public class HandleFloodfillDatabaseStoreMessageJob extends JobImpl { } } else { if (_log.shouldLog(Log.ERROR)) - _log.error("Invalid DatabaseStoreMessage data type - " + _message.getValueType() + _log.error("Invalid DatabaseStoreMessage data type - " + entry.getType() + ": " + _message); } @@ -198,12 +201,9 @@ public class HandleFloodfillDatabaseStoreMessageJob extends JobImpl { return; } long floodBegin = System.currentTimeMillis(); - if (_message.getValueType() == DatabaseStoreMessage.KEY_TYPE_LEASESET) - _facade.flood(_message.getLeaseSet()); + _facade.flood(_message.getEntry()); // ERR: see comment in HandleDatabaseLookupMessageJob regarding hidden mode //else if (!_message.getRouterInfo().isHidden()) - else - _facade.flood(_message.getRouterInfo()); long floodEnd = System.currentTimeMillis(); getContext().statManager().addRateData("netDb.storeFloodNew", floodEnd-floodBegin, 0); } else { 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 0ae718104..ffcb8efd4 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java @@ -24,8 +24,8 @@ import java.util.Properties; import java.util.Set; import java.util.TreeSet; +import net.i2p.data.DatabaseEntry; import net.i2p.data.DataHelper; -import net.i2p.data.DataStructure; import net.i2p.data.Destination; import net.i2p.data.Hash; import net.i2p.data.Lease; @@ -235,11 +235,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { public void startup() { _log.info("Starting up the kademlia network database"); RouterInfo ri = _context.router().getRouterInfo(); - String dbDir = _context.router().getConfigSetting(PROP_DB_DIR); - if (dbDir == null) { - _log.info("No DB dir specified [" + PROP_DB_DIR + "], using [" + DEFAULT_DB_DIR + "]"); - dbDir = DEFAULT_DB_DIR; - } + String dbDir = _context.getProperty(PROP_DB_DIR, DEFAULT_DB_DIR); String enforce = _context.getProperty(PROP_ENFORCE_NETID); if (enforce != null) _enforceNetId = Boolean.valueOf(enforce).booleanValue(); @@ -247,7 +243,11 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { _enforceNetId = DEFAULT_ENFORCE_NETID; _kb = new KBucketSet(_context, ri.getIdentity().getHash()); - _ds = new PersistentDataStore(_context, dbDir, this); + try { + _ds = new PersistentDataStore(_context, dbDir, this); + } catch (IOException ioe) { + throw new RuntimeException("Unable to initialize netdb storage", ioe); + } //_ds = new TransientDataStore(); // _exploreKeys = new HashSet(64); _dbDir = dbDir; @@ -350,21 +350,11 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { /** get the hashes for all known routers */ public Set getAllRouters() { if (!_initialized) return Collections.EMPTY_SET; - Set keys = _ds.getKeys(); - Set rv = new HashSet(keys.size()); - if (_log.shouldLog(Log.DEBUG)) - _log.debug("getAllRouters(): # keys in the datastore: " + keys.size()); - for (Hash key : keys) { - DataStructure ds = _ds.get(key); - if (ds == null) { - if (_log.shouldLog(Log.INFO)) - _log.info("Selected hash " + key.toBase64() + " is not stored locally"); - } else if ( !(ds instanceof RouterInfo) ) { - // leaseSet - } else { - if (_log.shouldLog(Log.DEBUG)) - _log.debug("getAllRouters(): key is router: " + key.toBase64()); - rv.add(key); + Set> entries = _ds.getMapEntries(); + Set rv = new HashSet(entries.size()); + for (Map.Entry entry : entries) { + if (entry.getValue().getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO) { + rv.add(entry.getKey()); } } return rv; @@ -383,8 +373,8 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { public int size() { return _count; } public void add(Hash entry) { if (_ds == null) return; - Object o = _ds.get(entry); - if (o instanceof RouterInfo) + DatabaseEntry o = _ds.get(entry); + if (o != null && o.getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO) _count++; } } @@ -400,12 +390,9 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { public int getKnownLeaseSets() { if (_ds == null) return 0; //return _ds.countLeaseSets(); - Set keys = _ds.getKeys(); int rv = 0; - for (Hash key : keys) { - DataStructure ds = _ds.get(key); - if (ds != null && - ds instanceof LeaseSet && + for (DatabaseEntry ds : _ds.getEntries()) { + if (ds.getType() == DatabaseEntry.KEY_TYPE_LEASESET && ((LeaseSet)ds).getReceivedAsPublished()) rv++; } @@ -418,8 +405,8 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { public int size() { return _count; } public void add(Hash entry) { if (_ds == null) return; - Object o = _ds.get(entry); - if (o instanceof LeaseSet) + DatabaseEntry o = _ds.get(entry); + if (o != null && o.getType() == DatabaseEntry.KEY_TYPE_LEASESET) _count++; } } @@ -434,6 +421,32 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { return _kb.size(); } + /** + * @return RouterInfo, LeaseSet, or null, validated + * @since 0.8.3 + */ + public DatabaseEntry lookupLocally(Hash key) { + if (!_initialized) + return null; + DatabaseEntry rv = _ds.get(key); + if (rv == null) + return null; + if (rv.getType() == DatabaseEntry.KEY_TYPE_LEASESET) { + LeaseSet ls = (LeaseSet)rv; + if (ls.isCurrent(Router.CLOCK_FUDGE_FACTOR)) + return rv; + else + fail(key); + } else if (rv.getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO) { + try { + if (validate(key, (RouterInfo)rv) == null) + return rv; + } catch (IllegalArgumentException iae) {} + fail(key); + } + return null; + } + public void lookupLeaseSet(Hash key, Job onFindJob, Job onFailedLookupJob, long timeoutMs) { if (!_initialized) return; LeaseSet ls = lookupLeaseSetLocally(key); @@ -453,9 +466,9 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { public LeaseSet lookupLeaseSetLocally(Hash key) { if (!_initialized) return null; - if (_ds.isKnown(key)) { - DataStructure ds = _ds.get(key); - if (ds instanceof LeaseSet) { + DatabaseEntry ds = _ds.get(key); + if (ds != null) { + if (ds.getType() == DatabaseEntry.KEY_TYPE_LEASESET) { LeaseSet ls = (LeaseSet)ds; if (ls.isCurrent(Router.CLOCK_FUDGE_FACTOR)) { return ls; @@ -489,9 +502,9 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { public RouterInfo lookupRouterInfoLocally(Hash key) { if (!_initialized) return null; - DataStructure ds = _ds.get(key); + DatabaseEntry ds = _ds.get(key); if (ds != null) { - if (ds instanceof RouterInfo) { + if (ds.getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO) { // more aggressive than perhaps is necessary, but makes sure we // drop old references that we had accepted on startup (since // startup allows some lax rules). @@ -610,6 +623,8 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { * Determine whether this leaseSet will be accepted as valid and current * given what we know now. * + * TODO this is called several times, only check the key and signature once + * * @return reason why the entry is not valid, or null if it is valid */ String validate(Hash key, LeaseSet leaseSet) { @@ -692,6 +707,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { * Determine whether this routerInfo will be accepted as valid and current * given what we know now. * + * TODO this is called several times, only check the key and signature once */ String validate(Hash key, RouterInfo routerInfo) throws IllegalArgumentException { long now = _context.clock().now(); @@ -807,30 +823,26 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { public void fail(Hash dbEntry) { if (!_initialized) return; - boolean isRouterInfo = false; - Object o = _ds.get(dbEntry); - if (o instanceof RouterInfo) - isRouterInfo = true; - - if (isRouterInfo) { - lookupBeforeDropping(dbEntry, (RouterInfo)o); - return; - } else { - // we always drop leaseSets that are failed [timed out], - // regardless of how many routers we have. this is called on a lease if - // it has expired *or* its tunnels are failing and we want to see if there - // are any updates - if (_log.shouldLog(Log.INFO)) - _log.info("Dropping a lease: " + dbEntry); - } - + DatabaseEntry o = _ds.get(dbEntry); if (o == null) { + // if we dont know the key, lets make sure it isn't a now-dead peer _kb.remove(dbEntry); _context.peerManager().removeCapabilities(dbEntry); - // if we dont know the key, lets make sure it isn't a now-dead peer + return; } - - _ds.remove(dbEntry, isRouterInfo); + + if (o.getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO) { + lookupBeforeDropping(dbEntry, (RouterInfo)o); + return; + } + + // we always drop leaseSets that are failed [timed out], + // regardless of how many routers we have. this is called on a lease if + // it has expired *or* its tunnels are failing and we want to see if there + // are any updates + if (_log.shouldLog(Log.INFO)) + _log.info("Dropping a lease: " + dbEntry); + _ds.remove(dbEntry, false); } /** don't use directly - see F.N.D.F. override */ @@ -852,7 +864,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { public void unpublish(LeaseSet localLeaseSet) { if (!_initialized) return; Hash h = localLeaseSet.getDestination().calculateHash(); - DataStructure data = _ds.remove(h); + DatabaseEntry data = _ds.remove(h); if (data == null) { if (_log.shouldLog(Log.WARN)) @@ -906,8 +918,8 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { Set keys = getDataStore().getKeys(); for (Iterator iter = keys.iterator(); iter.hasNext(); ) { Hash key = (Hash)iter.next(); - Object o = getDataStore().get(key); - if (o instanceof LeaseSet) + DatabaseEntry o = getDataStore().get(key); + if (o.getType() == DatabaseEntry.KEY_TYPE_LEASESET) leases.add(o); } return leases; @@ -920,8 +932,8 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { Set keys = getDataStore().getKeys(); for (Iterator iter = keys.iterator(); iter.hasNext(); ) { Hash key = (Hash)iter.next(); - Object o = getDataStore().get(key); - if (o instanceof RouterInfo) + DatabaseEntry o = getDataStore().get(key); + if (o.getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO) routers.add(o); } return routers; @@ -953,7 +965,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { } /** unused (overridden in FNDF) */ - public void sendStore(Hash key, DataStructure ds, Job onSuccess, Job onFailure, long sendTimeout, Set toIgnore) { + public void sendStore(Hash key, DatabaseEntry ds, Job onSuccess, Job onFailure, long sendTimeout, Set toIgnore) { if ( (ds == null) || (key == null) ) { if (onFailure != null) _context.jobQueue().addJob(onFailure); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java b/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java index 0172dfcc6..8f9a37b01 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java @@ -18,8 +18,8 @@ import java.util.Map; import java.util.NoSuchElementException; import java.util.concurrent.ConcurrentHashMap; +import net.i2p.data.DatabaseEntry; import net.i2p.data.DataFormatException; -import net.i2p.data.DataStructure; import net.i2p.data.Hash; import net.i2p.data.LeaseSet; import net.i2p.data.RouterInfo; @@ -38,19 +38,22 @@ import net.i2p.util.SecureFileOutputStream; * */ class PersistentDataStore extends TransientDataStore { - private Log _log; - private String _dbDir; - private KademliaNetworkDatabaseFacade _facade; - private Writer _writer; - private ReadJob _readJob; + private final Log _log; + private final File _dbDir; + private final KademliaNetworkDatabaseFacade _facade; + private final Writer _writer; + private final ReadJob _readJob; private boolean _initialized; private final static int READ_DELAY = 60*1000; - public PersistentDataStore(RouterContext ctx, String dbDir, KademliaNetworkDatabaseFacade facade) { + /** + * @param dbDir relative path + */ + public PersistentDataStore(RouterContext ctx, String dbDir, KademliaNetworkDatabaseFacade facade) throws IOException { super(ctx); _log = ctx.logManager().getLog(PersistentDataStore.class); - _dbDir = dbDir; + _dbDir = getDbDir(dbDir); _facade = facade; _readJob = new ReadJob(); _context.jobQueue().addJob(_readJob); @@ -78,7 +81,6 @@ class PersistentDataStore extends TransientDataStore { @Override public void restart() { super.restart(); - _dbDir = _facade.getDbDir(); } @Override @@ -88,7 +90,7 @@ class PersistentDataStore extends TransientDataStore { } @Override - public DataStructure get(Hash key) { + public DatabaseEntry get(Hash key) { return get(key, true); } @@ -97,8 +99,8 @@ class PersistentDataStore extends TransientDataStore { * @param persist if false, call super only, don't access disk */ @Override - public DataStructure get(Hash key, boolean persist) { - DataStructure rv = super.get(key); + public DatabaseEntry get(Hash key, boolean persist) { + DatabaseEntry rv = super.get(key); /***** if (rv != null || !persist) return rv; @@ -113,7 +115,7 @@ class PersistentDataStore extends TransientDataStore { } @Override - public DataStructure remove(Hash key) { + public DatabaseEntry remove(Hash key) { return remove(key, true); } @@ -121,7 +123,7 @@ class PersistentDataStore extends TransientDataStore { * @param persist if false, call super only, don't access disk */ @Override - public DataStructure remove(Hash key, boolean persist) { + public DatabaseEntry remove(Hash key, boolean persist) { if (persist) { _writer.remove(key); _context.jobQueue().addJob(new RemoveJob(key)); @@ -130,7 +132,7 @@ class PersistentDataStore extends TransientDataStore { } @Override - public boolean put(Hash key, DataStructure data) { + public boolean put(Hash key, DatabaseEntry data) { return put(key, data, true); } @@ -139,11 +141,11 @@ class PersistentDataStore extends TransientDataStore { * @return success */ @Override - public boolean put(Hash key, DataStructure data, boolean persist) { + public boolean put(Hash key, DatabaseEntry data, boolean persist) { if ( (data == null) || (key == null) ) return false; boolean rv = super.put(key, data); // Don't bother writing LeaseSets to disk - if (rv && persist && data instanceof RouterInfo) + if (rv && persist && data.getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO) _writer.queue(key, data); return rv; } @@ -159,8 +161,7 @@ class PersistentDataStore extends TransientDataStore { if (_log.shouldLog(Log.INFO)) _log.info("Removing key " + _key /* , getAddedBy() */); try { - File dbDir = getDbDir(); - removeFile(_key, dbDir); + removeFile(_key, _dbDir); } catch (IOException ioe) { _log.error("Error removing key " + _key, ioe); } @@ -179,10 +180,10 @@ class PersistentDataStore extends TransientDataStore { * We store a reference to the data here too, * rather than simply pull it from super.get(), because * we will soon have to implement a scheme for keeping only - * a subset of all DataStructures in memory and keeping the rest on disk. + * a subset of all DatabaseEntrys in memory and keeping the rest on disk. */ private class Writer implements Runnable { - private final Map_keys; + private final Map_keys; private final Object _waitLock; private volatile boolean _quit; @@ -191,7 +192,7 @@ class PersistentDataStore extends TransientDataStore { _waitLock = new Object(); } - public void queue(Hash key, DataStructure data) { + public void queue(Hash key, DatabaseEntry data) { int pending = _keys.size(); boolean exists = (null != _keys.put(key, data)); if (exists) @@ -200,7 +201,7 @@ class PersistentDataStore extends TransientDataStore { } /** check to see if it's in the write queue */ - public DataStructure get(Hash key) { + public DatabaseEntry get(Hash key) { return _keys.get(key); } @@ -211,16 +212,16 @@ class PersistentDataStore extends TransientDataStore { public void run() { _quit = false; Hash key = null; - DataStructure data = null; + DatabaseEntry data = null; int count = 0; int lastCount = 0; long startTime = 0; while (true) { // get a new iterator every time to get a random entry without // having concurrency issues or copying to a List or Array - Iterator> iter = _keys.entrySet().iterator(); + Iterator> iter = _keys.entrySet().iterator(); try { - Map.Entry entry = iter.next(); + Map.Entry entry = iter.next(); key = entry.getKey(); data = entry.getValue(); iter.remove(); @@ -235,7 +236,10 @@ class PersistentDataStore extends TransientDataStore { if (key != null) { if (data != null) { - write(key, data); + // synch with the reader job + synchronized (_dbDir) { + write(key, data); + } data = null; } key = null; @@ -270,23 +274,22 @@ class PersistentDataStore extends TransientDataStore { } } - private void write(Hash key, DataStructure data) { + private void write(Hash key, DatabaseEntry data) { if (_log.shouldLog(Log.INFO)) _log.info("Writing key " + key); FileOutputStream fos = null; File dbFile = null; try { String filename = null; - File dbDir = getDbDir(); - if (data instanceof LeaseSet) + if (data.getType() == DatabaseEntry.KEY_TYPE_LEASESET) filename = getLeaseSetName(key); - else if (data instanceof RouterInfo) + else if (data.getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO) filename = getRouterInfoName(key); else throw new IOException("We don't know how to write objects of type " + data.getClass().getName()); - dbFile = new File(dbDir, filename); + dbFile = new File(_dbDir, filename); long dataPublishDate = getPublishDate(data); if (dbFile.lastModified() < dataPublishDate) { // our filesystem is out of date, lets replace it @@ -312,27 +315,33 @@ class PersistentDataStore extends TransientDataStore { if (fos != null) try { fos.close(); } catch (IOException ioe) {} } } - private long getPublishDate(DataStructure data) { - if (data instanceof RouterInfo) { - return ((RouterInfo)data).getPublished(); - } else if (data instanceof LeaseSet) { - return ((LeaseSet)data).getEarliestLeaseDate(); - } else { - return -1; - } + private long getPublishDate(DatabaseEntry data) { + return data.getDate(); } /** This is only for manual reseeding? Why bother every 60 sec??? */ private class ReadJob extends JobImpl { private boolean _alreadyWarned; + private long _lastModified; + public ReadJob() { super(PersistentDataStore.this._context); _alreadyWarned = false; } + public String getName() { return "DB Read Job"; } + public void runJob() { - _log.info("Rereading new files"); - readFiles(); + // check directory mod time to save a lot of object churn in scanning all the file names + long lastMod = _dbDir.lastModified(); + if (lastMod > _lastModified) { + _lastModified = lastMod; + _log.info("Rereading new files"); + // synch with the writer job + synchronized (_dbDir) { + readFiles(); + } + } requeue(READ_DELAY); } @@ -342,9 +351,8 @@ class PersistentDataStore extends TransientDataStore { private void readFiles() { int routerCount = 0; - try { - File dbDir = getDbDir(); - File routerInfoFiles[] = dbDir.listFiles(RouterInfoFilter.getInstance()); + + File routerInfoFiles[] = _dbDir.listFiles(RouterInfoFilter.getInstance()); if (routerInfoFiles != null) { routerCount += routerInfoFiles.length; if (routerInfoFiles.length > 5) @@ -359,9 +367,6 @@ class PersistentDataStore extends TransientDataStore { } } } - } catch (IOException ioe) { - _log.error("Error reading files in the db dir", ioe); - } if (!_alreadyWarned) { ReseedChecker.checkReseed(_context, routerCount); @@ -383,9 +388,9 @@ class PersistentDataStore extends TransientDataStore { private boolean shouldRead() { // persist = false to call only super.get() - DataStructure data = get(_key, false); + DatabaseEntry data = get(_key, false); if (data == null) return true; - if (data instanceof RouterInfo) { + if (data.getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO) { long knownDate = ((RouterInfo)data).getPublished(); long fileDate = _routerFile.lastModified(); if (fileDate > knownDate) @@ -441,8 +446,8 @@ class PersistentDataStore extends TransientDataStore { } - private File getDbDir() throws IOException { - File f = new SecureDirectory(_context.getRouterDir(), _dbDir); + private File getDbDir(String dbDir) throws IOException { + File f = new SecureDirectory(_context.getRouterDir(), dbDir); if (!f.exists()) { boolean created = f.mkdirs(); if (!created) diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java index 9400a17f6..09f150db0 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java @@ -14,8 +14,8 @@ import java.util.Iterator; import java.util.List; import java.util.Set; +import net.i2p.data.DatabaseEntry; import net.i2p.data.DataHelper; -import net.i2p.data.DataStructure; import net.i2p.data.Hash; import net.i2p.data.LeaseSet; import net.i2p.data.RouterInfo; @@ -293,12 +293,12 @@ class SearchJob extends JobImpl { attempted.addAll(closestHashes); for (Iterator iter = closestHashes.iterator(); iter.hasNext(); ) { Hash peer = (Hash)iter.next(); - DataStructure ds = _facade.getDataStore().get(peer); + DatabaseEntry ds = _facade.getDataStore().get(peer); if (ds == null) { if (_log.shouldLog(Log.INFO)) _log.info("Next closest peer " + peer + " was only recently referred to us, sending a search for them"); getContext().netDb().lookupRouterInfo(peer, null, null, _timeoutMs); - } else if (!(ds instanceof RouterInfo)) { + } else if (!(ds.getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO)) { if (_log.shouldLog(Log.WARN)) _log.warn(getJobId() + ": Error selecting closest hash that wasnt a router! " + peer + " : " + ds.getClass().getName()); @@ -635,7 +635,7 @@ class SearchJob extends JobImpl { * */ private void resend() { - DataStructure ds = _facade.lookupLeaseSetLocally(_state.getTarget()); + DatabaseEntry ds = _facade.lookupLeaseSetLocally(_state.getTarget()); if (ds == null) { if (SHOULD_RESEND_ROUTERINFO) { ds = _facade.lookupRouterInfoLocally(_state.getTarget()); @@ -665,8 +665,7 @@ class SearchJob extends JobImpl { */ private boolean resend(RouterInfo toPeer, LeaseSet ls) { DatabaseStoreMessage msg = new DatabaseStoreMessage(getContext()); - msg.setKey(ls.getDestination().calculateHash()); - msg.setLeaseSet(ls); + msg.setEntry(ls); msg.setMessageExpiration(getContext().clock().now() + RESEND_TIMEOUT); TunnelInfo outTunnel = getContext().tunnelManager().selectOutboundTunnel(); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/SearchUpdateReplyFoundJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/SearchUpdateReplyFoundJob.java index b5a824472..22602b497 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/SearchUpdateReplyFoundJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/SearchUpdateReplyFoundJob.java @@ -2,7 +2,9 @@ package net.i2p.router.networkdb.kademlia; import java.util.Date; +import net.i2p.data.DatabaseEntry; import net.i2p.data.Hash; +import net.i2p.data.LeaseSet; import net.i2p.data.RouterInfo; import net.i2p.data.i2np.DatabaseSearchReplyMessage; import net.i2p.data.i2np.DatabaseStoreMessage; @@ -78,22 +80,23 @@ class SearchUpdateReplyFoundJob extends JobImpl implements ReplyJob { long timeToReply = _state.dataFound(_peer); DatabaseStoreMessage msg = (DatabaseStoreMessage)message; - if (msg.getValueType() == DatabaseStoreMessage.KEY_TYPE_LEASESET) { + DatabaseEntry entry = msg.getEntry(); + if (entry.getType() == DatabaseEntry.KEY_TYPE_LEASESET) { try { - _facade.store(msg.getKey(), msg.getLeaseSet()); + _facade.store(msg.getKey(), (LeaseSet) entry); getContext().profileManager().dbLookupSuccessful(_peer, timeToReply); } catch (IllegalArgumentException iae) { if (_log.shouldLog(Log.ERROR)) _log.warn("Peer " + _peer + " sent us an invalid leaseSet: " + iae.getMessage()); getContext().profileManager().dbLookupReply(_peer, 0, 0, 1, 0, timeToReply); } - } else if (msg.getValueType() == DatabaseStoreMessage.KEY_TYPE_ROUTERINFO) { + } else if (entry.getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO) { if (_log.shouldLog(Log.INFO)) _log.info(getJobId() + ": dbStore received on search containing router " + msg.getKey() + " with publishDate of " - + new Date(msg.getRouterInfo().getPublished())); + + new Date(entry.getDate())); try { - _facade.store(msg.getKey(), msg.getRouterInfo()); + _facade.store(msg.getKey(), (RouterInfo) entry); getContext().profileManager().dbLookupSuccessful(_peer, timeToReply); } catch (IllegalArgumentException iae) { if (_log.shouldLog(Log.ERROR)) @@ -102,7 +105,7 @@ class SearchUpdateReplyFoundJob extends JobImpl implements ReplyJob { } } else { if (_log.shouldLog(Log.ERROR)) - _log.error(getJobId() + ": Unknown db store type?!@ " + msg.getValueType()); + _log.error(getJobId() + ": Unknown db store type?!@ " + entry.getType()); } } else if (message instanceof DatabaseSearchReplyMessage) { _job.replyFound((DatabaseSearchReplyMessage)message, _peer); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java index ad8217c6a..47a3e17d6 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java @@ -13,7 +13,7 @@ import java.util.Iterator; import java.util.List; import java.util.Set; -import net.i2p.data.DataStructure; +import net.i2p.data.DatabaseEntry; import net.i2p.data.Hash; import net.i2p.data.LeaseSet; import net.i2p.data.RouterInfo; @@ -61,7 +61,7 @@ class StoreJob extends JobImpl { * */ public StoreJob(RouterContext context, KademliaNetworkDatabaseFacade facade, Hash key, - DataStructure data, Job onSuccess, Job onFailure, long timeoutMs) { + DatabaseEntry data, Job onSuccess, Job onFailure, long timeoutMs) { this(context, facade, key, data, onSuccess, onFailure, timeoutMs, null); } @@ -70,7 +70,7 @@ class StoreJob extends JobImpl { * already know they have it). This can be null. */ public StoreJob(RouterContext context, KademliaNetworkDatabaseFacade facade, Hash key, - DataStructure data, Job onSuccess, Job onFailure, long timeoutMs, Set toSkip) { + DatabaseEntry data, Job onSuccess, Job onFailure, long timeoutMs, Set toSkip) { super(context); _log = context.logManager().getLog(StoreJob.class); _facade = facade; @@ -167,8 +167,8 @@ class StoreJob extends JobImpl { _log.info(getJobId() + ": Continue sending key " + _state.getTarget() + " after " + _state.getAttempted().size() + " tries to " + closestHashes); for (Iterator iter = closestHashes.iterator(); iter.hasNext(); ) { Hash peer = iter.next(); - DataStructure ds = _facade.getDataStore().get(peer); - if ( (ds == null) || !(ds instanceof RouterInfo) ) { + DatabaseEntry ds = _facade.getDataStore().get(peer); + if ( (ds == null) || !(ds.getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO) ) { if (_log.shouldLog(Log.INFO)) _log.info(getJobId() + ": Error selecting closest hash that wasnt a router! " + peer + " : " + ds); _state.addSkipped(peer); @@ -255,16 +255,19 @@ class StoreJob extends JobImpl { * */ private void sendStore(RouterInfo router, int responseTime) { + if (!_state.getTarget().equals(_state.getData().getHash())) { + _log.error("Hash mismatch StoreJob"); + return; + } DatabaseStoreMessage msg = new DatabaseStoreMessage(getContext()); - msg.setKey(_state.getTarget()); - if (_state.getData() instanceof RouterInfo) { - msg.setRouterInfo((RouterInfo)_state.getData()); + if (_state.getData().getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO) { if (responseTime > MAX_DIRECT_EXPIRATION) responseTime = MAX_DIRECT_EXPIRATION; - } else if (_state.getData() instanceof LeaseSet) - msg.setLeaseSet((LeaseSet)_state.getData()); - else + } else if (_state.getData().getType() == DatabaseEntry.KEY_TYPE_LEASESET) { + } else { throw new IllegalArgumentException("Storing an unknown data type! " + _state.getData()); + } + msg.setEntry(_state.getData()); msg.setMessageExpiration(getContext().clock().now() + _timeoutMs); if (router.getIdentity().equals(getContext().router().getRouterInfo().getIdentity())) { @@ -286,7 +289,7 @@ class StoreJob extends JobImpl { * */ private void sendStore(DatabaseStoreMessage msg, RouterInfo peer, long expiration) { - if (msg.getValueType() == DatabaseStoreMessage.KEY_TYPE_LEASESET) { + if (msg.getEntry().getType() == DatabaseEntry.KEY_TYPE_LEASESET) { getContext().statManager().addRateData("netDb.storeLeaseSetSent", 1, 0); // if it is an encrypted leaseset... if (getContext().keyRing().get(msg.getKey()) != null) diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/StoreState.java b/router/java/src/net/i2p/router/networkdb/kademlia/StoreState.java index eb131fdfc..4737a4707 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/StoreState.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/StoreState.java @@ -9,7 +9,7 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; -import net.i2p.data.DataStructure; +import net.i2p.data.DatabaseEntry; import net.i2p.data.Hash; import net.i2p.router.RouterContext; @@ -19,7 +19,7 @@ import net.i2p.router.RouterContext; class StoreState { private RouterContext _context; private Hash _key; - private DataStructure _data; + private DatabaseEntry _data; private final HashSet _pendingPeers; private Map _pendingPeerTimes; private Map _pendingMessages; @@ -31,10 +31,10 @@ class StoreState { private volatile long _completed; private volatile long _started; - public StoreState(RouterContext ctx, Hash key, DataStructure data) { + public StoreState(RouterContext ctx, Hash key, DatabaseEntry data) { this(ctx, key, data, null); } - public StoreState(RouterContext ctx, Hash key, DataStructure data, Set toSkip) { + public StoreState(RouterContext ctx, Hash key, DatabaseEntry data, Set toSkip) { _context = ctx; _key = key; _data = data; @@ -54,7 +54,7 @@ class StoreState { } public Hash getTarget() { return _key; } - public DataStructure getData() { return _data; } + public DatabaseEntry getData() { return _data; } public Set getPending() { synchronized (_pendingPeers) { return (Set)_pendingPeers.clone(); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/TransientDataStore.java b/router/java/src/net/i2p/router/networkdb/kademlia/TransientDataStore.java index d5e10738c..59156321e 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/TransientDataStore.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/TransientDataStore.java @@ -8,14 +8,15 @@ package net.i2p.router.networkdb.kademlia; * */ +import java.util.Collection; import java.util.Date; import java.util.concurrent.ConcurrentHashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; +import net.i2p.data.DatabaseEntry; import net.i2p.data.DataHelper; -import net.i2p.data.DataStructure; import net.i2p.data.Hash; import net.i2p.data.LeaseSet; import net.i2p.data.RouterInfo; @@ -24,7 +25,7 @@ import net.i2p.util.Log; class TransientDataStore implements DataStore { private Log _log; - private ConcurrentHashMap _data; + private ConcurrentHashMap _data; protected RouterContext _context; public TransientDataStore(RouterContext ctx) { @@ -51,12 +52,28 @@ class TransientDataStore implements DataStore { return new HashSet(_data.keySet()); } + /** + * @return not a copy + * @since 0.8.3 + */ + public Collection getEntries() { + return _data.values(); + } + + /** + * @return not a copy + * @since 0.8.3 + */ + public Set> getMapEntries() { + return _data.entrySet(); + } + /** for PersistentDataStore only - don't use here @throws IAE always */ - public DataStructure get(Hash key, boolean persist) { + public DatabaseEntry get(Hash key, boolean persist) { throw new IllegalArgumentException("no"); } - public DataStructure get(Hash key) { + public DatabaseEntry get(Hash key) { return _data.get(key); } @@ -66,15 +83,15 @@ class TransientDataStore implements DataStore { public int countLeaseSets() { int count = 0; - for (DataStructure d : _data.values()) { - if (d instanceof LeaseSet) + for (DatabaseEntry d : _data.values()) { + if (d.getType() == DatabaseEntry.KEY_TYPE_LEASESET) count++; } return count; } /** for PersistentDataStore only - don't use here @throws IAE always */ - public boolean put(Hash key, DataStructure data, boolean persist) { + public boolean put(Hash key, DatabaseEntry data, boolean persist) { throw new IllegalArgumentException("no"); } @@ -82,14 +99,14 @@ class TransientDataStore implements DataStore { * @param data must be validated before here * @return success */ - public boolean put(Hash key, DataStructure data) { + public boolean put(Hash key, DatabaseEntry data) { if (data == null) return false; if (_log.shouldLog(Log.DEBUG)) _log.debug("Storing key " + key); - DataStructure old = null; + DatabaseEntry old = null; old = _data.putIfAbsent(key, data); boolean rv = false; - if (data instanceof RouterInfo) { + if (data.getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO) { // Don't do this here so we don't reset it at router startup; // the StoreMessageJob calls this //_context.profileManager().heardAbout(key); @@ -113,7 +130,7 @@ class TransientDataStore implements DataStore { _log.info("New router for " + key + ": published on " + new Date(ri.getPublished())); rv = true; } - } else if (data instanceof LeaseSet) { + } else if (data.getType() == DatabaseEntry.KEY_TYPE_LEASESET) { LeaseSet ls = (LeaseSet)data; if (old != null) { LeaseSet ols = (LeaseSet)old; @@ -158,9 +175,9 @@ class TransientDataStore implements DataStore { public String toString() { StringBuilder buf = new StringBuilder(); buf.append("Transient DataStore: ").append(_data.size()).append("\nKeys: "); - for (Map.Entry e : _data.entrySet()) { + for (Map.Entry e : _data.entrySet()) { Hash key = e.getKey(); - DataStructure dp = e.getValue(); + DatabaseEntry dp = e.getValue(); buf.append("\n\t*Key: ").append(key.toString()).append("\n\tContent: ").append(dp.toString()); } buf.append("\n"); @@ -168,11 +185,11 @@ class TransientDataStore implements DataStore { } /** for PersistentDataStore only - don't use here */ - public DataStructure remove(Hash key, boolean persist) { + public DatabaseEntry remove(Hash key, boolean persist) { throw new IllegalArgumentException("no"); } - public DataStructure remove(Hash key) { + public DatabaseEntry remove(Hash key) { if (_log.shouldLog(Log.DEBUG)) _log.debug("Removing key " + key.toBase64()); return _data.remove(key); diff --git a/router/java/src/net/i2p/router/peermanager/PeerTestJob.java b/router/java/src/net/i2p/router/peermanager/PeerTestJob.java index 11e8cacb8..1d5fe3a84 100644 --- a/router/java/src/net/i2p/router/peermanager/PeerTestJob.java +++ b/router/java/src/net/i2p/router/peermanager/PeerTestJob.java @@ -178,8 +178,7 @@ public class PeerTestJob extends JobImpl { */ private DatabaseStoreMessage buildMessage(RouterInfo peer, TunnelId replyTunnel, Hash replyGateway, long nonce, long expiration) { DatabaseStoreMessage msg = new DatabaseStoreMessage(getContext()); - msg.setKey(peer.getIdentity().getHash()); - msg.setRouterInfo(peer); + msg.setEntry(peer); msg.setReplyGateway(replyGateway); msg.setReplyTunnel(replyTunnel); msg.setReplyToken(nonce); diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java index 3fb4c6b37..a2f76d579 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java +++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java @@ -344,8 +344,7 @@ public class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { OutNetMessage infoMsg = new OutNetMessage(_context); infoMsg.setExpiration(_context.clock().now()+10*1000); DatabaseStoreMessage dsm = new DatabaseStoreMessage(_context); - dsm.setKey(_context.routerHash()); - dsm.setRouterInfo(_context.router().getRouterInfo()); + dsm.setEntry(_context.router().getRouterInfo()); infoMsg.setMessage(dsm); infoMsg.setPriority(100); RouterInfo target = _context.netDb().lookupRouterInfoLocally(_remotePeer.calculateHash()); diff --git a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java index d19f929c2..b613208b1 100644 --- a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java +++ b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java @@ -577,8 +577,7 @@ class EstablishmentManager { (isInbound ? " inbound con from " + peer : "outbound con to " + peer)); DatabaseStoreMessage m = new DatabaseStoreMessage(_context); - m.setKey(_context.routerHash()); - m.setRouterInfo(_context.router().getRouterInfo()); + m.setEntry(_context.router().getRouterInfo()); m.setMessageExpiration(_context.clock().now() + 10*1000); _transport.send(m, peer); } 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 dead5e003..18886ba62 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java @@ -18,6 +18,7 @@ import java.util.TreeSet; import java.util.Vector; import java.util.concurrent.ConcurrentHashMap; +import net.i2p.data.DatabaseEntry; import net.i2p.data.DataHelper; import net.i2p.data.Hash; import net.i2p.data.RouterAddress; @@ -769,8 +770,11 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority public void messageReceived(I2NPMessage inMsg, RouterIdentity remoteIdent, Hash remoteIdentHash, long msToReceive, int bytesReceived) { if (inMsg.getType() == DatabaseStoreMessage.MESSAGE_TYPE) { DatabaseStoreMessage dsm = (DatabaseStoreMessage)inMsg; - if ( (dsm.getRouterInfo() != null) && - (dsm.getRouterInfo().getNetworkId() != Router.NETWORK_ID) ) { + DatabaseEntry entry = dsm.getEntry(); + if (entry == null) + return; + if (entry.getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO && + ((RouterInfo) entry).getNetworkId() != Router.NETWORK_ID) { // this is pre-0.6.1.10, so it isn't going to happen any more /* @@ -788,7 +792,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority + " because they are in the wrong net"); } */ - Hash peerHash = dsm.getRouterInfo().getIdentity().calculateHash(); + Hash peerHash = entry.getHash(); PeerState peer = getPeerState(peerHash); if (peer != null) { RemoteHostId remote = peer.getRemoteHostId(); @@ -797,14 +801,14 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority SimpleScheduler.getInstance().addEvent(new RemoveDropList(remote), DROPLIST_PERIOD); } markUnreachable(peerHash); - _context.shitlist().shitlistRouter(peerHash, "Part of the wrong network, version = " + dsm.getRouterInfo().getOption("router.version")); + _context.shitlist().shitlistRouter(peerHash, "Part of the wrong network, version = " + ((RouterInfo) entry).getOption("router.version")); //_context.shitlist().shitlistRouter(peerHash, "Part of the wrong network", STYLE); dropPeer(peerHash, false, "wrong network"); if (_log.shouldLog(Log.WARN)) - _log.warn("Dropping the peer " + peerHash.toBase64() + " because they are in the wrong net: " + dsm.getRouterInfo()); + _log.warn("Dropping the peer " + peerHash.toBase64() + " because they are in the wrong net: " + entry); return; } else { - if (dsm.getRouterInfo() != null) { + if (entry.getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO) { if (_log.shouldLog(Log.INFO)) _log.info("Received an RI from the same net"); } else { diff --git a/router/java/src/net/i2p/router/tunnel/InboundMessageDistributor.java b/router/java/src/net/i2p/router/tunnel/InboundMessageDistributor.java index fcdb77ea9..82fdc47c6 100644 --- a/router/java/src/net/i2p/router/tunnel/InboundMessageDistributor.java +++ b/router/java/src/net/i2p/router/tunnel/InboundMessageDistributor.java @@ -1,8 +1,10 @@ package net.i2p.router.tunnel; +import net.i2p.data.DatabaseEntry; import net.i2p.data.Hash; import net.i2p.data.LeaseSet; import net.i2p.data.Payload; +import net.i2p.data.RouterInfo; import net.i2p.data.TunnelId; import net.i2p.data.i2np.DataMessage; import net.i2p.data.i2np.DatabaseSearchReplyMessage; @@ -71,7 +73,7 @@ public class InboundMessageDistributor implements GarlicMessageReceiver.CloveRec msg = newMsg; } else if ( (_client != null) && (msg.getType() == DatabaseStoreMessage.MESSAGE_TYPE) && - (((DatabaseStoreMessage)msg).getValueType() == DatabaseStoreMessage.KEY_TYPE_ROUTERINFO)) { + (((DatabaseStoreMessage)msg).getEntry().getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO)) { // FVSJ may result in an unsolicited RI store if the peer went non-ff. // Maybe we can figure out a way to handle this safely, so we don't ask him again. // For now, just hope we eventually find out through other means. @@ -165,7 +167,7 @@ public class InboundMessageDistributor implements GarlicMessageReceiver.CloveRec // unnecessarily DatabaseStoreMessage dsm = (DatabaseStoreMessage)data; try { - if (dsm.getValueType() == DatabaseStoreMessage.KEY_TYPE_LEASESET) { + if (dsm.getEntry().getType() == DatabaseEntry.KEY_TYPE_LEASESET) { // If it was stored to us before, don't undo the // receivedAsPublished flag so we will continue to respond to requests // for the leaseset. That is, we don't want this to change the @@ -173,10 +175,11 @@ public class InboundMessageDistributor implements GarlicMessageReceiver.CloveRec // When the keyspace rotates at midnight, and this leaseset moves out // of our keyspace, maybe we shouldn't do this? // Should we do this whether ff or not? - LeaseSet old = _context.netDb().store(dsm.getKey(), dsm.getLeaseSet()); + LeaseSet ls = (LeaseSet) dsm.getEntry(); + LeaseSet old = _context.netDb().store(dsm.getKey(), ls); if (old != null && old.getReceivedAsPublished() /** && ((FloodfillNetworkDatabaseFacade)_context.netDb()).floodfillEnabled() **/ ) - dsm.getLeaseSet().setReceivedAsPublished(true); + ls.setReceivedAsPublished(true); if (_log.shouldLog(Log.INFO)) _log.info("Storing LS for: " + dsm.getKey() + " sent to: " + _client); } else { @@ -189,7 +192,7 @@ public class InboundMessageDistributor implements GarlicMessageReceiver.CloveRec _log.error("Dropped dangerous message down a tunnel for " + _client.toBase64() + ": " + dsm, new Exception("cause")); return; } - _context.netDb().store(dsm.getKey(), dsm.getRouterInfo()); + _context.netDb().store(dsm.getKey(), (RouterInfo) dsm.getEntry()); } } catch (IllegalArgumentException iae) { if (_log.shouldLog(Log.WARN)) From 1a3b0d3812ebb17e5a8efc288e868f38ee01fb1c Mon Sep 17 00:00:00 2001 From: zzz Date: Mon, 3 Jan 2011 14:26:22 +0000 Subject: [PATCH 029/463] * I2PAppContext: New getProperties() method * i2ptunnel: - Use context properties as defaults --- .../java/src/net/i2p/i2ptunnel/I2PTunnel.java | 4 ++-- core/java/src/net/i2p/I2PAppContext.java | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java index 75a276aa0..3a557c5a1 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java @@ -118,8 +118,8 @@ public class I2PTunnel implements Logging, EventDispatcher { _tunnelId = ++__tunnelId; _log = _context.logManager().getLog(I2PTunnel.class); _event = new EventDispatcherImpl(); - Properties p = new Properties(); - p.putAll(System.getProperties()); + // as of 0.8.4, include context properties + Properties p = _context.getProperties(); _clientOptions = p; _sessions = new ArrayList(1); diff --git a/core/java/src/net/i2p/I2PAppContext.java b/core/java/src/net/i2p/I2PAppContext.java index e6df37e6f..e235511aa 100644 --- a/core/java/src/net/i2p/I2PAppContext.java +++ b/core/java/src/net/i2p/I2PAppContext.java @@ -483,6 +483,21 @@ public class I2PAppContext { return names; } + /** + * Access the configuration attributes of this context, listing the properties + * provided during the context construction, as well as the ones included in + * System.getProperties. + * + * @return new Properties with system and context properties + * @since 0.8.4 + */ + public Properties getProperties() { + Properties rv = new Properties(); + rv.putAll(System.getProperties()); + rv.putAll(_overrideProps); + return rv; + } + /** * The statistics component with which we can track various events * over time. From 532c9d3fc59a649b51fdbee158001478e63f2c81 Mon Sep 17 00:00:00 2001 From: zzz Date: Mon, 3 Jan 2011 15:56:02 +0000 Subject: [PATCH 030/463] * I2CP: - Add experimental bandwidth limiter - Add I2PSession API method to update tunnel and bandwidth configuration on an existing session - Filter more system properties before passing them to the router --- .../net/i2p/client/I2CPMessageProducer.java | 156 ++++++++++++++++-- core/java/src/net/i2p/client/I2PSession.java | 8 + .../src/net/i2p/client/I2PSessionImpl.java | 42 ++++- .../src/net/i2p/client/I2PSimpleSession.java | 7 + 4 files changed, 187 insertions(+), 26 deletions(-) diff --git a/core/java/src/net/i2p/client/I2CPMessageProducer.java b/core/java/src/net/i2p/client/I2CPMessageProducer.java index 0fa35d8cf..f9840c5c3 100644 --- a/core/java/src/net/i2p/client/I2CPMessageProducer.java +++ b/core/java/src/net/i2p/client/I2CPMessageProducer.java @@ -12,6 +12,8 @@ package net.i2p.client; import java.util.Date; import java.util.Properties; import java.util.Set; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.locks.ReentrantLock; import net.i2p.I2PAppContext; import net.i2p.data.DataFormatException; @@ -41,22 +43,51 @@ import net.i2p.util.Log; * @author jrandom */ class I2CPMessageProducer { - private final static Log _log = new Log(I2CPMessageProducer.class); + private final Log _log; private final I2PAppContext _context; - private int _sendBps; - private long _sendPeriodBytes; - private long _sendPeriodBeginTime; + private int _maxBytesPerSecond; + private volatile int _sendPeriodBytes; + private volatile long _sendPeriodBeginTime; + private final ReentrantLock _lock; + private static final String PROP_MAX_BW = "i2cp.outboundBytesPerSecond"; + /** see ConnectionOptions in streaming - MTU + streaming overhead + gzip overhead */ + private static final int TYP_SIZE = 1730 + 28 + 23; + private static final int MIN_RATE = 2 * TYP_SIZE; public I2CPMessageProducer(I2PAppContext context) { _context = context; - context.statManager().createRateStat("client.sendBpsRaw", "How fast we pump out I2CP data messages", "ClientMessages", new long[] { 60*1000, 5*60*1000, 10*60*1000, 60*60*1000 }); + _log = context.logManager().getLog(I2CPMessageProducer.class); + _lock = new ReentrantLock(true); + context.statManager().createRateStat("client.sendThrottled", "Times waited for bandwidth", "ClientMessages", new long[] { 60*1000 }); + context.statManager().createRateStat("client.sendDropped", "Length of msg dropped waiting for bandwidth", "ClientMessages", new long[] { 60*1000 }); } + /** + * Update the bandwidth setting + * @since 0.8.4 + */ + public void updateBandwidth(I2PSessionImpl session) { + String max = session.getOptions().getProperty(PROP_MAX_BW); + if (max != null) { + try { + int iMax = Integer.parseInt(max); + if (iMax > 0) + // round up to next higher TYP_SIZE for efficiency, then add some fudge for small messages + _maxBytesPerSecond = 256 + Math.max(MIN_RATE, TYP_SIZE * ((iMax + TYP_SIZE - 1) / TYP_SIZE)); + else + _maxBytesPerSecond = 0; + } catch (NumberFormatException nfe) {} + } + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Setting " + _maxBytesPerSecond + " BPS max"); + } + /** * Send all the messages that a client needs to send to a router to establish * a new session. */ public void connect(I2PSessionImpl session) throws I2PSessionException { + updateBandwidth(session); CreateSessionMessage msg = new CreateSessionMessage(); SessionConfig cfg = new SessionConfig(session.getMyDestination()); cfg.setOptions(session.getOptions()); @@ -99,6 +130,9 @@ class I2CPMessageProducer { */ public void sendMessage(I2PSessionImpl session, Destination dest, long nonce, byte[] payload, SessionTag tag, SessionKey key, Set tags, SessionKey newKey, long expires) throws I2PSessionException { + if (!updateBps(payload.length, expires)) + // drop the message... send fail notification? + return; SendMessageMessage msg; if (expires > 0) { msg = new SendMessageExpiresMessage(); @@ -111,20 +145,108 @@ class I2CPMessageProducer { Payload data = createPayload(dest, payload, tag, key, tags, newKey); msg.setPayload(data); session.sendMessage(msg); - updateBps(payload.length); } - private void updateBps(int len) { - long now = _context.clock().now(); - float period = ((float)now-_sendPeriodBeginTime)/1000f; - if (period >= 1f) { - // first term decays on slow transmission - _sendBps = (int)(((float)0.9f * (float)_sendBps) + ((float)0.1f*((float)_sendPeriodBytes)/period)); - _sendPeriodBytes = len; - _sendPeriodBeginTime = now; - _context.statManager().addRateData("client.sendBpsRaw", _sendBps, 0); - } else { - _sendPeriodBytes += len; + /** + * Super-simple bandwidth throttler. + * We only calculate on a one-second basis, so large messages + * (compared to the one-second limit) may exceed the limits. + * Tuned for streaming, may not work well for large datagrams. + * + * This does poorly with low rate limits since it doesn't credit + * bandwidth across two periods. So the limit is rounded up, + * and the min limit is set to 2x the typ size, above. + * + * Blocking so this could be very bad for retransmissions, + * as it could clog StreamingTimer. + * Waits are somewhat "fair" using ReentrantLock. + * While out-of-order transmission is acceptable, fairness + * reduces the chance of starvation. ReentrantLock does not + * guarantee in-order execution due to thread priority issues, + * so out-of-order may still occur. But shouldn't happen within + * the same thread anyway... Also note that small messages may + * go ahead of large ones that are waiting for the next window. + * Also, threads waiting a second time go to the back of the line. + * + * Since this is at the I2CP layer, it includes streaming overhead, + * streaming acks and retransmissions, + * gzip overhead (or "underhead" for compression), + * repliable datagram overhead, etc. + * However, it does not, of course, include the substantial overhead + * imposed by the router for the leaseset, tags, encryption, + * and fixed-size tunnel messages. + * + * @param expires if > 0, an expiration date + * @return true if we should send the message, false to drop it + */ + private boolean updateBps(int len, long expires) { + if (_maxBytesPerSecond <= 0) + return true; + //synchronized(this) { + _lock.lock(); + try { + int waitCount = 0; + while (true) { + long now = _context.clock().now(); + if (waitCount > 0 && expires > 0 && expires < now) { + // just say no to bufferbloat... drop the message right here + _context.statManager().addRateData("client.sendDropped", len, 0); + if (_log.shouldLog(Log.WARN)) + _log.warn("Dropping " + len + " byte msg expired in queue"); + return false; + } + + long period = now - _sendPeriodBeginTime; + if (period >= 2000) { + // start new period, always let it through no matter how big + _sendPeriodBytes = len; + _sendPeriodBeginTime = now; + if (_log.shouldLog(Log.DEBUG)) + _log.debug("New period after idle, " + len + " bytes"); + return true; + } + + if (period >= 1000) { + // start new period + // Allow burst within 2 sec, only advance window by 1 sec, and + // every other second give credit for unused bytes in previous period + if (_sendPeriodBytes > 0 && ((_sendPeriodBeginTime / 1000) & 0x01) == 0) + _sendPeriodBytes += len - _maxBytesPerSecond; + else + _sendPeriodBytes = len; + _sendPeriodBeginTime += 1000; + if (_log.shouldLog(Log.DEBUG)) + _log.debug("New period, " + len + " bytes"); + return true; + } + + if (_sendPeriodBytes + len <= _maxBytesPerSecond) { + // still bytes available in this period + _sendPeriodBytes += len; + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Sending " + len + ", Elapsed " + period + "ms, total " + _sendPeriodBytes + " bytes"); + return true; + } + + if (waitCount >= 2) { + // just say no to bufferbloat... drop the message right here + _context.statManager().addRateData("client.sendDropped", len, 0); + if (_log.shouldLog(Log.WARN)) + _log.warn("Dropping " + len + " byte msg after waiting " + waitCount + " times"); + return false; + } + + // wait until next period + _context.statManager().addRateData("client.sendThrottled", ++waitCount, 0); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Throttled " + len + " bytes, wait #" + waitCount + ' ' + (1000 - period) + "ms" /*, new Exception()*/); + try { + //this.wait(1000 - period); + _lock.newCondition().await(1000 - period, TimeUnit.MILLISECONDS); + } catch (InterruptedException ie) {} + } + } finally { + _lock.unlock(); } } diff --git a/core/java/src/net/i2p/client/I2PSession.java b/core/java/src/net/i2p/client/I2PSession.java index cd20cfc2d..27138b884 100644 --- a/core/java/src/net/i2p/client/I2PSession.java +++ b/core/java/src/net/i2p/client/I2PSession.java @@ -9,6 +9,7 @@ package net.i2p.client; * */ +import java.util.Properties; import java.util.Set; import net.i2p.data.Destination; @@ -151,6 +152,13 @@ public interface I2PSession { */ public Destination lookupDest(Hash h, long maxWait) throws I2PSessionException; + /** + * Does not remove properties previously present but missing from this options parameter. + * @param options non-null + * @since 0.8.4 + */ + public void updateOptions(Properties options); + /** * Get the current bandwidth limits. Blocking. */ diff --git a/core/java/src/net/i2p/client/I2PSessionImpl.java b/core/java/src/net/i2p/client/I2PSessionImpl.java index 8b4389e47..10e7695c0 100644 --- a/core/java/src/net/i2p/client/I2PSessionImpl.java +++ b/core/java/src/net/i2p/client/I2PSessionImpl.java @@ -221,20 +221,32 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa } } + /** save some memory, don't pass along the pointless properties */ private Properties filter(Properties options) { Properties rv = new Properties(); for (Iterator iter = options.keySet().iterator(); iter.hasNext();) { String key = (String) iter.next(); - String val = options.getProperty(key); - if (key.startsWith("java") || - key.startsWith("user") || - key.startsWith("os") || - key.startsWith("sun") || - key.startsWith("file") || - key.startsWith("line") || - key.startsWith("wrapper")) { + if (key.startsWith("java.") || + key.startsWith("user.") || + key.startsWith("os.") || + key.startsWith("sun.") || + key.startsWith("file.") || + key.equals("line.separator") || + key.equals("path.separator") || + key.equals("prng.buffers") || + key.equals("router.trustedUpdateKeys") || + key.startsWith("router.update") || + key.startsWith("routerconsole.") || + key.startsWith("time.") || + key.startsWith("stat.") || + key.startsWith("gnu.") || // gnu JVM + key.startsWith("net.i2p.router.web.") || // console nonces + key.startsWith("wrapper.")) { if (_log.shouldLog(Log.DEBUG)) _log.debug("Skipping property: " + key); - } else if ((key.length() > 255) || (val.length() > 255)) { + continue; + } + String val = options.getProperty(key); + if ((key.length() > 255) || (val.length() > 255)) { if (_log.shouldLog(Log.WARN)) _log.warn(getPrefix() + "Not passing on property [" + key @@ -247,6 +259,18 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa return rv; } + /** + * Update the tunnel and bandwidth settings + * @since 0.8.4 + */ + public void updateOptions(Properties options) { + _options.putAll(filter(options)); + _producer.updateBandwidth(this); + try { + _producer.updateTunnels(this, 0); + } catch (I2PSessionException ise) {} + } + void setLeaseSet(LeaseSet ls) { _leaseSet = ls; if (ls != null) { diff --git a/core/java/src/net/i2p/client/I2PSimpleSession.java b/core/java/src/net/i2p/client/I2PSimpleSession.java index e984b6d30..1c564f0db 100644 --- a/core/java/src/net/i2p/client/I2PSimpleSession.java +++ b/core/java/src/net/i2p/client/I2PSimpleSession.java @@ -98,6 +98,13 @@ class I2PSimpleSession extends I2PSessionImpl2 { } } + /** + * Ignore, does nothing + * @since 0.8.4 + */ + @Override + public void updateOptions(Properties options) {} + /** * Only map message handlers that we will use */ From 8d59fd1cbe6105d888a4280dd6b6241656f53ec1 Mon Sep 17 00:00:00 2001 From: zzz Date: Mon, 3 Jan 2011 16:21:51 +0000 Subject: [PATCH 031/463] some more defines --- apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java | 4 +++- apps/i2psnark/java/src/org/klomp/snark/Peer.java | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java b/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java index 5b7b0b038..3748b6239 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java +++ b/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java @@ -23,8 +23,10 @@ abstract class ExtensionHandler { private static final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(ExtensionHandler.class); - public static final int ID_METADATA = 3; + public static final int ID_METADATA = 1; private static final String TYPE_METADATA = "ut_metadata"; + public static final int ID_PEX = 2; + private static final String TYPE_PEX = "ut_pex"; /** Pieces * SHA1 Hash length, + 25% extra for file names, benconding overhead, etc */ private static final int MAX_METADATA_SIZE = Storage.MAX_PIECES * 20 * 5 / 4; private static final int PARALLEL_REQUESTS = 3; diff --git a/apps/i2psnark/java/src/org/klomp/snark/Peer.java b/apps/i2psnark/java/src/org/klomp/snark/Peer.java index 18c9ad229..dd98e5dd9 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Peer.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Peer.java @@ -79,6 +79,7 @@ public class Peer implements Comparable static final long OPTION_EXTENSION = 0x0000000000100000l; static final long OPTION_FAST = 0x0000000000000004l; static final long OPTION_DHT = 0x0000000000000001l; + static final long OPTION_AZMP = 0x1000000000000000l; private long options; /** From 3305f1790c88f953504e433aa603d7d642818286 Mon Sep 17 00:00:00 2001 From: zzz Date: Mon, 3 Jan 2011 18:02:26 +0000 Subject: [PATCH 032/463] details page for single-file torrents --- .../org/klomp/snark/web/I2PSnarkServlet.java | 53 ++++++++++--------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 51bb548bb..616df5b83 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -161,7 +161,7 @@ public class I2PSnarkServlet extends Default { resp.setCharacterEncoding("UTF-8"); resp.setContentType("text/html; charset=UTF-8"); Resource resource = getResource(pathInContext); - if (resource == null || (!resource.exists()) || !resource.isDirectory()) { + if (resource == null || (!resource.exists())) { resp.sendError(HttpResponse.__404_Not_Found); } else { String base = URI.addPaths(req.getRequestURI(), "/"); @@ -853,14 +853,13 @@ public class I2PSnarkServlet extends Default { out.write(statusString + ""); - String announce = null; if (isValid) { - announce = meta.getAnnounce(); - if (announce != null) { - String trackerLink = getTrackerLink(announce, snark.getInfoHash()); - if (trackerLink != null) - out.write(trackerLink); - } + StringBuilder buf = new StringBuilder(128); + buf.append("\"").append(_("Info")).append("\""); + out.write(buf.toString()); } out.write(""); @@ -1555,13 +1554,11 @@ public class I2PSnarkServlet extends Default { private String getListHTML(Resource r, String base, boolean parent, Map postParams) throws IOException { - if (!r.isDirectory()) - return null; - - String[] ls = r.list(); - if (ls==null) - return null; - Arrays.sort(ls, Collator.getInstance()); + String[] ls = null; + if (r.isDirectory()) { + ls = r.list(); + Arrays.sort(ls, Collator.getInstance()); + } // if r is not a directory, we are only showing torrent info section StringBuilder buf=new StringBuilder(4096); buf.append(DOCTYPE + ""); @@ -1592,7 +1589,7 @@ public class I2PSnarkServlet extends Default { if (parent) // always true buf.append("<div class=\"page\"><div class=\"mainsection\">"); - boolean showPriority = snark != null && snark.getStorage() != null && !snark.getStorage().complete(); + boolean showPriority = ls != null && snark != null && snark.getStorage() != null && !snark.getStorage().complete(); if (showPriority) buf.append("<form action=\"").append(base).append("\" method=\"POST\">\n"); buf.append("<TABLE BORDER=0 class=\"snarkTorrents\" ><thead>"); @@ -1621,15 +1618,17 @@ public class I2PSnarkServlet extends Default { if (meta != null) { String announce = meta.getAnnounce(); if (announce != null) { + buf.append("<br>"); String trackerLink = getTrackerLink(announce, snark.getInfoHash()); - if (trackerLink != null) { - if (announce.startsWith("http://")) - announce = announce.substring(7); - int slsh = announce.indexOf('/'); - if (slsh > 0) - announce = announce.substring(0, slsh); - buf.append("<br>").append(trackerLink).append(' ').append(announce); - } + if (trackerLink != null) + buf.append(trackerLink).append(' '); + buf.append(_("Tracker")).append(": "); + if (announce.startsWith("http://")) + announce = announce.substring(7); + int slsh = announce.indexOf('/'); + if (slsh > 0) + announce = announce.substring(0, slsh); + buf.append(announce); } } @@ -1642,6 +1641,12 @@ public class I2PSnarkServlet extends Default { // .append(MAGGOT).append(hex).append(':').append(hex).append("</a>"); buf.append("</div></th></tr>"); } + if (ls == null) { + // We are only showing the torrent info section + buf.append("</thead></table></div></div></BODY></HTML>"); + return buf.toString(); + } + // second row - dir info buf.append("<tr><th>") .append("<img alt=\"\" border=\"0\" src=\"" + _imgPath + "file.png\" > ") From 2a6c763c316b1f3b0c5f39a0e8eaf2afa97f8326 Mon Sep 17 00:00:00 2001 From: mathiasdm <mathiasdm@mail.i2p> Date: Mon, 3 Jan 2011 18:37:29 +0000 Subject: [PATCH 033/463] Added support for callbacks when changes in I2PAppContext properties occur. --- core/java/src/net/i2p/I2PAppContext.java | 27 ++++++++- core/java/src/net/i2p/util/I2PProperties.java | 57 +++++++++++++++++++ 2 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 core/java/src/net/i2p/util/I2PProperties.java diff --git a/core/java/src/net/i2p/I2PAppContext.java b/core/java/src/net/i2p/I2PAppContext.java index b49779640..4b023034b 100644 --- a/core/java/src/net/i2p/I2PAppContext.java +++ b/core/java/src/net/i2p/I2PAppContext.java @@ -27,11 +27,13 @@ import net.i2p.util.Clock; import net.i2p.util.ConcurrentHashSet; import net.i2p.util.FileUtil; import net.i2p.util.FortunaRandomSource; +import net.i2p.util.I2PProperties; import net.i2p.util.KeyRing; import net.i2p.util.LogManager; //import net.i2p.util.PooledRandomSource; import net.i2p.util.RandomSource; import net.i2p.util.SecureDirectory; +import net.i2p.util.I2PProperties.I2PPropertyCallback; /** * <p>Provide a base scope for accessing singletons that I2P exposes. Rather than @@ -62,7 +64,7 @@ public class I2PAppContext { /** the context that components without explicit root are bound */ protected static I2PAppContext _globalAppContext; - private Properties _overrideProps; + private I2PProperties _overrideProps; private StatManager _statManager; private SessionKeyManager _sessionKeyManager; @@ -165,7 +167,7 @@ public class I2PAppContext { _globalAppContext = this; } } - _overrideProps = envProps; + _overrideProps = new I2PProperties(envProps); _statManager = null; _sessionKeyManager = null; _namingService = null; @@ -478,6 +480,27 @@ public class I2PAppContext { return names; } + /** + * Modify the configuration attributes of this context, changing + * one of the properties provided during the context construction. + * @param propName The name of the property. + * @param value The new value for the property. + */ + public void setProperty(String propName, String value) { + if(_overrideProps != null) { + _overrideProps.setProperty(propName, value); + } + } + + /** + * Add a callback, which will fire upon changes in the property + * given in the specific callback. + * @param callback The implementation of the callback. + */ + public void addPropertyCallback(I2PPropertyCallback callback) { + _overrideProps.addCallBack(callback); + } + /** * The statistics component with which we can track various events * over time. diff --git a/core/java/src/net/i2p/util/I2PProperties.java b/core/java/src/net/i2p/util/I2PProperties.java new file mode 100644 index 000000000..b6dfca8a1 --- /dev/null +++ b/core/java/src/net/i2p/util/I2PProperties.java @@ -0,0 +1,57 @@ +package net.i2p.util; + +import java.util.ArrayList; +import java.util.List; +import java.util.Properties; +import java.util.concurrent.CopyOnWriteArrayList; + +/** + * This class contains a number of properties ((key,value)-pairs). + * Additionally, it adds the possibility for callbacks, + * to allow immediate response to changing properties. + * @author Mathiasdm + * + */ +public class I2PProperties extends Properties { + + /** + * Keep a list of callbacks to contact the interested parties + * that want to know about property changes. + * @todo Use a map of lists, so we don't need to loop over all the callbacks on every change. + */ + private final List<I2PPropertyCallback> _callbacks = new CopyOnWriteArrayList<I2PPropertyCallback>(); + + public I2PProperties() { + super(); + } + + public I2PProperties(Properties defaults) { + super(defaults); + } + + public void addCallBack(I2PPropertyCallback callback) { + _callbacks.add(callback); + } + + public void removeCallBack(I2PPropertyCallback callback) { + _callbacks.remove(callback); + } + + public Object setProperty(String key, String value) { + Object returnValue = super.setProperty(key, value); + for(I2PPropertyCallback callback: _callbacks) { + if(callback.getPropertyKey().equals(key)) { + callback.propertyChanged(key, value); + } + } + return returnValue; + } + + public interface I2PPropertyCallback { + + public void propertyChanged(String key, String value); + + public String getPropertyKey(); + } + +} From 9b0c42ca6f5cc41d0e1f99c732f99842b04a06ad Mon Sep 17 00:00:00 2001 From: mathiasdm <mathiasdm@mail.i2p> Date: Mon, 3 Jan 2011 18:40:18 +0000 Subject: [PATCH 034/463] - Added support for on-the-fly routerconsole.lang changes to desktopgui and routerconsole (routerconsole now commits changes to the I2PAppContext). - Added desktopgui support for detecting if it's running in the same JVM as I2P (without commandline arguments). --- apps/desktopgui/README | 2 +- apps/desktopgui/TODO | 7 +++++-- .../desktopgui/src/net/i2p/desktopgui/Main.java | 17 +++++++++++++++++ .../src/net/i2p/desktopgui/TrayManager.java | 14 +++++++++----- .../i2p/desktopgui/router/RouterManager.java | 7 +++++++ .../src/net/i2p/router/web/ContentHelper.java | 16 +++++++++++++++- 6 files changed, 54 insertions(+), 9 deletions(-) diff --git a/apps/desktopgui/README b/apps/desktopgui/README index 2a4f3a40c..569ca580a 100644 --- a/apps/desktopgui/README +++ b/apps/desktopgui/README @@ -6,7 +6,7 @@ Current setup: * Place desktopgui.jar in the $I2P/lib/ directory. * Add to .i2p/clients.config: #Desktopgui - clientApp.6.args=--startWithI2P --I2PLocation=/SOME_LOCATION + clientApp.6.args= clientApp.6.delay=5 clientApp.6.main=net.i2p.desktopgui.Main clientApp.6.name=desktopgui diff --git a/apps/desktopgui/TODO b/apps/desktopgui/TODO index 2a98b7f4f..dd1610223 100644 --- a/apps/desktopgui/TODO +++ b/apps/desktopgui/TODO @@ -4,10 +4,13 @@ HIGH PRIORITY: - Internationalisation: * Add strings - DONE * Add Windows support - NEED TO CHECK - * Might need some kind of trigger to reload the menu (for live language switching) + * Might need some kind of trigger to reload the menu (for live language switching) - DONE * Language choice is not actually set as a parameter in I2P config? As a result, desktopgui always starts with the default, unless you manually set the language. -- Modify installer to set I2P directory parameter; or use $I2P? + DONE - uses routerconsole.lang -- this parameter is now updated in routerconsole as well +- Check if we're inside I2P without using a command-line parameter - DONE +- Modify installer to set I2P directory parameter; or use $I2P? - Is already there +- Include in installer - TODO - Fix tabs versus spaces ;-) UNKNOWN: - API to allow applications to add themselves to the menu? diff --git a/apps/desktopgui/src/net/i2p/desktopgui/Main.java b/apps/desktopgui/src/net/i2p/desktopgui/Main.java index 540807ada..c24cdd418 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/Main.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/Main.java @@ -7,8 +7,12 @@ package net.i2p.desktopgui; import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; + +import net.i2p.I2PAppContext; import net.i2p.desktopgui.util.*; import net.i2p.util.Log; +import net.i2p.util.Translate; +import net.i2p.util.I2PProperties.I2PPropertyCallback; /** * The main class of the application. @@ -25,6 +29,19 @@ public class Main { private void startUp() { trayManager = TrayManager.getInstance(); trayManager.startManager(); + I2PAppContext.getCurrentContext().addPropertyCallback(new I2PPropertyCallback() { + + @Override + public String getPropertyKey() { + return Translate.PROP_LANG; + } + + @Override + public void propertyChanged(String arg0, String arg1) { + trayManager.languageChanged(); + } + + }); } /** diff --git a/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java b/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java index 1bc8b1b05..01a5d611f 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java @@ -42,9 +42,9 @@ public abstract class TrayManager { */ protected TrayManager() {} - public static TrayManager getInstance() { + protected static TrayManager getInstance() { if(instance == null) { - boolean inI2P = ConfigurationManager.getInstance().getBooleanConfiguration("startWithI2P", false); + boolean inI2P = RouterManager.inI2P(); if(inI2P) { instance = new InternalTrayManager(); } @@ -58,7 +58,7 @@ public abstract class TrayManager { /** * Add the tray icon to the system tray and start everything up. */ - public void startManager() { + protected void startManager() { if(SystemTray.isSupported()) { tray = SystemTray.getSystemTray(); trayIcon = new TrayIcon(getTrayImage(), "I2P", getMainMenu()); @@ -70,17 +70,21 @@ public abstract class TrayManager { } } + protected void languageChanged() { + trayIcon.setPopupMenu(getMainMenu()); + } + /** * Build a popup menu, adding callbacks to the different items. * @return popup menu */ - public abstract PopupMenu getMainMenu(); + protected abstract PopupMenu getMainMenu(); /** * Get tray icon image from the desktopgui resources in the jar file. * @return image used for the tray icon */ - public Image getTrayImage() { + private Image getTrayImage() { URL url = getClass().getResource("/desktopgui/resources/images/logo.jpg"); Image image = Toolkit.getDefaultToolkit().getImage(url); return image; diff --git a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java index 031c38d7c..fd36219fa 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java @@ -55,6 +55,13 @@ public class RouterManager { public static void shutDown() { getRouter().shutdownGracefully(); } + + /** + * Check if we are running inside I2P. + */ + public static boolean inI2P() { + return (RouterContext.listContexts().size() > 0); + } private static String _(String s) { return DesktopguiTranslator._(s); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java index f9fe7377c..adc245a6b 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java @@ -18,7 +18,21 @@ public class ContentHelper extends HelperBase { public void setStartAtBeginning(String moo) { _startAtBeginning = Boolean.valueOf(""+moo).booleanValue(); } - public void setLang(String l) { _lang = l; } + public void setLang(String l) { + if(_lang == null || !_lang.equals(l)) { + //Set language for router console + _lang = l; + + if(_context == null) { + setContextId(null); + } + + //Set language persistently throughout I2P + _context.router().setConfigSetting(Messages.PROP_LANG, _lang); + _context.router().saveConfig(); + _context.setProperty(Messages.PROP_LANG, _lang); + } + } public void setMaxLines(String lines) { if (lines != null) { From 976544bd1dc50dc3dc9f8e24d4397efb35e7cb01 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Tue, 4 Jan 2011 00:36:24 +0000 Subject: [PATCH 035/463] stub out PEX --- .../src/org/klomp/snark/ExtensionHandler.java | 88 ++++++++++++++++++- .../src/org/klomp/snark/PeerCoordinator.java | 18 ++++ .../src/org/klomp/snark/PeerListener.java | 11 ++- 3 files changed, 113 insertions(+), 4 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java b/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java index 3748b6239..7b2979b8a 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java +++ b/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java @@ -3,10 +3,13 @@ package org.klomp.snark; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import net.i2p.I2PAppContext; +import net.i2p.data.DataHelper; import net.i2p.util.Log; import org.klomp.snark.bencode.BDecoder; @@ -23,10 +26,11 @@ abstract class ExtensionHandler { private static final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(ExtensionHandler.class); + public static final int ID_HANDSHAKE = 0; public static final int ID_METADATA = 1; - private static final String TYPE_METADATA = "ut_metadata"; + public static final String TYPE_METADATA = "ut_metadata"; public static final int ID_PEX = 2; - private static final String TYPE_PEX = "ut_pex"; + public static final String TYPE_PEX = "ut_pex"; /** Pieces * SHA1 Hash length, + 25% extra for file names, benconding overhead, etc */ private static final int MAX_METADATA_SIZE = Storage.MAX_PIECES * 20 * 5 / 4; private static final int PARALLEL_REQUESTS = 3; @@ -40,6 +44,7 @@ abstract class ExtensionHandler { Map<String, Object> handshake = new HashMap(); Map<String, Integer> m = new HashMap(); m.put(TYPE_METADATA, Integer.valueOf(ID_METADATA)); + m.put(TYPE_PEX, Integer.valueOf(ID_PEX)); if (metasize >= 0) handshake.put("metadata_size", Integer.valueOf(metasize)); handshake.put("m", m); @@ -52,10 +57,12 @@ abstract class ExtensionHandler { public static void handleMessage(Peer peer, PeerListener listener, int id, byte[] bs) { if (_log.shouldLog(Log.INFO)) _log.info("Got extension msg " + id + " length " + bs.length + " from " + peer); - if (id == 0) + if (id == ID_HANDSHAKE) handleHandshake(peer, listener, bs); else if (id == ID_METADATA) handleMetadata(peer, listener, bs); + else if (id == ID_PEX) + handlePEX(peer, listener, bs); else if (_log.shouldLog(Log.INFO)) _log.info("Unknown extension msg " + id + " from " + peer); } @@ -72,6 +79,12 @@ abstract class ExtensionHandler { peer.setHandshakeMap(map); Map<String, BEValue> msgmap = map.get("m").getMap(); + if (msgmap.get(TYPE_PEX) != null) { + if (_log.shouldLog(Log.WARN)) + _log.debug("Peer supports PEX extension: " + peer); + // peer state calls peer listener calls sendPEX() + } + if (msgmap.get(TYPE_METADATA) == null) { if (_log.shouldLog(Log.WARN)) _log.debug("Peer does not support metadata extension: " + peer); @@ -216,6 +229,7 @@ abstract class ExtensionHandler { } catch (Exception e) { if (_log.shouldLog(Log.WARN)) _log.info("Metadata ext. msg. exception from " + peer, e); + // fatal ? peer.disconnect(false); } } @@ -262,4 +276,72 @@ abstract class ExtensionHandler { _log.info("Metadata send piece msg exception to " + peer, e); } } + + private static final int HASH_LENGTH = 32; + + /** + * Can't find a published standard for this anywhere. + * See the libtorrent code. + * Here we use the "added" key as a single string of concatenated + * 32-byte peer hashes. + * added.f and dropped unsupported + * @since 0.8.4 + */ + private static void handlePEX(Peer peer, PeerListener listener, byte[] bs) { + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Got PEX msg from " + peer); + try { + InputStream is = new ByteArrayInputStream(bs); + BDecoder dec = new BDecoder(is); + BEValue bev = dec.bdecodeMap(); + Map<String, BEValue> map = bev.getMap(); + byte[] ids = map.get("added").getBytes(); + if (ids.length < HASH_LENGTH) + return; + int len = Math.min(ids.length, (I2PSnarkUtil.MAX_CONNECTIONS - 1) * HASH_LENGTH); + List<PeerID> peers = new ArrayList(len / HASH_LENGTH); + for (int off = 0; off < len; off += HASH_LENGTH) { + byte[] hash = new byte[HASH_LENGTH]; + System.arraycopy(ids, off, hash, 0, HASH_LENGTH); + if (DataHelper.eq(hash, peer.getPeerID().getDestHash())) + continue; + PeerID pID = new PeerID(hash); + peers.add(pID); + } + // could include ourselves, listener must remove + listener.gotPeers(peer, peers); + } catch (Exception e) { + if (_log.shouldLog(Log.WARN)) + _log.info("PEX msg exception from " + peer, e); + //peer.disconnect(false); + } + } + + /** + * added.f and dropped unsupported + * @param pList non-null + * @since 0.8.4 + */ + public static void sendPEX(Peer peer, List<Peer> pList) { + if (pList.isEmpty()) + return; + Map<String, Object> map = new HashMap(); + byte[] peers = new byte[HASH_LENGTH * pList.size()]; + int off = 0; + for (Peer p : pList) { + System.arraycopy(p.getPeerID().getDestHash(), 0, peers, off, HASH_LENGTH); + off += HASH_LENGTH; + } + map.put("added", peers); + byte[] payload = BEncoder.bencode(map); + try { + int hisMsgCode = peer.getHandshakeMap().get("m").getMap().get(TYPE_PEX).getInt(); + peer.sendExtension(hisMsgCode, payload); + } catch (Exception e) { + // NPE, no PEX caps + if (_log.shouldLog(Log.WARN)) + _log.info("PEX msg exception to " + peer, e); + } + } + } diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java index dbecc757e..7852840cc 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java @@ -1171,6 +1171,16 @@ public class PeerCoordinator implements PeerListener listener.gotMetaInfo(this, metainfo); } } + } else if (id == ExtensionHandler.ID_HANDSHAKE) { + try { + if (peer.getHandshakeMap().get("m").getMap().get(ExtensionHandler.TYPE_PEX) != null) { + List<Peer> pList = peerList(); + pList.remove(peer); + ExtensionHandler.sendPEX(peer, pList); + } + } catch (Exception e) { + // NPE, no map + } } } @@ -1199,6 +1209,14 @@ public class PeerCoordinator implements PeerListener dht.ping(peer.getDestination(), port); } + /** + * PeerListener callback + * @since 0.8.4 + */ + public void gotPeers(Peer peer, List<PeerID> peers) { + + } + /** Return number of allowed uploaders for this torrent. ** Check with Snark to see if we are over the total upload limit. */ diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerListener.java b/apps/i2psnark/java/src/org/klomp/snark/PeerListener.java index 6d9e681cb..c7650a552 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerListener.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerListener.java @@ -191,11 +191,20 @@ interface PeerListener void gotExtension(Peer peer, int id, byte[] bs); /** - * Called when an extension message is received. + * Called when a port message is received. * * @param peer the Peer that got the message. * @param port the port * @since 0.8.4 */ void gotPort(Peer peer, int port); + + /** + * Called when peers are received via PEX + * + * @param peer the Peer that got the message. + * @param pIDList the peer IDs (dest hashes) + * @since 0.8.4 + */ + void gotPeers(Peer peer, List<PeerID> pIDList); } From 226cb7fdb9ed96de31734a3853d8fdfd90de9f88 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Wed, 5 Jan 2011 16:41:41 +0000 Subject: [PATCH 036/463] * Streaming: - Add new real sockets for easier porting of apps. See http://zzz.i2p/topics/792 for info. Untested. - de-SpongeCase - Javadoc --- .../i2p/client/streaming/ByteCollector.java | 3 +- .../client/streaming/I2PSocketManager.java | 26 +- .../streaming/I2PSocketManagerImpl.java | 28 +- .../client/streaming/ConnectionManager.java | 12 +- .../client/streaming/I2PServerSocketFull.java | 4 +- .../i2p/client/streaming/I2PSocketFull.java | 8 + .../streaming/I2PSocketManagerFull.java | 71 +++- .../streaming/StandardServerSocket.java | 168 +++++++++ .../i2p/client/streaming/StandardSocket.java | 338 ++++++++++++++++++ 9 files changed, 637 insertions(+), 21 deletions(-) create mode 100644 apps/streaming/java/src/net/i2p/client/streaming/StandardServerSocket.java create mode 100644 apps/streaming/java/src/net/i2p/client/streaming/StandardSocket.java diff --git a/apps/ministreaming/java/src/net/i2p/client/streaming/ByteCollector.java b/apps/ministreaming/java/src/net/i2p/client/streaming/ByteCollector.java index 39249b449..38d96ddb7 100644 --- a/apps/ministreaming/java/src/net/i2p/client/streaming/ByteCollector.java +++ b/apps/ministreaming/java/src/net/i2p/client/streaming/ByteCollector.java @@ -4,6 +4,7 @@ package net.i2p.client.streaming; * Like a StringBuffer, but for bytes. This class is not internally synchronized, * so care should be taken when using in a multithreaded environment. * + * @deprecated Only used by deprecated I2PSocketImpl */ class ByteCollector { byte[] contents; @@ -294,4 +295,4 @@ class ByteCollector { size = 0; return bb; } -} \ No newline at end of file +} diff --git a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManager.java b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManager.java index 02bef1a0a..1651d40d2 100644 --- a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManager.java +++ b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManager.java @@ -4,9 +4,12 @@ */ package net.i2p.client.streaming; +import java.io.IOException; import java.io.InterruptedIOException; import java.net.ConnectException; import java.net.NoRouteToHostException; +import java.net.ServerSocket; +import java.net.Socket; import java.util.Properties; import java.util.Set; @@ -84,7 +87,7 @@ public interface I2PSocketManager { * * @return a set of currently connected I2PSockets */ - public Set listSockets(); + public Set<I2PSocket> listSockets(); /** * Ping the specified peer, returning true if they replied to the ping within @@ -107,4 +110,25 @@ public interface I2PSocketManager { public static interface DisconnectListener { public void sessionDisconnected(); } + + /** + * Like getServerSocket but returns a real ServerSocket for easier porting of apps. + * @since 0.8.4 + */ + public ServerSocket getStandardServerSocket() throws IOException; + + /** + * Like connect() but returns a real Socket, and throws only IOE, + * for easier porting of apps. + * @since 0.8.4 + */ + public Socket connectToSocket(Destination peer) throws IOException; + + /** + * Like connect() but returns a real Socket, and throws only IOE, + * for easier porting of apps. + * @param timeout ms if > 0, forces blocking (disables connectDelay) + * @since 0.8.4 + */ + public Socket connectToSocket(Destination peer, int timeout) throws IOException; } diff --git a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManagerImpl.java b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManagerImpl.java index fb2589b52..e0a5b022f 100644 --- a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManagerImpl.java +++ b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManagerImpl.java @@ -10,6 +10,8 @@ import java.io.InterruptedIOException; import java.io.UnsupportedEncodingException; import java.net.ConnectException; import java.net.NoRouteToHostException; +import java.net.ServerSocket; +import java.net.Socket; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -461,6 +463,14 @@ class I2PSocketManagerImpl implements I2PSocketManager, I2PSessionListener { return _serverSocket; } + /** + * @throws UnsupportedOperationException + * @since 0.8.4 + */ + public ServerSocket getStandardServerSocket() { + throw new UnsupportedOperationException(); + } + /** * Create a new connected socket (block until the socket is created) * @@ -601,6 +611,22 @@ class I2PSocketManagerImpl implements I2PSocketManager, I2PSessionListener { return connect(peer, null); } + /** + * @throws UnsupportedOperationException + * @since 0.8.4 + */ + public Socket connectToSocket(Destination peer) { + throw new UnsupportedOperationException(); + } + + /** + * @throws UnsupportedOperationException + * @since 0.8.4 + */ + public Socket connectToSocket(Destination peer, int timeout) { + throw new UnsupportedOperationException(); + } + /** * Destroy the socket manager, freeing all the associated resources. This * method will block untill all the managed sockets are closed. @@ -660,7 +686,7 @@ class I2PSocketManagerImpl implements I2PSocketManager, I2PSessionListener { * Retrieve a set of currently connected I2PSockets, either initiated locally or remotely. * */ - public Set listSockets() { + public Set<I2PSocket> listSockets() { Set<I2PSocket> sockets = new HashSet<I2PSocket>(8); synchronized (lock) { sockets.addAll(_inSockets.values()); diff --git a/apps/streaming/java/src/net/i2p/client/streaming/ConnectionManager.java b/apps/streaming/java/src/net/i2p/client/streaming/ConnectionManager.java index 69ace81a2..10ff38856 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/ConnectionManager.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/ConnectionManager.java @@ -40,7 +40,7 @@ class ConnectionManager { private int _maxConcurrentStreams; private ConnectionOptions _defaultOptions; private volatile int _numWaiting; - private long SoTimeout; + private long _soTimeout; private ConnThrottler _minuteThrottler; private ConnThrottler _hourThrottler; private ConnThrottler _dayThrottler; @@ -64,7 +64,7 @@ class ConnectionManager { _allowIncoming = false; _numWaiting = 0; /** Socket timeout for accept() */ - SoTimeout = -1; + _soTimeout = -1; _context.statManager().createRateStat("stream.con.lifetimeMessagesSent", "How many messages do we send on a stream?", "Stream", new long[] { 60*60*1000, 24*60*60*1000 }); _context.statManager().createRateStat("stream.con.lifetimeMessagesReceived", "How many messages do we receive on a stream?", "Stream", new long[] { 60*60*1000, 24*60*60*1000 }); @@ -97,16 +97,16 @@ class ConnectionManager { * Set the socket accept() timeout. * @param x */ - public void MsetSoTimeout(long x) { - SoTimeout = x; + public void setSoTimeout(long x) { + _soTimeout = x; } /** * Get the socket accept() timeout. * @return accept timeout in ms. */ - public long MgetSoTimeout() { - return SoTimeout; + public long getSoTimeout() { + return _soTimeout; } public void setAllowIncomingConnections(boolean allow) { diff --git a/apps/streaming/java/src/net/i2p/client/streaming/I2PServerSocketFull.java b/apps/streaming/java/src/net/i2p/client/streaming/I2PServerSocketFull.java index acb58fe15..71e1dd3ac 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/I2PServerSocketFull.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/I2PServerSocketFull.java @@ -26,11 +26,11 @@ class I2PServerSocketFull implements I2PServerSocket { } public long getSoTimeout() { - return _socketManager.getConnectionManager().MgetSoTimeout(); + return _socketManager.getConnectionManager().getSoTimeout(); } public void setSoTimeout(long x) { - _socketManager.getConnectionManager().MsetSoTimeout(x); + _socketManager.getConnectionManager().setSoTimeout(x); } /** * Close the connection. diff --git a/apps/streaming/java/src/net/i2p/client/streaming/I2PSocketFull.java b/apps/streaming/java/src/net/i2p/client/streaming/I2PSocketFull.java index dfcfacfa1..f8dbe74ea 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/I2PSocketFull.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/I2PSocketFull.java @@ -46,6 +46,10 @@ class I2PSocketFull implements I2PSocket { Connection getConnection() { return _connection; } + /** + * Warning, may return null instead of throwing IOE, + * which is not what the interface says. + */ public InputStream getInputStream() { Connection c = _connection; if (c != null) @@ -62,6 +66,10 @@ class I2PSocketFull implements I2PSocket { return null; } + /** + * Warning, may return null instead of throwing IOE, + * which is not what the interface says. + */ public OutputStream getOutputStream() throws IOException { Connection c = _connection; if (c != null) 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 03abafdda..573354e89 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/I2PSocketManagerFull.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/I2PSocketManagerFull.java @@ -1,6 +1,9 @@ package net.i2p.client.streaming; +import java.io.IOException; import java.net.NoRouteToHostException; +import java.net.ServerSocket; +import java.net.Socket; import java.net.SocketTimeoutException; import java.util.HashSet; import java.util.Iterator; @@ -30,6 +33,7 @@ public class I2PSocketManagerFull implements I2PSocketManager { private Log _log; private I2PSession _session; private I2PServerSocketFull _serverSocket; + private StandardServerSocket _realServerSocket; private ConnectionOptions _defaultOptions; private long _acceptTimeout; private String _name; @@ -44,8 +48,6 @@ public class I2PSocketManagerFull implements I2PSocketManager { private static final long ACCEPT_TIMEOUT_DEFAULT = 5*1000; public I2PSocketManagerFull() { - _context = null; - _session = null; } /** @@ -120,7 +122,7 @@ public class I2PSocketManagerFull implements I2PSocketManager { */ public I2PSocket receiveSocket() throws I2PException, SocketTimeoutException { verifySession(); - Connection con = _connectionManager.getConnectionHandler().accept(_connectionManager.MgetSoTimeout()); + Connection con = _connectionManager.getConnectionHandler().accept(_connectionManager.getSoTimeout()); if(_log.shouldLog(Log.DEBUG)) { _log.debug("receiveSocket() called: " + con); } @@ -129,7 +131,7 @@ public class I2PSocketManagerFull implements I2PSocketManager { con.setSocket(sock); return sock; } else { - if(_connectionManager.MgetSoTimeout() == -1) { + if(_connectionManager.getSoTimeout() == -1) { return null; } throw new SocketTimeoutException("I2PSocket timed out"); @@ -171,6 +173,17 @@ public class I2PSocketManagerFull implements I2PSocketManager { return _serverSocket; } + /** + * Like getServerSocket but returns a real ServerSocket for easier porting of apps. + * @since 0.8.4 + */ + public synchronized ServerSocket getStandardServerSocket() throws IOException { + if (_realServerSocket == null) + _realServerSocket = new StandardServerSocket(_serverSocket); + _connectionManager.setAllowIncomingConnections(true); + return _realServerSocket; + } + private void verifySession() throws I2PException { if (!_connectionManager.getSession().isClosed()) return; @@ -185,7 +198,7 @@ public class I2PSocketManagerFull implements I2PSocketManager { * 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 + * @param options I2P socket options to be used for connecting, may be null * * @return I2PSocket if successful * @throws NoRouteToHostException if the peer is not found or not reachable @@ -235,6 +248,45 @@ public class I2PSocketManagerFull implements I2PSocketManager { return connect(peer, _defaultOptions); } + /** + * Like connect() but returns a real Socket, and throws only IOE, + * for easier porting of apps. + * @since 0.8.4 + */ + public Socket connectToSocket(Destination peer) throws IOException { + return connectToSocket(peer, _defaultOptions); + } + + /** + * Like connect() but returns a real Socket, and throws only IOE, + * for easier porting of apps. + * @param timeout ms if > 0, forces blocking (disables connectDelay) + * @since 0.8.4 + */ + public Socket connectToSocket(Destination peer, int timeout) throws IOException { + ConnectionOptions opts = new ConnectionOptions(_defaultOptions); + opts.setConnectTimeout(timeout); + if (timeout > 0) + opts.setConnectDelay(-1); + return connectToSocket(peer, opts); + } + + /** + * Like connect() but returns a real Socket, and throws only IOE, + * for easier porting of apps. + * @param options may be null + * @since 0.8.4 + */ + private Socket connectToSocket(Destination peer, I2PSocketOptions options) throws IOException { + try { + I2PSocket sock = connect(peer, options); + return new StandardSocket(sock); + } catch (I2PException i2pe) { + // fixme in 1.6 change to cause + throw new IOException(i2pe.toString()); + } + } + /** * Destroy the socket manager, freeing all the associated resources. This * method will block untill all the managed sockets are closed. @@ -259,11 +311,10 @@ public class I2PSocketManagerFull implements I2PSocketManager { * * @return set of currently connected I2PSockets */ - public Set listSockets() { - Set connections = _connectionManager.listConnections(); - Set rv = new HashSet(connections.size()); - for (Iterator iter = connections.iterator(); iter.hasNext(); ) { - Connection con = (Connection)iter.next(); + public Set<I2PSocket> listSockets() { + Set<Connection> connections = _connectionManager.listConnections(); + Set<I2PSocket> rv = new HashSet(connections.size()); + for (Connection con : connections) { if (con.getSocket() != null) rv.add(con.getSocket()); } diff --git a/apps/streaming/java/src/net/i2p/client/streaming/StandardServerSocket.java b/apps/streaming/java/src/net/i2p/client/streaming/StandardServerSocket.java new file mode 100644 index 000000000..937973afe --- /dev/null +++ b/apps/streaming/java/src/net/i2p/client/streaming/StandardServerSocket.java @@ -0,0 +1,168 @@ +package net.i2p.client.streaming; + +import java.io.IOException; +import java.net.InetAddress; +import java.net.ServerSocket; +import java.net.Socket; +import java.net.SocketAddress; +import java.net.SocketException; +import java.nio.channels.ServerSocketChannel; + +import net.i2p.I2PException; + +/** + * Bridge to I2PServerSocket. + * + * This extends ServerSocket to make porting apps easier. + * accept() returns a real Socket (a StandardSocket). + * accept() throws IOExceptions like ServerSockets do, rather than returning + * null or throwing I2PExceptions. + * + * StandardServerSockets are always bound. + * You may not create an unbound StandardServerSocket. + * Create this through the SocketManager. + * + * @since 0.8.4 + */ +class StandardServerSocket extends ServerSocket { + private final I2PServerSocketFull _socket; + + /** + * Doesn't really throw IOE but super() does + */ + StandardServerSocket(I2PServerSocketFull socket) throws IOException { + _socket = socket; + } + + public Socket accept() throws IOException { + try { + I2PSocket sock = _socket.accept(); + if (sock == null) + throw new IOException("No socket"); + return new StandardSocket(sock); + } catch (I2PException i2pe) { + // fixme in 1.6 change to cause + throw new IOException(i2pe.toString()); + } + } + + /** + * @throws UnsupportedOperationException always + */ + @Override + public void bind(SocketAddress endpoint) { + throw new UnsupportedOperationException(); + } + + /** + * @throws UnsupportedOperationException always + */ + @Override + public void bind(SocketAddress endpoint, int backlog) { + throw new UnsupportedOperationException(); + } + + @Override + public void close() throws IOException { + if (isClosed()) + throw new IOException("Already closed"); + _socket.close(); + } + + /** + * @return null always + */ + @Override + public ServerSocketChannel getChannel() { + return null; + } + + /** + * @return null always + */ + @Override + public InetAddress getInetAddress() { + return null; + } + + /** + * @return -1 always + */ + @Override + public int getLocalPort() { + return -1; + } + + /** + * @return null always + */ + @Override + public SocketAddress getLocalSocketAddress() { + return null; + } + + @Override + public int getReceiveBufferSize() { + ConnectionOptions opts = (ConnectionOptions) ((I2PSocketManagerFull)_socket.getManager()).getDefaultOptions(); + if (opts == null) + return 64*1024; + return opts.getInboundBufferSize(); + } + + /** + * @return false always + */ + @Override + public boolean getReuseAddress() { + return false; + } + + @Override + public int getSoTimeout() { + return (int) _socket.getSoTimeout(); + } + + /** + * @return true always + */ + @Override + public boolean isBound() { + return true; + } + + @Override + public boolean isClosed() { + return ((I2PSocketManagerFull)_socket.getManager()).getConnectionManager().getAllowIncomingConnections(); + } + + /** + * Does nothing. + */ + @Override + public void setPerformancePreferences(int connectionTime, int latency, int bandwidth) { + } + + /** + * Does nothing. + */ + @Override + public void setReceiveBufferSize(int size) { + } + + /** + * Does nothing. + */ + @Override + public void setReuseAddress(boolean on) { + } + + @Override + public void setSoTimeout(int timeout) throws SocketException { + _socket.setSoTimeout(timeout); + } + + @Override + public String toString() { + return _socket.toString(); + } +} diff --git a/apps/streaming/java/src/net/i2p/client/streaming/StandardSocket.java b/apps/streaming/java/src/net/i2p/client/streaming/StandardSocket.java new file mode 100644 index 000000000..3c743d7eb --- /dev/null +++ b/apps/streaming/java/src/net/i2p/client/streaming/StandardSocket.java @@ -0,0 +1,338 @@ +package net.i2p.client.streaming; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.InetAddress; +import java.net.Socket; +import java.net.SocketAddress; +import java.net.SocketException; +import java.nio.channels.SocketChannel; + +import net.i2p.I2PException; + +/** + * Bridge to I2PSocket. + * + * This extends Socket to make porting apps easier. + * Methods throw IOExceptions like Sockets do, rather than returning + * null for some methods. + * + * StandardSockets are always bound, and always start out connected + * (unless connectDelay is > 0). + * You may not create an unbound StandardSocket. + * Create this through the SocketManager. + * + * @since 0.8.4 + */ +class StandardSocket extends Socket { + private final I2PSocket _socket; + + StandardSocket(I2PSocket socket) { + _socket = socket; + } + + /** + * @throws UnsupportedOperationException always + */ + @Override + public void bind(SocketAddress bindpoint) { + throw new UnsupportedOperationException(); + } + + @Override + public void close() throws IOException { + if (_socket.isClosed()) + throw new IOException("Already closed"); + _socket.close(); + } + + /** + * @throws UnsupportedOperationException always + */ + @Override + public void connect(SocketAddress endpoint) { + throw new UnsupportedOperationException(); + } + + /** + * @throws UnsupportedOperationException always + */ + @Override + public void connect(SocketAddress endpoint, int timeout) { + throw new UnsupportedOperationException(); + } + + /** + * @return null always + */ + @Override + public SocketChannel getChannel() { + return null; + } + + /** + * @return null always + */ + @Override + public InetAddress getInetAddress() { + return null; + } + + @Override + public InputStream getInputStream() throws IOException { + InputStream rv = _socket.getInputStream(); + if (rv != null) + return rv; + throw new IOException("No stream"); + } + + @Override + public boolean getKeepAlive() { + ConnectionOptions opts = (ConnectionOptions) _socket.getOptions(); + if (opts == null) + return false; + return opts.getInactivityAction() == ConnectionOptions.INACTIVITY_ACTION_SEND; + } + + /** + * @return null always + */ + @Override + public InetAddress getLocalAddress() { + return null; + } + + /** + * @return -1 always + */ + @Override + public int getLocalPort() { + return -1; + } + + /** + * @return null always + */ + @Override + public SocketAddress getLocalSocketAddress() { + return null; + } + + /** + * @return false always + */ + @Override + public boolean getOOBInline() { + return false; + } + + @Override + public OutputStream getOutputStream() throws IOException { + OutputStream rv = _socket.getOutputStream(); + if (rv != null) + return rv; + throw new IOException("Mo stream"); + } + + /** + * @return 0 always + */ + @Override + public int getPort() { + return 0; + } + + @Override + public int getReceiveBufferSize() { + ConnectionOptions opts = (ConnectionOptions) _socket.getOptions(); + if (opts == null) + return 64*1024; + return opts.getInboundBufferSize(); + } + + /** + * @throws UnsupportedOperationException always + */ + @Override + public SocketAddress getRemoteSocketAddress() { + throw new UnsupportedOperationException(); + } + + /** + * @return false always + */ + @Override + public boolean getReuseAddress() { + return false; + } + + @Override + public int getSendBufferSize() { + ConnectionOptions opts = (ConnectionOptions) _socket.getOptions(); + if (opts == null) + return 64*1024; + return opts.getInboundBufferSize(); + } + + @Override + public int getSoLinger() { + I2PSocketOptions opts = _socket.getOptions(); + if (opts == null) + return -1; + return -1; // fixme really? + } + + @Override + public int getSoTimeout() { + I2PSocketOptions opts = _socket.getOptions(); + if (opts == null) + return 0; + return (int) opts.getReadTimeout(); + } + + /** + * @return false always + */ + @Override + public boolean getTcpNoDelay() { + // No option yet. See ConnectionDataReceiver + return false; + } + + /** + * @return 0 always + */ + @Override + public int getTrafficClass() { + return 0; + } + + /** + * @return true always + */ + @Override + public boolean isBound() { + return true; + } + + @Override + public boolean isClosed() { + return _socket.isClosed(); + } + + @Override + public boolean isConnected() { + return !_socket.isClosed(); + } + + @Override + public boolean isInputShutdown() { + return _socket.isClosed(); + } + + @Override + public boolean isOutputShutdown() { + return _socket.isClosed(); + } + + /** + * @throws UnsupportedOperationException always + */ + @Override + public void sendUrgentData(int data) { + throw new UnsupportedOperationException(); + } + + @Override + public void setKeepAlive(boolean on) { + ConnectionOptions opts = (ConnectionOptions) _socket.getOptions(); + if (opts == null) + return; + if (on) + opts.setInactivityAction(ConnectionOptions.INACTIVITY_ACTION_SEND); + else + opts.setInactivityAction(ConnectionOptions.INACTIVITY_ACTION_NOOP); // DISCONNECT? + } + + /** + * @throws UnsupportedOperationException if on is true + */ + @Override + public void setOOBInline(boolean on) { + if (on) + throw new UnsupportedOperationException(); + } + + /** + * Does nothing. + */ + @Override + public void setPerformancePreferences(int connectionTime, int latency, int bandwidth) { + } + + /** + * Does nothing. + */ + @Override + public void setReceiveBufferSize(int size) { + } + + /** + * Does nothing. + */ + @Override + public void setReuseAddress(boolean on) { + } + + /** + * Does nothing. + */ + @Override + public void setSendBufferSize(int size) { + } + + /** + * Does nothing. + */ + @Override + public void setSoLinger(boolean on, int linger) { + } + + @Override + public void setSoTimeout(int timeout) throws SocketException { + I2PSocketOptions opts = _socket.getOptions(); + if (opts == null) + throw new SocketException("No options"); + opts.setReadTimeout(timeout); + } + + /** + * Does nothing. + */ + @Override + public void setTcpNoDelay(boolean on) { + } + + /** + * Does nothing. + */ + @Override + public void setTrafficClass(int tc) { + } + + @Override + public void shutdownInput() throws IOException { + close(); + } + + @Override + public void shutdownOutput() throws IOException { + close(); + } + + @Override + public String toString() { + return _socket.toString(); + } +} From f8a2befbc04c4cc6ae83faed58b9ef99cf355d91 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 6 Jan 2011 15:43:59 +0000 Subject: [PATCH 037/463] add getProperties() --- router/java/src/net/i2p/router/RouterContext.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/router/java/src/net/i2p/router/RouterContext.java b/router/java/src/net/i2p/router/RouterContext.java index cb3c63662..7fa3c4607 100644 --- a/router/java/src/net/i2p/router/RouterContext.java +++ b/router/java/src/net/i2p/router/RouterContext.java @@ -351,6 +351,18 @@ public class RouterContext extends I2PAppContext { return super.getProperty(propName, defaultVal); } + /** + * @return new Properties with system and context properties + * @since 0.8.4 + */ + @Override + public Properties getProperties() { + Properties rv = super.getProperties(); + if (_router != null) + rv.putAll(_router.getConfigMap()); + return rv; + } + /** * The context's synchronized clock, which is kept context specific only to * enable simulators to play with clock skew among different instances. From 3867e6144a50cc518db46ea3fe1aed69f3105886 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 6 Jan 2011 15:45:17 +0000 Subject: [PATCH 038/463] simple cleanups and final --- router/java/src/net/i2p/router/Blocklist.java | 8 ++------ .../src/net/i2p/router/InNetMessagePool.java | 8 +++++--- router/java/src/net/i2p/router/JobQueue.java | 10 +++++----- .../src/net/i2p/router/JobQueueRunner.java | 9 +++------ router/java/src/net/i2p/router/JobStats.java | 2 +- router/java/src/net/i2p/router/JobTiming.java | 2 +- router/java/src/net/i2p/router/KeyManager.java | 18 +++--------------- .../src/net/i2p/router/MessageValidator.java | 5 ++--- .../src/net/i2p/router/RouterThrottleImpl.java | 6 +++--- .../src/net/i2p/router/RouterWatchdog.java | 4 ++-- router/java/src/net/i2p/router/Shitlist.java | 8 ++++---- 11 files changed, 31 insertions(+), 49 deletions(-) diff --git a/router/java/src/net/i2p/router/Blocklist.java b/router/java/src/net/i2p/router/Blocklist.java index 0f68355db..28ab3a609 100644 --- a/router/java/src/net/i2p/router/Blocklist.java +++ b/router/java/src/net/i2p/router/Blocklist.java @@ -59,7 +59,7 @@ import net.i2p.util.Log; * */ public class Blocklist { - private Log _log; + private final Log _log; private RouterContext _context; private long _blocklist[]; private int _blocklistSize; @@ -72,15 +72,11 @@ public class Blocklist { public Blocklist(RouterContext context) { _context = context; _log = context.logManager().getLog(Blocklist.class); - _blocklist = null; - _blocklistSize = 0; - _wrapSave = null; } + /** only for testing with main() */ public Blocklist() { _log = new Log(Blocklist.class); - _blocklist = null; - _blocklistSize = 0; } static final String PROP_BLOCKLIST_ENABLED = "router.blocklist.enable"; diff --git a/router/java/src/net/i2p/router/InNetMessagePool.java b/router/java/src/net/i2p/router/InNetMessagePool.java index 47b799da5..4e6846b46 100644 --- a/router/java/src/net/i2p/router/InNetMessagePool.java +++ b/router/java/src/net/i2p/router/InNetMessagePool.java @@ -30,15 +30,17 @@ import net.i2p.util.Log; * */ public class InNetMessagePool implements Service { - private Log _log; - private RouterContext _context; - private HandlerJobBuilder _handlerJobBuilders[]; + private final Log _log; + private final RouterContext _context; + private final HandlerJobBuilder _handlerJobBuilders[]; + /** following 5 unused unless DISPATCH_DIRECT == false */ private final List _pendingDataMessages; private final List _pendingDataMessagesFrom; private final List _pendingGatewayMessages; private SharedShortCircuitDataJob _shortCircuitDataJob; private SharedShortCircuitGatewayJob _shortCircuitGatewayJob; + private boolean _alive; private boolean _dispatchThreaded; diff --git a/router/java/src/net/i2p/router/JobQueue.java b/router/java/src/net/i2p/router/JobQueue.java index f56b25f9e..60bfeec7e 100644 --- a/router/java/src/net/i2p/router/JobQueue.java +++ b/router/java/src/net/i2p/router/JobQueue.java @@ -34,22 +34,22 @@ import net.i2p.util.Log; * */ public class JobQueue { - private Log _log; - private RouterContext _context; + private final Log _log; + private final RouterContext _context; /** Integer (runnerId) to JobQueueRunner for created runners */ private final Map<Integer, JobQueueRunner> _queueRunners; /** a counter to identify a job runner */ private volatile static int _runnerId = 0; /** list of jobs that are ready to run ASAP */ - private BlockingQueue<Job> _readyJobs; + private final BlockingQueue<Job> _readyJobs; /** list of jobs that are scheduled for running in the future */ - private List<Job> _timedJobs; + private final List<Job> _timedJobs; /** job name to JobStat for that job */ private final Map<String, JobStats> _jobStats; /** how many job queue runners can go concurrently */ private int _maxRunners = 1; - private QueuePumper _pumper; + private final QueuePumper _pumper; /** will we allow the # job runners to grow beyond 1? */ private boolean _allowParallelOperation; /** have we been killed or are we alive? */ diff --git a/router/java/src/net/i2p/router/JobQueueRunner.java b/router/java/src/net/i2p/router/JobQueueRunner.java index 8b55a8c6c..60642ba2a 100644 --- a/router/java/src/net/i2p/router/JobQueueRunner.java +++ b/router/java/src/net/i2p/router/JobQueueRunner.java @@ -4,10 +4,10 @@ import net.i2p.util.Log; /** a do run run run a do run run */ class JobQueueRunner implements Runnable { - private Log _log; - private RouterContext _context; + private final Log _log; + private final RouterContext _context; private boolean _keepRunning; - private int _id; + private final int _id; private long _numJobs; private Job _currentJob; private Job _lastJob; @@ -19,9 +19,6 @@ class JobQueueRunner implements Runnable { _context = context; _id = id; _keepRunning = true; - _numJobs = 0; - _currentJob = null; - _lastJob = null; _log = _context.logManager().getLog(JobQueueRunner.class); _context.statManager().createRateStat("jobQueue.jobRun", "How long jobs take", "JobQueue", new long[] { 60*60*1000l, 24*60*60*1000l }); _context.statManager().createRateStat("jobQueue.jobRunSlow", "How long jobs that take over a second take", "JobQueue", new long[] { 60*60*1000l, 24*60*60*1000l }); diff --git a/router/java/src/net/i2p/router/JobStats.java b/router/java/src/net/i2p/router/JobStats.java index 19362cff3..f9cfdc9cc 100644 --- a/router/java/src/net/i2p/router/JobStats.java +++ b/router/java/src/net/i2p/router/JobStats.java @@ -4,7 +4,7 @@ import net.i2p.data.DataHelper; /** glorified struct to contain basic job stats */ class JobStats { - private String _job; + private final String _job; private volatile long _numRuns; private volatile long _totalTime; private volatile long _maxTime; diff --git a/router/java/src/net/i2p/router/JobTiming.java b/router/java/src/net/i2p/router/JobTiming.java index d979074a6..fd410f131 100644 --- a/router/java/src/net/i2p/router/JobTiming.java +++ b/router/java/src/net/i2p/router/JobTiming.java @@ -18,7 +18,7 @@ public class JobTiming implements Clock.ClockUpdateListener { private long _start; private long _actualStart; private long _actualEnd; - private RouterContext _context; + private final RouterContext _context; public JobTiming(RouterContext context) { _context = context; diff --git a/router/java/src/net/i2p/router/KeyManager.java b/router/java/src/net/i2p/router/KeyManager.java index fd0e85a9e..0e0b4e5d6 100644 --- a/router/java/src/net/i2p/router/KeyManager.java +++ b/router/java/src/net/i2p/router/KeyManager.java @@ -12,9 +12,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; -import java.util.HashSet; import java.util.Map; -import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import net.i2p.data.DataFormatException; @@ -37,14 +35,14 @@ import net.i2p.util.SecureFileOutputStream; * */ public class KeyManager { - private Log _log; - private RouterContext _context; + private final Log _log; + private final RouterContext _context; private PrivateKey _privateKey; private PublicKey _publicKey; private SigningPrivateKey _signingPrivateKey; private SigningPublicKey _signingPublicKey; private final Map<Hash, LeaseSetKeys> _leaseSetKeys; // Destination --> LeaseSetKeys - private SynchronizeKeysJob _synchronizeJob; + private final SynchronizeKeysJob _synchronizeJob; public final static String PROP_KEYDIR = "router.keyBackupDir"; public final static String DEFAULT_KEYDIR = "keyBackup"; @@ -61,10 +59,6 @@ public class KeyManager { _context = context; _log = _context.logManager().getLog(KeyManager.class); _synchronizeJob = new SynchronizeKeysJob(); - setPrivateKey(null); - setPublicKey(null); - setSigningPrivateKey(null); - setSigningPublicKey(null); _leaseSetKeys = new ConcurrentHashMap(); } @@ -132,12 +126,6 @@ public class KeyManager { return _leaseSetKeys.get(dest); } - public Set<LeaseSetKeys> getAllKeys() { - HashSet keys = new HashSet(); - keys.addAll(_leaseSetKeys.values()); - return keys; - } - private class SynchronizeKeysJob extends JobImpl { public SynchronizeKeysJob() { super(KeyManager.this._context); diff --git a/router/java/src/net/i2p/router/MessageValidator.java b/router/java/src/net/i2p/router/MessageValidator.java index b673702a1..b61916612 100644 --- a/router/java/src/net/i2p/router/MessageValidator.java +++ b/router/java/src/net/i2p/router/MessageValidator.java @@ -13,14 +13,13 @@ import net.i2p.util.Log; * */ public class MessageValidator { - private Log _log; - private RouterContext _context; + private final Log _log; + private final RouterContext _context; private DecayingBloomFilter _filter; public MessageValidator(RouterContext context) { _log = context.logManager().getLog(MessageValidator.class); - _filter = null; _context = context; context.statManager().createRateStat("router.duplicateMessageId", "Note that a duplicate messageId was received", "Router", new long[] { 10*60*1000l, 60*60*1000l, 3*60*60*1000l, 24*60*60*1000l }); diff --git a/router/java/src/net/i2p/router/RouterThrottleImpl.java b/router/java/src/net/i2p/router/RouterThrottleImpl.java index d3d3129af..4297f7eb5 100644 --- a/router/java/src/net/i2p/router/RouterThrottleImpl.java +++ b/router/java/src/net/i2p/router/RouterThrottleImpl.java @@ -12,12 +12,12 @@ import net.i2p.util.Log; * */ class RouterThrottleImpl implements RouterThrottle { - private RouterContext _context; - private Log _log; + private final RouterContext _context; + private final Log _log; private String _tunnelStatus; /** - * arbitrary hard limit of 10 seconds - if its taking this long to get + * arbitrary hard limit - if it's taking this long to get * to a job, we're congested. * */ diff --git a/router/java/src/net/i2p/router/RouterWatchdog.java b/router/java/src/net/i2p/router/RouterWatchdog.java index 14dc01c1e..482f3b3ed 100644 --- a/router/java/src/net/i2p/router/RouterWatchdog.java +++ b/router/java/src/net/i2p/router/RouterWatchdog.java @@ -12,8 +12,8 @@ import net.i2p.util.Log; * */ class RouterWatchdog implements Runnable { - private Log _log; - private RouterContext _context; + private final Log _log; + private final RouterContext _context; private int _consecutiveErrors; private static final long MAX_JOB_RUN_LAG = 60*1000; diff --git a/router/java/src/net/i2p/router/Shitlist.java b/router/java/src/net/i2p/router/Shitlist.java index f675d1056..55b778ad1 100644 --- a/router/java/src/net/i2p/router/Shitlist.java +++ b/router/java/src/net/i2p/router/Shitlist.java @@ -10,13 +10,13 @@ package net.i2p.router; import java.io.IOException; import java.io.Writer; -import java.util.concurrent.ConcurrentHashMap; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import net.i2p.data.DataHelper; import net.i2p.data.Hash; @@ -31,9 +31,9 @@ import net.i2p.util.Log; * shitlist. */ public class Shitlist { - private Log _log; - private RouterContext _context; - private Map<Hash, Entry> _entries; + private final Log _log; + private final RouterContext _context; + private final Map<Hash, Entry> _entries; public static class Entry { /** when it should expire, per the i2p clock */ From a087c82db9486052433d480147300e00c7f664aa Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 6 Jan 2011 18:14:48 +0000 Subject: [PATCH 039/463] cleanups --- .../router/transport/ntcp/NTCPConnection.java | 92 ++++++++++--------- 1 file changed, 49 insertions(+), 43 deletions(-) diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java index a2f76d579..e0e734101 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java +++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java @@ -54,8 +54,8 @@ import net.i2p.util.Log; * */ public class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { - private RouterContext _context; - private Log _log; + private final RouterContext _context; + private final Log _log; private SocketChannel _chan; private SelectionKey _conKey; /** list of ByteBuffer containing data we have read and are ready to process, oldest first */ @@ -71,7 +71,7 @@ public class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { private long _establishedOn; private EstablishState _establishState; private NTCPTransport _transport; - private boolean _isInbound; + private final boolean _isInbound; private boolean _closed; private NTCPAddress _remAddr; private RouterIdentity _remotePeer; @@ -87,17 +87,17 @@ public class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { private byte _curReadBlock[]; /** next byte to which data should be placed in the _curReadBlock */ private int _curReadBlockIndex; - private byte _decryptBlockBuf[]; + private final byte _decryptBlockBuf[]; /** last AES block of the encrypted I2NP message (to serve as the next block's IV) */ private byte _prevReadBlock[]; private byte _prevWriteEnd[]; /** current partially read I2NP message */ - private ReadState _curReadState; + private final ReadState _curReadState; private long _messagesRead; private long _messagesWritten; private long _lastSendTime; private long _lastReceiveTime; - private long _created; + private final long _created; private long _nextMetaTime; /** unencrypted outbound metadata buffer */ private final byte _meta[] = new byte[16]; @@ -127,28 +127,21 @@ public class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { _context = ctx; _log = ctx.logManager().getLog(getClass()); _created = System.currentTimeMillis(); - _lastSendTime = _created; - _lastReceiveTime = _created; _transport = transport; _chan = chan; _readBufs = new LinkedBlockingQueue(); _writeBufs = new LinkedBlockingQueue(); _bwRequests = new ConcurrentHashSet(2); _outbound = new LinkedBlockingQueue(); - _established = false; _isInbound = true; - _closed = false; _decryptBlockBuf = new byte[16]; - _curReadBlock = new byte[16]; - _prevReadBlock = new byte[16]; _curReadState = new ReadState(); _establishState = new EstablishState(ctx, transport, this); _conKey = key; _conKey.attach(this); - _sendingMeta = false; - _consecutiveBacklog = 0; - transport.establishing(this); + initialize(); } + /** * Create an outbound unconnected NTCP connection * @@ -157,26 +150,25 @@ public class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { _context = ctx; _log = ctx.logManager().getLog(getClass()); _created = System.currentTimeMillis(); - _lastSendTime = _created; - _lastReceiveTime = _created; _transport = transport; + _remotePeer = remotePeer; _remAddr = remAddr; _readBufs = new LinkedBlockingQueue(); _writeBufs = new LinkedBlockingQueue(); _bwRequests = new ConcurrentHashSet(2); _outbound = new LinkedBlockingQueue(); - _established = false; _isInbound = false; - _closed = false; _decryptBlockBuf = new byte[16]; + _curReadState = new ReadState(); + initialize(); + } + + private void initialize() { + _lastSendTime = _created; + _lastReceiveTime = _created; _curReadBlock = new byte[16]; _prevReadBlock = new byte[16]; - _curReadState = new ReadState(); - _remotePeer = remotePeer; - _sendingMeta = false; - _consecutiveBacklog = 0; - //_establishState = new EstablishState(ctx, transport, this); - transport.establishing(this); + _transport.establishing(this); } public SocketChannel getChannel() { return _chan; } @@ -207,13 +199,18 @@ public class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { _nextMetaTime = System.currentTimeMillis() + _context.random().nextInt(META_FREQUENCY); _nextInfoTime = System.currentTimeMillis() + (INFO_FREQUENCY / 2) + _context.random().nextInt(INFO_FREQUENCY); } + + /** @return seconds */ public long getClockSkew() { return _clockSkew; } + + /** @return milliseconds */ public long getUptime() { if (!_established) return getTimeSinceCreated(); else return System.currentTimeMillis()-_establishedOn; } + public long getMessagesSent() { return _messagesWritten; } public long getMessagesReceived() { return _messagesRead; } public long getOutboundQueueSize() { @@ -222,9 +219,16 @@ public class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { queued++; return queued; } + + /** @return milliseconds */ public long getTimeSinceSend() { return System.currentTimeMillis()-_lastSendTime; } + + /** @return milliseconds */ public long getTimeSinceReceive() { return System.currentTimeMillis()-_lastReceiveTime; } + + /** @return milliseconds */ public long getTimeSinceCreated() { return System.currentTimeMillis()-_created; } + public int getConsecutiveBacklog() { return _consecutiveBacklog; } public boolean isClosed() { return _closed; } @@ -624,26 +628,26 @@ public class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { } msg.beginTransmission(); - long begin = System.currentTimeMillis(); + //long begin = System.currentTimeMillis(); PrepBuffer buf = (PrepBuffer)msg.releasePreparationBuffer(); if (buf == null) throw new RuntimeException("buf is null for " + msg); _context.aes().encrypt(buf.unencrypted, 0, buf.encrypted, 0, _sessionKey, _prevWriteEnd, 0, buf.unencryptedLength); System.arraycopy(buf.encrypted, buf.encrypted.length-16, _prevWriteEnd, 0, _prevWriteEnd.length); - long encryptedTime = System.currentTimeMillis(); + //long encryptedTime = System.currentTimeMillis(); //if (_log.shouldLog(Log.DEBUG)) // _log.debug("Encrypting " + msg + " [" + System.identityHashCode(msg) + "] crc=" + crc.getValue() + "\nas: " // + Base64.encode(encrypted, 0, 16) + "...\ndecrypted: " // + Base64.encode(unencrypted, 0, 16) + "..." + "\nIV=" + Base64.encode(_prevWriteEnd, 0, 16)); _transport.getPumper().wantsWrite(this, buf.encrypted); - long wantsTime = System.currentTimeMillis(); + //long wantsTime = System.currentTimeMillis(); releaseBuf(buf); - long releaseTime = System.currentTimeMillis(); - if (_log.shouldLog(Log.DEBUG)) - _log.debug("prepared outbound " + System.identityHashCode(msg) - + " encrypted=" + (encryptedTime-begin) - + " wantsWrite=" + (wantsTime-encryptedTime) - + " releaseBuf=" + (releaseTime-wantsTime)); + //long releaseTime = System.currentTimeMillis(); + //if (_log.shouldLog(Log.DEBUG)) + // _log.debug("prepared outbound " + System.identityHashCode(msg) + // + " encrypted=" + (encryptedTime-begin) + // + " wantsWrite=" + (wantsTime-encryptedTime) + // + " releaseBuf=" + (releaseTime-wantsTime)); // for every 6-12 hours that we are connected to a peer, send them // our updated netDb info (they may not accept it and instead query @@ -666,9 +670,9 @@ public class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { //if (!_isInbound && !_established) // return; msg.beginPrepare(); - long begin = System.currentTimeMillis(); + //long begin = System.currentTimeMillis(); PrepBuffer buf = acquireBuf(); - long alloc = System.currentTimeMillis(); + //long alloc = System.currentTimeMillis(); I2NPMessage m = msg.getMessage(); buf.baseLength = m.toByteArray(buf.base); @@ -688,7 +692,7 @@ public class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { _context.random().nextBytes(buf.pad); // maybe more than necessary, but its only the prng System.arraycopy(buf.pad, 0, buf.unencrypted, 2+sz, buf.padLength); - long serialized = System.currentTimeMillis(); + //long serialized = System.currentTimeMillis(); buf.crc.update(buf.unencrypted, 0, buf.unencryptedLength-4); long val = buf.crc.getValue(); @@ -699,11 +703,11 @@ public class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { DataHelper.toLong(buf.unencrypted, buf.unencryptedLength-4, 4, val); buf.encrypted = new byte[buf.unencryptedLength]; - long crced = System.currentTimeMillis(); + //long crced = System.currentTimeMillis(); msg.prepared(buf); - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Buffered prepare took " + (crced-begin) + ", alloc=" + (alloc-begin) - + " serialize=" + (serialized-alloc) + " crc=" + (crced-serialized)); + //if (_log.shouldLog(Log.DEBUG)) + // _log.debug("Buffered prepare took " + (crced-begin) + ", alloc=" + (alloc-begin) + // + " serialize=" + (serialized-alloc) + " crc=" + (crced-serialized)); } private static final int MIN_PREP_BUFS = 5; @@ -827,14 +831,16 @@ public class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { * contents have been fully allocated */ public void queuedRecv(ByteBuffer buf, FIFOBandwidthLimiter.Request req) { - addRequest(req); req.attach(buf); req.setCompleteListener(this); + addRequest(req); } + + /** ditto for writes */ public void queuedWrite(ByteBuffer buf, FIFOBandwidthLimiter.Request req) { - addRequest(req); req.attach(buf); req.setCompleteListener(this); + addRequest(req); } /** From 0129051063f198ff613a64ac3899016e0a930f42 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 6 Jan 2011 22:49:16 +0000 Subject: [PATCH 040/463] * Reseed, peermanager, transport, ntcp, udp, tunnel, tunnel pool - Findbugs - Replace "ghetto" mark/reset - Remove dead code in TrivialPreprocessor - More efficient UDP peer sort - finals --- .../net/i2p/router/web/ConfigNetHelper.java | 2 +- .../i2p/router/networkdb/reseed/Reseeder.java | 23 +++-- .../i2p/router/peermanager/PeerProfile.java | 9 +- .../peermanager/ProfilePersistenceHelper.java | 13 ++- .../transport/CommSystemFacadeImpl.java | 2 +- .../i2p/router/transport/TransportImpl.java | 2 +- .../router/transport/TransportManager.java | 28 +++---- .../src/net/i2p/router/transport/UPnP.java | 7 +- .../net/i2p/router/transport/UPnPManager.java | 10 ++- .../router/transport/ntcp/EstablishState.java | 2 +- .../router/transport/ntcp/EventPumper.java | 2 +- .../router/transport/ntcp/NTCPConnection.java | 11 +-- .../transport/ntcp/NTCPSendFinisher.java | 14 ++-- .../i2p/router/transport/udp/ACKSender.java | 3 +- .../transport/udp/EstablishmentManager.java | 6 +- .../udp/InboundMessageFragments.java | 2 +- .../transport/udp/IntroductionManager.java | 6 +- .../router/transport/udp/PacketBuilder.java | 1 - .../router/transport/udp/PacketHandler.java | 26 +++--- .../router/transport/udp/PeerTestManager.java | 12 +-- .../router/transport/udp/RemoteHostId.java | 12 +-- .../i2p/router/transport/udp/UDPReceiver.java | 13 ++- .../router/transport/udp/UDPTransport.java | 45 +++++----- .../router/tunnel/BuildMessageGenerator.java | 3 - .../i2p/router/tunnel/FragmentHandler.java | 14 ++-- .../src/net/i2p/router/tunnel/HopConfig.java | 2 +- .../net/i2p/router/tunnel/HopProcessor.java | 2 +- .../router/tunnel/TrivialPreprocessor.java | 83 +------------------ .../i2p/router/tunnel/TunnelDispatcher.java | 2 +- .../i2p/router/tunnel/pool/BuildExecutor.java | 10 ++- .../router/tunnel/pool/BuildRequestor.java | 4 +- .../i2p/router/tunnel/pool/TunnelPool.java | 6 +- 32 files changed, 150 insertions(+), 227 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java index 9388d06d2..6dd3aa987 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java @@ -100,7 +100,7 @@ public class ConfigNetHelper extends HelperBase { } public String getTcpAutoIPChecked(int mode) { - boolean enabled = TransportManager.enableNTCP(_context); + boolean enabled = TransportManager.isNTCPEnabled(_context); String hostname = _context.getProperty(PROP_I2NP_NTCP_HOSTNAME); boolean specified = hostname != null && hostname.length() > 0; String auto = _context.getProperty(PROP_I2NP_NTCP_AUTO_IP, "false"); diff --git a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java index 49790beef..9beb7daf8 100644 --- a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java +++ b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java @@ -3,6 +3,7 @@ package net.i2p.router.networkdb.reseed; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; +import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.Collections; @@ -278,7 +279,7 @@ public class Reseeder { if (fetched % 60 == 0) System.out.println(); } - } catch (Exception e) { + } catch (IOException e) { errors++; } } @@ -298,20 +299,20 @@ public class Reseeder { } /* Since we don't return a value, we should always throw an exception if something fails. */ - private void fetchSeed(String seedURL, String peer) throws Exception { + private void fetchSeed(String seedURL, String peer) throws IOException { URL url = new URL(seedURL + (seedURL.endsWith("/") ? "" : "/") + "routerInfo-" + peer + ".dat"); byte data[] = readURL(url); if (data == null) { // Logging deprecated here since attemptFailed() provides better info _log.debug("Failed fetching seed: " + url.toString()); - throw new Exception ("Failed fetching seed."); + throw new IOException("Failed fetching seed."); } //System.out.println("read: " + (data != null ? data.length : -1)); writeSeed(peer, data); } - private byte[] readURL(URL url) throws Exception { + private byte[] readURL(URL url) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(4*1024); EepGet get; @@ -338,15 +339,21 @@ public class Reseeder { return null; } - private void writeSeed(String name, byte data[]) throws Exception { + private void writeSeed(String name, byte data[]) throws IOException { String dirName = "netDb"; // _context.getProperty("router.networkDatabase.dbDir", "netDb"); File netDbDir = new SecureDirectory(_context.getRouterDir(), dirName); if (!netDbDir.exists()) { boolean ok = netDbDir.mkdirs(); } - FileOutputStream fos = new SecureFileOutputStream(new File(netDbDir, "routerInfo-" + name + ".dat")); - fos.write(data); - fos.close(); + FileOutputStream fos = null; + try { + fos = new SecureFileOutputStream(new File(netDbDir, "routerInfo-" + name + ".dat")); + fos.write(data); + } finally { + try { + if (fos != null) fos.close(); + } catch (IOException ioe) {} + } } } diff --git a/router/java/src/net/i2p/router/peermanager/PeerProfile.java b/router/java/src/net/i2p/router/peermanager/PeerProfile.java index 6f7fe54bb..a2665004b 100644 --- a/router/java/src/net/i2p/router/peermanager/PeerProfile.java +++ b/router/java/src/net/i2p/router/peermanager/PeerProfile.java @@ -484,14 +484,17 @@ public class PeerProfile { @Override public int hashCode() { return (_peer == null ? 0 : _peer.hashCode()); } + @Override public boolean equals(Object obj) { - if (obj == null) return false; - if (obj.getClass() != PeerProfile.class) return false; - if (_peer == null) return false; + if (obj == null || + (!(obj instanceof PeerProfile)) || + _peer == null) + return false; PeerProfile prof = (PeerProfile)obj; return _peer.equals(prof.getPeer()); } + @Override public String toString() { return "Profile: " + getPeer().toBase64(); } diff --git a/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java b/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java index e012fab49..592c1f267 100644 --- a/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java +++ b/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java @@ -1,9 +1,11 @@ package net.i2p.router.peermanager; +import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FilenameFilter; +import java.io.InputStream; import java.io.IOException; import java.io.OutputStream; import java.util.HashSet; @@ -270,11 +272,12 @@ class ProfilePersistenceHelper { } private void loadProps(Properties props, File file) { + InputStream fin = null; try { - FileInputStream fin = new FileInputStream(file); + fin = new BufferedInputStream(new FileInputStream(file), 1); + fin.mark(1); int c = fin.read(); - fin.close(); - fin = new FileInputStream(file); // ghetto mark+reset + fin.reset(); if (c == '#') { // uncompressed if (_log.shouldLog(Log.INFO)) @@ -289,6 +292,10 @@ class ProfilePersistenceHelper { } catch (IOException ioe) { if (_log.shouldLog(Log.WARN)) _log.warn("Error loading properties from " + file.getName(), ioe); + } finally { + try { + if (fin != null) fin.close(); + } catch (IOException e) {} } } diff --git a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java index 094f526c7..8a90adc37 100644 --- a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java +++ b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java @@ -215,7 +215,7 @@ public class CommSystemFacadeImpl extends CommSystemFacade { * This should really be moved to ntcp/NTCPTransport.java, why is it here? */ public static RouterAddress createNTCPAddress(RouterContext ctx) { - if (!TransportManager.enableNTCP(ctx)) return null; + if (!TransportManager.isNTCPEnabled(ctx)) return null; String name = ctx.router().getConfigSetting(PROP_I2NP_NTCP_HOSTNAME); String port = ctx.router().getConfigSetting(PROP_I2NP_NTCP_PORT); /* diff --git a/router/java/src/net/i2p/router/transport/TransportImpl.java b/router/java/src/net/i2p/router/transport/TransportImpl.java index 7ac7d05b2..fef585022 100644 --- a/router/java/src/net/i2p/router/transport/TransportImpl.java +++ b/router/java/src/net/i2p/router/transport/TransportImpl.java @@ -512,7 +512,7 @@ public abstract class TransportImpl implements Transport { public void markUnreachable(Hash peer) { long now = _context.clock().now(); synchronized (_unreachableEntries) { - _unreachableEntries.put(peer, new Long(now)); + _unreachableEntries.put(peer, Long.valueOf(now)); } markWasUnreachable(peer, true); } diff --git a/router/java/src/net/i2p/router/transport/TransportManager.java b/router/java/src/net/i2p/router/transport/TransportManager.java index a682840b1..a0a7db519 100644 --- a/router/java/src/net/i2p/router/transport/TransportManager.java +++ b/router/java/src/net/i2p/router/transport/TransportManager.java @@ -46,10 +46,10 @@ public class TransportManager implements TransportEventListener { private RouterContext _context; private UPnPManager _upnpManager; + /** default true */ public final static String PROP_ENABLE_UDP = "i2np.udp.enable"; + /** default true */ public final static String PROP_ENABLE_NTCP = "i2np.ntcp.enable"; - public final static String DEFAULT_ENABLE_NTCP = "true"; - public final static String DEFAULT_ENABLE_UDP = "true"; /** default true */ public final static String PROP_ENABLE_UPNP = "i2np.upnp.enable"; @@ -80,37 +80,33 @@ public class TransportManager implements TransportEventListener { } private void configTransports() { - String enableUDP = _context.router().getConfigSetting(PROP_ENABLE_UDP); - if (enableUDP == null) - enableUDP = DEFAULT_ENABLE_UDP; - if ("true".equalsIgnoreCase(enableUDP)) { + boolean enableUDP = _context.getBooleanPropertyDefaultTrue(PROP_ENABLE_UDP); + if (enableUDP) { UDPTransport udp = new UDPTransport(_context); addTransport(udp); initializeAddress(udp); } - if (enableNTCP(_context)) + if (isNTCPEnabled(_context)) addTransport(new NTCPTransport(_context)); if (_transports.isEmpty()) _log.log(Log.CRIT, "No transports are enabled"); } - public static boolean enableNTCP(RouterContext ctx) { - String enableNTCP = ctx.router().getConfigSetting(PROP_ENABLE_NTCP); - if (enableNTCP == null) - enableNTCP = DEFAULT_ENABLE_NTCP; - return "true".equalsIgnoreCase(enableNTCP); + public static boolean isNTCPEnabled(RouterContext ctx) { + return ctx.getBooleanPropertyDefaultTrue(PROP_ENABLE_NTCP); } - private static void initializeAddress(Transport t) { + private void initializeAddress(Transport t) { String ips = Addresses.getAnyAddress(); if (ips == null) return; - InetAddress ia = null; + InetAddress ia; try { ia = InetAddress.getByName(ips); - } catch (UnknownHostException e) {return;} - if (ia == null) + } catch (UnknownHostException e) { + _log.error("UDP failed to bind to local address", e); return; + } byte[] ip = ia.getAddress(); t.externalAddressReceived(Transport.SOURCE_INTERFACE, ip, 0); } diff --git a/router/java/src/net/i2p/router/transport/UPnP.java b/router/java/src/net/i2p/router/transport/UPnP.java index d13a51cec..c2ccf03f1 100644 --- a/router/java/src/net/i2p/router/transport/UPnP.java +++ b/router/java/src/net/i2p/router/transport/UPnP.java @@ -554,7 +554,10 @@ public class UPnP extends ControlPoint implements DeviceChangeListener, EventLis return retval; } - /** non-blocking */ + /** + * non-blocking + * @param ports non-null + */ public void onChangePublicPorts(Set<ForwardPort> ports, ForwardPortCallback cb) { Set<ForwardPort> portsToDumpNow = null; Set<ForwardPort> portsToForwardNow = null; @@ -568,7 +571,7 @@ public class UPnP extends ControlPoint implements DeviceChangeListener, EventLis portsToForward = ports; portsToForwardNow = ports; portsToDumpNow = null; - } else if(ports == null || ports.isEmpty()) { + } else if(ports.isEmpty()) { portsToDumpNow = portsToForward; portsToForward = ports; portsToForwardNow = null; diff --git a/router/java/src/net/i2p/router/transport/UPnPManager.java b/router/java/src/net/i2p/router/transport/UPnPManager.java index 7996a4556..fbd0d7db2 100644 --- a/router/java/src/net/i2p/router/transport/UPnPManager.java +++ b/router/java/src/net/i2p/router/transport/UPnPManager.java @@ -87,8 +87,9 @@ public class UPnPManager { if (!_isRunning) return; Set<ForwardPort> forwards = new HashSet(ports.size()); - for (String style : ports.keySet()) { - int port = ports.get(style).intValue(); + for (Map.Entry<String, Integer> entry : ports.entrySet()) { + String style = entry.getKey(); + int port = entry.getValue().intValue(); int protocol = -1; if ("SSU".equals(style)) protocol = ForwardPort.PROTOCOL_UDP_IPV4; @@ -136,8 +137,9 @@ public class UPnPManager { _log.debug("No external address returned"); } - for (ForwardPort fp : statuses.keySet()) { - ForwardPortStatus fps = statuses.get(fp); + for (Map.Entry<ForwardPort, ForwardPortStatus> entry : statuses.entrySet()) { + ForwardPort fp = entry.getKey(); + ForwardPortStatus fps = entry.getValue(); if (_log.shouldLog(Log.DEBUG)) _log.debug(fp.name + " " + fp.protocol + " " + fp.portNumber + " status: " + fps.status + " reason: " + fps.reasonString + " ext port: " + fps.externalPort); 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 8de07fe6e..d6109c640 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java +++ b/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java @@ -69,7 +69,7 @@ import net.i2p.util.Log; * NOTE: Check info is unused. * */ -public class EstablishState { +class EstablishState { private RouterContext _context; private Log _log; diff --git a/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java b/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java index 29592bf52..eeeef56c1 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java +++ b/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java @@ -26,7 +26,7 @@ import net.i2p.util.Log; /** * */ -public class EventPumper implements Runnable { +class EventPumper implements Runnable { private RouterContext _context; private Log _log; private volatile boolean _alive; diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java index e0e734101..a24b3d972 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java +++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java @@ -53,7 +53,7 @@ import net.i2p.util.Log; *</pre> * */ -public class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { +class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { private final RouterContext _context; private final Log _log; private SocketChannel _chan; @@ -1088,15 +1088,6 @@ public class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { // enqueueInfoMessage(); // this often? } - @Override - public int hashCode() { return System.identityHashCode(this); } - @Override - public boolean equals(Object obj) { - if(obj == null) return false; - if(obj.getClass() != NTCPConnection.class) return false; - return obj == this; - } - private static final int MAX_HANDLERS = 4; private final static LinkedBlockingQueue<I2NPMessageHandler> _i2npHandlers = new LinkedBlockingQueue(MAX_HANDLERS); diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPSendFinisher.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPSendFinisher.java index 374c7a5ba..24b86fd5b 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/NTCPSendFinisher.java +++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPSendFinisher.java @@ -23,7 +23,7 @@ import net.i2p.util.Log; * * @author zzz */ -public class NTCPSendFinisher { +class NTCPSendFinisher { private static final int MIN_THREADS = 1; private static final int MAX_THREADS = 4; private final I2PAppContext _context; @@ -31,7 +31,11 @@ public class NTCPSendFinisher { private final Log _log; private static int _count; private ThreadPoolExecutor _executor; - private static int _threads; + private static final int THREADS; + static { + long maxMemory = Runtime.getRuntime().maxMemory(); + THREADS = (int) Math.max(MIN_THREADS, Math.min(MAX_THREADS, 1 + (maxMemory / (32*1024*1024)))); + } public NTCPSendFinisher(I2PAppContext context, NTCPTransport transport) { _context = context; @@ -42,9 +46,7 @@ public class NTCPSendFinisher { public void start() { _count = 0; - long maxMemory = Runtime.getRuntime().maxMemory(); - _threads = (int) Math.max(MIN_THREADS, Math.min(MAX_THREADS, 1 + (maxMemory / (32*1024*1024)))); - _executor = new CustomThreadPoolExecutor(_threads); + _executor = new CustomThreadPoolExecutor(THREADS); } public void stop() { @@ -73,7 +75,7 @@ public class NTCPSendFinisher { private static class CustomThreadFactory implements ThreadFactory { public Thread newThread(Runnable r) { Thread rv = Executors.defaultThreadFactory().newThread(r); - rv.setName("NTCPSendFinisher " + (++_count) + '/' + _threads); + rv.setName("NTCPSendFinisher " + (++_count) + '/' + THREADS); rv.setDaemon(true); return rv; } diff --git a/router/java/src/net/i2p/router/transport/udp/ACKSender.java b/router/java/src/net/i2p/router/transport/udp/ACKSender.java index d6035766d..33fd401df 100644 --- a/router/java/src/net/i2p/router/transport/udp/ACKSender.java +++ b/router/java/src/net/i2p/router/transport/udp/ACKSender.java @@ -2,6 +2,7 @@ package net.i2p.router.transport.udp; import java.util.HashSet; import java.util.List; +import java.util.NoSuchElementException; import java.util.Set; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; @@ -120,7 +121,7 @@ class ACKSender implements Runnable { try { // bulk operations may throw an exception _peersToACK.addAll(notYet); - } catch (Exception e) {} + } catch (NoSuchElementException nsee) {} notYet.clear(); break; } else { diff --git a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java index b613208b1..24e0efe87 100644 --- a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java +++ b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java @@ -641,7 +641,7 @@ class EstablishmentManager { private void handlePendingIntro(OutboundEstablishState state) { long nonce = _context.random().nextLong(MAX_NONCE); while (true) { - OutboundEstablishState old = _liveIntroductions.putIfAbsent(new Long(nonce), state); + OutboundEstablishState old = _liveIntroductions.putIfAbsent(Long.valueOf(nonce), state); if (old != null) { nonce = _context.random().nextLong(MAX_NONCE); } else { @@ -669,7 +669,7 @@ class EstablishmentManager { } public void timeReached() { // remove only if value equal to state - boolean removed = _liveIntroductions.remove(new Long(_nonce), _state); + boolean removed = _liveIntroductions.remove(Long.valueOf(_nonce), _state); if (removed) { if (_log.shouldLog(Log.DEBUG)) _log.debug("Send intro for " + _state.getRemoteHostId().toString() + " timed out"); @@ -681,7 +681,7 @@ class EstablishmentManager { void receiveRelayResponse(RemoteHostId bob, UDPPacketReader reader) { long nonce = reader.getRelayResponseReader().readNonce(); - OutboundEstablishState state = _liveIntroductions.remove(new Long(nonce)); + OutboundEstablishState state = _liveIntroductions.remove(Long.valueOf(nonce)); if (state == null) return; // already established diff --git a/router/java/src/net/i2p/router/transport/udp/InboundMessageFragments.java b/router/java/src/net/i2p/router/transport/udp/InboundMessageFragments.java index bc0ddc5f5..f685c9e78 100644 --- a/router/java/src/net/i2p/router/transport/udp/InboundMessageFragments.java +++ b/router/java/src/net/i2p/router/transport/udp/InboundMessageFragments.java @@ -100,7 +100,7 @@ class InboundMessageFragments /*implements UDPTransport.PartialACKSource */{ for (int i = 0; i < fragments; i++) { long mid = data.readMessageId(i); - Long messageId = new Long(mid); + Long messageId = Long.valueOf(mid); if (_recentlyCompletedMessages.isKnown(mid)) { _context.statManager().addRateData("udp.ignoreRecentDuplicate", 1, 0); 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 326c43f15..b39f44de9 100644 --- a/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java +++ b/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java @@ -53,7 +53,7 @@ class IntroductionManager { _log.debug("Adding peer " + peer.getRemoteHostId() + ", weRelayToThemAs " + peer.getWeRelayToThemAs() + ", theyRelayToUsAs " + peer.getTheyRelayToUsAs()); if (peer.getWeRelayToThemAs() > 0) - _outbound.put(new Long(peer.getWeRelayToThemAs()), peer); + _outbound.put(Long.valueOf(peer.getWeRelayToThemAs()), peer); if (peer.getTheyRelayToUsAs() > 0) { _inbound.add(peer); } @@ -65,14 +65,14 @@ class IntroductionManager { _log.debug("removing peer " + peer.getRemoteHostId() + ", weRelayToThemAs " + peer.getWeRelayToThemAs() + ", theyRelayToUsAs " + peer.getTheyRelayToUsAs()); if (peer.getWeRelayToThemAs() > 0) - _outbound.remove(new Long(peer.getWeRelayToThemAs())); + _outbound.remove(Long.valueOf(peer.getWeRelayToThemAs())); if (peer.getTheyRelayToUsAs() > 0) { _inbound.remove(peer); } } public PeerState get(long id) { - return _outbound.get(new Long(id)); + return _outbound.get(Long.valueOf(id)); } /** 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 98daaecf9..cc43c4b2e 100644 --- a/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java +++ b/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java @@ -661,7 +661,6 @@ class PacketBuilder { */ public UDPPacket buildSessionDestroyPacket(PeerState peer) { UDPPacket packet = buildPacketHeader((byte)(UDPPacket.PAYLOAD_TYPE_SESSION_DESTROY << 4)); - byte data[] = packet.getPacket().getData(); int off = HEADER_SIZE; StringBuilder msg = null; diff --git a/router/java/src/net/i2p/router/transport/udp/PacketHandler.java b/router/java/src/net/i2p/router/transport/udp/PacketHandler.java index 2c0138228..230c1b792 100644 --- a/router/java/src/net/i2p/router/transport/udp/PacketHandler.java +++ b/router/java/src/net/i2p/router/transport/udp/PacketHandler.java @@ -20,14 +20,14 @@ import net.i2p.util.Log; * */ class PacketHandler { - private RouterContext _context; - private Log _log; - private UDPTransport _transport; - private UDPEndpoint _endpoint; - private EstablishmentManager _establisher; - private InboundMessageFragments _inbound; - private PeerTestManager _testManager; - private IntroductionManager _introManager; + private final RouterContext _context; + private final Log _log; + private final UDPTransport _transport; + private final UDPEndpoint _endpoint; + private final EstablishmentManager _establisher; + private final InboundMessageFragments _inbound; + private final PeerTestManager _testManager; + private final IntroductionManager _introManager; private boolean _keepReading; private final Handler[] _handlers; @@ -337,6 +337,9 @@ class PacketHandler { _state = 30; } + /** + * @param state non-null + */ private void receivePacket(UDPPacketReader reader, UDPPacket packet, InboundEstablishState state) { receivePacket(reader, packet, state, true); } @@ -345,11 +348,12 @@ class PacketHandler { * Inbound establishing conn * Decrypt and validate the packet then call handlePacket() * + * @param state non-null * @param allowFallback if it isn't valid for this establishment state, try as a non-establishment packet */ private void receivePacket(UDPPacketReader reader, UDPPacket packet, InboundEstablishState state, boolean allowFallback) { _state = 31; - if ( (state != null) && (_log.shouldLog(Log.DEBUG)) ) { + if (_log.shouldLog(Log.DEBUG)) { StringBuilder buf = new StringBuilder(128); buf.append("Attempting to receive a packet on a known inbound state: "); buf.append(state); @@ -388,10 +392,12 @@ class PacketHandler { /** * Outbound establishing conn * Decrypt and validate the packet then call handlePacket() + * + * @param state non-null */ private void receivePacket(UDPPacketReader reader, UDPPacket packet, OutboundEstablishState state) { _state = 35; - if ( (state != null) && (_log.shouldLog(Log.DEBUG)) ) { + if (_log.shouldLog(Log.DEBUG)) { StringBuilder buf = new StringBuilder(128); buf.append("Attempting to receive a packet on a known outbound state: "); buf.append(state); diff --git a/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java b/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java index a3211a5a6..46b1e4666 100644 --- a/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java +++ b/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java @@ -153,7 +153,7 @@ class PeerTestManager { _log.debug("Running test with bob = " + bobIP + ":" + bobPort + " " + test.getNonce()); while (_recentTests.size() > 16) _recentTests.poll(); - _recentTests.offer(new Long(test.getNonce())); + _recentTests.offer(Long.valueOf(test.getNonce())); sendTestToBob(); @@ -432,7 +432,7 @@ class PeerTestManager { testInfo.readIP(testIP, 0); } - PeerTestState state = _activeTests.get(new Long(nonce)); + PeerTestState state = _activeTests.get(Long.valueOf(nonce)); if (state == null) { if ( (testIP == null) || (testPort <= 0) ) { @@ -441,7 +441,7 @@ class PeerTestManager { _log.debug("test IP/port are blank coming from " + from + ", assuming we are Bob and they are alice"); receiveFromAliceAsBob(from, testInfo, nonce, null); } else { - if (_recentTests.contains(new Long(nonce))) { + if (_recentTests.contains(Long.valueOf(nonce))) { // ignore the packet, as its a holdover from a recently completed locally // initiated test } else { @@ -536,7 +536,7 @@ class PeerTestManager { _log.debug("Receive from bob (" + from + ") as charlie, sending back to bob and sending to alice @ " + aliceIP + ":" + alicePort); if (isNew) { - _activeTests.put(new Long(nonce), state); + _activeTests.put(Long.valueOf(nonce), state); SimpleScheduler.getInstance().addEvent(new RemoveTest(nonce), MAX_CHARLIE_LIFETIME); } @@ -615,7 +615,7 @@ class PeerTestManager { } if (isNew) { - _activeTests.put(new Long(nonce), state); + _activeTests.put(Long.valueOf(nonce), state); SimpleScheduler.getInstance().addEvent(new RemoveTest(nonce), MAX_CHARLIE_LIFETIME); } @@ -691,7 +691,7 @@ class PeerTestManager { _nonce = nonce; } public void timeReached() { - _activeTests.remove(new Long(_nonce)); + _activeTests.remove(Long.valueOf(_nonce)); } } } diff --git a/router/java/src/net/i2p/router/transport/udp/RemoteHostId.java b/router/java/src/net/i2p/router/transport/udp/RemoteHostId.java index 510d712a0..837a50268 100644 --- a/router/java/src/net/i2p/router/transport/udp/RemoteHostId.java +++ b/router/java/src/net/i2p/router/transport/udp/RemoteHostId.java @@ -28,21 +28,15 @@ final class RemoteHostId { @Override public int hashCode() { - int rv = 0; - for (int i = 0; _ip != null && i < _ip.length; i++) - rv += _ip[i] << i; - for (int i = 0; _peerHash != null && i < _peerHash.length; i++) - rv += _peerHash[i] << i; - rv += _port; - return rv; + return DataHelper.hashCode(_ip) ^ DataHelper.hashCode(_peerHash) ^ _port; } @Override public boolean equals(Object obj) { if (obj == null) - throw new NullPointerException("obj is null"); + return false; if (!(obj instanceof RemoteHostId)) - throw new ClassCastException("obj is a " + obj.getClass().getName()); + return false; RemoteHostId id = (RemoteHostId)obj; return (_port == id.getPort()) && DataHelper.eq(_ip, id.getIP()) && DataHelper.eq(_peerHash, id.getPeerHash()); } diff --git a/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java b/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java index 0a1937db1..ded71f8a2 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java @@ -20,16 +20,16 @@ import net.i2p.util.SimpleTimer; * */ class UDPReceiver { - private RouterContext _context; - private Log _log; + private final RouterContext _context; + private final Log _log; private DatagramSocket _socket; private String _name; private final BlockingQueue<UDPPacket> _inboundQueue; private boolean _keepRunning; - private Runner _runner; - private UDPTransport _transport; + private final Runner _runner; + private final UDPTransport _transport; private static int __id; - private int _id; + private final int _id; private static final int TYPE_POISON = -99999; public UDPReceiver(RouterContext ctx, UDPTransport transport, DatagramSocket socket, String name) { @@ -179,8 +179,7 @@ class UDPReceiver { msg.append(queueSize); msg.append(" queued for "); msg.append(headPeriod); - if (_transport != null) - msg.append(" packet handlers: ").append(_transport.getPacketHandlerStatus()); + msg.append(" packet handlers: ").append(_transport.getPacketHandlerStatus()); _log.warn(msg.toString()); } return queueSize; 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 18886ba62..820f2ca87 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java @@ -1635,7 +1635,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final IdleInComparator _instance = new IdleInComparator(); public static final IdleInComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = r.getLastReceiveTime() - l.getLastReceiveTime(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1647,7 +1647,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final IdleOutComparator _instance = new IdleOutComparator(); public static final IdleOutComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = r.getLastSendTime() - l.getLastSendTime(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1659,7 +1659,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final RateInComparator _instance = new RateInComparator(); public static final RateInComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getReceiveBps() - r.getReceiveBps(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1671,7 +1671,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final RateOutComparator _instance = new RateOutComparator(); public static final RateOutComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getSendBps() - r.getSendBps(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1683,7 +1683,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final UptimeComparator _instance = new UptimeComparator(); public static final UptimeComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = r.getKeyEstablishedTime() - l.getKeyEstablishedTime(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1695,7 +1695,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final SkewComparator _instance = new SkewComparator(); public static final SkewComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = Math.abs(l.getClockSkew()) - Math.abs(r.getClockSkew()); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1707,7 +1707,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final CwndComparator _instance = new CwndComparator(); public static final CwndComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getSendWindowBytes() - r.getSendWindowBytes(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1719,7 +1719,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final SsthreshComparator _instance = new SsthreshComparator(); public static final SsthreshComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getSlowStartThreshold() - r.getSlowStartThreshold(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1731,7 +1731,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final RTTComparator _instance = new RTTComparator(); public static final RTTComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getRTT() - r.getRTT(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1743,7 +1743,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final DevComparator _instance = new DevComparator(); public static final DevComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getRTTDeviation() - r.getRTTDeviation(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1755,7 +1755,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final RTOComparator _instance = new RTOComparator(); public static final RTOComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getRTO() - r.getRTO(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1767,7 +1767,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final MTUComparator _instance = new MTUComparator(); public static final MTUComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getMTU() - r.getMTU(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1779,7 +1779,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final SendCountComparator _instance = new SendCountComparator(); public static final SendCountComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getPacketsTransmitted() - r.getPacketsTransmitted(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1791,7 +1791,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final RecvCountComparator _instance = new RecvCountComparator(); public static final RecvCountComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getPacketsReceived() - r.getPacketsReceived(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1803,7 +1803,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final ResendComparator _instance = new ResendComparator(); public static final ResendComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getPacketsRetransmitted() - r.getPacketsRetransmitted(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1815,7 +1815,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final DupComparator _instance = new DupComparator(); public static final DupComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getPacketsReceivedDuplicate() - r.getPacketsReceivedDuplicate(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1824,17 +1824,12 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority } } - private static class PeerComparator implements Comparator { - public int compare(Object lhs, Object rhs) { - if ( (lhs == null) || (rhs == null) || !(lhs instanceof PeerState) || !(rhs instanceof PeerState)) - throw new IllegalArgumentException("rhs = " + rhs + " lhs = " + lhs); - return compare((PeerState)lhs, (PeerState)rhs); - } - protected int compare(PeerState l, PeerState r) { - // base64 retains binary ordering - return l.getRemotePeer().toBase64().compareTo(r.getRemotePeer().toBase64()); + private static class PeerComparator implements Comparator<PeerState> { + public int compare(PeerState l, PeerState r) { + return DataHelper.compareTo(l.getRemotePeer().getData(), r.getRemotePeer().getData()); } } + private static class InverseComparator implements Comparator { private Comparator _comp; public InverseComparator(Comparator comp) { _comp = comp; } diff --git a/router/java/src/net/i2p/router/tunnel/BuildMessageGenerator.java b/router/java/src/net/i2p/router/tunnel/BuildMessageGenerator.java index da169db75..179066989 100644 --- a/router/java/src/net/i2p/router/tunnel/BuildMessageGenerator.java +++ b/router/java/src/net/i2p/router/tunnel/BuildMessageGenerator.java @@ -21,9 +21,6 @@ import net.i2p.util.Log; * */ public class BuildMessageGenerator { - // cached, rather than creating lots of temporary Integer objects whenever we build a tunnel - public static final Integer ORDER[] = new Integer[TunnelBuildMessage.MAX_RECORD_COUNT]; - static { for (int i = 0; i < ORDER.length; i++) ORDER[i] = Integer.valueOf(i); } /** return null if it is unable to find a router's public key (etc) */ /**** diff --git a/router/java/src/net/i2p/router/tunnel/FragmentHandler.java b/router/java/src/net/i2p/router/tunnel/FragmentHandler.java index 7948c5387..f4b6062f5 100644 --- a/router/java/src/net/i2p/router/tunnel/FragmentHandler.java +++ b/router/java/src/net/i2p/router/tunnel/FragmentHandler.java @@ -360,10 +360,10 @@ public class FragmentHandler { FragmentedMessage msg = null; if (fragmented) { synchronized (_fragmentedMessages) { - msg = _fragmentedMessages.get(new Long(messageId)); + msg = _fragmentedMessages.get(Long.valueOf(messageId)); if (msg == null) { msg = new FragmentedMessage(_context); - _fragmentedMessages.put(new Long(messageId), msg); + _fragmentedMessages.put(Long.valueOf(messageId), msg); } } } else { @@ -377,7 +377,7 @@ public class FragmentHandler { if (!ok) return -1; if (msg.isComplete()) { synchronized (_fragmentedMessages) { - _fragmentedMessages.remove(new Long(messageId)); + _fragmentedMessages.remove(Long.valueOf(messageId)); } if (msg.getExpireEvent() != null) SimpleTimer.getInstance().removeEvent(msg.getExpireEvent()); @@ -432,10 +432,10 @@ public class FragmentHandler { FragmentedMessage msg = null; synchronized (_fragmentedMessages) { - msg = _fragmentedMessages.get(new Long(messageId)); + msg = _fragmentedMessages.get(Long.valueOf(messageId)); if (msg == null) { msg = new FragmentedMessage(_context); - _fragmentedMessages.put(new Long(messageId), msg); + _fragmentedMessages.put(Long.valueOf(messageId), msg); } } @@ -446,7 +446,7 @@ public class FragmentHandler { if (msg.isComplete()) { synchronized (_fragmentedMessages) { - _fragmentedMessages.remove(new Long(messageId)); + _fragmentedMessages.remove(Long.valueOf(messageId)); } if (msg.getExpireEvent() != null) SimpleTimer.getInstance().removeEvent(msg.getExpireEvent()); @@ -529,7 +529,7 @@ public class FragmentHandler { public void timeReached() { boolean removed = false; synchronized (_fragmentedMessages) { - removed = (null != _fragmentedMessages.remove(new Long(_msg.getMessageId()))); + removed = (null != _fragmentedMessages.remove(Long.valueOf(_msg.getMessageId()))); } synchronized (_msg) { if (removed && !_msg.getReleased()) { diff --git a/router/java/src/net/i2p/router/tunnel/HopConfig.java b/router/java/src/net/i2p/router/tunnel/HopConfig.java index 532bdfe20..3ac96bf28 100644 --- a/router/java/src/net/i2p/router/tunnel/HopConfig.java +++ b/router/java/src/net/i2p/router/tunnel/HopConfig.java @@ -73,7 +73,7 @@ public class HopConfig { } public void setSendTunnelId(byte id[]) { _sendTunnelId = id; } - private TunnelId getTunnel(byte id[]) { + private static TunnelId getTunnel(byte id[]) { if (id == null) return null; else diff --git a/router/java/src/net/i2p/router/tunnel/HopProcessor.java b/router/java/src/net/i2p/router/tunnel/HopProcessor.java index 205339d7f..eac1f71da 100644 --- a/router/java/src/net/i2p/router/tunnel/HopProcessor.java +++ b/router/java/src/net/i2p/router/tunnel/HopProcessor.java @@ -77,7 +77,7 @@ public class HopProcessor { boolean okIV = _validator.receiveIV(orig, offset, orig, offset + IV_LENGTH); if (!okIV) { if (_log.shouldLog(Log.WARN)) - _log.warn("Invalid IV received on tunnel " + _config.getReceiveTunnelId()); + _log.warn("Invalid IV received on tunnel " + _config.getReceiveTunnel()); return false; } diff --git a/router/java/src/net/i2p/router/tunnel/TrivialPreprocessor.java b/router/java/src/net/i2p/router/tunnel/TrivialPreprocessor.java index c9b28b856..6c85895c6 100644 --- a/router/java/src/net/i2p/router/tunnel/TrivialPreprocessor.java +++ b/router/java/src/net/i2p/router/tunnel/TrivialPreprocessor.java @@ -52,92 +52,11 @@ public class TrivialPreprocessor implements TunnelGateway.QueuePreprocessor { * NOTE: Unused here, see BatchedPreprocessor override, super is not called. */ public boolean preprocessQueue(List<TunnelGateway.Pending> pending, TunnelGateway.Sender sender, TunnelGateway.Receiver rec) { - if (true) throw new IllegalArgumentException("unused, right?"); - long begin = System.currentTimeMillis(); - StringBuilder buf = null; - if (_log.shouldLog(Log.DEBUG)) { - buf = new StringBuilder(256); - buf.append("Trivial preprocessing of ").append(pending.size()).append(" "); - } - while (!pending.isEmpty()) { - TunnelGateway.Pending msg = pending.remove(0); - long beforePreproc = System.currentTimeMillis(); - byte preprocessed[][] = preprocess(msg); - long afterPreproc = System.currentTimeMillis(); - if (buf != null) - buf.append("preprocessed into " + preprocessed.length + " fragments after " + (afterPreproc-beforePreproc) + ". "); - for (int i = 0; i < preprocessed.length; i++) { - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Preprocessed: fragment " + i + "/" + (preprocessed.length-1) + " in " - + msg.getMessageId() + ": " - + " send through " + sender + " receive with " + rec); - //Base64.encode(preprocessed[i])); - long beforeSend = System.currentTimeMillis(); - long id = sender.sendPreprocessed(preprocessed[i], rec); - long afterSend = System.currentTimeMillis(); - if (buf != null) - buf.append("send of " + msg.getMessageId() + " took " + (afterSend-beforeSend) + ". "); - msg.addMessageId(id); - } - notePreprocessing(msg.getMessageId(), msg.getFragmentNumber(), preprocessed.length, msg.getMessageIds(), null); - if (preprocessed.length != msg.getFragmentNumber() + 1) { - throw new RuntimeException("wtf, preprocessed " + msg.getMessageId() + " into " - + msg.getFragmentNumber() + "/" + preprocessed.length + " fragments, size = " - + msg.getData().length); - } - if (buf != null) - buf.append("all fragments sent after " + (System.currentTimeMillis()-afterPreproc) + ". "); - } - if (buf != null) { - buf.append("queue preprocessed after " + (System.currentTimeMillis()-begin) + "."); - _log.debug(buf.toString()); - } - return false; + throw new IllegalArgumentException("unused, right?"); } protected void notePreprocessing(long messageId, int numFragments, int totalLength, List<Long> messageIds, String msg) {} - /* - * @deprecated unused except by above - */ - private byte[][] preprocess(TunnelGateway.Pending msg) { - List<byte[]> fragments = new ArrayList(1); - - while (msg.getOffset() < msg.getData().length) { - fragments.add(preprocessFragment(msg)); - //if (_log.shouldLog(Log.DEBUG)) - // _log.debug("\n\nafter preprocessing fragment\n\n"); - } - - byte rv[][] = new byte[fragments.size()][]; - for (int i = 0; i < fragments.size(); i++) - rv[i] = fragments.get(i); - return rv; - } - - /** - * Preprocess the next available fragment off the given one in phases: - * First, write it out as { instructions + payload + random IV }, calculate the - * SHA256 of that, then move the instructions + payload to the end - * of the target, setting IV as the beginning. Then add the necessary random pad - * bytes after the IV, followed by the first 4 bytes of that SHA256, lining up - * exactly to meet the beginning of the instructions. (i hope) - * - * @deprecated unused except by above - */ - private byte[] preprocessFragment(TunnelGateway.Pending msg) { - byte target[] = _dataCache.acquire().getData(); - - int offset = 0; - if (msg.getOffset() <= 0) - offset = writeFirstFragment(msg, target, offset); - else - offset = writeSubsequentFragment(msg, target, offset); - - preprocess(target, offset); - return target; - } - /** * Wrap the preprocessed fragments with the necessary padding / checksums * to act as a tunnel message. diff --git a/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java b/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java index c8424d853..d736e338d 100644 --- a/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java +++ b/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java @@ -623,7 +623,7 @@ public class TunnelDispatcher implements Service { // drop in proportion to size w.r.t. a standard 1024-byte message // this is a little expensive but we want to adjust the curve between 0 and 1 // Most messages are 1024, only at the OBEP do we see other sizes - if (len != 1024d) + if ((int)len != 1024) pctDrop = (float) Math.pow(pctDrop, 1024d / len); float rand = _context.random().nextFloat(); boolean reject = rand <= pctDrop; diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java b/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java index 8b08b6ec8..19505c0c7 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java +++ b/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java @@ -294,7 +294,9 @@ class BuildExecutor implements Runnable { if (!_repoll) { if (_log.shouldLog(Log.DEBUG)) _log.debug("No tunnel to build with (allowed=" + allowed + ", wanted=" + wanted.size() + ", pending=" + pendingRemaining + "), wait for a while"); - _currentlyBuilding.wait(1*1000+_context.random().nextInt(1*1000)); + try { + _currentlyBuilding.wait(1*1000+_context.random().nextInt(1*1000)); + } catch (InterruptedException ie) {} } } } else { @@ -369,7 +371,7 @@ class BuildExecutor implements Runnable { wanted.clear(); pools.clear(); - } catch (Exception e) { + } catch (RuntimeException e) { if (_log.shouldLog(Log.CRIT)) _log.log(Log.CRIT, "B0rked in the tunnel builder", e); } @@ -459,7 +461,7 @@ class BuildExecutor implements Runnable { for (int i = 0; i < 32; i++) _recentBuildIds.remove(0); } - _recentBuildIds.add(new Long(id)); + _recentBuildIds.add(Long.valueOf(id)); } } } @@ -483,7 +485,7 @@ class BuildExecutor implements Runnable { public boolean wasRecentlyBuilding(long replyId) { synchronized (_recentBuildIds) { - return _recentBuildIds.contains(new Long(replyId)); + return _recentBuildIds.contains(Long.valueOf(replyId)); } } diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java b/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java index 874c2aebc..148330d90 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java +++ b/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java @@ -25,9 +25,9 @@ import net.i2p.util.VersionComparator; * */ class BuildRequestor { - private static final List<Integer> ORDER = new ArrayList(BuildMessageGenerator.ORDER.length); + private static final List<Integer> ORDER = new ArrayList(TunnelBuildMessage.MAX_RECORD_COUNT); static { - for (int i = 0; i < BuildMessageGenerator.ORDER.length; i++) + for (int i = 0; i < TunnelBuildMessage.MAX_RECORD_COUNT; i++) ORDER.add(Integer.valueOf(i)); } private static final int PRIORITY = 500; diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java index e6f3e599e..03fa5bd71 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java @@ -464,9 +464,9 @@ public class TunnelPool { * but we use latest expiration first, since we need to sort them by that anyway. * */ - class LeaseComparator implements Comparator { - public int compare(Object l, Object r) { - return ((Lease)r).getEndDate().compareTo(((Lease)l).getEndDate()); + private static class LeaseComparator implements Comparator<Lease> { + public int compare(Lease l, Lease r) { + return r.getEndDate().compareTo(l.getEndDate()); } } From 087c7b86dea44a4073481aeb5ef6f8f9474c7817 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Fri, 7 Jan 2011 00:15:35 +0000 Subject: [PATCH 041/463] findbugs core,client,crypto,data,stat,i2np --- core/java/src/net/i2p/I2PAppContext.java | 8 ++- .../src/net/i2p/client/I2PSessionImpl.java | 6 +-- .../net/i2p/client/I2PSessionMuxedImpl.java | 2 +- .../src/net/i2p/client/I2PSimpleSession.java | 2 +- .../src/net/i2p/crypto/CryptixAESEngine.java | 2 +- core/java/src/net/i2p/data/Base32.java | 15 +++--- core/java/src/net/i2p/data/Base64.java | 15 +++--- core/java/src/net/i2p/data/DataHelper.java | 2 +- .../java/src/net/i2p/data/PrivateKeyFile.java | 54 ++++++++++++------- .../net/i2p/data/i2cp/DestReplyMessage.java | 7 +-- core/java/src/net/i2p/stat/FrequencyStat.java | 2 +- core/java/src/net/i2p/stat/Rate.java | 2 +- core/java/src/net/i2p/stat/RateStat.java | 2 +- .../net/i2p/data/i2np/I2NPMessageImpl.java | 6 +-- .../net/i2p/data/i2np/TunnelDataMessage.java | 2 +- 15 files changed, 76 insertions(+), 51 deletions(-) diff --git a/core/java/src/net/i2p/I2PAppContext.java b/core/java/src/net/i2p/I2PAppContext.java index e235511aa..e5ec21c75 100644 --- a/core/java/src/net/i2p/I2PAppContext.java +++ b/core/java/src/net/i2p/I2PAppContext.java @@ -63,7 +63,7 @@ import net.i2p.util.SecureDirectory; */ public class I2PAppContext { /** the context that components without explicit root are bound */ - protected static I2PAppContext _globalAppContext; + protected static volatile I2PAppContext _globalAppContext; private Properties _overrideProps; @@ -117,7 +117,8 @@ public class I2PAppContext { * */ public static I2PAppContext getGlobalContext() { - // skip the global lock + // skip the global lock - _gAC must be volatile + // http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html I2PAppContext rv = _globalAppContext; if (rv != null) return rv; @@ -474,6 +475,9 @@ public class I2PAppContext { * provided during the context construction, as well as the ones included in * System.getProperties. * + * WARNING - not overridden in RouterContext, doesn't contain router config settings, + * use getProperties() instead. + * * @return set of Strings containing the names of defined system properties */ public Set getPropertyNames() { diff --git a/core/java/src/net/i2p/client/I2PSessionImpl.java b/core/java/src/net/i2p/client/I2PSessionImpl.java index 10e7695c0..b904b121d 100644 --- a/core/java/src/net/i2p/client/I2PSessionImpl.java +++ b/core/java/src/net/i2p/client/I2PSessionImpl.java @@ -421,7 +421,7 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa * */ public byte[] receiveMessage(int msgId) throws I2PSessionException { - MessagePayloadMessage msg = _availableMessages.remove(new Long(msgId)); + MessagePayloadMessage msg = _availableMessages.remove(Long.valueOf(msgId)); if (msg == null) { _log.error("Receive message " + msgId + " had no matches"); return null; @@ -468,7 +468,7 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa * Recieve a payload message and let the app know its available */ public void addNewMessage(MessagePayloadMessage msg) { - Long mid = new Long(msg.getMessageId()); + Long mid = Long.valueOf(msg.getMessageId()); _availableMessages.put(mid, msg); long id = msg.getMessageId(); byte data[] = msg.getPayload().getUnencryptedData(); @@ -518,7 +518,7 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa public void available(long msgId, int size) { synchronized (AvailabilityNotifier.this) { - _pendingIds.add(new Long(msgId)); + _pendingIds.add(Long.valueOf(msgId)); _pendingSizes.add(Integer.valueOf(size)); AvailabilityNotifier.this.notifyAll(); } diff --git a/core/java/src/net/i2p/client/I2PSessionMuxedImpl.java b/core/java/src/net/i2p/client/I2PSessionMuxedImpl.java index 837bc2dbc..2f12f96f6 100644 --- a/core/java/src/net/i2p/client/I2PSessionMuxedImpl.java +++ b/core/java/src/net/i2p/client/I2PSessionMuxedImpl.java @@ -191,7 +191,7 @@ class I2PSessionMuxedImpl extends I2PSessionImpl2 implements I2PSession { */ @Override public void addNewMessage(MessagePayloadMessage msg) { - Long mid = new Long(msg.getMessageId()); + Long mid = Long.valueOf(msg.getMessageId()); _availableMessages.put(mid, msg); long id = msg.getMessageId(); byte data[] = msg.getPayload().getUnencryptedData(); diff --git a/core/java/src/net/i2p/client/I2PSimpleSession.java b/core/java/src/net/i2p/client/I2PSimpleSession.java index 1c564f0db..e108fc008 100644 --- a/core/java/src/net/i2p/client/I2PSimpleSession.java +++ b/core/java/src/net/i2p/client/I2PSimpleSession.java @@ -108,7 +108,7 @@ class I2PSimpleSession extends I2PSessionImpl2 { /** * Only map message handlers that we will use */ - class SimpleMessageHandlerMap extends I2PClientMessageHandlerMap { + private static class SimpleMessageHandlerMap extends I2PClientMessageHandlerMap { public SimpleMessageHandlerMap(I2PAppContext context) { int highest = Math.max(DestReplyMessage.MESSAGE_TYPE, BandwidthLimitsMessage.MESSAGE_TYPE); _handlers = new I2CPMessageHandler[highest+1]; diff --git a/core/java/src/net/i2p/crypto/CryptixAESEngine.java b/core/java/src/net/i2p/crypto/CryptixAESEngine.java index ea2338003..350821e35 100644 --- a/core/java/src/net/i2p/crypto/CryptixAESEngine.java +++ b/core/java/src/net/i2p/crypto/CryptixAESEngine.java @@ -149,7 +149,7 @@ public class CryptixAESEngine extends AESEngine { @Override public final void decryptBlock(byte payload[], int inIndex, SessionKey sessionKey, byte rv[], int outIndex) { if ( (payload == null) || (rv == null) ) - throw new IllegalArgumentException("null block args [payload=" + payload + " rv="+rv); + throw new IllegalArgumentException("null block args"); if (payload.length - inIndex > rv.length - outIndex) throw new IllegalArgumentException("bad block args [payload.len=" + payload.length + " inIndex=" + inIndex + " rv.len=" + rv.length diff --git a/core/java/src/net/i2p/data/Base32.java b/core/java/src/net/i2p/data/Base32.java index 3071e0bc0..cbcb93515 100644 --- a/core/java/src/net/i2p/data/Base32.java +++ b/core/java/src/net/i2p/data/Base32.java @@ -72,13 +72,13 @@ public class Base32 { } private static void runApp(String args[]) { + if ("encodestring".equalsIgnoreCase(args[0])) { + System.out.println(encode(args[1].getBytes())); + return; + } + InputStream in = System.in; + OutputStream out = System.out; try { - if ("encodestring".equalsIgnoreCase(args[0])) { - System.out.println(encode(args[1].getBytes())); - return; - } - InputStream in = System.in; - OutputStream out = System.out; if (args.length >= 3) { out = new FileOutputStream(args[2]); } @@ -95,6 +95,9 @@ public class Base32 { } } catch (IOException ioe) { ioe.printStackTrace(System.err); + } finally { + try { in.close(); } catch (IOException e) {} + try { out.close(); } catch (IOException e) {} } } diff --git a/core/java/src/net/i2p/data/Base64.java b/core/java/src/net/i2p/data/Base64.java index fe730af6b..52d59002d 100644 --- a/core/java/src/net/i2p/data/Base64.java +++ b/core/java/src/net/i2p/data/Base64.java @@ -178,13 +178,13 @@ public class Base64 { } private static void runApp(String args[]) { + if ("encodestring".equalsIgnoreCase(args[0])) { + System.out.println(encode(args[1].getBytes())); + return; + } + InputStream in = System.in; + OutputStream out = System.out; try { - if ("encodestring".equalsIgnoreCase(args[0])) { - System.out.println(encode(args[1].getBytes())); - return; - } - InputStream in = System.in; - OutputStream out = System.out; if (args.length >= 3) { out = new FileOutputStream(args[2]); } @@ -201,6 +201,9 @@ public class Base64 { } } catch (IOException ioe) { ioe.printStackTrace(System.err); + } finally { + try { in.close(); } catch (IOException e) {} + try { out.close(); } catch (IOException e) {} } } diff --git a/core/java/src/net/i2p/data/DataHelper.java b/core/java/src/net/i2p/data/DataHelper.java index bd6bf260d..33264edf2 100644 --- a/core/java/src/net/i2p/data/DataHelper.java +++ b/core/java/src/net/i2p/data/DataHelper.java @@ -844,7 +844,7 @@ public class DataHelper { */ public final static void xor(byte lhs[], int startLeft, byte rhs[], int startRight, byte out[], int startOut, int len) { if ( (lhs == null) || (rhs == null) || (out == null) ) - throw new NullPointerException("Invalid params to xor (" + lhs + ", " + rhs + ", " + out + ")"); + throw new NullPointerException("Null params to xor"); if (lhs.length < startLeft + len) throw new IllegalArgumentException("Left hand side is too short"); if (rhs.length < startRight + len) diff --git a/core/java/src/net/i2p/data/PrivateKeyFile.java b/core/java/src/net/i2p/data/PrivateKeyFile.java index 0c752f9d6..4f4af3cf9 100644 --- a/core/java/src/net/i2p/data/PrivateKeyFile.java +++ b/core/java/src/net/i2p/data/PrivateKeyFile.java @@ -133,9 +133,15 @@ public class PrivateKeyFile { */ public Destination createIfAbsent() throws I2PException, IOException, DataFormatException { if(!this.file.exists()) { - FileOutputStream out = new FileOutputStream(this.file); - this.client.createDestination(out); - out.close(); + FileOutputStream out = null; + try { + out = new FileOutputStream(this.file); + this.client.createDestination(out); + } finally { + if (out != null) { + try { out.close(); } catch (IOException ioe) {} + } + } } return getDestination(); } @@ -243,29 +249,36 @@ public class PrivateKeyFile { public I2PSession open() throws I2PSessionException, IOException { return this.open(new Properties()); } + public I2PSession open(Properties opts) throws I2PSessionException, IOException { - // open input file - FileInputStream in = new FileInputStream(this.file); - - // create sesssion - I2PSession s = this.client.createSession(in, opts); - - // close file - in.close(); - - return s; + FileInputStream in = null; + try { + in = new FileInputStream(this.file); + I2PSession s = this.client.createSession(in, opts); + return s; + } finally { + if (in != null) { + try { in.close(); } catch (IOException ioe) {} + } + } } /** * Copied from I2PClientImpl.createDestination() */ public void write() throws IOException, DataFormatException { - FileOutputStream out = new FileOutputStream(this.file); - this.dest.writeBytes(out); - this.privKey.writeBytes(out); - this.signingPrivKey.writeBytes(out); - out.flush(); - out.close(); + FileOutputStream out = null; + try { + out = new FileOutputStream(this.file); + this.dest.writeBytes(out); + this.privKey.writeBytes(out); + this.signingPrivKey.writeBytes(out); + out.flush(); + } finally { + if (out != null) { + try { out.close(); } catch (IOException ioe) {} + } + } } @Override @@ -377,7 +390,8 @@ public class PrivateKeyFile { } } } - } catch (Exception ioe) { + } catch (DataFormatException dfe) { + } catch (IOException ioe) { } // not found, continue to the next file } diff --git a/core/java/src/net/i2p/data/i2cp/DestReplyMessage.java b/core/java/src/net/i2p/data/i2cp/DestReplyMessage.java index 7aaba9c89..67e135105 100644 --- a/core/java/src/net/i2p/data/i2cp/DestReplyMessage.java +++ b/core/java/src/net/i2p/data/i2cp/DestReplyMessage.java @@ -76,10 +76,11 @@ public class DestReplyMessage extends I2CPMessageImpl { } protected byte[] doWriteMessage() throws I2CPMessageException, IOException { - if (_dest == null && _hash == null) - return new byte[0]; // null response allowed - if (_dest == null && _hash != null) + if (_dest == null) { + if (_hash == null) + return new byte[0]; // null response allowed return _hash.getData(); + } ByteArrayOutputStream os = new ByteArrayOutputStream(_dest.size()); try { _dest.writeBytes(os); diff --git a/core/java/src/net/i2p/stat/FrequencyStat.java b/core/java/src/net/i2p/stat/FrequencyStat.java index dfa7bcfe6..d18a469db 100644 --- a/core/java/src/net/i2p/stat/FrequencyStat.java +++ b/core/java/src/net/i2p/stat/FrequencyStat.java @@ -89,7 +89,7 @@ public class FrequencyStat { /** @since 0.8.2 */ @Override public boolean equals(Object obj) { - if ((obj == null) || (obj.getClass() != FrequencyStat.class)) return false; + if ((obj == null) || !(obj instanceof FrequencyStat)) return false; return _statName.equals(((FrequencyStat)obj)._statName); } diff --git a/core/java/src/net/i2p/stat/Rate.java b/core/java/src/net/i2p/stat/Rate.java index fd0fae49f..8473d58eb 100644 --- a/core/java/src/net/i2p/stat/Rate.java +++ b/core/java/src/net/i2p/stat/Rate.java @@ -473,7 +473,7 @@ public class Rate { @Override public boolean equals(Object obj) { - if ((obj == null) || (obj.getClass() != Rate.class)) return false; + if ((obj == null) || !(obj instanceof Rate)) return false; if (obj == this) return true; Rate r = (Rate) obj; return _period == r.getPeriod() && _creationDate == r.getCreationDate() && diff --git a/core/java/src/net/i2p/stat/RateStat.java b/core/java/src/net/i2p/stat/RateStat.java index 79ddec519..fded9b019 100644 --- a/core/java/src/net/i2p/stat/RateStat.java +++ b/core/java/src/net/i2p/stat/RateStat.java @@ -108,7 +108,7 @@ public class RateStat { @Override public boolean equals(Object obj) { - if ((obj == null) || (obj.getClass() != RateStat.class)) return false; + if ((obj == null) || !(obj instanceof RateStat)) return false; RateStat rs = (RateStat) obj; if (DataHelper.eq(getGroupName(), rs.getGroupName()) && DataHelper.eq(getDescription(), rs.getDescription()) && DataHelper.eq(getName(), rs.getName())) { diff --git a/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java b/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java index 6b4ab71f4..021bbf6c1 100644 --- a/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java +++ b/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java @@ -116,7 +116,7 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM if (!eq) throw new I2NPMessageException("Hash does not match for " + getClass().getName()); - long start = _context.clock().now(); + //long start = _context.clock().now(); if (_log.shouldLog(Log.DEBUG)) _log.debug("Reading bytes: type = " + type + " / uniqueId : " + _uniqueId + " / expiration : " + _expiration); readMessage(buffer, 0, size, type); @@ -159,7 +159,7 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM if (!eq) throw new I2NPMessageException("Hash does not match for " + getClass().getName()); - long start = _context.clock().now(); + //long start = _context.clock().now(); if (_log.shouldLog(Log.DEBUG)) _log.debug("Reading bytes: type = " + type + " / uniqueId : " + _uniqueId + " / expiration : " + _expiration); readMessage(data, cur, size, type); @@ -215,7 +215,7 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM } public int toByteArray(byte buffer[]) { - long start = _context.clock().now(); + //long start = _context.clock().now(); int prefixLen = 1 // type + 4 // uniqueId diff --git a/router/java/src/net/i2p/data/i2np/TunnelDataMessage.java b/router/java/src/net/i2p/data/i2np/TunnelDataMessage.java index 1ac01d0a6..ef4930594 100644 --- a/router/java/src/net/i2p/data/i2np/TunnelDataMessage.java +++ b/router/java/src/net/i2p/data/i2np/TunnelDataMessage.java @@ -160,7 +160,7 @@ public class TunnelDataMessage extends I2NPMessageImpl { /** write the message body to the output array, starting at the given index */ protected int writeMessageBody(byte out[], int curIndex) throws I2NPMessageException { if ( (_tunnelId <= 0) || (_data == null) ) - throw new I2NPMessageException("Not enough data to write out (id=" + _tunnelId + " data=" + _data + ")"); + throw new I2NPMessageException("Not enough data to write out (id=" + _tunnelId + ")"); if (_data.length <= 0) throw new I2NPMessageException("Not enough data to write out (data.length=" + _data.length + ")"); From 7710b22cfd9e543349fe06b75baa94c54773d03b Mon Sep 17 00:00:00 2001 From: mathiasdm <mathiasdm@mail.i2p> Date: Fri, 7 Jan 2011 17:09:27 +0000 Subject: [PATCH 042/463] Moved I2PProperties callback to the RouterContext. --- .../src/net/i2p/desktopgui/Main.java | 35 +++++++++------- .../i2p/desktopgui/router/RouterManager.java | 40 ++++++++++++++----- .../src/net/i2p/router/web/ContentHelper.java | 2 +- core/java/src/net/i2p/I2PAppContext.java | 19 ++------- core/java/src/net/i2p/util/I2PProperties.java | 6 +-- .../src/net/i2p/router/RouterContext.java | 19 +++++++++ 6 files changed, 74 insertions(+), 47 deletions(-) diff --git a/apps/desktopgui/src/net/i2p/desktopgui/Main.java b/apps/desktopgui/src/net/i2p/desktopgui/Main.java index c24cdd418..7bed90e3a 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/Main.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/Main.java @@ -9,6 +9,7 @@ import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import net.i2p.I2PAppContext; +import net.i2p.desktopgui.router.RouterManager; import net.i2p.desktopgui.util.*; import net.i2p.util.Log; import net.i2p.util.Translate; @@ -25,23 +26,24 @@ public class Main { /** * Start the tray icon code (loads tray icon in the tray area). + * @throws Exception */ - private void startUp() { + private void startUp() throws Exception { trayManager = TrayManager.getInstance(); trayManager.startManager(); - I2PAppContext.getCurrentContext().addPropertyCallback(new I2PPropertyCallback() { + + if(RouterManager.inI2P()) { + RouterManager.getRouterContext().addPropertyCallback(new I2PPropertyCallback() { - @Override - public String getPropertyKey() { - return Translate.PROP_LANG; - } - - @Override - public void propertyChanged(String arg0, String arg1) { - trayManager.languageChanged(); - } - - }); + @Override + public void propertyChanged(String arg0, String arg1) { + if(arg0.equals(Translate.PROP_LANG)) { + trayManager.languageChanged(); + } + } + + }); + } } /** @@ -71,7 +73,12 @@ public class Main { @Override public void run() { - main.startUp(); + try { + main.startUp(); + } + catch(Exception e) { + log.error("Failed while running desktopgui!", e); + } } diff --git a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java index fd36219fa..8caafe397 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java @@ -17,9 +17,28 @@ import net.i2p.util.Log; public class RouterManager { private final static Log log = new Log(RouterManager.class); + private static I2PAppContext context = I2PAppContext.getCurrentContext(); + + public static I2PAppContext getAppContext() { + return context; + } + + public static RouterContext getRouterContext() throws Exception { + if(context.isRouterContext()) { + return (RouterContext) context; + } + else { + throw new Exception("No RouterContext available!"); + } + } private static Router getRouter() { - return RouterContext.listContexts().get(0).router(); + try { + return getRouterContext().router(); + } catch (Exception e) { + log.error("Failed to get router. Why did we request it if no RouterContext is available?", e); + return null; + } } /** @@ -27,14 +46,13 @@ public class RouterManager { * This method has limited knowledge * (there is no I2P instance running to collect information from). * - * It needs to determine itself where the I2P instance is located, - * except if the location has been given through command-line arguments. + * It determines the I2P location using the I2PAppContext. */ public static void start() { try { //TODO: set/get PID String separator = System.getProperty("file.separator"); - String location = I2PAppContext.getCurrentContext().getBaseDir().getAbsolutePath(); + String location = getAppContext().getBaseDir().getAbsolutePath(); Runtime.getRuntime().exec(location + separator + "i2psvc " + location + separator + "wrapper.config"); } catch (IOException e) { @@ -46,24 +64,24 @@ public class RouterManager { * Restart the running I2P instance. */ public static void restart() { - getRouter().restart(); + if(inI2P()) { + getRouter().restart(); + } } /** * Stop the running I2P instance. */ public static void shutDown() { - getRouter().shutdownGracefully(); + if(inI2P()) { + getRouter().shutdownGracefully(); + } } /** * Check if we are running inside I2P. */ public static boolean inI2P() { - return (RouterContext.listContexts().size() > 0); + return context.isRouterContext(); } - - private static String _(String s) { - return DesktopguiTranslator._(s); - } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java index adc245a6b..7a9d94793 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java @@ -19,7 +19,7 @@ public class ContentHelper extends HelperBase { _startAtBeginning = Boolean.valueOf(""+moo).booleanValue(); } public void setLang(String l) { - if(_lang == null || !_lang.equals(l)) { + if((_lang == null || !_lang.equals(l)) && (l != null)) { //Set language for router console _lang = l; diff --git a/core/java/src/net/i2p/I2PAppContext.java b/core/java/src/net/i2p/I2PAppContext.java index 4b023034b..1ac74c2ce 100644 --- a/core/java/src/net/i2p/I2PAppContext.java +++ b/core/java/src/net/i2p/I2PAppContext.java @@ -64,7 +64,7 @@ public class I2PAppContext { /** the context that components without explicit root are bound */ protected static I2PAppContext _globalAppContext; - private I2PProperties _overrideProps; + protected I2PProperties _overrideProps; private StatManager _statManager; private SessionKeyManager _sessionKeyManager; @@ -480,26 +480,13 @@ public class I2PAppContext { return names; } - /** - * Modify the configuration attributes of this context, changing - * one of the properties provided during the context construction. - * @param propName The name of the property. - * @param value The new value for the property. - */ - public void setProperty(String propName, String value) { - if(_overrideProps != null) { - _overrideProps.setProperty(propName, value); - } - } - /** * Add a callback, which will fire upon changes in the property * given in the specific callback. + * Unimplemented in I2PAppContext: this only makes sense in a router context. * @param callback The implementation of the callback. */ - public void addPropertyCallback(I2PPropertyCallback callback) { - _overrideProps.addCallBack(callback); - } + public void addPropertyCallback(I2PPropertyCallback callback) {} /** * The statistics component with which we can track various events diff --git a/core/java/src/net/i2p/util/I2PProperties.java b/core/java/src/net/i2p/util/I2PProperties.java index b6dfca8a1..e943f561f 100644 --- a/core/java/src/net/i2p/util/I2PProperties.java +++ b/core/java/src/net/i2p/util/I2PProperties.java @@ -17,7 +17,6 @@ public class I2PProperties extends Properties { /** * Keep a list of callbacks to contact the interested parties * that want to know about property changes. - * @todo Use a map of lists, so we don't need to loop over all the callbacks on every change. */ private final List<I2PPropertyCallback> _callbacks = new CopyOnWriteArrayList<I2PPropertyCallback>(); @@ -40,9 +39,7 @@ public class I2PProperties extends Properties { public Object setProperty(String key, String value) { Object returnValue = super.setProperty(key, value); for(I2PPropertyCallback callback: _callbacks) { - if(callback.getPropertyKey().equals(key)) { - callback.propertyChanged(key, value); - } + callback.propertyChanged(key, value); } return returnValue; } @@ -51,7 +48,6 @@ public class I2PProperties extends Properties { public void propertyChanged(String key, String value); - public String getPropertyKey(); } } diff --git a/router/java/src/net/i2p/router/RouterContext.java b/router/java/src/net/i2p/router/RouterContext.java index 3d5ed609e..51b7bf187 100644 --- a/router/java/src/net/i2p/router/RouterContext.java +++ b/router/java/src/net/i2p/router/RouterContext.java @@ -23,6 +23,7 @@ import net.i2p.router.tunnel.TunnelDispatcher; import net.i2p.router.tunnel.pool.TunnelPoolManager; import net.i2p.util.Clock; import net.i2p.util.KeyRing; +import net.i2p.util.I2PProperties.I2PPropertyCallback; /** * Build off the core I2P context to provide a root for a router instance to @@ -104,6 +105,24 @@ public class RouterContext extends I2PAppContext { } return envProps; } + + /** + * Modify the configuration attributes of this context, changing + * one of the properties provided during the context construction. + * @param propName The name of the property. + * @param value The new value for the property. + */ + public void setProperty(String propName, String value) { + if(_overrideProps != null) { + _overrideProps.setProperty(propName, value); + } + } + + + public void addPropertyCallback(I2PPropertyCallback callback) { + _overrideProps.addCallBack(callback); + } + public void initAll() { if ("false".equals(getProperty("i2p.dummyClientFacade", "false"))) From 212c87ffd8b43dfc21af6d8d3570a963f07341c4 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 9 Jan 2011 01:02:17 +0000 Subject: [PATCH 043/463] * DataHelper: Speed up and annotate sortStructures() * RouterInfo: - Don't cache byteified data by default, to save ~1.5 MB - Don't create empty peers Set, to save ~100KB --- core/java/src/net/i2p/data/DataHelper.java | 43 +++++++++++---- core/java/src/net/i2p/data/RouterAddress.java | 7 ++- core/java/src/net/i2p/data/RouterInfo.java | 55 ++++++++++++++----- 3 files changed, 79 insertions(+), 26 deletions(-) diff --git a/core/java/src/net/i2p/data/DataHelper.java b/core/java/src/net/i2p/data/DataHelper.java index bd6bf260d..2e74adce3 100644 --- a/core/java/src/net/i2p/data/DataHelper.java +++ b/core/java/src/net/i2p/data/DataHelper.java @@ -31,6 +31,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.Comparator; import java.util.Date; import java.util.Iterator; import java.util.List; @@ -1040,25 +1041,45 @@ public class DataHelper { } /** - * Sort based on the Hash of the DataStructure + * Sort based on the Hash of the DataStructure. * Warning - relatively slow. - * Only used by RouterInfo - * Why? Just because it has to be consistent so signing will work? + * WARNING - this sort order must be consistent network-wide, so while the order is arbitrary, + * it cannot be changed. + * Why? Just because it has to be consistent so signing will work. * How to spec as returning the same type as the param? + * DEPRECATED - Only used by RouterInfo. */ public static List<? extends DataStructure> sortStructures(Collection<? extends DataStructure> dataStructures) { if (dataStructures == null) return Collections.EMPTY_LIST; - ArrayList<DataStructure> rv = new ArrayList(dataStructures.size()); - TreeMap<String, DataStructure> tm = new TreeMap(); - for (DataStructure struct : dataStructures) { - tm.put(struct.calculateHash().toString(), struct); - } - for (DataStructure struct : tm.values()) { - rv.add(struct); - } + + // This used to use Hash.toString(), which is insane, since a change to toString() + // would break the whole network. Now use Hash.toBase64(). + // Note that the Base64 sort order is NOT the same as the raw byte sort order, + // despite what you may read elsewhere. + + //ArrayList<DataStructure> rv = new ArrayList(dataStructures.size()); + //TreeMap<String, DataStructure> tm = new TreeMap(); + //for (DataStructure struct : dataStructures) { + // tm.put(struct.calculateHash().toString(), struct); + //} + //for (DataStructure struct : tm.values()) { + // rv.add(struct); + //} + ArrayList<DataStructure> rv = new ArrayList(dataStructures); + Collections.sort(rv, new DataStructureComparator()); return rv; } + /** + * See sortStructures() comments. + * @since 0.8.3 + */ + private static class DataStructureComparator implements Comparator<DataStructure> { + public int compare(DataStructure l, DataStructure r) { + return l.calculateHash().toBase64().compareTo(r.calculateHash().toBase64()); + } + } + /** * NOTE: formatDuration2() recommended in most cases for readability */ diff --git a/core/java/src/net/i2p/data/RouterAddress.java b/core/java/src/net/i2p/data/RouterAddress.java index 1b4d6438f..647104574 100644 --- a/core/java/src/net/i2p/data/RouterAddress.java +++ b/core/java/src/net/i2p/data/RouterAddress.java @@ -131,10 +131,13 @@ public class RouterAddress extends DataStructureImpl { && DataHelper.eq(_transportStyle, addr.getTransportStyle()); } - /** the style should be sufficient, for speed */ + /** + * Just use style and hashCode for speed (expiration is always null). + * If we add multiple addresses of the same style, this may need to be changed. + */ @Override public int hashCode() { - return DataHelper.hashCode(_transportStyle); + return DataHelper.hashCode(_transportStyle) ^ _cost; } /** diff --git a/core/java/src/net/i2p/data/RouterInfo.java b/core/java/src/net/i2p/data/RouterInfo.java index 9c6db01f9..b4aae94b1 100644 --- a/core/java/src/net/i2p/data/RouterInfo.java +++ b/core/java/src/net/i2p/data/RouterInfo.java @@ -14,6 +14,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Collection; +import java.util.Collections; import java.util.Date; import java.util.HashSet; import java.util.Iterator; @@ -39,7 +40,8 @@ public class RouterInfo extends DatabaseEntry { private RouterIdentity _identity; private volatile long _published; private final Set<RouterAddress> _addresses; - private final Set<Hash> _peers; + /** may be null to save memory, no longer final */ + private Set<Hash> _peers; private /* FIXME final FIXME */ Properties _options; private volatile boolean _validated; private volatile boolean _isValid; @@ -47,6 +49,10 @@ public class RouterInfo extends DatabaseEntry { private volatile byte _byteified[]; private volatile int _hashCode; private volatile boolean _hashCodeInitialized; + /** should we cache the byte and string versions _byteified ? **/ + private boolean _shouldCache; + /** maybe we should check if we are floodfill? */ + private static final boolean CACHE_ALL = Runtime.getRuntime().maxMemory() > 128*1024*1024l; public static final String PROP_NETWORK_ID = "netId"; public static final String PROP_CAPABILITIES = "caps"; @@ -58,7 +64,6 @@ public class RouterInfo extends DatabaseEntry { public RouterInfo() { _addresses = new HashSet(2); - _peers = new HashSet(0); _options = new OrderedProperties(); } @@ -70,6 +75,7 @@ public class RouterInfo extends DatabaseEntry { setPeers(old.getPeers()); setOptions(old.getOptions()); setSignature(old.getSignature()); + // copy over _byteified? } public long getDate() { @@ -105,6 +111,11 @@ public class RouterInfo extends DatabaseEntry { public void setIdentity(RouterIdentity ident) { _identity = ident; resetCache(); + // We only want to cache the bytes for our own RI, which is frequently written. + // To cache for all RIs doubles the RI memory usage. + // setIdentity() is only called when we are creating our own RI. + // Otherwise, the data is populated with readBytes(). + _shouldCache = true; } /** @@ -159,6 +170,8 @@ public class RouterInfo extends DatabaseEntry { * @deprecated Implemented here but unused elsewhere */ public Set<Hash> getPeers() { + if (_peers == null) + return Collections.EMPTY_SET; return _peers; } @@ -169,9 +182,15 @@ public class RouterInfo extends DatabaseEntry { * @deprecated Implemented here but unused elsewhere */ public void setPeers(Set<Hash> peers) { + if (peers == null || peers.isEmpty()) { + _peers = null; + return; + } + if (_peers == null) + _peers = new HashSet(2); synchronized (_peers) { _peers.clear(); - if (peers != null) _peers.addAll(peers); + _peers.addAll(peers); } resetCache(); } @@ -223,7 +242,6 @@ public class RouterInfo extends DatabaseEntry { if (_byteified != null) return _byteified; if (_identity == null) throw new DataFormatException("Router identity isn't set? wtf!"); if (_addresses == null) throw new DataFormatException("Router addressess isn't set? wtf!"); - if (_peers == null) throw new DataFormatException("Router peers isn't set? wtf!"); if (_options == null) throw new DataFormatException("Router options isn't set? wtf!"); long before = Clock.getInstance().now(); @@ -239,6 +257,9 @@ public class RouterInfo extends DatabaseEntry { DataHelper.writeLong(out, 1, sz); Collection<RouterAddress> addresses = _addresses; if (sz > 1) + // WARNING this sort algorithm cannot be changed, as it must be consistent + // network-wide. The signature is not checked at readin time, but only + // later, and the addresses are stored in a Set, not a List. addresses = (Collection<RouterAddress>) DataHelper.sortStructures(addresses); for (RouterAddress addr : addresses) { addr.writeBytes(out); @@ -248,12 +269,14 @@ public class RouterInfo extends DatabaseEntry { // answer: they're always empty... they're a placeholder for one particular // method of trusted links, which isn't implemented in the router // at the moment, and may not be later. - // fixme to reduce objects - allow _peers == null - int psz = _peers.size(); + int psz = _peers == null ? 0 : _peers.size(); DataHelper.writeLong(out, 1, psz); if (psz > 0) { Collection<Hash> peers = _peers; if (psz > 1) + // WARNING this sort algorithm cannot be changed, as it must be consistent + // network-wide. The signature is not checked at readin time, but only + // later, and the hashes are stored in a Set, not a List. peers = (Collection<Hash>) DataHelper.sortStructures(peers); for (Hash peerHash : peers) { peerHash.writeBytes(out); @@ -266,7 +289,8 @@ public class RouterInfo extends DatabaseEntry { byte data[] = out.toByteArray(); long after = Clock.getInstance().now(); _log.debug("getBytes() took " + (after - before) + "ms"); - _byteified = data; + if (CACHE_ALL || _shouldCache) + _byteified = data; return data; } @@ -466,10 +490,15 @@ public class RouterInfo extends DatabaseEntry { _addresses.add(address); } int numPeers = (int) DataHelper.readLong(in, 1); - for (int i = 0; i < numPeers; i++) { - Hash peerIdentityHash = new Hash(); - peerIdentityHash.readBytes(in); - _peers.add(peerIdentityHash); + if (numPeers == 0) { + _peers = null; + } else { + _peers = new HashSet(numPeers); + for (int i = 0; i < numPeers; i++) { + Hash peerIdentityHash = new Hash(); + peerIdentityHash.readBytes(in); + _peers.add(peerIdentityHash); + } } _options = DataHelper.readProperties(in); _signature = new Signature(); @@ -504,7 +533,7 @@ public class RouterInfo extends DatabaseEntry { && _published == info.getPublished() && DataHelper.eq(_addresses, info.getAddresses()) && DataHelper.eq(_options, info.getOptions()) - && DataHelper.eq(_peers, info.getPeers()); + && DataHelper.eq(getPeers(), info.getPeers()); } @Override @@ -530,7 +559,7 @@ public class RouterInfo extends DatabaseEntry { RouterAddress addr = (RouterAddress) iter.next(); buf.append("\n\t\tAddress: ").append(addr); } - Set peers = _peers; // getPeers() + Set peers = getPeers(); buf.append("\n\tPeers: #: ").append(peers.size()); for (Iterator iter = peers.iterator(); iter.hasNext();) { Hash hash = (Hash) iter.next(); From 9a63be8f6943c46039444c25e2552796ee6e00af Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 9 Jan 2011 01:03:05 +0000 Subject: [PATCH 044/463] * NetDB: Don't rescan netDb directory unless changed, to reduce Hash cache thrash (backport from test4) --- .../KademliaNetworkDatabaseFacade.java | 6 +- .../kademlia/PersistentDataStore.java | 57 +++++++++++-------- 2 files changed, 39 insertions(+), 24 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 0ae718104..e9e81b542 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java @@ -247,7 +247,11 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { _enforceNetId = DEFAULT_ENFORCE_NETID; _kb = new KBucketSet(_context, ri.getIdentity().getHash()); - _ds = new PersistentDataStore(_context, dbDir, this); + try { + _ds = new PersistentDataStore(_context, dbDir, this); + } catch (IOException ioe) { + throw new RuntimeException("Unable to initialize netdb storage", ioe); + } //_ds = new TransientDataStore(); // _exploreKeys = new HashSet(64); _dbDir = dbDir; diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java b/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java index 429489cf0..064aac520 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java @@ -39,19 +39,22 @@ import net.i2p.util.SecureFileOutputStream; * */ class PersistentDataStore extends TransientDataStore { - private Log _log; - private String _dbDir; - private KademliaNetworkDatabaseFacade _facade; - private Writer _writer; - private ReadJob _readJob; + private final Log _log; + private final File _dbDir; + private final KademliaNetworkDatabaseFacade _facade; + private final Writer _writer; + private final ReadJob _readJob; private boolean _initialized; private final static int READ_DELAY = 60*1000; - public PersistentDataStore(RouterContext ctx, String dbDir, KademliaNetworkDatabaseFacade facade) { + /** + * @param dbDir relative path + */ + public PersistentDataStore(RouterContext ctx, String dbDir, KademliaNetworkDatabaseFacade facade) throws IOException { super(ctx); _log = ctx.logManager().getLog(PersistentDataStore.class); - _dbDir = dbDir; + _dbDir = getDbDir(dbDir); _facade = facade; _readJob = new ReadJob(); _context.jobQueue().addJob(_readJob); @@ -79,7 +82,6 @@ class PersistentDataStore extends TransientDataStore { @Override public void restart() { super.restart(); - _dbDir = _facade.getDbDir(); } @Override @@ -160,8 +162,7 @@ class PersistentDataStore extends TransientDataStore { if (_log.shouldLog(Log.INFO)) _log.info("Removing key " + _key /* , getAddedBy() */); try { - File dbDir = getDbDir(); - removeFile(_key, dbDir); + removeFile(_key, _dbDir); } catch (IOException ioe) { _log.error("Error removing key " + _key, ioe); } @@ -236,7 +237,10 @@ class PersistentDataStore extends TransientDataStore { if (key != null) { if (data != null) { - write(key, data); + // synch with the reader job + synchronized (_dbDir) { + write(key, data); + } data = null; } key = null; @@ -278,7 +282,6 @@ class PersistentDataStore extends TransientDataStore { File dbFile = null; try { String filename = null; - File dbDir = getDbDir(); if (data instanceof LeaseSet) filename = getLeaseSetName(key); @@ -287,7 +290,7 @@ class PersistentDataStore extends TransientDataStore { else throw new IOException("We don't know how to write objects of type " + data.getClass().getName()); - dbFile = new File(dbDir, filename); + dbFile = new File(_dbDir, filename); long dataPublishDate = getPublishDate(data); if (dbFile.lastModified() < dataPublishDate) { // our filesystem is out of date, lets replace it @@ -326,14 +329,26 @@ class PersistentDataStore extends TransientDataStore { /** This is only for manual reseeding? Why bother every 60 sec??? */ private class ReadJob extends JobImpl { private boolean _alreadyWarned; + private long _lastModified; + public ReadJob() { super(PersistentDataStore.this._context); _alreadyWarned = false; } + public String getName() { return "DB Read Job"; } + public void runJob() { - _log.info("Rereading new files"); - readFiles(); + // check directory mod time to save a lot of object churn in scanning all the file names + long lastMod = _dbDir.lastModified(); + if (lastMod > _lastModified) { + _lastModified = lastMod; + _log.info("Rereading new files"); + // synch with the writer job + synchronized (_dbDir) { + readFiles(); + } + } requeue(READ_DELAY); } @@ -343,9 +358,8 @@ class PersistentDataStore extends TransientDataStore { private void readFiles() { int routerCount = 0; - try { - File dbDir = getDbDir(); - File routerInfoFiles[] = dbDir.listFiles(RouterInfoFilter.getInstance()); + + File routerInfoFiles[] = _dbDir.listFiles(RouterInfoFilter.getInstance()); if (routerInfoFiles != null) { routerCount += routerInfoFiles.length; if (routerInfoFiles.length > 5) @@ -360,9 +374,6 @@ class PersistentDataStore extends TransientDataStore { } } } - } catch (IOException ioe) { - _log.error("Error reading files in the db dir", ioe); - } if (!_alreadyWarned) { ReseedChecker.checkReseed(_context, routerCount); @@ -442,8 +453,8 @@ class PersistentDataStore extends TransientDataStore { } - private File getDbDir() throws IOException { - File f = new SecureDirectory(_context.getRouterDir(), _dbDir); + private File getDbDir(String dbDir) throws IOException { + File f = new SecureDirectory(_context.getRouterDir(), dbDir); if (!f.exists()) { boolean created = f.mkdirs(); if (!created) From fd4e4fbc64d665b1f05fc4388a693121f58c006f Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 9 Jan 2011 01:04:06 +0000 Subject: [PATCH 045/463] * Data Structures: More caching improvements, don't cache where we shouldn't --- .../src/net/i2p/crypto/SHA256Generator.java | 11 ++++- .../net/i2p/data/i2np/I2NPMessageImpl.java | 43 +++++++++++++++---- .../i2p/router/tunnel/FragmentHandler.java | 9 ++-- 3 files changed, 51 insertions(+), 12 deletions(-) diff --git a/core/java/src/net/i2p/crypto/SHA256Generator.java b/core/java/src/net/i2p/crypto/SHA256Generator.java index 8d5b6957b..87955646b 100644 --- a/core/java/src/net/i2p/crypto/SHA256Generator.java +++ b/core/java/src/net/i2p/crypto/SHA256Generator.java @@ -23,13 +23,18 @@ public final class SHA256Generator { return I2PAppContext.getGlobalContext().sha(); } - /** Calculate the SHA-256 has of the source + /** + * Calculate the SHA-256 hash of the source and cache the result. * @param source what to hash * @return hash of the source */ public final Hash calculateHash(byte[] source) { return calculateHash(source, 0, source.length); } + + /** + * Calculate the hash and cache the result. + */ public final Hash calculateHash(byte[] source, int start, int len) { Sha256Standalone digest = acquireGnu(); digest.update(source, start, len); @@ -39,6 +44,10 @@ public final class SHA256Generator { return Hash.create(rv); } + /** + * Use this if you only need the data, not a Hash object. + * Does not cache. + */ public final void calculateHash(byte[] source, int start, int len, byte out[], int outOffset) { Sha256Standalone digest = acquireGnu(); digest.update(source, start, len); diff --git a/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java b/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java index 6b4ab71f4..babf99dae 100644 --- a/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java +++ b/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java @@ -20,6 +20,7 @@ import net.i2p.data.DataHelper; import net.i2p.data.DataStructureImpl; import net.i2p.data.Hash; import net.i2p.util.Log; +import net.i2p.util.SimpleByteCache; /** * Defines the base message implementation. @@ -72,6 +73,7 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM * Read the header, then read the rest into buffer, then call * readMessage in the implemented message type * + *<pre> * Specifically: * 1 byte type (if caller didn't read already, as specified by the type param * 4 byte ID @@ -79,9 +81,11 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM * 2 byte size * 1 byte checksum * size bytes of payload (read by readMessage() in implementation) + *</pre> * * @param type the message type or -1 if we should read it here * @param buffer temp buffer to use + * @return total length of the message */ public int readBytes(InputStream in, int type, byte buffer[]) throws I2NPMessageException, IOException { try { @@ -110,9 +114,11 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM cur += numRead; } - Hash calc = _context.sha().calculateHash(buffer, 0, size); + byte[] calc = SimpleByteCache.acquire(Hash.HASH_LENGTH); + _context.sha().calculateHash(buffer, 0, size, calc, 0); //boolean eq = calc.equals(h); - boolean eq = DataHelper.eq(checksum, 0, calc.getData(), 0, CHECKSUM_LENGTH); + boolean eq = DataHelper.eq(checksum, 0, calc, 0, CHECKSUM_LENGTH); + SimpleByteCache.release(calc); if (!eq) throw new I2NPMessageException("Hash does not match for " + getClass().getName()); @@ -123,11 +129,29 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM //long time = _context.clock().now() - start; //if (time > 50) // _context.statManager().addRateData("i2np.readTime", time, time); - return size + Hash.HASH_LENGTH + 1 + 4 + DataHelper.DATE_LENGTH; + return CHECKSUM_LENGTH + 1 + 2 + 4 + DataHelper.DATE_LENGTH + size; } catch (DataFormatException dfe) { throw new I2NPMessageException("Error reading the message header", dfe); } } + + /** + * Read the header, then read the rest into buffer, then call + * readMessage in the implemented message type + * + *<pre> + * Specifically: + * 1 byte type (if caller didn't read already, as specified by the type param + * 4 byte ID + * 8 byte expiration + * 2 byte size + * 1 byte checksum + * size bytes of payload (read by readMessage() in implementation) + *</pre> + * + * @param type the message type or -1 if we should read it here + * @return total length of the message + */ public int readBytes(byte data[], int type, int offset) throws I2NPMessageException, IOException { int cur = offset; if (type < 0) { @@ -153,9 +177,10 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM + " cur=" + cur + " wanted=" + size + "]: " + getClass().getName()); - Hash calc = _context.sha().calculateHash(data, cur, size); - //boolean eq = calc.equals(h); - boolean eq = DataHelper.eq(hdata, 0, calc.getData(), 0, CHECKSUM_LENGTH); + byte[] calc = SimpleByteCache.acquire(Hash.HASH_LENGTH); + _context.sha().calculateHash(data, cur, size, calc, 0); + boolean eq = DataHelper.eq(hdata, 0, calc, 0, CHECKSUM_LENGTH); + SimpleByteCache.release(calc); if (!eq) throw new I2NPMessageException("Hash does not match for " + getClass().getName()); @@ -231,7 +256,8 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM try { int writtenLen = writeMessageBody(buffer, prefixLen); int payloadLen = writtenLen - prefixLen; - Hash h = _context.sha().calculateHash(buffer, prefixLen, payloadLen); + byte[] h = SimpleByteCache.acquire(Hash.HASH_LENGTH); + _context.sha().calculateHash(buffer, prefixLen, payloadLen, h, 0); int off = 0; DataHelper.toLong(buffer, off, 1, getType()); @@ -242,7 +268,8 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM off += DataHelper.DATE_LENGTH; DataHelper.toLong(buffer, off, 2, payloadLen); off += 2; - System.arraycopy(h.getData(), 0, buffer, off, CHECKSUM_LENGTH); + System.arraycopy(h, 0, buffer, off, CHECKSUM_LENGTH); + SimpleByteCache.release(h); //long time = _context.clock().now() - start; //if (time > 50) diff --git a/router/java/src/net/i2p/router/tunnel/FragmentHandler.java b/router/java/src/net/i2p/router/tunnel/FragmentHandler.java index 7948c5387..b21ecc48c 100644 --- a/router/java/src/net/i2p/router/tunnel/FragmentHandler.java +++ b/router/java/src/net/i2p/router/tunnel/FragmentHandler.java @@ -15,6 +15,7 @@ import net.i2p.data.i2np.I2NPMessageHandler; import net.i2p.router.RouterContext; import net.i2p.util.ByteCache; import net.i2p.util.Log; +import net.i2p.util.SimpleByteCache; import net.i2p.util.SimpleTimer; /** @@ -241,19 +242,21 @@ public class FragmentHandler { if (_log.shouldLog(Log.DEBUG)) _log.debug("endpoint IV: " + Base64.encode(preV, validLength - HopProcessor.IV_LENGTH, HopProcessor.IV_LENGTH)); - Hash v = _context.sha().calculateHash(preV, 0, validLength); + byte[] v = SimpleByteCache.acquire(Hash.HASH_LENGTH); + _context.sha().calculateHash(preV, 0, validLength, v, 0); _validateCache.release(ba); - boolean eq = DataHelper.eq(v.getData(), 0, preprocessed, offset + HopProcessor.IV_LENGTH, 4); + boolean eq = DataHelper.eq(v, 0, preprocessed, offset + HopProcessor.IV_LENGTH, 4); if (!eq) { if (_log.shouldLog(Log.WARN)) { _log.warn("Corrupt tunnel message - verification fails: " + Base64.encode(preprocessed, offset+HopProcessor.IV_LENGTH, 4) - + " != " + Base64.encode(v.getData(), 0, 4)); + + " != " + Base64.encode(v, 0, 4)); _log.warn("No matching endpoint: # pad bytes: " + (paddingEnd-(HopProcessor.IV_LENGTH+4)-1) + " offset=" + offset + " length=" + length + " paddingEnd=" + paddingEnd + ' ' + Base64.encode(preprocessed, offset, length), new Exception("trace")); } } + SimpleByteCache.release(v); if (eq) { int excessPadding = paddingEnd - (HopProcessor.IV_LENGTH + 4 + 1); From a51ae64e41dd2f6616410b908bb873438712182c Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 9 Jan 2011 01:06:05 +0000 Subject: [PATCH 046/463] build tweak --- build.xml | 2 +- history.txt | 9 +++++++++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/build.xml b/build.xml index 9c8fa4c4f..83676a7c3 100644 --- a/build.xml +++ b/build.xml @@ -755,7 +755,7 @@ </target> <target name="findbugs" depends="build2"> <echo message="Starting findbugs, this will take a while..." /> - <exec executable="nice"> + <exec executable="nice" failonerror="true"> <arg value="findbugs"/> <arg value="-textui"/> <arg value="-projectName"/> diff --git a/history.txt b/history.txt index 187b3623a..118de8648 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,12 @@ +2011-01-09 zzz + * DataHelper: Speed up and annotate sortStructures() + * Data Structures: More caching improvements, don't cache where we shouldn't + * NetDB: Don't rescan netDb directory unless changed, + to reduce Hash cache thrash (backport from test4) + * RouterInfo: + - Don't cache byteified data by default, to save ~1.5 MB + - Don't create empty peers Set, to save ~100KB + 2011-01-07 zzz * Data Structures: More caching * i2psnark: Improve request tracking to reduce memory usage diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index f2522cd4e..7ca1a3ec2 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 = 9; + public final static long BUILD = 10; /** for example "-test" */ public final static String EXTRA = ""; From 2a85263259ac29218de9ec92210db2337a1f9c97 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Mon, 10 Jan 2011 15:43:04 +0000 Subject: [PATCH 047/463] findbugs udp --- .../net/i2p/router/transport/udp/UDPAddress.java | 15 ++++++++------- .../i2p/router/transport/udp/UDPTransport.java | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/router/java/src/net/i2p/router/transport/udp/UDPAddress.java b/router/java/src/net/i2p/router/transport/udp/UDPAddress.java index 6db0b1c6c..bcee07605 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPAddress.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPAddress.java @@ -10,6 +10,7 @@ import net.i2p.data.SessionKey; /** * basic helper to parse out peer info from a udp address + * FIXME public for ConfigNetHelper */ public class UDPAddress { private String _host; @@ -152,7 +153,7 @@ public class UDPAddress { } public String getHost() { return _host; } - public InetAddress getHostAddress() { + InetAddress getHostAddress() { if (_hostAddress == null) { try { _hostAddress = InetAddress.getByName(_host); @@ -163,10 +164,10 @@ public class UDPAddress { return _hostAddress; } public int getPort() { return _port; } - public byte[] getIntroKey() { return _introKey; } + byte[] getIntroKey() { return _introKey; } - public int getIntroducerCount() { return (_introAddresses == null ? 0 : _introAddresses.length); } - public InetAddress getIntroducerHost(int i) { + int getIntroducerCount() { return (_introAddresses == null ? 0 : _introAddresses.length); } + InetAddress getIntroducerHost(int i) { if (_introAddresses[i] == null) { try { _introAddresses[i] = InetAddress.getByName(_introHosts[i]); @@ -176,8 +177,8 @@ public class UDPAddress { } return _introAddresses[i]; } - public int getIntroducerPort(int i) { return _introPorts[i]; } - public byte[] getIntroducerKey(int i) { return _introKeys[i]; } - public long getIntroducerTag(int i) { return _introTags[i]; } + int getIntroducerPort(int i) { return _introPorts[i]; } + byte[] getIntroducerKey(int i) { return _introKeys[i]; } + long getIntroducerTag(int i) { return _introTags[i]; } } 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 9aac88523..8cad7bb0a 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java @@ -157,7 +157,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority public static final int DEFAULT_COST = 5; private static final int TEST_FREQUENCY = 13*60*1000; - public static final long[] RATES = { 10*60*1000 }; + static final long[] RATES = { 10*60*1000 }; private static final int[] BID_VALUES = { 15, 20, 50, 65, 80, 95, 100, 115, TransportBid.TRANSIENT_FAIL }; private static final int FAST_PREFERRED_BID = 0; From f68c09522230a218888a2c61c29769674f6cab19 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Mon, 10 Jan 2011 15:45:20 +0000 Subject: [PATCH 048/463] findbugs util (includes ticket #370) --- core/java/src/net/i2p/util/EepGet.java | 62 ++++++++++++------- core/java/src/net/i2p/util/EepPost.java | 5 +- core/java/src/net/i2p/util/FileUtil.java | 29 +++++---- core/java/src/net/i2p/util/Log.java | 3 +- core/java/src/net/i2p/util/LogManager.java | 11 ++-- .../src/net/i2p/util/LogRecordFormatter.java | 3 + .../net/i2p/util/LookaheadInputStream.java | 2 + core/java/src/net/i2p/util/SSLEepGet.java | 23 ++++--- core/java/src/net/i2p/util/ShellCommand.java | 8 +-- core/java/src/net/i2p/util/SimpleTimer.java | 2 +- core/java/src/net/i2p/util/SimpleTimer2.java | 2 +- 11 files changed, 95 insertions(+), 55 deletions(-) diff --git a/core/java/src/net/i2p/util/EepGet.java b/core/java/src/net/i2p/util/EepGet.java index f055ce98c..3ad84e6bb 100644 --- a/core/java/src/net/i2p/util/EepGet.java +++ b/core/java/src/net/i2p/util/EepGet.java @@ -430,29 +430,33 @@ public class EepGet { _log.debug("Fetching (proxied? " + _shouldProxy + ") url=" + _actualURL); while (_keepFetching) { SocketTimeout timeout = null; - if (_fetchHeaderTimeout > 0) + if (_fetchHeaderTimeout > 0) { timeout = new SocketTimeout(_fetchHeaderTimeout); - final SocketTimeout stimeout = timeout; // ugly - why not use sotimeout? - timeout.setTimeoutCommand(new Runnable() { - public void run() { - if (_log.shouldLog(Log.DEBUG)) - _log.debug("timeout reached on " + _url + ": " + stimeout); - _aborted = true; - } - }); - timeout.setTotalTimeoutPeriod(_fetchEndTime); + final SocketTimeout stimeout = timeout; // ugly - why not use sotimeout? + timeout.setTimeoutCommand(new Runnable() { + public void run() { + if (_log.shouldLog(Log.DEBUG)) + _log.debug("timeout reached on " + _url + ": " + stimeout); + _aborted = true; + } + }); + timeout.setTotalTimeoutPeriod(_fetchEndTime); + } try { for (int i = 0; i < _listeners.size(); i++) _listeners.get(i).attempting(_url); sendRequest(timeout); - timeout.resetTimer(); + if (timeout != null) + timeout.resetTimer(); doFetch(timeout); - timeout.cancel(); + if (timeout != null) + timeout.cancel(); if (!_transferFailed) return true; break; } catch (IOException ioe) { - timeout.cancel(); + if (timeout != null) + timeout.cancel(); for (int i = 0; i < _listeners.size(); i++) _listeners.get(i).attemptFailed(_url, _bytesTransferred, _bytesRemaining, _currentAttempt, _numRetries, ioe); if (_log.shouldLog(Log.WARN)) @@ -492,7 +496,10 @@ public class EepGet { return false; } - /** single fetch */ + /** + * single fetch + * @param timeout may be null + */ protected void doFetch(SocketTimeout timeout) throws IOException { _headersRead = false; _aborted = false; @@ -504,11 +511,13 @@ public class EepGet { if (_aborted) throw new IOException("Timed out reading the HTTP headers"); - timeout.resetTimer(); - if (_fetchInactivityTimeout > 0) - timeout.setInactivityTimeout(_fetchInactivityTimeout); - else - timeout.setInactivityTimeout(INACTIVITY_TIMEOUT); + if (timeout != null) { + timeout.resetTimer(); + if (_fetchInactivityTimeout > 0) + timeout.setInactivityTimeout(_fetchInactivityTimeout); + else + timeout.setInactivityTimeout(INACTIVITY_TIMEOUT); + } if (_redirectLocation != null) { //try { @@ -571,7 +580,8 @@ public class EepGet { int read = _proxyIn.read(buf, 0, toRead); if (read == -1) break; - timeout.resetTimer(); + if (timeout != null) + timeout.resetTimer(); _out.write(buf, 0, read); _bytesTransferred += read; if ((_maxSize > -1) && (_alreadyTransferred + read > _maxSize)) // could transfer a little over maxSize @@ -597,7 +607,8 @@ public class EepGet { read++; } } - timeout.resetTimer(); + if (timeout != null) + timeout.resetTimer(); if (_bytesRemaining >= read) // else chunked? _bytesRemaining -= read; if (read > 0) { @@ -622,7 +633,8 @@ public class EepGet { if (_aborted) throw new IOException("Timed out reading the HTTP data"); - timeout.cancel(); + if (timeout != null) + timeout.cancel(); if (_log.shouldLog(Log.DEBUG)) _log.debug("Done transferring " + _bytesTransferred + " (ok? " + !_transferFailed + ")"); @@ -867,6 +879,9 @@ public class EepGet { private static final byte NL = '\n'; private static boolean isNL(byte b) { return (b == NL); } + /** + * @param timeout may be null + */ protected void sendRequest(SocketTimeout timeout) throws IOException { if (_outputStream != null) { // We are reading into a stream supplied by a caller, @@ -907,7 +922,8 @@ public class EepGet { _proxyIn = _proxy.getInputStream(); _proxyOut = _proxy.getOutputStream(); - timeout.setSocket(_proxy); + if (timeout != null) + timeout.setSocket(_proxy); _proxyOut.write(DataHelper.getUTF8(req)); _proxyOut.flush(); diff --git a/core/java/src/net/i2p/util/EepPost.java b/core/java/src/net/i2p/util/EepPost.java index 615361e20..2e7836f62 100644 --- a/core/java/src/net/i2p/util/EepPost.java +++ b/core/java/src/net/i2p/util/EepPost.java @@ -31,6 +31,7 @@ public class EepPost { _log = ctx.logManager().getLog(EepPost.class); } +/***** public static void main(String args[]) { EepPost e = new EepPost(); Map fields = new HashMap(); @@ -47,6 +48,8 @@ public class EepPost { //e.postFiles("http://localhost/cgi-bin/read.pl", null, -1, fields, null); //e.postFiles("http://localhost:2001/import.jsp", null, -1, fields, null); } +*****/ + /** * Submit an HTTP POST to the given URL (using the proxy if specified), * uploading the given fields. If the field's value is a File object, then @@ -117,7 +120,7 @@ public class EepPost { } } out.close(); - } catch (Exception e) { + } catch (IOException e) { e.printStackTrace(); } finally { if (s != null) try { s.close(); } catch (IOException ioe) {} diff --git a/core/java/src/net/i2p/util/FileUtil.java b/core/java/src/net/i2p/util/FileUtil.java index b5bb48a43..68ce4e4f6 100644 --- a/core/java/src/net/i2p/util/FileUtil.java +++ b/core/java/src/net/i2p/util/FileUtil.java @@ -122,24 +122,24 @@ public class FileUtil { } } } else { + InputStream in = null; + FileOutputStream fos = null; + JarOutputStream jos = null; try { - InputStream in = zip.getInputStream(entry); + in = zip.getInputStream(entry); if (entry.getName().endsWith(".jar.pack") || entry.getName().endsWith(".war.pack")) { target = new File(targetDir, entry.getName().substring(0, entry.getName().length() - ".pack".length())); - JarOutputStream fos = new JarOutputStream(new FileOutputStream(target)); - unpack(in, fos); - fos.close(); + jos = new JarOutputStream(new FileOutputStream(target)); + unpack(in, jos); System.err.println("INFO: File [" + entry.getName() + "] extracted and unpacked"); } else { - FileOutputStream fos = new FileOutputStream(target); + fos = new FileOutputStream(target); int read = 0; while ( (read = in.read(buf)) != -1) { fos.write(buf, 0, read); } - fos.close(); System.err.println("INFO: File [" + entry.getName() + "] extracted"); } - in.close(); } catch (IOException ioe) { System.err.println("ERROR: Error extracting the zip entry (" + entry.getName() + ')'); if (ioe.getMessage() != null && ioe.getMessage().indexOf("CAFED00D") >= 0) @@ -151,6 +151,10 @@ public class FileUtil { System.err.println("ERROR: Error unpacking the zip entry (" + entry.getName() + "), your JVM does not support unpack200"); return false; + } finally { + try { if (in != null) in.close(); } catch (IOException ioe) {} + try { if (fos != null) fos.close(); } catch (IOException ioe) {} + try { if (jos != null) jos.close(); } catch (IOException ioe) {} } } } @@ -401,21 +405,24 @@ public class FileUtil { if (dst.exists() && !overwriteExisting) return false; byte buf[] = new byte[4096]; + InputStream in = null; + OutputStream out = null; try { - FileInputStream in = new FileInputStream(src); - FileOutputStream out = new FileOutputStream(dst); + in = new FileInputStream(src); + out = new FileOutputStream(dst); int read = 0; while ( (read = in.read(buf)) != -1) out.write(buf, 0, read); - in.close(); - out.close(); return true; } catch (IOException ioe) { if (!quiet) ioe.printStackTrace(); return false; + } finally { + try { if (in != null) in.close(); } catch (IOException ioe) {} + try { if (out != null) out.close(); } catch (IOException ioe) {} } } diff --git a/core/java/src/net/i2p/util/Log.java b/core/java/src/net/i2p/util/Log.java index b22325adb..6ce320c9d 100644 --- a/core/java/src/net/i2p/util/Log.java +++ b/core/java/src/net/i2p/util/Log.java @@ -205,7 +205,8 @@ public class Log { } @Override public boolean equals(Object obj) { - if (obj == null) throw new NullPointerException("Null object scope?"); + if (obj == null) + return false; if (obj instanceof LogScope) { LogScope s = (LogScope)obj; return s._scopeCache.equals(_scopeCache); diff --git a/core/java/src/net/i2p/util/LogManager.java b/core/java/src/net/i2p/util/LogManager.java index 49eaf291f..8a9549724 100644 --- a/core/java/src/net/i2p/util/LogManager.java +++ b/core/java/src/net/i2p/util/LogManager.java @@ -164,8 +164,10 @@ public class LogManager { Log rv = _logs.get(scope); if (rv == null) { rv = new Log(this, cls, name); - _logs.putIfAbsent(scope, rv); - isNew = true; + Log old = _logs.putIfAbsent(scope, rv); + isNew = old == null; + if (!isNew) + rv = old; } if (isNew) updateLimit(rv); @@ -178,8 +180,9 @@ public class LogManager { } void addLog(Log log) { - _logs.putIfAbsent(log.getScope(), log); - updateLimit(log); + Log old = _logs.putIfAbsent(log.getScope(), log); + if (old == null) + updateLimit(log); } public LogConsoleBuffer getBuffer() { return _consoleBuffer; } diff --git a/core/java/src/net/i2p/util/LogRecordFormatter.java b/core/java/src/net/i2p/util/LogRecordFormatter.java index 52583b63c..58d08af74 100644 --- a/core/java/src/net/i2p/util/LogRecordFormatter.java +++ b/core/java/src/net/i2p/util/LogRecordFormatter.java @@ -92,10 +92,13 @@ class LogRecordFormatter { } /** don't translate */ +/**** private static String getPriority(LogRecord rec) { return toString(Log.toLevelString(rec.getPriority()), MAX_PRIORITY_LENGTH); } +****/ + /** */ private static final String BUNDLE_NAME = "net.i2p.router.web.messages"; /** translate @since 0.7.14 */ diff --git a/core/java/src/net/i2p/util/LookaheadInputStream.java b/core/java/src/net/i2p/util/LookaheadInputStream.java index 7b23d26ae..d9a1d9f93 100644 --- a/core/java/src/net/i2p/util/LookaheadInputStream.java +++ b/core/java/src/net/i2p/util/LookaheadInputStream.java @@ -78,6 +78,7 @@ public class LookaheadInputStream extends FilterInputStream { /** grab the lookahead footer */ public byte[] getFooter() { return _footerLookahead; } +/******* public static void main(String args[]) { byte buf[] = new byte[32]; for (int i = 0; i < 32; i++) @@ -128,4 +129,5 @@ public class LookaheadInputStream extends FilterInputStream { return false; } } +******/ } diff --git a/core/java/src/net/i2p/util/SSLEepGet.java b/core/java/src/net/i2p/util/SSLEepGet.java index e3ba43ae7..d35545ae7 100644 --- a/core/java/src/net/i2p/util/SSLEepGet.java +++ b/core/java/src/net/i2p/util/SSLEepGet.java @@ -482,12 +482,14 @@ public class SSLEepGet extends EepGet { if (_aborted) throw new IOException("Timed out reading the HTTP headers"); - timeout.resetTimer(); - if (_fetchInactivityTimeout > 0) - timeout.setInactivityTimeout(_fetchInactivityTimeout); - else - timeout.setInactivityTimeout(60*1000); - + if (timeout != null) { + timeout.resetTimer(); + if (_fetchInactivityTimeout > 0) + timeout.setInactivityTimeout(_fetchInactivityTimeout); + else + timeout.setInactivityTimeout(60*1000); + } + if (_redirectLocation != null) { throw new IOException("Server redirect to " + _redirectLocation + " not allowed"); } @@ -506,7 +508,8 @@ public class SSLEepGet extends EepGet { int read = _proxyIn.read(buf, 0, toRead); if (read == -1) break; - timeout.resetTimer(); + if (timeout != null) + timeout.resetTimer(); _out.write(buf, 0, read); _bytesTransferred += read; @@ -531,7 +534,8 @@ public class SSLEepGet extends EepGet { read++; } } - timeout.resetTimer(); + if (timeout != null) + timeout.resetTimer(); if (_bytesRemaining >= read) // else chunked? _bytesRemaining -= read; if (read > 0) { @@ -556,7 +560,8 @@ public class SSLEepGet extends EepGet { if (_aborted) throw new IOException("Timed out reading the HTTP data"); - timeout.cancel(); + if (timeout != null) + timeout.cancel(); if (_transferFailed) { // 404, etc - transferFailed is called after all attempts fail, by fetch() above diff --git a/core/java/src/net/i2p/util/ShellCommand.java b/core/java/src/net/i2p/util/ShellCommand.java index 12b668f67..bb0aec5f8 100644 --- a/core/java/src/net/i2p/util/ShellCommand.java +++ b/core/java/src/net/i2p/util/ShellCommand.java @@ -89,7 +89,7 @@ public class ShellCommand { * * @author hypercubus */ - private class StreamConsumer extends Thread { + private static class StreamConsumer extends Thread { private BufferedReader bufferedReader; private InputStreamReader inputStreamReader; @@ -123,7 +123,7 @@ public class ShellCommand { * * @author hypercubus */ - private class StreamReader extends Thread { + private static class StreamReader extends Thread { private BufferedReader bufferedReader; private InputStreamReader inputStreamReader; @@ -159,7 +159,7 @@ public class ShellCommand { * * @author hypercubus */ - private class StreamWriter extends Thread { + private static class StreamWriter extends Thread { private BufferedWriter bufferedWriter; private BufferedReader in; @@ -183,7 +183,7 @@ public class ShellCommand { bufferedWriter.write(input, 0, input.length()); bufferedWriter.flush(); } - } catch (Exception e) { + } catch (IOException e) { try { bufferedWriter.flush(); } catch (IOException e1) { diff --git a/core/java/src/net/i2p/util/SimpleTimer.java b/core/java/src/net/i2p/util/SimpleTimer.java index 0b5430711..f428afceb 100644 --- a/core/java/src/net/i2p/util/SimpleTimer.java +++ b/core/java/src/net/i2p/util/SimpleTimer.java @@ -90,7 +90,7 @@ public class SimpleTimer { int totalEvents = 0; long now = System.currentTimeMillis(); long eventTime = now + timeoutMs; - Long time = new Long(eventTime); + Long time = Long.valueOf(eventTime); synchronized (_events) { // remove the old scheduled position, then reinsert it Long oldTime = (Long)_eventTimes.get(event); diff --git a/core/java/src/net/i2p/util/SimpleTimer2.java b/core/java/src/net/i2p/util/SimpleTimer2.java index bda41e621..44e405b24 100644 --- a/core/java/src/net/i2p/util/SimpleTimer2.java +++ b/core/java/src/net/i2p/util/SimpleTimer2.java @@ -55,7 +55,7 @@ public class SimpleTimer2 { _executor.shutdownNow(); } - private class CustomScheduledThreadPoolExecutor extends ScheduledThreadPoolExecutor { + private static class CustomScheduledThreadPoolExecutor extends ScheduledThreadPoolExecutor { public CustomScheduledThreadPoolExecutor(int threads, ThreadFactory factory) { super(threads, factory); } From 0c5d88d230c8134a4d50e090bc7f1b92ea6f5151 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Mon, 10 Jan 2011 15:46:13 +0000 Subject: [PATCH 049/463] findbugs router, router/client --- router/java/src/net/i2p/router/Blocklist.java | 2 +- router/java/src/net/i2p/router/JobQueue.java | 4 ++-- router/java/src/net/i2p/router/MultiRouter.java | 6 +++++- router/java/src/net/i2p/router/OutNetMessage.java | 15 ++++++++++----- .../src/net/i2p/router/RouterThrottleImpl.java | 2 +- .../src/net/i2p/router/StatisticsManager.java | 4 +++- .../src/net/i2p/router/client/ClientManager.java | 3 +++ .../router/client/ClientManagerFacadeImpl.java | 1 + .../router/client/SSLClientListenerRunner.java | 12 ++++++++---- 9 files changed, 34 insertions(+), 15 deletions(-) diff --git a/router/java/src/net/i2p/router/Blocklist.java b/router/java/src/net/i2p/router/Blocklist.java index 634eafd19..8027ac007 100644 --- a/router/java/src/net/i2p/router/Blocklist.java +++ b/router/java/src/net/i2p/router/Blocklist.java @@ -679,7 +679,7 @@ public class Blocklist { return; Job job = new ShitlistJob(peer); if (number > 0) - job.getTiming().setStartAfter(_context.clock().now() + (number * 30*1000)); + job.getTiming().setStartAfter(_context.clock().now() + (30*1000l * number)); _context.jobQueue().addJob(job); } diff --git a/router/java/src/net/i2p/router/JobQueue.java b/router/java/src/net/i2p/router/JobQueue.java index 60bfeec7e..86c050b08 100644 --- a/router/java/src/net/i2p/router/JobQueue.java +++ b/router/java/src/net/i2p/router/JobQueue.java @@ -208,7 +208,7 @@ public class JobQueue { * <code>false</code> if the job is finished or doesn't exist in the queue. */ public boolean isJobActive(Job job) { - if (_readyJobs.contains(job) | _timedJobs.contains(job)) + if (_readyJobs.contains(job) || _timedJobs.contains(job)) return true; for (JobQueueRunner runner: _queueRunners.values()) if (runner.getCurrentJob() == job) @@ -689,7 +689,7 @@ public class JobQueue { TreeMap<Long, Job> ordered = new TreeMap(); for (int i = 0; i < timedJobs.size(); i++) { Job j = timedJobs.get(i); - ordered.put(new Long(j.getTiming().getStartAfter()), j); + ordered.put(Long.valueOf(j.getTiming().getStartAfter()), j); } for (Iterator<Job> iter = ordered.values().iterator(); iter.hasNext(); ) { Job j = iter.next(); diff --git a/router/java/src/net/i2p/router/MultiRouter.java b/router/java/src/net/i2p/router/MultiRouter.java index d8d316ae8..43f618bc2 100644 --- a/router/java/src/net/i2p/router/MultiRouter.java +++ b/router/java/src/net/i2p/router/MultiRouter.java @@ -90,13 +90,17 @@ public class MultiRouter { private static Properties getEnv(String filename) { Properties props = new Properties(); + FileInputStream in = null; try { - props.load(new FileInputStream(filename)); + in = new FileInputStream(filename); + props.load(in); props.setProperty("time.disabled", "true"); return props; } catch (IOException ioe) { ioe.printStackTrace(); return null; + } finally { + if (in != null) try { in.close(); } catch (IOException ioe) {} } } diff --git a/router/java/src/net/i2p/router/OutNetMessage.java b/router/java/src/net/i2p/router/OutNetMessage.java index 72f262cc5..6adc31953 100644 --- a/router/java/src/net/i2p/router/OutNetMessage.java +++ b/router/java/src/net/i2p/router/OutNetMessage.java @@ -89,15 +89,18 @@ public class OutNetMessage { // only timestamp if we are debugging synchronized (this) { locked_initTimestamps(); - while (_timestamps.containsKey(eventName)) { - eventName = eventName + '.'; - } - _timestamps.put(eventName, new Long(now)); + // ??? + //while (_timestamps.containsKey(eventName)) { + // eventName = eventName + '.'; + //} + _timestamps.put(eventName, Long.valueOf(now)); _timestampOrder.add(eventName); } } return now - _created; } + + /** @deprecated unused */ public Map<String, Long> getTimestamps() { if (_log.shouldLog(Log.INFO)) { synchronized (this) { @@ -107,6 +110,8 @@ public class OutNetMessage { } return Collections.EMPTY_MAP; } + + /** @deprecated unused */ public Long getTimestamp(String eventName) { if (_log.shouldLog(Log.INFO)) { synchronized (this) { @@ -368,7 +373,7 @@ public class OutNetMessage { @Override public boolean equals(Object obj) { if(obj == null) return false; - if(obj.getClass() != OutNetMessage.class) return false; + if(!(obj instanceof OutNetMessage)) return false; return obj == this; // two OutNetMessages are different even if they contain the same message } } diff --git a/router/java/src/net/i2p/router/RouterThrottleImpl.java b/router/java/src/net/i2p/router/RouterThrottleImpl.java index 4297f7eb5..777cc1a6a 100644 --- a/router/java/src/net/i2p/router/RouterThrottleImpl.java +++ b/router/java/src/net/i2p/router/RouterThrottleImpl.java @@ -98,7 +98,7 @@ class RouterThrottleImpl implements RouterThrottle { if (_context.router().getUptime() < 20*60*1000) return TunnelHistory.TUNNEL_REJECT_BANDWIDTH; - long lag = _context.jobQueue().getMaxLag(); + //long lag = _context.jobQueue().getMaxLag(); // reject here if lag too high??? RateStat rs = _context.statManager().getRate("transport.sendProcessingTime"); diff --git a/router/java/src/net/i2p/router/StatisticsManager.java b/router/java/src/net/i2p/router/StatisticsManager.java index 5a00f154c..86cbef8fe 100644 --- a/router/java/src/net/i2p/router/StatisticsManager.java +++ b/router/java/src/net/i2p/router/StatisticsManager.java @@ -157,9 +157,12 @@ public class StatisticsManager implements Service { return stats; } +/***** private void includeRate(String rateName, Properties stats, long selectedPeriods[]) { includeRate(rateName, stats, selectedPeriods, false); } +*****/ + /** * @param fudgeQuantity the data being published in this stat is too sensitive to, uh * publish, so we're kludge the quantity (allowing the fairly safe @@ -258,7 +261,6 @@ public class StatisticsManager implements Service { // bah saturation buf.append("0;0;0;0;"); } - long numPeriods = rate.getLifetimePeriods(); buf.append(num(fudgeQuantity)).append(';'); return buf.toString(); } diff --git a/router/java/src/net/i2p/router/client/ClientManager.java b/router/java/src/net/i2p/router/client/ClientManager.java index a534bdfb1..bc2d09135 100644 --- a/router/java/src/net/i2p/router/client/ClientManager.java +++ b/router/java/src/net/i2p/router/client/ClientManager.java @@ -433,7 +433,9 @@ class ClientManager { } } + /** @deprecated unused */ public void renderStatusHTML(Writer out) throws IOException { +/****** StringBuilder buf = new StringBuilder(8*1024); buf.append("<u><b>Local destinations</b></u><br>"); @@ -479,6 +481,7 @@ class ClientManager { buf.append("\n<hr>\n"); out.write(buf.toString()); out.flush(); +******/ } public void messageReceived(ClientMessage msg) { diff --git a/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java b/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java index e4b6b2a36..35492936c 100644 --- a/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java +++ b/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java @@ -207,6 +207,7 @@ public class ClientManagerFacadeImpl extends ClientManagerFacade implements Inte } } + /** @deprecated unused */ @Override public void renderStatusHTML(Writer out) throws IOException { if (_manager != null) diff --git a/router/java/src/net/i2p/router/client/SSLClientListenerRunner.java b/router/java/src/net/i2p/router/client/SSLClientListenerRunner.java index 0dc053a33..8d423ef0b 100644 --- a/router/java/src/net/i2p/router/client/SSLClientListenerRunner.java +++ b/router/java/src/net/i2p/router/client/SSLClientListenerRunner.java @@ -142,12 +142,12 @@ class SSLClientListenerRunner extends ClientListenerRunner { private void exportCert(File ks) { File sdir = new SecureDirectory(_context.getConfigDir(), "certificates"); if (sdir.exists() || sdir.mkdir()) { + InputStream fis = null; try { KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); - InputStream fis = new FileInputStream(ks); + fis = new FileInputStream(ks); String ksPass = _context.getProperty(PROP_KEYSTORE_PASSWORD, DEFAULT_KEYSTORE_PASSWORD); keyStore.load(fis, ksPass.toCharArray()); - fis.close(); Certificate cert = keyStore.getCertificate(KEY_ALIAS); if (cert != null) { File certFile = new File(sdir, ASCII_KEYFILE); @@ -159,6 +159,8 @@ class SSLClientListenerRunner extends ClientListenerRunner { _log.error("Error saving ASCII SSL keys", gse); } catch (IOException ioe) { _log.error("Error saving ASCII SSL keys", ioe); + } finally { + if (fis != null) try { fis.close(); } catch (IOException ioe) {} } } else { _log.error("Error saving ASCII SSL keys"); @@ -208,12 +210,12 @@ class SSLClientListenerRunner extends ClientListenerRunner { " in " + (new File(_context.getConfigDir(), "router.config")).getAbsolutePath()); return false; } + InputStream fis = null; try { SSLContext sslc = SSLContext.getInstance("TLS"); KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); - InputStream fis = new FileInputStream(ks); + fis = new FileInputStream(ks); keyStore.load(fis, ksPass.toCharArray()); - fis.close(); KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); kmf.init(keyStore, keyPass.toCharArray()); sslc.init(kmf.getKeyManagers(), null, _context.random()); @@ -223,6 +225,8 @@ class SSLClientListenerRunner extends ClientListenerRunner { _log.error("Error loading SSL keys", gse); } catch (IOException ioe) { _log.error("Error loading SSL keys", ioe); + } finally { + if (fis != null) try { fis.close(); } catch (IOException ioe) {} } return false; } From f15ad23482ab80fab6224b3a767fce85b0047b10 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Mon, 10 Jan 2011 15:51:02 +0000 Subject: [PATCH 050/463] findbugs, use context random() --- .../java/src/net/i2p/router/message/GarlicMessageParser.java | 2 +- .../i2p/router/message/OutboundClientMessageOneShotJob.java | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/router/java/src/net/i2p/router/message/GarlicMessageParser.java b/router/java/src/net/i2p/router/message/GarlicMessageParser.java index 31192dbcf..a41b39763 100644 --- a/router/java/src/net/i2p/router/message/GarlicMessageParser.java +++ b/router/java/src/net/i2p/router/message/GarlicMessageParser.java @@ -47,7 +47,7 @@ public class GarlicMessageParser { } if (decrData == null) { if (_log.shouldLog(Log.WARN)) - _log.warn("Decryption of garlic message failed (data = " + encData + ")", new Exception("Decrypt fail")); + _log.warn("Decryption of garlic message failed", new Exception("Decrypt fail")); return null; } else { try { diff --git a/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java b/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java index bfa094199..5b3e3e507 100644 --- a/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java +++ b/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java @@ -249,7 +249,6 @@ public class OutboundClientMessageOneShotJob extends JobImpl { } // If the last leaseSet we sent him is still good, don't bother sending again - long now = getContext().clock().now(); synchronized (_leaseSetCache) { if (!force) { LeaseSet ls = _leaseSetCache.get(hashPair()); @@ -326,7 +325,6 @@ public class OutboundClientMessageOneShotJob extends JobImpl { _log.warn(getJobId() + ": Lookup locally didn't find the leaseSet for " + _toString); return false; } - long now = getContext().clock().now(); // Use the same lease if it's still good // Even if _leaseSet changed, _leaseSet.getEncryptionKey() didn't... @@ -373,7 +371,7 @@ public class OutboundClientMessageOneShotJob extends JobImpl { // randomize the ordering (so leases with equal # of failures per next // sort are randomly ordered) - Collections.shuffle(leases); + Collections.shuffle(leases, getContext().random()); /**** if (false) { @@ -793,7 +791,6 @@ public class OutboundClientMessageOneShotJob extends JobImpl { private TunnelInfo selectOutboundTunnel(Destination to) { TunnelInfo tunnel; - long now = getContext().clock().now(); synchronized (_tunnelCache) { /** * If old tunnel is valid and no longer backlogged, use it. From e4bb053a6195de704a6a64f68e343e88e64813cf Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Mon, 10 Jan 2011 16:11:33 +0000 Subject: [PATCH 051/463] findbugs netdb --- .../networkdb/kademlia/HarvesterJob.java | 4 ++-- .../networkdb/kademlia/KBucketImpl.java | 19 +++++++++---------- .../KademliaNetworkDatabaseFacade.java | 3 +-- .../networkdb/kademlia/LookupThrottler.java | 4 +++- .../kademlia/RepublishLeaseSetJob.java | 4 ++-- .../networkdb/kademlia/SearchState.java | 4 ++-- .../router/networkdb/kademlia/StoreJob.java | 1 - .../router/networkdb/kademlia/StoreState.java | 4 ++-- .../kademlia/TransientDataStore.java | 10 ---------- 9 files changed, 21 insertions(+), 32 deletions(-) diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/HarvesterJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/HarvesterJob.java index 7ced65ed0..48ddc4f2c 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/HarvesterJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/HarvesterJob.java @@ -85,9 +85,9 @@ class HarvesterJob extends JobImpl { long when = info.getPublished(); if (when + MIN_UPDATE_FREQUENCY > now) continue; - while (routersByAge.containsKey(new Long(when))) + while (routersByAge.containsKey(Long.valueOf(when))) when++; - routersByAge.put(new Long(when), info.getIdentity().getHash()); + routersByAge.put(Long.valueOf(when), info.getIdentity().getHash()); } } diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/KBucketImpl.java b/router/java/src/net/i2p/router/networkdb/kademlia/KBucketImpl.java index 568a283f9..bd7c62fde 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/KBucketImpl.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/KBucketImpl.java @@ -387,15 +387,15 @@ class KBucketImpl implements KBucket { local.prepareCache(); KBucketImpl bucket = new KBucketImpl(I2PAppContext.getGlobalContext(), local); bucket.setRange(low, high); - Hash lowerBoundKey = bucket.getRangeBeginKey(); - Hash upperBoundKey = bucket.getRangeEndKey(); + //Hash lowerBoundKey = bucket.getRangeBeginKey(); + //Hash upperBoundKey = bucket.getRangeEndKey(); for (int i = 0; i < 100000; i++) { Hash rnd = bucket.generateRandomKey(); //buf.append(toString(rnd.getData())).append('\n'); boolean ok = bucket.shouldContain(rnd); if (!ok) { byte diff[] = bucket.getLocal().cachedXor(rnd); - BigInteger dv = new BigInteger(1, diff); + //BigInteger dv = new BigInteger(1, diff); //log.error("WTF! bucket doesn't want: \n" + toString(rnd.getData()) // + "\nDelta: \n" + toString(diff) + "\nDelta val: \n" + dv.toString(2) // + "\nBucket: \n"+bucket, new Exception("WTF")); @@ -403,7 +403,7 @@ class KBucketImpl implements KBucket { log.error("\nLow: " + DataHelper.toHexString(bucket.getRangeBeginKey().getData()) + "\nVal: " + DataHelper.toHexString(rnd.getData()) + "\nHigh:" + DataHelper.toHexString(bucket.getRangeEndKey().getData())); - try { Thread.sleep(1000); } catch (Exception e) {} + try { Thread.sleep(1000); } catch (InterruptedException e) {} System.exit(0); } else { //_log.debug("Ok, bucket wants: \n" + toString(rnd.getData())); @@ -415,7 +415,6 @@ class KBucketImpl implements KBucket { private static void testRand2() { Log log = I2PAppContext.getGlobalContext().logManager().getLog(KBucketImpl.class); - StringBuilder buf = new StringBuilder(1024*1024*16); int low = 1; int high = 200; byte hash[] = new byte[Hash.HASH_LENGTH]; @@ -424,15 +423,15 @@ class KBucketImpl implements KBucket { local.prepareCache(); KBucketImpl bucket = new KBucketImpl(I2PAppContext.getGlobalContext(), local); bucket.setRange(low, high); - Hash lowerBoundKey = bucket.getRangeBeginKey(); - Hash upperBoundKey = bucket.getRangeEndKey(); + //Hash lowerBoundKey = bucket.getRangeBeginKey(); + //Hash upperBoundKey = bucket.getRangeEndKey(); for (int i = 0; i < 100000; i++) { Hash rnd = bucket.generateRandomKey(); //buf.append(toString(rnd.getData())).append('\n'); boolean ok = bucket.shouldContain(rnd); if (!ok) { byte diff[] = bucket.getLocal().cachedXor(rnd); - BigInteger dv = new BigInteger(1, diff); + //BigInteger dv = new BigInteger(1, diff); //log.error("WTF! bucket doesn't want: \n" + toString(rnd.getData()) // + "\nDelta: \n" + toString(diff) + "\nDelta val: \n" + dv.toString(2) // + "\nBucket: \n"+bucket, new Exception("WTF")); @@ -440,13 +439,13 @@ class KBucketImpl implements KBucket { log.error("\nLow: " + DataHelper.toHexString(bucket.getRangeBeginKey().getData()) + "\nVal: " + DataHelper.toHexString(rnd.getData()) + "\nHigh:" + DataHelper.toHexString(bucket.getRangeEndKey().getData())); - try { Thread.sleep(1000); } catch (Exception e) {} + try { Thread.sleep(1000); } catch (InterruptedException e) {} System.exit(0); } else { //_log.debug("Ok, bucket wants: \n" + toString(rnd.getData())); } } - log.info("Passed 100,000 random key generations against a random hash\n" + buf.toString()); + log.info("Passed 100,000 random key generations against a random hash"); } private final static String toString(byte b[]) { 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 ffcb8efd4..7409c8e76 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java @@ -88,9 +88,8 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { void searchComplete(Hash key) { if (_log.shouldLog(Log.DEBUG)) _log.debug("search Complete: " + key); - SearchJob removed = null; synchronized (_activeRequests) { - removed = (SearchJob)_activeRequests.remove(key); + _activeRequests.remove(key); } } diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/LookupThrottler.java b/router/java/src/net/i2p/router/networkdb/kademlia/LookupThrottler.java index b4cef3621..3c82810e1 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/LookupThrottler.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/LookupThrottler.java @@ -58,13 +58,15 @@ class LookupThrottler { @Override public boolean equals(Object obj) { + if (obj == null || !(obj instanceof ReplyTunnel)) + return false; return this.h.equals(((ReplyTunnel)obj).h) && this.id.equals(((ReplyTunnel)obj).id); } @Override public int hashCode() { - return this.h.hashCode() + this.id.hashCode(); + return this.h.hashCode() ^ this.id.hashCode(); } } } diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/RepublishLeaseSetJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/RepublishLeaseSetJob.java index 223dd70f8..239fd4772 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/RepublishLeaseSetJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/RepublishLeaseSetJob.java @@ -89,7 +89,7 @@ public class RepublishLeaseSetJob extends JobImpl { return _lastPublished; } - class OnRepublishSuccess extends JobImpl { + private static class OnRepublishSuccess extends JobImpl { public OnRepublishSuccess(RouterContext ctx) { super(ctx); } public String getName() { return "Publish leaseSet successful"; } public void runJob() { @@ -98,7 +98,7 @@ public class RepublishLeaseSetJob extends JobImpl { } } - class OnRepublishFailure extends JobImpl { + private static class OnRepublishFailure extends JobImpl { private RepublishLeaseSetJob _job; public OnRepublishFailure(RouterContext ctx, RepublishLeaseSetJob job) { super(ctx); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/SearchState.java b/router/java/src/net/i2p/router/networkdb/kademlia/SearchState.java index 6fe5831dd..25d86acf1 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/SearchState.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/SearchState.java @@ -98,7 +98,7 @@ class SearchState { synchronized (_pendingPeers) { _pendingPeers.addAll(pending); for (Iterator iter = pending.iterator(); iter.hasNext(); ) - _pendingPeerTimes.put(iter.next(), new Long(_context.clock().now())); + _pendingPeerTimes.put(iter.next(), Long.valueOf(_context.clock().now())); } synchronized (_attemptedPeers) { _attemptedPeers.addAll(pending); @@ -107,7 +107,7 @@ class SearchState { public void addPending(Hash peer) { synchronized (_pendingPeers) { _pendingPeers.add(peer); - _pendingPeerTimes.put(peer, new Long(_context.clock().now())); + _pendingPeerTimes.put(peer, Long.valueOf(_context.clock().now())); } synchronized (_attemptedPeers) { _attemptedPeers.add(peer); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java index 47a3e17d6..c1a849429 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java @@ -443,7 +443,6 @@ class StoreJob extends JobImpl { sent = wm.getMessage(); _state.addPending(to, wm); } else { - sent = msg; _state.addPending(to); // now that almost all floodfills are at 0.7.10, // just refuse to store unencrypted to older ones. diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/StoreState.java b/router/java/src/net/i2p/router/networkdb/kademlia/StoreState.java index 4737a4707..9666c09be 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/StoreState.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/StoreState.java @@ -114,7 +114,7 @@ class StoreState { public void addPending(Hash peer) { synchronized (_pendingPeers) { _pendingPeers.add(peer); - _pendingPeerTimes.put(peer, new Long(_context.clock().now())); + _pendingPeerTimes.put(peer, Long.valueOf(_context.clock().now())); } synchronized (_attemptedPeers) { _attemptedPeers.add(peer); @@ -124,7 +124,7 @@ class StoreState { synchronized (_pendingPeers) { _pendingPeers.addAll(pending); for (Iterator<Hash> iter = pending.iterator(); iter.hasNext(); ) - _pendingPeerTimes.put(iter.next(), new Long(_context.clock().now())); + _pendingPeerTimes.put(iter.next(), Long.valueOf(_context.clock().now())); } synchronized (_attemptedPeers) { _attemptedPeers.addAll(pending); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/TransientDataStore.java b/router/java/src/net/i2p/router/networkdb/kademlia/TransientDataStore.java index 59156321e..e0a3a2a63 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/TransientDataStore.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/TransientDataStore.java @@ -161,16 +161,6 @@ class TransientDataStore implements DataStore { return rv; } - @Override - public int hashCode() { - return DataHelper.hashCode(_data); - } - @Override - public boolean equals(Object obj) { - if ( (obj == null) || (obj.getClass() != getClass()) ) return false; - TransientDataStore ds = (TransientDataStore)obj; - return DataHelper.eq(ds._data, _data); - } @Override public String toString() { StringBuilder buf = new StringBuilder(); From c29d0917e9f67efe0b6b1acf87406107892190ad Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Mon, 10 Jan 2011 16:15:31 +0000 Subject: [PATCH 052/463] findbugs tunnel --- router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java | 2 +- router/java/src/net/i2p/router/tunnel/TunnelGateway.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java b/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java index d736e338d..48305513a 100644 --- a/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java +++ b/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java @@ -743,7 +743,7 @@ public class TunnelDispatcher implements Service { private static final int LEAVE_BATCH_TIME = 10*1000; public void add(HopConfig cfg) { - Long dropTime = new Long(cfg.getExpiration() + 2*Router.CLOCK_FUDGE_FACTOR + LEAVE_BATCH_TIME); + Long dropTime = Long.valueOf(cfg.getExpiration() + 2*Router.CLOCK_FUDGE_FACTOR + LEAVE_BATCH_TIME); boolean noTunnels; synchronized (LeaveTunnel.this) { noTunnels = _configs.isEmpty(); diff --git a/router/java/src/net/i2p/router/tunnel/TunnelGateway.java b/router/java/src/net/i2p/router/tunnel/TunnelGateway.java index 3ec567098..a7673f1b6 100644 --- a/router/java/src/net/i2p/router/tunnel/TunnelGateway.java +++ b/router/java/src/net/i2p/router/tunnel/TunnelGateway.java @@ -229,7 +229,7 @@ public class TunnelGateway { synchronized (Pending.this) { if (_messageIds == null) _messageIds = new ArrayList(); - _messageIds.add(new Long(id)); + _messageIds.add(Long.valueOf(id)); } } /** From 53714810071a695004820c12c989a3580dca6d3c Mon Sep 17 00:00:00 2001 From: mathiasdm <mathiasdm@mail.i2p> Date: Mon, 10 Jan 2011 17:09:55 +0000 Subject: [PATCH 053/463] - Shutdown change in desktopgui. - Brainstorming about the best way to make desktopgui autostart in I2P. --- apps/desktopgui/TODO | 4 ++++ .../src/net/i2p/desktopgui/router/RouterManager.java | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/desktopgui/TODO b/apps/desktopgui/TODO index dd1610223..1a62d7722 100644 --- a/apps/desktopgui/TODO +++ b/apps/desktopgui/TODO @@ -11,6 +11,10 @@ HIGH PRIORITY: - Check if we're inside I2P without using a command-line parameter - DONE - Modify installer to set I2P directory parameter; or use $I2P? - Is already there - Include in installer - TODO +- Start desktopgui without adding to clients.config and without adding a dependency on routerconsole! + * One possibility: + Adding some kind of 'ApplicationManager' that allows starting applications. + Extra remark: ApplicationManager should also allow stopping certain applications from launching. - Fix tabs versus spaces ;-) UNKNOWN: - API to allow applications to add themselves to the menu? diff --git a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java index 8caafe397..b107d47d9 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java @@ -74,7 +74,7 @@ public class RouterManager { */ public static void shutDown() { if(inI2P()) { - getRouter().shutdownGracefully(); + getRouter().shutdown(0); } } From 6670209cb3061c1f81337283e72876a94274f3a4 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Mon, 10 Jan 2011 17:14:34 +0000 Subject: [PATCH 054/463] i2psnark: - Update session options when max bandwidth changes - BufferedStream cleanup and comments - torrent name display tweak - findbugs --- .../org/klomp/snark/ConnectionAcceptor.java | 7 ++----- .../src/org/klomp/snark/I2PSnarkUtil.java | 19 ++++++++++++++++++- .../java/src/org/klomp/snark/MetaInfo.java | 4 ++-- .../java/src/org/klomp/snark/Peer.java | 18 +++--------------- .../src/org/klomp/snark/PeerCheckerTask.java | 1 + .../src/org/klomp/snark/PeerCoordinator.java | 2 +- .../java/src/org/klomp/snark/Piece.java | 2 +- .../java/src/org/klomp/snark/Snark.java | 6 +++--- .../src/org/klomp/snark/SnarkManager.java | 11 ++++++----- .../java/src/org/klomp/snark/Storage.java | 5 +++-- .../org/klomp/snark/web/I2PSnarkServlet.java | 16 ++++++++-------- 11 files changed, 48 insertions(+), 43 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/ConnectionAcceptor.java b/apps/i2psnark/java/src/org/klomp/snark/ConnectionAcceptor.java index 34fa5054e..b4ba0f299 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/ConnectionAcceptor.java +++ b/apps/i2psnark/java/src/org/klomp/snark/ConnectionAcceptor.java @@ -179,11 +179,8 @@ public class ConnectionAcceptor implements Runnable try { InputStream in = _socket.getInputStream(); OutputStream out = _socket.getOutputStream(); - - if (true) { - in = new BufferedInputStream(in); - //out = new BufferedOutputStream(out); - } + // this is for the readahead in PeerAcceptor.connection() + in = new BufferedInputStream(in); if (_log.shouldLog(Log.DEBUG)) _log.debug("Handling socket from " + _socket.getPeerDestination().calculateHash().toBase64()); peeracceptor.connection(_socket, in, out); diff --git a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java index 89f5087b1..8fd774567 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java +++ b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java @@ -71,6 +71,7 @@ public class I2PSnarkUtil { public static final String DEFAULT_OPENTRACKERS = "http://tracker.welterde.i2p/a"; public static final int DEFAULT_MAX_UP_BW = 8; //KBps public static final int MAX_CONNECTIONS = 16; // per torrent + private static final String PROP_MAX_BW = "i2cp.outboundBytesPerSecond"; private static final boolean ENABLE_DHT = true; public I2PSnarkUtil(I2PAppContext ctx) { @@ -132,9 +133,21 @@ public class I2PSnarkUtil { _configured = true; } + /** + * @param KBps + */ public void setMaxUpBW(int limit) { _maxUpBW = limit; + _opts.put(PROP_MAX_BW, Integer.toString(limit * (1024 * 6 / 5))); // add a little for overhead _configured = true; + if (_manager != null) { + I2PSession sess = _manager.getSession(); + if (sess != null) { + Properties newProps = new Properties(); + newProps.putAll(_opts); + sess.updateOptions(newProps); + } + } } public void setMaxConnections(int limit) { @@ -154,6 +167,10 @@ public class I2PSnarkUtil { public int getEepProxyPort() { return _proxyPort; } public boolean getEepProxySet() { return _shouldProxy; } public int getMaxUploaders() { return _maxUploaders; } + + /** + * @return KBps + */ public int getMaxUpBW() { return _maxUpBW; } public int getMaxConnections() { return _maxConnections; } public int getStartupDelay() { return _startupDelay; } @@ -166,7 +183,7 @@ public class I2PSnarkUtil { // try to find why reconnecting after stop if (_log.shouldLog(Log.DEBUG)) _log.debug("Connecting to I2P", new Exception("I did it")); - Properties opts = new Properties(); + Properties opts = _context.getProperties(); if (_opts != null) { for (Iterator iter = _opts.keySet().iterator(); iter.hasNext(); ) { String key = (String)iter.next(); diff --git a/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java b/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java index d6a113ce6..3e13c7a42 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java +++ b/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java @@ -189,7 +189,7 @@ public class MetaInfo if (val == null) throw new InvalidBEncodingException("Missing length number"); long len = val.getLong(); - m_lengths.add(new Long(len)); + m_lengths.add(Long.valueOf(len)); l += len; val = (BEValue)desc.get("path"); @@ -438,7 +438,7 @@ public class MetaInfo info.put("piece length", Integer.valueOf(piece_length)); info.put("pieces", piece_hashes); if (files == null) - info.put("length", new Long(length)); + info.put("length", Long.valueOf(length)); else { List l = new ArrayList(); diff --git a/apps/i2psnark/java/src/org/klomp/snark/Peer.java b/apps/i2psnark/java/src/org/klomp/snark/Peer.java index bda2c28fd..5a003cac2 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Peer.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Peer.java @@ -20,7 +20,6 @@ package org.klomp.snark; -import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; @@ -231,19 +230,8 @@ public class Peer implements Comparable throw new IOException("Unable to reach " + peerID); } InputStream in = sock.getInputStream(); - OutputStream out = sock.getOutputStream(); //new BufferedOutputStream(sock.getOutputStream()); - if (true) { - // buffered output streams are internally synchronized, so we can't get through to the underlying - // I2PSocket's MessageOutputStream to close() it if we are blocking on a write(...). Oh, and the - // buffer is unnecessary anyway, as unbuffered access lets the streaming lib do the 'right thing'. - //out = new BufferedOutputStream(out); - in = new BufferedInputStream(sock.getInputStream()); - } - //BufferedInputStream bis - // = new BufferedInputStream(sock.getInputStream()); - //BufferedOutputStream bos - // = new BufferedOutputStream(sock.getOutputStream()); - byte [] id = handshake(in, out); //handshake(bis, bos); + OutputStream out = sock.getOutputStream(); + byte [] id = handshake(in, out); byte [] expected_id = peerID.getID(); if (expected_id == null) { peerID.setID(id); @@ -328,7 +316,7 @@ public class Peer implements Comparable * Sets DataIn/OutputStreams, does the handshake and returns the id * reported by the other side. */ - private byte[] handshake(InputStream in, OutputStream out) //BufferedInputStream bis, BufferedOutputStream bos) + private byte[] handshake(InputStream in, OutputStream out) throws IOException { din = new DataInputStream(in); diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java index 6370eaca6..b767f875a 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java @@ -210,6 +210,7 @@ class PeerCheckerTask extends TimerTask if (_util.getDHT() != null && (_runCount % 5) == 0) { _util.getDHT().announce(coordinator.getInfoHash(), peer.getPeerID().getDestHash()); } + // send PEX } // Resync actual uploaders value diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java index d01f1ef2e..5e75f1764 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java @@ -1185,7 +1185,7 @@ public class PeerCoordinator implements PeerListener * @since 0.8.4 */ public void gotPeers(Peer peer, List<PeerID> peers) { - + // spin off thread or timer task to do a new Peer() and an addPeer() for each one } /** Return number of allowed uploaders for this torrent. diff --git a/apps/i2psnark/java/src/org/klomp/snark/Piece.java b/apps/i2psnark/java/src/org/klomp/snark/Piece.java index 6855d36a0..dd48508a9 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Piece.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Piece.java @@ -35,8 +35,8 @@ class Piece implements Comparable { @Override public boolean equals(Object o) { + if (o == null) return false; if (o instanceof Piece) { - if (o == null) return false; return this.id == ((Piece)o).id; } return false; diff --git a/apps/i2psnark/java/src/org/klomp/snark/Snark.java b/apps/i2psnark/java/src/org/klomp/snark/Snark.java index e3a99bdc9..98bcd4eed 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Snark.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Snark.java @@ -108,7 +108,7 @@ public class Snark } catch (Throwable t) { System.out.println("OOM in the OOM"); } - System.exit(0); + //System.exit(0); } } @@ -980,7 +980,6 @@ public class Snark (" <file> \tEither a local .torrent metainfo file to download"); System.out.println (" \tor (with --share) a file to share."); - System.exit(-1); } /** @@ -1117,11 +1116,12 @@ public class Snark coordinator.setWantedPieces(); } + /** SnarkSnutdown callback unused */ public void shutdown() { // Should not be necessary since all non-deamon threads should // have died. But in reality this does not always happen. - System.exit(0); + //System.exit(0); } public interface CompleteListener { diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index 6ac7261e3..026363f6f 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -247,11 +247,9 @@ public class SnarkManager implements Snark.CompleteListener { i2cpOpts.put(pair.substring(0, split), pair.substring(split+1)); } } - if (i2cpHost != null) { - _util.setI2CPConfig(i2cpHost, i2cpPort, i2cpOpts); - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Configuring with I2CP options " + i2cpOpts); - } + _util.setI2CPConfig(i2cpHost, i2cpPort, i2cpOpts); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Configuring with I2CP options " + i2cpOpts); //I2PSnarkUtil.instance().setI2CPConfig("66.111.51.110", 7654, new Properties()); //String eepHost = _config.getProperty(PROP_EEP_HOST); //int eepPort = getInt(PROP_EEP_PORT, 4444); @@ -338,6 +336,7 @@ public class SnarkManager implements Snark.CompleteListener { } } + // FIXME do this even if == null if (i2cpHost != null) { int oldI2CPPort = _util.getI2CPPort(); String oldI2CPHost = _util.getI2CPHost(); @@ -383,6 +382,7 @@ public class SnarkManager implements Snark.CompleteListener { Properties p = new Properties(); p.putAll(opts); _util.setI2CPConfig(i2cpHost, port, p); + _util.setMaxUpBW(getInt(PROP_UPBW_MAX, DEFAULT_MAX_UP_BW)); addMessage(_("I2CP and tunnel changes will take effect after stopping all torrents")); if (_log.shouldLog(Log.DEBUG)) _log.debug("i2cp host [" + i2cpHost + "] i2cp port " + port + " opts [" + opts @@ -396,6 +396,7 @@ public class SnarkManager implements Snark.CompleteListener { p.putAll(opts); addMessage(_("I2CP settings changed to {0}", i2cpHost + ":" + port + " (" + i2cpOpts.trim() + ")")); _util.setI2CPConfig(i2cpHost, port, p); + _util.setMaxUpBW(getInt(PROP_UPBW_MAX, DEFAULT_MAX_UP_BW)); boolean ok = _util.connect(); if (!ok) { addMessage(_("Unable to connect with the new settings, reverting to the old I2CP settings")); diff --git a/apps/i2psnark/java/src/org/klomp/snark/Storage.java b/apps/i2psnark/java/src/org/klomp/snark/Storage.java index 77012de77..23fba7f35 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Storage.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Storage.java @@ -105,7 +105,7 @@ public class Storage { long length = lengths[i]; total += length; - lengthsList.add(new Long(length)); + lengthsList.add(Long.valueOf(length)); } piece_size = MIN_PIECE_SIZE; @@ -753,7 +753,8 @@ public class Storage openRAF(nr, false); // RW // XXX - Is this the best way to make sure we have enough space for // the whole file? - listener.storageCreateFile(this, names[nr], lengths[nr]); + if (listener != null) + listener.storageCreateFile(this, names[nr], lengths[nr]); final int ZEROBLOCKSIZE = metainfo.getPieceLength(0); byte[] zeros; try { diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 616df5b83..c859c436c 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -755,8 +755,12 @@ public class I2PSnarkServlet extends Default { filename = filename.substring(0, i); String fullFilename = filename; if (filename.length() > MAX_DISPLAYED_FILENAME_LENGTH) { - fullFilename = new String(filename); - filename = filename.substring(0, MAX_DISPLAYED_FILENAME_LENGTH) + "…"; + String start = filename.substring(0, MAX_DISPLAYED_FILENAME_LENGTH); + if (start.indexOf(" ") < 0 && start.indexOf("-") < 0) { + // browser has nowhere to break it + fullFilename = filename; + filename = start + "…"; + } } long total = snark.getTotalLength(); // Early typecast, avoid possibly overflowing a temp integer @@ -1035,7 +1039,7 @@ public class I2PSnarkServlet extends Default { } else { pct = (float) 101.0; // until we get the metainfo we don't know how many pieces there are - out.write("??"); + //out.write("??"); } out.write("</td>\n\t"); out.write("<td class=\"snarkTorrentStatus " + rowClass + "\">"); @@ -1134,7 +1138,6 @@ public class I2PSnarkServlet extends Default { } private void writeAddForm(PrintWriter out, HttpServletRequest req) throws IOException { - String uri = req.getRequestURI(); String newURL = req.getParameter("newURL"); if ( (newURL == null) || (newURL.trim().length() <= 0) ) newURL = ""; @@ -1175,7 +1178,6 @@ public class I2PSnarkServlet extends Default { } private void writeSeedForm(PrintWriter out, HttpServletRequest req) throws IOException { - String uri = req.getRequestURI(); String baseFile = req.getParameter("baseFile"); if (baseFile == null || baseFile.trim().length() <= 0) baseFile = ""; @@ -1235,7 +1237,6 @@ public class I2PSnarkServlet extends Default { } private void writeConfigForm(PrintWriter out, HttpServletRequest req) throws IOException { - String uri = req.getRequestURI(); String dataDir = _manager.getDataDir().getAbsolutePath(); boolean autoStart = _manager.shouldAutoStart(); boolean useOpenTrackers = _manager.util().shouldUseOpenTrackers(); @@ -1914,8 +1915,7 @@ private static class FetchAndAdd implements Runnable { return; } - // don't hold object from this MetaInfo - String name = new String(info.getName()); + String name = info.getName(); name = Storage.filterName(name); name = name + ".torrent"; File torrentFile = new File(_manager.getDataDir(), name); From 1ae6c28592eed4735b30c1248aac0460f41cefb3 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Mon, 10 Jan 2011 17:49:00 +0000 Subject: [PATCH 055/463] Don't expire outgoing piece messages, since we no longer prefetch the data --- .../java/src/org/klomp/snark/Message.java | 3 ++- .../src/org/klomp/snark/PeerConnectionOut.java | 18 +++++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/Message.java b/apps/i2psnark/java/src/org/klomp/snark/Message.java index 01c474216..b4344f3ba 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Message.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Message.java @@ -68,7 +68,8 @@ class Message // Used to do deferred fetch of data DataLoader dataLoader; - SimpleTimer.TimedEvent expireEvent; + // now unused + //SimpleTimer.TimedEvent expireEvent; /** Utility method for sending a message through a DataStream. */ void sendMessage(DataOutputStream dos) throws IOException diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionOut.java b/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionOut.java index 181ca4969..225edd492 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionOut.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionOut.java @@ -29,8 +29,8 @@ import java.util.List; import net.i2p.I2PAppContext; import net.i2p.util.I2PAppThread; import net.i2p.util.Log; -import net.i2p.util.SimpleScheduler; -import net.i2p.util.SimpleTimer; +//import net.i2p.util.SimpleScheduler; +//import net.i2p.util.SimpleTimer; class PeerConnectionOut implements Runnable { @@ -124,27 +124,27 @@ class PeerConnectionOut implements Runnable { if (state.choking) { it.remove(); - SimpleTimer.getInstance().removeEvent(nm.expireEvent); + //SimpleTimer.getInstance().removeEvent(nm.expireEvent); } nm = null; } else if (nm.type == Message.REQUEST && state.choked) { it.remove(); - SimpleTimer.getInstance().removeEvent(nm.expireEvent); + //SimpleTimer.getInstance().removeEvent(nm.expireEvent); nm = null; } if (m == null && nm != null) { m = nm; - SimpleTimer.getInstance().removeEvent(nm.expireEvent); + //SimpleTimer.getInstance().removeEvent(nm.expireEvent); it.remove(); } } if (m == null && !sendQueue.isEmpty()) { m = (Message)sendQueue.remove(0); - SimpleTimer.getInstance().removeEvent(m.expireEvent); + //SimpleTimer.getInstance().removeEvent(m.expireEvent); } } } @@ -241,6 +241,8 @@ class PeerConnectionOut implements Runnable /** remove messages not sent in 3m */ private static final int SEND_TIMEOUT = 3*60*1000; + +/***** private class RemoveTooSlow implements SimpleTimer.TimedEvent { private Message _m; public RemoveTooSlow(Message m) { @@ -258,6 +260,7 @@ class PeerConnectionOut implements Runnable _log.info("Took too long to send " + _m + " to " + peer); } } +*****/ /** * Removes a particular message type from the queue. @@ -474,7 +477,8 @@ class PeerConnectionOut implements Runnable m.off = 0; m.len = length; // since we have the data already loaded, queue a timeout to remove it - SimpleScheduler.getInstance().addEvent(new RemoveTooSlow(m), SEND_TIMEOUT); + // no longer prefetched + //SimpleScheduler.getInstance().addEvent(new RemoveTooSlow(m), SEND_TIMEOUT); addMessage(m); } From c6a2e99a0d7fe8a9c5e52c0183a5198e89319b6f Mon Sep 17 00:00:00 2001 From: dev <dev@robertfoss.se> Date: Tue, 11 Jan 2011 17:51:29 +0000 Subject: [PATCH 056/463] Added Intel Atom as (pentium3) as prescribed by the libgmp configure scripts. --- .../freenet/support/CPUInformation/CPUID.java | 35 ++++++++++++------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/core/java/src/freenet/support/CPUInformation/CPUID.java b/core/java/src/freenet/support/CPUInformation/CPUID.java index e3712e4ad..d8f8967fb 100644 --- a/core/java/src/freenet/support/CPUInformation/CPUID.java +++ b/core/java/src/freenet/support/CPUInformation/CPUID.java @@ -324,8 +324,16 @@ public class CPUID { return getCPUFamily() > 6 || (getCPUFamily() == 6 && getCPUModel() >=3); } public boolean IsPentium3Compatible() - { - return getCPUFamily() > 6 || (getCPUFamily() == 6 && getCPUModel() >=7); + { + // Atom + if (getCPUExtendedModel() == 1 && (getCPUFamily() == 6 && (getCPUModel() == 10))){ + return true; + // ?? + } else if (getCPUFamily() > 6 || (getCPUFamily() == 6 && getCPUModel() >=7)){ + return true; + } else { + return false; + } } public boolean IsPentium4Compatible() { @@ -417,17 +425,18 @@ public class CPUID { case 15: return "Core 2 (Conroe)"; } - } - if (getCPUExtendedModel() == 1){ - switch(getCPUModel()){ - case 10: - return "Core i7"; - case 12: - return "Atom"; - case 13: - return "Xeon MP"; - } - } + } else { + if (getCPUExtendedModel() == 1){ + switch(getCPUModel()){ + case 10: + return "Core i7"; + case 12: + return "Atom"; + case 13: + return "Xeon MP"; + } + } + } } if(getCPUFamily() == 7){ switch(getCPUModel()){ From dfcb81c32f575ca7cbb225f4c1259d1862ae7fae Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Tue, 11 Jan 2011 22:20:05 +0000 Subject: [PATCH 057/463] use context random() --- .../java/src/net/i2p/router/networkdb/reseed/Reseeder.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java index b2b6671c8..8e874e979 100644 --- a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java +++ b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java @@ -177,14 +177,14 @@ public class Reseeder { StringTokenizer tok = new StringTokenizer(URLs, " ,"); while (tok.hasMoreTokens()) URLList.add(tok.nextToken().trim()); - Collections.shuffle(URLList); + Collections.shuffle(URLList, _context.random()); if (defaulted && !SSLDisable) { // put the non-SSL at the end of the SSL List<String> URLList2 = new ArrayList(); tok = new StringTokenizer(DEFAULT_SEED_URL, " ,"); while (tok.hasMoreTokens()) URLList2.add(tok.nextToken().trim()); - Collections.shuffle(URLList2); + Collections.shuffle(URLList2, _context.random()); URLList.addAll(URLList2); } int total = 0; @@ -263,7 +263,7 @@ public class Reseeder { } List<String> urlList = new ArrayList(urls); - Collections.shuffle(urlList); + Collections.shuffle(urlList, _context.random()); int fetched = 0; int errors = 0; // 200 max from one URL From 4b85c569033fa391edf8bbb6842a286470e17532 Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Wed, 12 Jan 2011 12:48:16 +0000 Subject: [PATCH 058/463] Console themes: fix news headings. --- .../themes/console/classic/console.css | 14 +- .../resources/themes/console/dark/console.css | 2166 +++++++-------- .../themes/console/light/console.css | 2373 +++++++++-------- .../themes/console/midnight/console.css | 24 +- 4 files changed, 2309 insertions(+), 2268 deletions(-) diff --git a/installer/resources/themes/console/classic/console.css b/installer/resources/themes/console/classic/console.css index 0d301a879..1eed76faf 100644 --- a/installer/resources/themes/console/classic/console.css +++ b/installer/resources/themes/console/classic/console.css @@ -408,7 +408,19 @@ div.news li { } div.news h3 { - text-align: left !important; + background: none !important; + text-align: left; + border: none !important; + border-bottom: 1px dotted !important; + -moz-box-shadow: none; + -hktml-box-shadow: none; + box-shadow: none; + font-size: 10pt !important; + letter-spacing: 0.05em; + text-transform: capitalize !important; + text-shadow: none !important; + padding: 5px 10px 3px; + margin: 10px 10px -7px !important; } div.news p { diff --git a/installer/resources/themes/console/dark/console.css b/installer/resources/themes/console/dark/console.css index 8921b88c9..1cf5e3d87 100644 --- a/installer/resources/themes/console/dark/console.css +++ b/installer/resources/themes/console/dark/console.css @@ -1,1083 +1,1083 @@ -/* I2P Theme: Camo aka Dark */ -/* Description: Military Grade. */ -/* Comment: Thanks to Florian Kuhlmann for the hatface images. [ http://www.flickr.com/photos/floriankuhlmann/] -/* Author: dr|z3d */ - -body { - margin: 5px 0px 0 0px; - padding: 0; - text-align: center; - background: #010 url('images/camotile.png') center bottom; - color: #EE9; - font: 9pt/130% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - -} - -.hide { - display: none; -} - -img { - border: none; -} - -pre { - width: 98%; - overflow-x: scroll; - text-align: left; - font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; - color: #EE9; -} - -div.logo { - float: left; - padding: 10px; - text-align: center; - font-color: #EE9; - margin: 0 20px 0 20px; - border: 1px solid #494; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - background: #000; /*url("images/camotile2.png");*/ - width: 185px; - -moz-box-shadow: inset 0px 0px 1px 0px #009; - -khtml-box-shadow: inset 0px 0px 1px 0px #009; - box-shadow: inset 0px 0px 1px 0px #009; -} - -div.logo hr { - color: #494; - background: #494; - height: 1px; - border: 0px solid #494; - margin: 10px 0 5px; -} - -div.toolbar { - margin: 0; - padding: 10px; - font-weight: bold; - background: #000; - border: 1px solid #000; - display: none; -} - -div.toolbar a:link { - border: 1px outset #ddddc0; - padding: 0px 5px 1px 5px; - background: #bbf; - text-decoration: none; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - color: #000; -} - -div.toolbar a:visited { - background: #ddf; -} - -div.toolbar a:hover, button:hover{ - border: 1px solid #f60; - background: #030; - color: #f60; -} - -a:active{ - color: #900; -} - -div.routersummaryouter { - float: left; - width: 200px; - margin: 0 0 10px 5px; - padding: 0; - border: 0; - clear: left;/* fixes a bug in Opera */ - text-align: center; - display: block; -} - -div.routersummary { - width: 173px; - padding: 10px; - text-align: center; - border: 1px solid #494; - background: #000 url(images/camotile2.png); - color: #EE9; - font-size: 8pt; - clear: left;/* fixes a bug in Opera */ - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - float: left; - -moz-box-shadow: 0 1px 5px #000; - -khtml-box-shadow: 0 1px 5px #000; - box-shadow: 0 1px 5px #000; -} - -div.routersummary input[type=text] { - text-align: right !important; - -moz-box-shadow: inset 1px 1px 1px 0px #000; - -khtml-box-shadow: inset 1px 1px 1px 0px #000; - box-shadow: inset 1px 1px 1px 0px #000; -} - -div.routersummary hr { - color: #494; - background: #494; - height: 2px; - border-bottom: 1px solid #494; - margin: 8px -10px 7px -10px; - -moz-box-shadow: inset 0px 1px 1px 1px #000; - -khtml-box-shadow: inset 0px 1px 1px 1px #000; - box-shadow: inset 0px 1px 1px 1px #000; -} - -div.routersummary h3 { - border: 0; - font-size: 9.5pt; - letter-spacing: 0.04em; - margin: -7px -10px -8px -10px; - padding: 3px 0 4px 0 !important; - text-transform: uppercase; - -moz-border-radius: 0; - -khtml-border-radius: 0; - border-radius: 0; - background: #000 url('images/header.png') center center ; - background-image: -moz-linear-gradient(top, bottom, from(#050), to(#030), color-stop(7%, #000), color-stop(100%, #050)); -} - -div.routersummary h4 { - border: 0; - border-bottom: 0 !important; - font-size: 8.5pt; - letter-spacing: 0.02em; - margin: -7px -9px -10px -9px !important; - padding: 6px 3px 9px 3px; - background: #000; - text-transform: capitalize; - text-decoration: none !important; - color: #2b2; - background-image: -moz-linear-gradient(top, bottom, from(#000), to(#050), color-stop(10%, #050), color-stop(100%, #004)); - line-height: 100%; -} - -div.routersummary table { - border: 0; - text-align: center !important; - margin: -5px -7px -5px -8px !important; - width: 188px !important; - overflow: hidden; - font-size: 8pt; - padding: 0 -10px; - background-image: none !important; - background-color: transparent !important; -} - -div.routersummary tr { - background-image: none !important; - background-color: transparent !important; - border: 0 !important; -} - -div.routersummary form { - margin: -6px 0 -7px; -} - -div.routersummary form:first-child { - margin: 6px 0 -4px 0 !important; -} - -div.routersummary p { - padding: 0; -} - -div.refresh { - margin-top: -10px !important; - margin-bottom: -4px !important; - padding: 2px 0 0px 0 !important; -} - -div.routersummary a:link, div.routersummary a:visited { - text-shadow: 1px 1px 1px rgba(0, 16, 0, 0.8); - text-shadow: 0px 0px 2px #101 !important; -} - -div.routersummary a:hover { - text-shadow: 0px 0px 1px rgba(255, 96, 0, 0.7); - color: #f60; -} - -div.routersummary td { - padding: 0px 2px 0px 2px; - background-image: none !important; - border: 0 !important; -} - -div routersummary hr:last-child { - margin-top: 5px; - margin-bottom: -5px !important; -} - -div.tunnels { - padding-top: 3px !important; - margin-left: -4px; - text-align: center; -} - -div.tunnels table { - margin: -5px 0 -5px -3px !important; -} - -div.tunnels td { - padding: 1px 0px 1px 0px; -} - -div.tunnels td:first-child { - width: 16px; - text-align: left; - padding-right: 2px; -} - -div.tunnels td:last-child { - text-align: right; - padding-right: 1px; -} - -div.tunnels tr { -/* border: 1px solid #494 !important;*/ -} - -div.warning { - margin: 20px 20px 20px 245px; - padding: 5px 25px 20px 75px; - background: #000; - border: 1px solid #494; - text-align: left; - color: #EE9; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - text-align: justify; - background-image:url("../images/itoopie_sm.png"); - background-position:10px center; - background-repeat:no-repeat; - -moz-box-shadow: inset 0px 0px 0px 1px #f00; - -khtml-box-shadow: inset 0px 0px 0px 1px #f00; - box-shadow: inset 0px 0px 0px 1px #f00; - word-wrap: break-word; -} - -/* console error messages */ - -div.sorry { - margin: -1px 5px 10px 205px; - padding: 20px 20px 20px 75px; - background: #020; - border: 1px solid #494; - -moz-border-radius: 0 0 4px 4px; - -khtml-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; - text-align: justify; - background-image:url("images/errortriangle.png"); - background-position:15px center; - background-repeat:no-repeat; - -moz-box-shadow: inset 0px 0px 0px 1px #d00; - word-wrap: break-word; - font-weight: bold; - color: #EE9; -} - -div.sorry hr { - color: #EE9; - background: #EE9; - height: 1px; - border: 1px solid #EE9; - margin: 10px 0; -} - -div.main { - margin: -1px 5px 5px 205px; - padding: 0 15px 15px 15px; - text-align: left; - color: #EE9; - width: auto; -/* overflow-x: scroll; */ - border: 1px solid #494; - -moz-border-radius: 0 0 4px 4px; - -khtml-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; - background: #000 url(images/scarface.jpg) right bottom no-repeat !important; - min-width: 620px; - -moz-box-shadow: 0 1px 5px #000; -} - -div.main textarea { - background: #000; - color: #EE9; - font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; -} - -div.news { - margin: -1px 5px 0px 205px; - padding: 5px 30px 5px 30px; - border: 1px solid #494; - background: #000; - background: #000 url("images/news.png")no-repeat scroll bottom right; - color: #7b7; -/* border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - -khtml-border-radius: 4px 4px 0 0;*/ - font-size: 7.5pt; - text-align: right; - -moz-box-shadow: 0 1px 5px #000; - -khtml-box-shadow: 0 1px 5px #000; - box-shadow: 0 1px 5px #000; - min-width: 580px; -/* height: 164px; - overflow-y: auto;*/ -} - -div.news li { - text-align: justify; - list-style: url('images/info_dark.png'); - list-style: none; - margin: 0; - padding: 5px 5px 5px 0; - vertical-align: middle; - word-wrap: break-word; - color: #494; - font-weight: bold; - font-size: 9.5pt; - border-bottom: 1px dotted #494; - margin-bottom: 5px; - text-transform: capitalize; -} - -div.news h3 { - text-align: left !important; -} - -div.news h4 { - border-bottom: 1px; - border-bottom-style: dotted; - border-bottom-color: #494; - padding: 0 0 0px 0; - margin: 5px 0 10px 0; - font-size: 10pt; - opacity: 1; - text-transform: capitalize; -} - -div.news h4:first-child { - background: url('../images/itoopbullet.png'); - background-repeat: no-repeat; - background-position: right; -} - -div.news p { - margin-top: -5px; - font-size: 8.5pt; - color: #EE9; - margin-bottom: 0; -} - -div.news p:nth-child(n+1) { - margin-top: 5px; -} - -div.news hr { - margin: 8px 0 3px 0; -} - -div.confignav { - padding: 15px 10px !important; - margin: 15px 0; - background: #000 url('images/header.png') center center repeat-x ; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - border: 1px solid #494; - font-size: 9.5pt !important; - font-weight: bold !important; - line-height: 160% !important; - -} - -div.configure { -/* padding: 5px 15px 0 15px; - margin: 10px 0px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - border: 1px solid #494; */ - background: none;/* url(images/camotile2.png);*/ -} - -div.messages { - padding: 10px; - margin: 10px 0 15px 0; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - border: 1px solid #494; - background: #000 /*url('images/infotile.png') center left no-repeat;*/ - font-weight: bold; - font-size: 9pt; - color: #4f4; -} - -div.messages span.error { - color: #d90; -} - -div.messages span.notice { - font-style: italic; -} - -div.messages li { - text-align: justify !important; - font-weight: bold; - list-style: url(images/warning_dark.png) !important; - margin: 0 5px 0 50px !important; - padding: 0 10px 0 0 !important; - border: 0px !important; -} - -div.graphspanel { - padding: 0; - margin: 15px 0px -15px 0; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; -/* border: 1px solid #494;*/ - background: none;/* url(images/camotile.png);*/ - text-align: center; -} - -div.widepanel h3 { - text-align: left !important; -} - -div.graphspanel form { - text-align: left; - padding: 0 15px 0px 15px; -} - -div.graphspanel hr { - margin: 10px -15px 10px -15px; -} - -div.graphspanel img { - border: 1px solid #494; - padding: 3px; - margin: 5px; - text-align: center !important; - background: #000; - - opacity: 0.8; -} - -div.graphspanel img:hover { - border: 1px solid #000; - padding: 3px; - margin: 5px; - text-align: center !important; - background: #000; - -moz-box-shadow: inset 0px 0px 1px 1px #f60; - -khtml-box-shadow: inset 0px 0px 1px 1px #f60; - box-shadow: inset 0px 0px 1px 1px #f60; - opacity: 1; -} - -table { - border-collapse: collapse; - width: 100%; - border: 1px solid #494; - cell-padding: 1px; - font-size: 7pt; - background: #030; - margin: 1px 0; -} - -table hr { - padding: 0px 0; - color: #494; - background: #494; - border: 0px solid #494; - margin: 0px 0px; - height: 1px; - display: none; -} - -th { - padding: 6px 2px; - color: #EE9; - text-align: center; - font-size: 9pt; - background: #000; /*url('images/tabletitledark.png') repeat-x;*/ - background: #000 url('images/header.png') center center repeat-x ; - border-top: 1px solid #494; - border-bottom: 1px solid #494 !important; - line-height: 110%; -} - -tr { - vertical-align: middle; -} - -tr:nth-child(even) { - background: #010;/* url('images/darkerbluetile.png') !important;*/ - vertical-align: middle; -} - -tr:nth-child(odd) { - background: #000800;/* url('images/darkbluetile.png') !important;*/ - vertical-align: middle; -} -/* -tr:last-child { - background: #004 url('images/lightbluetile.png') !important; - font-weight: bold; - border: 1px solid #494 !important; -} -*/ -td { - padding: 4px 6px; - color: #EE9; - vertical-align: middle; - border-top: 1px inset #494; - border-bottom: 1px outset #494; -} - -td img { - padding: 0 1px 0 2px; -} - -tt { - font: bold 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; - color: #FF0; - padding: 0 5px 2px 0; -} - -div.main li { - text-align: left; - list-style: square; - margin: 2px 0px 2px 30px; - padding: 2px 20px 2px 0px; -/* line-height: 150%;*/ - word-wrap: break-word; -} - - -div.main li b { - color: #b70 !important; - letter-spacing: 0.07em; - font-size: 9pt; - text-shadow: 0 1px 1px #700; -} - -.tidylist { - text-align: justify !important; - line-height: 150%; -} - -.tidylist:first-child { -/* padding-top: 5px;*/ -} - -.tidylist:last-child { - padding-bottom: 10px; -} - -.tidylist code { - text-align: left; - font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; - color: #dd0; - padding: 1px 2px; - background: #030; - margin: 0 2px; -} - -ol { - display: inline; - margin: 1px 0 0 0; - padding: 1px 0 0 20px; -} - -ul { -/* display: inline; */ - margin: 0; - padding: 0; -} - -code { - text-align: left; - font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; - color: #dd0; - padding: 1px 2px; -} - -a:link, h2 a:link{ - color: #494; - text-decoration: none; - font-weight: bold; - word-wrap: break-word; -} - -a:visited{ - color: #7b7; - text-decoration: none; - font-weight: bold; - word-wrap: break-word; -} - -a:hover{ - color: #f60; - text-decoration: underline; - font-weight: bold; - word-wrap: break-word; -} - -.links { - padding-bottom: -2px; - text-align: justify; - margin-top: 10px; - margin-bottom: -10px; -} - -.links li { - list-style-image: url("images/link.png") !important; -} - -.links b{ - color: #b70 !important; - letter-spacing: 0.07em; - font-size: 9.5pt; - line-height: 165%; - text-shadow: 0 1px 1px #700; -} - -p { - text-align: justify; - line-height: 160%; -} - -h1 { - text-align: left; - color: #EE9; - padding: 15px 15px 14px; - margin: 0 5px 0px 205px !important; - font-size: 17pt; - font-weight: bold; - font-style: normal; - text-transform: uppercase; - letter-spacing: 0.15em; - text-shadow: 0px 0px 2px #010; - white-space: normal; - background: #000 url("images/scope.png")no-repeat scroll right top; - background: #000 url("images/bg2.png")no-repeat scroll top right; - background: #000 url('images/header.png') center center; - background-image: -moz-linear-gradient(top, bottom, from(#000), to(#030), color-stop(30%, #000), color-stop(100%, #000)); - border: 1px solid #494; - border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - -khtml-border-radius: 4px 4px 0 0; - line-height: 120%; - min-width: 620px; - -moz-box-shadow: 0 1px 5px #000; - -khtml-box-shadow: 0 1px 5px #000; - box-shadow: 0 1px 5px #000; -} - -h2 { - font-size: 12pt; - color: #EE9; - text-shadow: 0px 0px 2px #010; - letter-spacing: 0.05em; - background: #000 url(images/camotile2.png); - background-image: -moz-linear-gradient(top, bottom, from(#000), to(#030), color-stop(30%, #000), color-stop(100%, #000)); - background: #000 url('images/header.png') center center ; - padding: 10px; - wordwrap: none; - border: 1px solid #494; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - vertical-align: middle; - margin: 15px 0 12px 0 !important; - text-transform: uppercase; - word-wrap: break-word; -} - -h2 a:visited { - color: #191; -} - -h2 a:hover { - color: #f60; - text-shadow: 0px 0px 1px rgba(255, 64, 0, 0.7); -} - -h3 { - border: 1px solid #494; - border-left: 5px solid #494; - padding: 5px 6px; - margin: 12px 0 10px 0; - border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - -khtml-border-radius: 0 4px 4px 0; - background: #000 url(images/camotile.png); - background: #000 url('images/header.png') center center ; - text-transform: uppercase; - text-shadow: 0px 0px 2px #010; -} - -h4 { - border-bottom: 1px; - border-bottom-style: solid; - border-bottom-color: #494; - padding: 0 0 10px 0; - margin: 5px 0 10px 0; - font-size: 11pt; -} - -button, button:visited { - font: bold 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - border: 1px outset #191; - padding: 1px 3px; - text-decoration: none; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - font-size: 8pt; - font-weight: bold; - margin: 2px 3px; - text-align: center; - vertical-align: middle; - min-width: 76px; - -moz-box-shadow: inset 0px 1px 1px 0px #494; - -khtml-box-shadow: inset 0px 1px 1px 0px #191; - box-shadow: inset 0px 1px 1px 0px #191; - background: #000; - color: #494; -} - -button:hover { - border: 1px solid #f60; - -moz-box-shadow: inset 0px 1px 1px 0px #EE9; - -khtml-box-shadow: inset 0px 1px 1px 0px #EE9; - box-shadow: inset 0px 1px 1px 0px #EE9; - background: #000; - color: #f60; -} - -button:active { - border: 1px inset #f60; - background: #f60; - color: #EE9; - -moz-box-shadow: inset 0px 0px 0px 0px #f60; - -khtml-box-shadow: inset 0px 0px 0px 0px #f60; - box-shadow: inset 0px 0px 0px 0px #f60; -} - -.underline { - border-bottom: 1px solid #eeeeff; - padding: 5px 0px 5px 0px; - margin: 0px 0px 10px 0px; -} - -.langbox { - margin: 21px 2px 2px 5px; - padding: 7px 10px 5px 10px; - color: #EE9; - font-size: 7pt; - width: 220px; - text-align: right; - float: right; - vertical-align: middle; -} - -.langbox img { - opacity: 0.5; - -moz-box-shadow: 0 0 1px #000; -} - -.langbox img:hover { - opacity: 1; - -moz-box-shadow: 0 0 1px #f60; -} - -hr { - color: #494; - background: #494; - height: 1px; - border: 0px solid #494; - margin: 20px 0 10px; -} - -hr:last-child { - margin-top: 20px; - margin-bottom: 20px; -} - -sidebarlogo { - text-align: center; -} - -input { - border: 1px outset #5f5; - -moz-box-shadow: inset 0px 1px 1px 0px #373; - -khtml-box-shadow: inset 0px 1px 1px 0px #373; - box-shadow: inset 0px 1px 1px 0px #373; - background: #000; - color: #494; - margin: 5px; - font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - padding: 1px 2px; - text-decoration: none; - min-width: 110px; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; -} - -input:hover { - background: #000; - color: #f60; - border: 1px solid #f60; - -moz-box-shadow: inset 0px 1px 1px 0px #9e9; - -khtml-box-shadow: inset 0px 1px 1px 0px #9e9; - box-shadow: inset 0px 1px 1px 0px #9e9; -} - -input:active { - background: #000; - color: #f30; - border: 1px solid #f30; -} - -input:active { - border: 1px inset #f60; - background: #f60; - color: #EE9; -} - -input[type=text], input[type=password] { - background: #000; - color: #EE9; - margin: 5px 10px; - padding: 4px 2px; - font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - border: 1px solid #494 !important; - text-decoration: none; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - -moz-box-shadow: inset 1px 1px 1px 0px #000; - -khtml-box-shadow: inset 1px 1px 1px 0px #000; - box-shadow: inset 1px 1px 1px 0px #000; -} - -input[type=text]:active, input[type=text]:hover, input[type=password]:active, input[type=password]:hover { - background: #000; -} - -fieldset { -overflow: hidden; -position: relative; -} - -select { - background: #000; - color: #EE9; - margin: 5px 10px; - border: 1px solid #494; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - min-width: 110px; - font: 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - padding: 2px; -} - -textarea { - background: #000; - color: #EE9; - padding: 5px; - margin: 10px; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; - min-height: 100px; - min-width: 97%; - text-align: left; - border: 1px solid #494; -} - -form {} - -.proxyfooter { - margin: 0 20px 10px 240px; - padding: 20px 25px 20px 75px; - font-color: #f00; - font-size: 7pt; - text-align: right !important; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border: 1px solid #000; - display: none; -} - -.statusnotes { - font-style: italic; - font-size: 8pt; - color: #EE9; - text-align: center; - border: 1px solid #494 !important; -/* border-top: 0px !important;*/ - margin: -3px 0 5px 0; - padding: 7px; - background: #010; - -moz-box-shadow: inset 0px 0px 0px 1px #090; - -khtml-box-shadow: inset 0px 0px 0px 1px #090; - box-shadow: inset 0px 0px 0px 1px #090; -/* background: #000 url('images/header.png') repeat-x center center !important;*/ -} - -div.joblog { -/* margin: 15px 0 15px 0; - padding: 5px 20px 10px 20px !important; - border: 1px solid #494; - background-color: #000; - background: #000; url("images/camotile.png");*/ -/* color: #dfd;*/ - border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - -khtml-border-radius: 4px 4px 0 0; - text-align: justify !important; - overflow-x: auto; /* Opera fix */ - } - -div.main li { - text-align: left; - list-style: square; - margin: 2px 0px 2px 30px; - padding: 2px 20px 2px 0px; -/* line-height: 150%;*/ - word-wrap: break-word; -} - -div.joblog li { - word-wrap: break-word !important; - text-align: justify !important; - line-height: 120% !important; - margin: 2px 0px 2px 30px; - padding: 2px 20px 2px 0px; -} - -div.joblog ul { - word-wrap: break-word !important; - text-align: justify; - margin: 0px 0 10px; -} - -div.joblog li:first-child { - margin-top: 0px; -} - -div.joblog li:last-child { -/* margin-bottom: -25px;*/ -} - -div.joblog form:first-child { - margin-top: 10px; -} - -div.joblog table { - margin-top: 15px; -} - -div.joblog p { - line-height: 130%; -} - -.smallhead { - font-size: 7pt -} - -.mediumtags { - font-size: 9pt; -} - -.optbox { - min-width: 16px !important; - max-width: 16px !important; - width: 16px !important; - min-height: 16px; - max-height: 16px; - height: 16px; - opacity: 1.0; - border: 0; - margin: 5px 5px 5px 10px; - padding: 2px; - overflow: hidden; - position: relative; -} - -.optbox:hover { - min-width: 16px !important; - max-width: 16px !important; - width: 16px !important; - min-height: 16px; - max-height: 16px; - height: 16px; - opacity: 1.0; - border: 0; - margin: 5px 5px 5px 10px; - padding: 2px; -} - -.cells { - border: 1px inset #494; - border-left: 1px outset #494; -} - -.tablefooter tr, .tablefooter td { - background: #000 url('images/header.png') repeat-x center center !important; - border-top: 1px solid #494; - border-bottom: 1px solid #494 !important; - font-size: 7pt; - line-height: 110%; -} - -.formaction { - text-align: right; -} - -div.footnote { - text-align: right; - color: #494; - font-size: 7pt; - margin-bottom: -8px !important; -} - -div.footnote hr{ - margin: 10px 0 5px 0 !important; - color: #494; - background: #494; - height: 1px; - border: 0px solid #494; -} - -.topness { - font-size: 7.5pt; - text-align: right; - margin-top: -5px; - margin-bottom: -5px; - margin-right: 5px; -} +/* I2P Theme: Camo aka Dark */ +/* Description: Military Grade. */ +/* Comment: Thanks to Florian Kuhlmann for the hatface images. [ http://www.flickr.com/photos/floriankuhlmann/] +/* Author: dr|z3d */ + +body { + margin: 5px 0px 0 0px; + padding: 0; + text-align: center; + background: #010 url('images/camotile.png') center bottom; + color: #EE9; + font: 9pt/130% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + +} + +.hide { + display: none; +} + +img { + border: none; +} + +pre { + width: 98%; + overflow-x: scroll; + text-align: left; + font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; + color: #EE9; +} + +div.logo { + float: left; + padding: 10px; + text-align: center; + font-color: #EE9; + margin: 0 20px 0 20px; + border: 1px solid #494; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + background: #000; /*url("images/camotile2.png");*/ + width: 185px; + -moz-box-shadow: inset 0px 0px 1px 0px #009; + -khtml-box-shadow: inset 0px 0px 1px 0px #009; + box-shadow: inset 0px 0px 1px 0px #009; +} + +div.logo hr { + color: #494; + background: #494; + height: 1px; + border: 0px solid #494; + margin: 10px 0 5px; +} + +div.toolbar { + margin: 0; + padding: 10px; + font-weight: bold; + background: #000; + border: 1px solid #000; + display: none; +} + +div.toolbar a:link { + border: 1px outset #ddddc0; + padding: 0px 5px 1px 5px; + background: #bbf; + text-decoration: none; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + color: #000; +} + +div.toolbar a:visited { + background: #ddf; +} + +div.toolbar a:hover, button:hover{ + border: 1px solid #f60; + background: #030; + color: #f60; +} + +a:active{ + color: #900; +} + +div.routersummaryouter { + float: left; + width: 200px; + margin: 0 0 10px 5px; + padding: 0; + border: 0; + clear: left;/* fixes a bug in Opera */ + text-align: center; + display: block; +} + +div.routersummary { + width: 173px; + padding: 10px; + text-align: center; + border: 1px solid #494; + background: #000 url(images/camotile2.png); + color: #EE9; + font-size: 8pt; + clear: left;/* fixes a bug in Opera */ + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + float: left; + -moz-box-shadow: 0 1px 5px #000; + -khtml-box-shadow: 0 1px 5px #000; + box-shadow: 0 1px 5px #000; +} + +div.routersummary input[type=text] { + text-align: right !important; + -moz-box-shadow: inset 1px 1px 1px 0px #000; + -khtml-box-shadow: inset 1px 1px 1px 0px #000; + box-shadow: inset 1px 1px 1px 0px #000; +} + +div.routersummary hr { + color: #494; + background: #494; + height: 2px; + border-bottom: 1px solid #494; + margin: 8px -10px 7px -10px; + -moz-box-shadow: inset 0px 1px 1px 1px #000; + -khtml-box-shadow: inset 0px 1px 1px 1px #000; + box-shadow: inset 0px 1px 1px 1px #000; +} + +div.routersummary h3 { + border: 0; + font-size: 9.5pt; + letter-spacing: 0.04em; + margin: -7px -10px -8px -10px; + padding: 3px 0 4px 0 !important; + text-transform: uppercase; + -moz-border-radius: 0; + -khtml-border-radius: 0; + border-radius: 0; + background: #000 url('images/header.png') center center ; + background-image: -moz-linear-gradient(top, bottom, from(#050), to(#030), color-stop(7%, #000), color-stop(100%, #050)); +} + +div.routersummary h4 { + border: 0; + border-bottom: 0 !important; + font-size: 8.5pt; + letter-spacing: 0.02em; + margin: -7px -9px -10px -9px !important; + padding: 6px 3px 9px 3px; + background: #000; + text-transform: capitalize; + text-decoration: none !important; + color: #2b2; + background-image: -moz-linear-gradient(top, bottom, from(#000), to(#050), color-stop(10%, #050), color-stop(100%, #004)); + line-height: 100%; +} + +div.routersummary table { + border: 0; + text-align: center !important; + margin: -5px -7px -5px -8px !important; + width: 188px !important; + overflow: hidden; + font-size: 8pt; + padding: 0 -10px; + background-image: none !important; + background-color: transparent !important; +} + +div.routersummary tr { + background-image: none !important; + background-color: transparent !important; + border: 0 !important; +} + +div.routersummary form { + margin: -6px 0 -7px; +} + +div.routersummary form:first-child { + margin: 6px 0 -4px 0 !important; +} + +div.routersummary p { + padding: 0; +} + +div.refresh { + margin-top: -10px !important; + margin-bottom: -4px !important; + padding: 2px 0 0px 0 !important; +} + +div.routersummary a:link, div.routersummary a:visited { + text-shadow: 1px 1px 1px rgba(0, 16, 0, 0.8); + text-shadow: 0px 0px 2px #101 !important; +} + +div.routersummary a:hover { + text-shadow: 0px 0px 1px rgba(255, 96, 0, 0.7); + color: #f60; +} + +div.routersummary td { + padding: 0px 2px 0px 2px; + background-image: none !important; + border: 0 !important; +} + +div routersummary hr:last-child { + margin-top: 5px; + margin-bottom: -5px !important; +} + +div.tunnels { + padding-top: 3px !important; + margin-left: -4px; + text-align: center; +} + +div.tunnels table { + margin: -5px 0 -5px -3px !important; +} + +div.tunnels td { + padding: 1px 0px 1px 0px; +} + +div.tunnels td:first-child { + width: 16px; + text-align: left; + padding-right: 2px; +} + +div.tunnels td:last-child { + text-align: right; + padding-right: 1px; +} + +div.tunnels tr { +/* border: 1px solid #494 !important;*/ +} + +div.warning { + margin: 20px 20px 20px 245px; + padding: 5px 25px 20px 75px; + background: #000; + border: 1px solid #494; + text-align: left; + color: #EE9; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + text-align: justify; + background-image:url("../images/itoopie_sm.png"); + background-position:10px center; + background-repeat:no-repeat; + -moz-box-shadow: inset 0px 0px 0px 1px #f00; + -khtml-box-shadow: inset 0px 0px 0px 1px #f00; + box-shadow: inset 0px 0px 0px 1px #f00; + word-wrap: break-word; +} + +/* console error messages */ + +div.sorry { + margin: -1px 5px 10px 205px; + padding: 20px 20px 20px 75px; + background: #020; + border: 1px solid #494; + -moz-border-radius: 0 0 4px 4px; + -khtml-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; + text-align: justify; + background-image:url("images/errortriangle.png"); + background-position:15px center; + background-repeat:no-repeat; + -moz-box-shadow: inset 0px 0px 0px 1px #d00; + word-wrap: break-word; + font-weight: bold; + color: #EE9; +} + +div.sorry hr { + color: #EE9; + background: #EE9; + height: 1px; + border: 1px solid #EE9; + margin: 10px 0; +} + +div.main { + margin: -1px 5px 5px 205px; + padding: 0 15px 15px 15px; + text-align: left; + color: #EE9; + width: auto; +/* overflow-x: scroll; */ + border: 1px solid #494; + -moz-border-radius: 0 0 4px 4px; + -khtml-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; + background: #000 url(images/scarface.jpg) right bottom no-repeat !important; + min-width: 620px; + -moz-box-shadow: 0 1px 5px #000; +} + +div.main textarea { + background: #000; + color: #EE9; + font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; +} + +div.news { + margin: -1px 5px 0px 205px; + padding: 5px 30px 5px 30px; + border: 1px solid #494; + background: #000; + background: #000 url("images/news.png")no-repeat scroll bottom right; + color: #7b7; + font-size: 7.5pt; + text-align: right; + -moz-box-shadow: 0 1px 5px #000; + -khtml-box-shadow: 0 1px 5px #000; + box-shadow: 0 1px 5px #000; + min-width: 590px; +} + +div.news li { + text-align: justify; + list-style: url('images/info_dark.png'); + list-style: none; + margin: 0; + padding: 5px 5px 5px 0; + vertical-align: middle; + word-wrap: break-word; + color: #494; + font-weight: bold; + font-size: 9.5pt; + border-bottom: 1px dotted #494; + margin-bottom: 5px; + text-transform: capitalize; +} + +div.news h3 { + background: none; + text-align: left; + border: none; + padding-left: 0; + padding-top: 2px; + border-bottom: 1px dotted; +} + +div.news h4 { + border-bottom: 1px; + border-bottom-style: dotted; + border-bottom-color: #494; + padding: 0 0 0px 0; + margin: 5px 0 10px 0; + font-size: 10pt; + opacity: 1; + text-transform: capitalize; +} + +div.news h4:first-child { + background: url('../images/itoopbullet.png'); + background-repeat: no-repeat; + background-position: right; +} + +div.news p { + margin-top: -5px; + font-size: 8.5pt; + color: #EE9; + margin-bottom: 0; +} + +div.news p:nth-child(n+1) { + margin-top: 5px; +} + +div.news hr { + margin: 8px 0 3px 0; +} + +div.confignav { + padding: 15px 10px !important; + margin: 15px 0; + background: #000 url('images/header.png') center center repeat-x ; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + border: 1px solid #494; + font-size: 9.5pt !important; + font-weight: bold !important; + line-height: 160% !important; + +} + +div.configure { +/* padding: 5px 15px 0 15px; + margin: 10px 0px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + border: 1px solid #494; */ + background: none;/* url(images/camotile2.png);*/ +} + +div.messages { + padding: 10px; + margin: 10px 0 15px 0; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + border: 1px solid #494; + background: #000 /*url('images/infotile.png') center left no-repeat;*/ + font-weight: bold; + font-size: 9pt; + color: #4f4; +} + +div.messages span.error { + color: #d90; +} + +div.messages span.notice { + font-style: italic; +} + +div.messages li { + text-align: justify !important; + font-weight: bold; + list-style: url(images/warning_dark.png) !important; + margin: 0 5px 0 50px !important; + padding: 0 10px 0 0 !important; + border: 0px !important; +} + +div.graphspanel { + padding: 0; + margin: 15px 0px -15px 0; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; +/* border: 1px solid #494;*/ + background: none;/* url(images/camotile.png);*/ + text-align: center; +} + +div.widepanel h3 { + text-align: left !important; +} + +div.graphspanel form { + text-align: left; + padding: 0 15px 0px 15px; +} + +div.graphspanel hr { + margin: 10px -15px 10px -15px; +} + +div.graphspanel img { + border: 1px solid #494; + padding: 3px; + margin: 5px; + text-align: center !important; + background: #000; + + opacity: 0.8; +} + +div.graphspanel img:hover { + border: 1px solid #000; + padding: 3px; + margin: 5px; + text-align: center !important; + background: #000; + -moz-box-shadow: inset 0px 0px 1px 1px #f60; + -khtml-box-shadow: inset 0px 0px 1px 1px #f60; + box-shadow: inset 0px 0px 1px 1px #f60; + opacity: 1; +} + +table { + border-collapse: collapse; + width: 100%; + border: 1px solid #494; + cell-padding: 1px; + font-size: 7pt; + background: #030; + margin: 1px 0; +} + +table hr { + padding: 0px 0; + color: #494; + background: #494; + border: 0px solid #494; + margin: 0px 0px; + height: 1px; + display: none; +} + +th { + padding: 6px 2px; + color: #EE9; + text-align: center; + font-size: 9pt; + background: #000; /*url('images/tabletitledark.png') repeat-x;*/ + background: #000 url('images/header.png') center center repeat-x ; + border-top: 1px solid #494; + border-bottom: 1px solid #494 !important; + line-height: 110%; +} + +tr { + vertical-align: middle; +} + +tr:nth-child(even) { + background: #010;/* url('images/darkerbluetile.png') !important;*/ + vertical-align: middle; +} + +tr:nth-child(odd) { + background: #000800;/* url('images/darkbluetile.png') !important;*/ + vertical-align: middle; +} +/* +tr:last-child { + background: #004 url('images/lightbluetile.png') !important; + font-weight: bold; + border: 1px solid #494 !important; +} +*/ +td { + padding: 4px 6px; + color: #EE9; + vertical-align: middle; + border-top: 1px inset #494; + border-bottom: 1px outset #494; +} + +td img { + padding: 0 1px 0 2px; +} + +tt { + font: bold 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; + color: #FF0; + padding: 0 5px 2px 0; +} + +div.main li { + text-align: left; + list-style: square; + margin: 2px 0px 2px 30px; + padding: 2px 20px 2px 0px; +/* line-height: 150%;*/ + word-wrap: break-word; +} + + +div.main li b { + color: #b70 !important; + letter-spacing: 0.07em; + font-size: 9pt; + text-shadow: 0 1px 1px #700; +} + +.tidylist { + text-align: justify !important; + line-height: 150%; +} + +.tidylist:first-child { +/* padding-top: 5px;*/ +} + +.tidylist:last-child { + padding-bottom: 10px; +} + +.tidylist code { + text-align: left; + font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; + color: #dd0; + padding: 1px 2px; + background: #030; + margin: 0 2px; +} + +ol { + display: inline; + margin: 1px 0 0 0; + padding: 1px 0 0 20px; +} + +ul { +/* display: inline; */ + margin: 0; + padding: 0; +} + +code { + text-align: left; + font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; + color: #dd0; + padding: 1px 2px; +} + +a:link, h2 a:link{ + color: #494; + text-decoration: none; + font-weight: bold; + word-wrap: break-word; +} + +a:visited{ + color: #7b7; + text-decoration: none; + font-weight: bold; + word-wrap: break-word; +} + +a:hover{ + color: #f60; + text-decoration: underline; + font-weight: bold; + word-wrap: break-word; +} + +.links { + padding-bottom: -2px; + text-align: justify; + margin-top: 10px; + margin-bottom: -10px; +} + +.links li { + list-style-image: url("images/link.png") !important; +} + +.links b{ + color: #b70 !important; + letter-spacing: 0.07em; + font-size: 9.5pt; + line-height: 165%; + text-shadow: 0 1px 1px #700; +} + +p { + text-align: justify; + line-height: 160%; +} + +h1 { + text-align: left; + color: #EE9; + padding: 15px 15px 14px; + margin: 0 5px 0px 205px !important; + font-size: 17pt; + font-weight: bold; + font-style: normal; + text-transform: uppercase; + letter-spacing: 0.15em; + text-shadow: 0px 0px 2px #010; + white-space: normal; + background: #000 url("images/scope.png")no-repeat scroll right top; + background: #000 url("images/bg2.png")no-repeat scroll top right; + background: #000 url('images/header.png') center center; + background-image: -moz-linear-gradient(top, bottom, from(#000), to(#030), color-stop(30%, #000), color-stop(100%, #000)); + border: 1px solid #494; + border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + -khtml-border-radius: 4px 4px 0 0; + line-height: 120%; + min-width: 620px; + -moz-box-shadow: 0 1px 5px #000; + -khtml-box-shadow: 0 1px 5px #000; + box-shadow: 0 1px 5px #000; +} + +h2 { + font-size: 12pt; + color: #EE9; + text-shadow: 0px 0px 2px #010; + letter-spacing: 0.05em; + background: #000 url(images/camotile2.png); + background-image: -moz-linear-gradient(top, bottom, from(#000), to(#030), color-stop(30%, #000), color-stop(100%, #000)); + background: #000 url('images/header.png') center center ; + padding: 10px; + wordwrap: none; + border: 1px solid #494; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + vertical-align: middle; + margin: 15px 0 12px 0 !important; + text-transform: uppercase; + word-wrap: break-word; +} + +h2 a:visited { + color: #191; +} + +h2 a:hover { + color: #f60; + text-shadow: 0px 0px 1px rgba(255, 64, 0, 0.7); +} + +h3 { + border: 1px solid #494; + border-left: 5px solid #494; + padding: 5px 6px; + margin: 12px 0 10px 0; + border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + -khtml-border-radius: 0 4px 4px 0; + background: #000 url(images/camotile.png); + background: #000 url('images/header.png') center center ; + text-transform: uppercase; + text-shadow: 0px 0px 2px #010; +} + +h4 { + border-bottom: 1px; + border-bottom-style: solid; + border-bottom-color: #494; + padding: 0 0 10px 0; + margin: 5px 0 10px 0; + font-size: 11pt; +} + +button, button:visited { + font: bold 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + border: 1px outset #191; + padding: 1px 3px; + text-decoration: none; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + font-size: 8pt; + font-weight: bold; + margin: 2px 3px; + text-align: center; + vertical-align: middle; + min-width: 76px; + -moz-box-shadow: inset 0px 1px 1px 0px #494; + -khtml-box-shadow: inset 0px 1px 1px 0px #191; + box-shadow: inset 0px 1px 1px 0px #191; + background: #000; + color: #494; +} + +button:hover { + border: 1px solid #f60; + -moz-box-shadow: inset 0px 1px 1px 0px #EE9; + -khtml-box-shadow: inset 0px 1px 1px 0px #EE9; + box-shadow: inset 0px 1px 1px 0px #EE9; + background: #000; + color: #f60; +} + +button:active { + border: 1px inset #f60; + background: #f60; + color: #EE9; + -moz-box-shadow: inset 0px 0px 0px 0px #f60; + -khtml-box-shadow: inset 0px 0px 0px 0px #f60; + box-shadow: inset 0px 0px 0px 0px #f60; +} + +.underline { + border-bottom: 1px solid #eeeeff; + padding: 5px 0px 5px 0px; + margin: 0px 0px 10px 0px; +} + +.langbox { + margin: 21px 2px 2px 5px; + padding: 7px 10px 5px 10px; + color: #EE9; + font-size: 7pt; + width: 220px; + text-align: right; + float: right; + vertical-align: middle; +} + +.langbox img { + opacity: 0.5; + -moz-box-shadow: 0 0 1px #000; +} + +.langbox img:hover { + opacity: 1; + -moz-box-shadow: 0 0 1px #f60; +} + +hr { + color: #494; + background: #494; + height: 1px; + border: 0px solid #494; + margin: 20px 0 10px; +} + +hr:last-child { + margin-top: 20px; + margin-bottom: 20px; +} + +sidebarlogo { + text-align: center; +} + +input { + border: 1px outset #5f5; + -moz-box-shadow: inset 0px 1px 1px 0px #373; + -khtml-box-shadow: inset 0px 1px 1px 0px #373; + box-shadow: inset 0px 1px 1px 0px #373; + background: #000; + color: #494; + margin: 5px; + font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + padding: 1px 2px; + text-decoration: none; + min-width: 110px; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; +} + +input:hover { + background: #000; + color: #f60; + border: 1px solid #f60; + -moz-box-shadow: inset 0px 1px 1px 0px #9e9; + -khtml-box-shadow: inset 0px 1px 1px 0px #9e9; + box-shadow: inset 0px 1px 1px 0px #9e9; +} + +input:active { + background: #000; + color: #f30; + border: 1px solid #f30; +} + +input:active { + border: 1px inset #f60; + background: #f60; + color: #EE9; +} + +input[type=text] { + background: #000; + color: #EE9; + margin: 5px 10px; + padding: 4px 2px; + font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + border: 1px solid #494 !important; + text-decoration: none; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -moz-box-shadow: inset 1px 1px 1px 0px #000; + -khtml-box-shadow: inset 1px 1px 1px 0px #000; + box-shadow: inset 1px 1px 1px 0px #000; +} + +input[type=text]:active, input[type=text]:hover { + background: #000; +} + +fieldset { +overflow: hidden; +position: relative; +} + +select { + background: #000; + color: #EE9; + margin: 5px 10px; + border: 1px solid #494; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + min-width: 110px; + font: 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + padding: 2px; +} + +textarea { + background: #000; + color: #EE9; + padding: 5px; + margin: 10px; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; + min-height: 100px; + min-width: 97%; + text-align: left; + border: 1px solid #494; +} + +form {} + +.proxyfooter { + margin: 0 20px 10px 240px; + padding: 20px 25px 20px 75px; + font-color: #f00; + font-size: 7pt; + text-align: right !important; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border: 1px solid #000; + display: none; +} + +.statusnotes { + font-style: italic; + font-size: 8pt; + color: #EE9; + text-align: center; + border: 1px solid #494 !important; +/* border-top: 0px !important;*/ + margin: -3px 0 5px 0; + padding: 7px; + background: #010; + -moz-box-shadow: inset 0px 0px 0px 1px #090; + -khtml-box-shadow: inset 0px 0px 0px 1px #090; + box-shadow: inset 0px 0px 0px 1px #090; +/* background: #000 url('images/header.png') repeat-x center center !important;*/ +} + +div.joblog { +/* margin: 15px 0 15px 0; + padding: 5px 20px 10px 20px !important; + border: 1px solid #494; + background-color: #000; + background: #000; url("images/camotile.png");*/ +/* color: #dfd;*/ + border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + -khtml-border-radius: 4px 4px 0 0; + text-align: justify !important; + overflow-x: auto; /* Opera fix */ + } + +div.main li { + text-align: left; + list-style: square; + margin: 2px 0px 2px 30px; + padding: 2px 20px 2px 0px; +/* line-height: 150%;*/ + word-wrap: break-word; +} + +div.joblog li { + word-wrap: break-word !important; + text-align: justify !important; + line-height: 120% !important; + margin: 2px 0px 2px 30px; + padding: 2px 20px 2px 0px; +} + +div.joblog ul { + word-wrap: break-word !important; + text-align: justify; + margin: 0px 0 10px; +} + +div.joblog li:first-child { + margin-top: 0px; +} + +div.joblog li:last-child { +/* margin-bottom: -25px;*/ +} + +div.joblog form:first-child { + margin-top: 10px; +} + +div.joblog table { + margin-top: 15px; +} + +div.joblog p { + line-height: 130%; +} + +.smallhead { + font-size: 7pt +} + +.mediumtags { + font-size: 9pt; +} + +.optbox { + min-width: 16px !important; + max-width: 16px !important; + width: 16px !important; + min-height: 16px; + max-height: 16px; + height: 16px; + opacity: 1.0; + border: 0; + margin: 5px 5px 5px 10px; + padding: 2px; + overflow: hidden; + position: relative; +} + +.optbox:hover { + min-width: 16px !important; + max-width: 16px !important; + width: 16px !important; + min-height: 16px; + max-height: 16px; + height: 16px; + opacity: 1.0; + border: 0; + margin: 5px 5px 5px 10px; + padding: 2px; +} + +.cells { + border: 1px inset #494; + border-left: 1px outset #494; +} + +.tablefooter tr, .tablefooter td { + background: #000 url('images/header.png') repeat-x center center !important; + border-top: 1px solid #494; + border-bottom: 1px solid #494 !important; + font-size: 7pt; + line-height: 110%; +} + +.formaction { + text-align: right; +} + +div.footnote { + text-align: right; + color: #494; + font-size: 7pt; + margin-bottom: -8px !important; +} + +div.footnote hr{ + margin: 10px 0 5px 0 !important; + color: #494; + background: #494; + height: 1px; + border: 0px solid #494; +} + +.topness { + font-size: 7.5pt; + text-align: right; + margin-top: -5px; + margin-bottom: -5px; + margin-right: 5px; +} \ No newline at end of file diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index fe8b61cb2..414b2ee6d 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -1,1179 +1,1194 @@ -/* I2P Theme: Light */ -/* Description: Light blue highlights. */ -/* Author: dr|z3d */ - -body { - margin: 10px 0px -10px 10px; - text-align: center; - background: #ffe url('images/snowcamo.png'); - color: #000; - font: 10pt/130% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - background: #99f url('images/magic.png') center bottom; -} - -.hide { - display: none; -} - -img { - border: none; -} - -pre { - width: 98%; - overflow: auto; - text-align: left; - font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; - color: #333; - margin: 10px; -} - -div.logo { - float: left; - padding: 10px; - text-align: center; - font-color: #fff; - margin: 0 10px; - border: 1px solid #447; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - background: #ffe; /*url('images/lightbluetile.png')*/ - width: 185px; - -moz-box-shadow: inset 0px 0px 1px 1px #bbf; -} - -div.toolbar { - margin: 0; - padding: 10px; - font-weight: bold; - background: #ffe; - border: 1px solid #447; - display: none !important; -} - -div.toolbar a:link { - border: 1px outset #ddddc0; - padding: 0px 5px 1px 5px; - line-height: 250%; - background: #bbf; - text-decoration: none; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - display: none !important; -} - -div.toolbar a:visited { - background: #ffe; -} - -div.toolbar a:hover{ - border: 1px solid #eeffef; - background: #003; - color: #f60; -} - -a:active{ - color: #900; -} - -div.routersummaryouter { - float: left; - width: 200px; - margin: 0 0 10px 0px; - padding: 0; - border: 0; - clear: left;/* fixes a bug in Opera */ - text-align: center !important; - display: block; -} - -div.routersummary { -/* margin: 0px 20px 20px 0px; */ - width: 180px; - padding: 8px 8px 10px 8px; - text-align: center !important; - border: 1px solid #447; - color: #000; - font-size: 8pt; - clear: left;/* fixes a bug in Opera */ - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - background: #ffe url('images/magic.png') center bottom;/* - float: left; -*/ - -moz-box-shadow: inset 0px 0px 1px 1px #bbf; -} - -div.routersummary input[type=text] { - text-align: right !important; -} - -div.routersummary hr { - color: #99f; - background: #99f; - height: 1px; - border-bottom: 1px solid #99f; - margin: 8px -7px 8px -7px; - -moz-box-shadow: inset 0px 1px 1px 1px #fff; - -khtml-box-shadow: inset 0px 0px 1px #fff; - box-shadow: inset 0px 1px 1px 1px #fff; -} - -div routersummary hr:last-child { -} - -div.routersummary h3 { - border: 0; - font-size: 9.5pt; - letter-spacing: 0.04em; - margin: -4px -3px; - padding: 2px 0; - background: #ffe; - text-transform: uppercase; - background: #ffe url('images/header.png') center center repeat-x; - border: 1px solid #99f !important; - -moz-border-radius: 3px; - -khtml-border-radius: 3px; - border-radius: 3px; - -moz-box-shadow: 0px 1px 5px #bbf; -} - -div.routersummary h3 a { - text-decoration: none; -} - -div.routersummary h3:hover { - background: #ffa url('images/header.png') center center repeat-x !important; - text-shadow: 0 0 0; -} - -div.routersummary h4 { - border: 0px solid #fff; - border-bottom: 0 !important; - font-size: 8.5pt; - letter-spacing: 0.02em; - margin: -5px -7px -5px -7px !important; - padding: 3px 3px 5px 3px; - background: #eed url(images/magic.png); - text-transform: capitalize; - text-decoration: none !important; - color: #2b2; - line-height: 105%; -/* text-shadow: 0px 1px 1px #99f;*/ -} - -div.routersummary table { - border: 0; - text-align: center !important; - margin: -7px -5px -6px -5px; - width: 190px !important; - overflow: hidden; - font-size: 8pt; - padding: 0px -10px; - background-image: none !important; - background-color: transparent !important; -} - -div.routersummary tr { - background-image: none !important; - background-color: transparent !important; - border: 0 !important; -} - -div.routersummary td:first-child { - max-width: 90px; - overflow: hidden; -} - -div.routersummary a:hover { - color: #f60; -} - -div.routersummary td { - padding: 1px 3px; - background-image: none !important; - border: 0 !important; -} - -div.tunnels td:first-child { - width: 16px; - text-align: left; - padding-right: 1px; -} - -div.tunnels td:last-child { - text-align: right; - padding-right: 1px; -} - -div.tunnels img, div.tunnels img:hover { - opacity: 1 !important; -} - -div.routersummary img:first-child { - margin-bottom: -2px !important; - opacity: 0.7; -} - -div.routersummary img:hover:first-child { - margin-bottom: -2px !important; - opacity: 1; -} - -div.tunnels { - margin-top: 6px !important; - margin-left: -2px !important; - margin-bottom: 3px !important; - padding-top: 3px !important; -} - -div.tunnels table { - margin: -7px 0 -5px -4px !important; -} - -div.tunnels td, div.tunnels img:first-child { - margin: 0 !important; - text-transform: capitalize; -} - -.tunnels tr { - padding: 4px 0 !important; -} - -div.routersummary form { - margin: -6px 0 -5px 0; -} - -div.routersummary form:last-child { - margin: 6px 0 0 0 !important; - padding: 0; -} - -div.routersummary p { - padding: 0; -} - -div.refresh { - margin-top: -6px !important; - margin-bottom: 0px !important; - padding: 2px 0 0px 0 !important; -} - -/* proxy error messages */ - -div.warning { - margin: 20px 20px 30px 240px; - padding: 5px 25px 20px 75px; - background: #fff; - border: 1px solid #447; - text-align: left; - color: inherit; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - text-align: justify; - background-image:url("../images/itoopie_sm.png"); - background-position:10px center; - background-repeat:no-repeat; - -moz-box-shadow: inset 0px 0px 1px 0px #d00; - word-wrap: break-word; - min-width: 400px; -} - -/* console error messages */ - -div.sorry { - margin: 5px 10px 10px 207px; - padding: 20px 20px 20px 75px; - background: #ffe; - border: 1px solid #447; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - text-align: justify; - background-image: url("images/errortriangle.png"); - background-position: 15px center; - background-repeat: no-repeat; - -moz-box-shadow: inset 0px 0px 0px 1px #d00; - word-wrap: break-word; - font-weight: bold; - color: #531; -} - -div.sorry hr { - color: #531; - background: #531; - height: 1px; - border: 1px solid #531; - margin: 10px 0 15px 0; -} - -div.main { - margin: 10px 10px 20px 207px; - padding: 0 15px 15px 15px; - background: #ffe; - text-align: left; - color: #001; - width: auto; - min-width: 500px; - border: 1px solid #447; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: inset 0px 0px 1px 1px #bbf; - background: #ffe url('images/magic.png') center bottom;} - -div.main hr, hr { - color: #113; - background: #113; - height: 1px; - border: 0px solid #113; - margin: 10px 0; -} - -hr:last-child { - margin-top: 20px !important; -} - -div.main textarea { - background: #ffe; - color: #001; - font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; -} - -div.news { - margin: 0px 10px 5px 207px; - padding: 7px 20px 7px 20px; - border: 1px solid #447; - color: #224; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - text-align: right !important; - font-size: 7.5pt; - line-height: 140%; - -moz-box-shadow: inset 0px 0px 1px 0px #410; - background: #ffe url('images/magic.png') center bottom; - min-width: 480px; -} - -div.news p { - font-size: 9pt; - text-align: justify !important; - line-height: 120%; - margin-top: -7px; - padding: 0 15px; -} - -div.news h3 { - text-align: left !important; -} - -/* -div.news a:link{ - color: #a30; - text-decoration: none; -} - -div.news a:visited{ - color: #930; -} - -div.news a:hover{ - color: #d20; - text-decoration: underline; -} - -div.news a:active{ - color: #c30; -} -*/ - -div.news hr{ - color: #225; - background: #225; - height: 1px; - border: 0px dotted #225; - margin: 10px 0 5px; -/* -moz-box-shadow: 0px -1px 1px 1px #ffe;*/ - opacity: 0.6; -} - -div.news li { - text-align: justify; - list-style: none; - margin: 5px 0 16px 0 !important; - vertical-align: bottom; - border: 1px solid #113; - border-left: 5px solid #113; - padding: 5px 5px; - border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - -khtml-border-radius: 0 4px 4px 0; - font-size: 10pt; - opacity: 1; - background: #ffe url('images/header.png') center center repeat-x; - -moz-box-shadow: 0 1px 1px 1px rgba(176, 176, 216, 0.4); - -moz-box-shadow: 0 1px 1px 1px rgba(176, 176, 216, 0.4); - font-weight: bold; - text-transform: capitalize; -} - -div.news li:first-child { - margin-top: 10px !important; -} - -/* -div.news h4 a{ - color: #910 !important; - opacity: 1 !important; -} -*/ - -div.news h4 { - border-bottom: 0px; - padding: 0; - margin: 0 0 -10px 0; - font-size: 11pt; -} - -div.confignav { - padding: 15px 10px !important; - margin: 15px 0 15px 0; - background: #ffe url('images/header.png') center center repeat-x; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - border: 1px solid #113; - font-size: 9.5pt !important; - font-weight: bold !important; - line-height: 160% !important; - -moz-box-shadow: inset 0px 0px 1px 1px #bbf; - min-width: 400px; -} - -div.configure { -/* padding: 5px 15px 0px 15px !important; - margin: 0px 0px 15px 0; - background: #ffe; url('images/lightbluetile.png') - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - border: 1px solid #447; - -moz-box-shadow: inset 0px 0px 1px 1px #bbf;*/ - min-width: 400px; - margin-bottom: 0px; -} - -div.configure h3, div.graphspanel h3 { - border: 1px solid #113; - border-left: 5px solid #113; - padding: 5px; - margin: 15px 0 15px 0; - border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - -khtml-border-radius: 0 4px 4px 0; - background: #ffe; - text-align: left; -} - -div.graphspanel { -/* padding: 12px; - margin: 10px 0px 25px 0; - background: #ffe url('images/lightbluetile.png'); - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - border: 1px solid #447; - -moz-box-shadow: inset 0px 0px 1px 1px #bbf;*/ - text-align: center !important; - margin: 15px 0px -15px; -} - -div.graphspanel img { - border: 1px solid #447; - padding: 2px; - margin: 6px; - text-align: center !important; - background: #001; - -moz-box-shadow: inset 0px 0px 1px 1px #99f; - opacity: 0.8; -} - -div.graphspanel img:hover { - border: 1px solid #447; - padding: 2px; - margin: 6px; - text-align: center !important; - background: #001; - -moz-box-shadow: inset 0px 0px 2px 1px #f60; - opacity: 1; -} - -div.graphspanel form { - text-align: left; -} - -div.messages { - padding: 10px; - margin: 10px 0 15px 0; - background: #ffe; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - border: 1px solid #447; - background: #ffe url('images/magic.png'); - font-weight: bold; - -moz-box-shadow: inset 0px 0px 1px 1px #bbf; -} - -div.messages span.error { - color: #d00000; -} - -div.messages span.notice { - font-style: italic; -} - -div.messages li { - text-align: justify !important; - font-weight: bold; - list-style: url(images/warning.png) !important; - margin: 0 10px 0 35px !important; - padding: 5px 10px !important; - border: 0px !important; -} - -table { - border-collapse: collapse; - width: 100%; - border: 1px solid #447; - margin: 1px -15px 5px 0px; - cell-padding: 1px; - font-size: 7pt; - background: #b4c8ff url('images/tabletitlelight.png') repeat-x; - font: 7pt/130% "Lucida Sans Unicode", Verdana, "Bitstream Vera Sans", Tahoma, Helvetica, sans-serif; -} - -table hr { - padding: 0px 0; - color: #99f; - background: #99f; - border: 0px solid #99f; - margin: 0px 0px; - height: 1px; - display: none; -} - -th { - padding: 6px 2px; - color: #000; - background: #ffe url('images/header.png') center center repeat-x; - text-align: center; - font-size: 9pt; - line-height: 110%; - border-bottom: 1px solid #447 !important; - border-top: 1px solid #447 !important; -} - -tr { - vertical-align: middle !important; - align: center; -} - -tr:nth-child(even) { - background: #eef url(images/magic.png); -} - -tr:nth-child(odd) { - background: #fff url(images/magic.png); -} -/* -tr:last-child { - background: #bbf url('images/tabletilelighter.png') !important; - font-weight: bold; - border: 1px solid #002 !important; -} -*/ -td { - padding: 5px 3px; - color: #000; - vertical-align: middle; - border-top: 1px inset #447; - border-bottom: 1px outset #99f; -} - -tt { - font: bold 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; - color: #008000; - padding: 1px 5px; -} - -div.main li { - text-align: left; - list-style: square; - margin: 2px 5px 0px 20px; - padding: 1px 10px 1px 10px; - line-height: 150%; - word-wrap: break-word; -} - -div.main li { - text-align: left; - list-style: square; - margin: 2px 20px 0px 40px; - padding: 1px 10px 1px 10px; - line-height: 150%; - word-wrap: break-word; -} - -div.main li b { - color: #514!important; - letter-spacing: 0.01em; - font-size: 9.5pt; - line-height: 170%; -} - -div.main li:first-child { - margin-top: 10px !important; -} -.tidylist { - text-align: justify !important; -} - -.tidylist li:first-child { - margin-top: -10px !important; -} - -.tidylist:last-child { - padding-bottom: 5px; -} - -.tidylist code { - text-align: left; - font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; - color: #910; - padding: 2px 3px; - background: #fff; - font-weight: bold; - background: #ffb url('images/magic.png') center bottom; -} - -ol { - - margin: 1px 0 0 5px; - padding: 1px 0 0 20px; -} - -ul { - display: inline; - margin: 0; - padding: 0; -} - -code { - text-align: left; - font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; -} - - -code { - text-align: left; - font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; - color: #390; - padding: 2px 3px; - font-weight: bold; -} - -a:link{ - color: #359; - text-decoration: none; - font-weight: bold; - word-wrap: break-word; -} - -a:visited{ - color: #218; - text-decoration: none; - font-weight: bold; -} - -a:hover{ - color: #f60; - text-decoration: underline; - font-weight: bold; -} - -a:active{ - color: #f93; - text-decoration: underline; - font-weight: bold; -} - -.links li { - list-style: url(images/link.png) !important; - padding-bottom: -2px; - text-align: justify; - line-height: 120% !important; - padding-right: -100px !important; -} - -.links li:first-child { - padding-top: 0 !important; -} - -.links li:last-child { - padding-bottom: -15px !important; -} - -.links ul { - margin-top: -5px !important; -} - -p { - text-align: justify; - line-height: 160%; -} - -h1 { - text-align: left; - color: #000; - padding: 10px 15px; - margin: 0 10px 10px 207px; - font: normal bold 16pt/120% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - letter-spacing: 0.15em; - text-transform: uppercase; - text-shadow: 0px 0px 1px #77f; - -moz-box-shadow: inset 0px 0px 1px 1px #bbf; - white-space: normal; - background: #ffe url('images/header.png') center center repeat-x; - border: 1px solid #447; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - min-width: 500px; -} - -h2 { - font-size: 13pt; - color: #000; - letter-spacing: 0.05em; - background: #ffe url('images/header.png') center center repeat-x; - text-shadow: 0px 0px 1px rgba(0, 0, 64, 0.5); - padding: 10px 10px; - wordwrap: none; - border: 1px solid #113; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - margin: 15px 0px 15px 0 !important; - -moz-box-shadow: 0 1px 1px 1px rgba(176, 176, 216, 0.4); - word-wrap: break-word; - opacity: 1; -} - -h2 a:hover { - text-shadow: 0px 0px 1px rgba(255, 255, 72, 0.9); - border-bottom: 1px #ff6600; - padding-bottom: 5px; -} - -h2 img { - opacity: 0.9 !important; -} - -h3 { - border: 1px solid #113; - border-left: 5px solid #113; - padding: 5px 5px 5px 5px; - margin: 12px 0 15px 0; - border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - -khtml-border-radius: 0 4px 4px 0; - background: #ffe url('images/header.png') center center repeat-x !important; - font-size: 11pt; - color: #000; - -moz-box-shadow: 0 1px 1px 1px rgba(176, 176, 216, 0.4); - opacity: 1; -} - -h4 { - border-bottom: 1px; - border-bottom-style: solid; - border-bottom-color: #447; - padding: 0 0 10px 0; - margin: 5px 0 10px 0; - font-size: 11pt; -} - -button, button:visited{ - font: bold 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - border: 1px outset #999; - padding: 1px 3px; - background: #ffe !important; - text-decoration: none; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - font-size: 8pt; - font-weight: bold; - margin: 0 1px; - text-align: center; - min-width: 80px; - -moz-box-shadow: inset 0px 2px 8px 0px #fff; - -khtml-box-shadow: inset 0px 2px 8px 0px #fff; - box-shadow: inset 0px 2px 8px 0px #fff; - color: #316; -} - -button:hover{ - border: 1px solid #f60; - background: #f60 !important; - color: #fff; - -moz-box-shadow: inset 0px 0px 0px 1px #fff; - -khtml-box-shadow: inset 0px 0px 0px 1px #fff; - box-shadow: inset 0px 0px 0px 1px #fff; -} - -button:active{ - border: 1px solid #f60; - background: #202 !important; - color: #f60; - -moz-box-shadow: inset 0px 0px 0px 1px #f60; - box-shadow: inset 0px 0px 0px 1px #f60; - -khtml-box-shadow: inset 0px 0px 0px 1px #f60; -} - -.underline { - border-bottom: 1px solid #000022; - padding: 5px 0px 5px 0px; - margin: 0px 0px 10px 0px; -} - -.langbox { - margin: 20px 10px 4px 5px; - padding: 8px 5px; - color: #001; - font-size: 7pt; - width: 260px; - text-align: right; - float: right; - valign: middle; - opacity: 1 !important; -} - -.langbox img { - opacity: 0.8 !important; - -moz-box-shadow: 0 0 1px #447; -} - -.langbox img:hover { - opacity: 1 !important; - -moz-box-shadow: 0 0 1px #f60; -} - -input { - background: #ffe; - color: #316; - margin: 5px 10px 5px 10px; - padding: 4px 2px; - font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - border: 1px solid #447; - text-decoration: none; - min-width: 110px; -} - -input, input:visited { - border: 1px outset #999; - background: #ffe; - color: #316; - margin: 5px; - font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - padding: 1px 2px; - text-decoration: none; - min-width: 110px; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - -moz-box-shadow: inset 0px 2px 8px 0px #fff; - color: #813 - opacity: 1; -} - - -input:hover { - background: #f60; - color: #fff; - border: 1px solid #f60; - opacity: 1.0; - -moz-box-shadow: inset 0px 0px 0px 1px #fff; - -} - -input:active { - background: #002; - color: #f60; - border: 1px solid #f60; - opacity: 1.0; - -moz-box-shadow: inset 0px 0px 0px 1px #f60; -} - -input[type=text], input[type=password] { - background: #ffe; - color: #001; - margin: 5px 10px 5px 10px; - padding: 4px 2px; - font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - border: 1px solid #447; - text-decoration: none; -} - -submit { - background: #f00; - color: #ffe; - margin: 10px 2px 10px 0; - padding: 2px; - font-family: "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - font-weight: bold; - border: 1px solid #447; - text-decoration: none; -} - -input checkbox { - border: 0 !important; -} - -select { - background: #ffe; - color: #003; - margin: 5px 10px 5px 10px; - padding: 4px; - border: 1px solid #447; - min-width: 110px; - font: 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - text-align: left !important; -} - -textarea { - padding: 5px; - margin: 5px 15px 5px 10px; - background: #ffe; - color: #003; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; - min-height: 100px; - min-width: 97%; - border: 1px solid #447; -} - -form {} - -.proxyfooter { - margin: 0 20px 10px 240px; - padding: 20px 25px 20px 75px; - font-color: #f00; - font-size: 7pt; - text-align: right !important; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border: 1px solid #447; - display: none; -} - -.statusnotes { - font-style: italic; - font-size: 8pt; - font-color: #001 !important; - text-align: center; - border: 1px solid #447 !important; - border-top: 0 !important; - margin: -5px 0 5px 0; - padding: 7px; - background: #ffe url('images/magic.png') center bottom; - -moz-box-shadow: inset 0px 0px 2px 1px #ffe; -} - -/* -.joblog { - margin: 15px 0; - padding: 10px 20px !important; - border: 1px solid #447; - background-color: #004; - background: #ffe url('images/lightbluetile.png'); - color: #001; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - text-align: justify; - -moz-box-shadow: inset 0px 0px 1px 1px #bbf; - overflow: auto; - } - - div.joblog:li { - word-wrap: break-word !important; -} - - .joblog:ul { - word-wrap: break-word !important; -} - -.joblog table { - margin-top: 10px; -} -*/ - -div.joblog { -/* margin: 15px 0; - padding: 10px 20px !important; - border: 1px solid #447; - background-color: #004; - background: #ffe; /*url('images/lightbluetile.png') - color: #001; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - text-align: justify; - -moz-box-shadow: inset 0px 0px 1px 1px #bbf;*/ - overflow: auto; - border: 0; - margin-top: 5px; - } - -div.joblog i { - color: #050; - font-weight: bold; -} - - div.joblog ul { - word-wrap: break-word !important; - text-align: justify; - line-height: 100% !important; - margin-top: -5px !important; -} - - div.joblog li { - word-wrap: break-word !important; - text-align: justify !important; - line-height: 115% !important; - padding: 0; - font-size: 9pt !important; -} - -div.joblog li:last-child { - margin-bottom: -5px; -} - -div.joblog li:first-child { - margin-top: 10px !important; -} - -div.joblog form:first-child { - margin-top: 10px; -} - -div.joblog table { - margin-top: 15px; -} - -div.joblog p { - line-height: 130%; -} - -div.joblog hr { - margin: 15px 0; -} - -div.joblog h3 { - margin-bottom: 5px; -} - -.smallhead { - font-size: 7pt -} - -.mediumtags { - font-size: 8pt; - font-style: italic; - font-weight: bold; -} - -.optbox { - min-width: 16px !important; - max-width: 16px !important; - width: 16px !important; - min-height: 16px; - max-height: 16px; - height: 16px; - opacity: 1.0; - border: 0; - margin: 5px 5px 5px 10px; - padding: 2px; -} - -.optbox:hover { - min-width: 16px !important; - max-width: 16px !important; - width: 16px !important; - min-height: 16px; - max-height: 16px; - height: 16px; - opacity: 1.0; - border: 0; - margin: 5px 5px 5px 10px; - padding: 2px; -} - -.cells { - border-left: 1px outset #bbf; - border-top: 1px inset #99f !important; - border-bottom: 1px inset #99f !important; -} - -.tablefooter { - background: #b4c8ff url('images/tabletitlelight.png') repeat-x; -} - -.tablefooter tr, .tablefooter td { - background: #ffe url('images/header.png') center center repeat-x; - border-top: 1px solid #447; - border-bottom: 1px solid #447 !important; - padding: 8px 2px !important; - font-size: 7pt; - line-height: 110%; -} - -.formaction { - text-align: right; -} - -div.footnote { - text-align: right; - color: #447; - font-size: 7pt; - margin-bottom: -5px !important; -} - -div.footnote hr{ - margin: 20px 0 5px 0 !important; - color: #447; - background: #447; - height: 1px; - border: 0px solid #447; -} - -.topness { - font-size: 7.5pt; - text-align: right; - margin-top: 0px; - margin-bottom: -18px; - margin-right: 5px; -} +/* I2P Theme: Light */ +/* Description: Light blue highlights. */ +/* Author: dr|z3d */ + +body { + margin: 10px 0px -10px 10px; + text-align: center; + background: #ffe url('images/snowcamo.png'); + color: #000; + font: 10pt/130% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + background: #99f url('images/magic.png') center bottom; +} + +.hide { + display: none; +} + +img { + border: none; +} + +pre { + width: 98%; + overflow: auto; + text-align: left; + font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; + color: #333; + margin: 10px; +} + +div.logo { + float: left; + padding: 10px; + text-align: center; + font-color: #fff; + margin: 0 10px; + border: 1px solid #447; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + background: #ffe; /*url('images/lightbluetile.png')*/ + width: 185px; + -moz-box-shadow: inset 0px 0px 1px 1px #bbf; +} + +div.toolbar { + margin: 0; + padding: 10px; + font-weight: bold; + background: #ffe; + border: 1px solid #447; + display: none !important; +} + +div.toolbar a:link { + border: 1px outset #ddddc0; + padding: 0px 5px 1px 5px; + line-height: 250%; + background: #bbf; + text-decoration: none; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + display: none !important; +} + +div.toolbar a:visited { + background: #ffe; +} + +div.toolbar a:hover{ + border: 1px solid #eeffef; + background: #003; + color: #f60; +} + +a:active{ + color: #900; +} + +div.routersummaryouter { + float: left; + width: 200px; + margin: 0 0 10px 0px; + padding: 0; + border: 0; + clear: left;/* fixes a bug in Opera */ + text-align: center !important; + display: block; +} + +div.routersummary { +/* margin: 0px 20px 20px 0px; */ + width: 180px; + padding: 8px 8px 10px 8px; + text-align: center !important; + border: 1px solid #447; + color: #000; + font-size: 8pt; + clear: left;/* fixes a bug in Opera */ + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + background: #ffe url('images/magic.png') center bottom;/* + float: left; +*/ + -moz-box-shadow: inset 0px 0px 1px 1px #bbf; +} + +div.routersummary input[type=text] { + text-align: right !important; +} + +div.routersummary hr { + color: #99f; + background: #99f; + height: 1px; + border-bottom: 1px solid #99f; + margin: 8px -7px 8px -7px; + -moz-box-shadow: inset 0px 1px 1px 1px #fff; + -khtml-box-shadow: inset 0px 0px 1px #fff; + box-shadow: inset 0px 1px 1px 1px #fff; +} + +div routersummary hr:last-child { +} + +div.routersummary h3 { + border: 0; + font-size: 9.5pt; + letter-spacing: 0.04em; + margin: -4px -3px; + padding: 2px 0; + background: #ffe; + text-transform: uppercase; + background: #ffe url('images/header.png') center center repeat-x; + border: 1px solid #99f !important; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + border-radius: 3px; + -moz-box-shadow: 0px 1px 5px #bbf; +} + +div.routersummary h3 a { + text-decoration: none; +} + +div.routersummary h3:hover { + background: #ffa url('images/header.png') center center repeat-x !important; + text-shadow: 0 0 0; +} + +div.routersummary h4 { + border: 0px solid #fff; + border-bottom: 0 !important; + font-size: 8.5pt; + letter-spacing: 0.02em; + margin: -5px -7px -5px -7px !important; + padding: 3px 3px 5px 3px; + background: #eed url(images/magic.png); + text-transform: capitalize; + text-decoration: none !important; + color: #2b2; + line-height: 105%; +/* text-shadow: 0px 1px 1px #99f;*/ +} + +div.routersummary table { + border: 0; + text-align: center !important; + margin: -7px -5px -6px -5px; + width: 190px !important; + overflow: hidden; + font-size: 8pt; + padding: 0px -10px; + background-image: none !important; + background-color: transparent !important; +} + +div.routersummary tr { + background-image: none !important; + background-color: transparent !important; + border: 0 !important; +} + +div.routersummary td:first-child { + max-width: 90px; + overflow: hidden; +} + +div.routersummary a:hover { + color: #f60; +} + +div.routersummary td { + padding: 1px 3px; + background-image: none !important; + border: 0 !important; +} + +div.tunnels td:first-child { + width: 16px; + text-align: left; + padding-right: 1px; +} + +div.tunnels td:last-child { + text-align: right; + padding-right: 1px; +} + +div.tunnels img, div.tunnels img:hover { + opacity: 1 !important; +} + +div.routersummary img:first-child { + margin-bottom: -2px !important; + opacity: 0.7; +} + +div.routersummary img:hover:first-child { + margin-bottom: -2px !important; + opacity: 1; +} + +div.tunnels { + margin-top: 6px !important; + margin-left: -2px !important; + margin-bottom: 3px !important; + padding-top: 3px !important; +} + +div.tunnels table { + margin: -7px 0 -5px -4px !important; +} + +div.tunnels td, div.tunnels img:first-child { + margin: 0 !important; + text-transform: capitalize; +} + +.tunnels tr { + padding: 4px 0 !important; +} + +div.routersummary form { + margin: -6px 0 -5px 0; +} + +div.routersummary form:last-child { + margin: 6px 0 0 0 !important; + padding: 0; +} + +div.routersummary p { + padding: 0; +} + +div.refresh { + margin-top: -6px !important; + margin-bottom: 0px !important; + padding: 2px 0 0px 0 !important; +} + +/* proxy error messages */ + +div.warning { + margin: 20px 20px 30px 240px; + padding: 5px 25px 20px 75px; + background: #fff; + border: 1px solid #447; + text-align: left; + color: inherit; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + text-align: justify; + background-image:url("../images/itoopie_sm.png"); + background-position:10px center; + background-repeat:no-repeat; + -moz-box-shadow: inset 0px 0px 1px 0px #d00; + word-wrap: break-word; + min-width: 400px; +} + +/* console error messages */ + +div.sorry { + margin: 5px 10px 10px 207px; + padding: 20px 20px 20px 75px; + background: #ffe; + border: 1px solid #447; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + text-align: justify; + background-image: url("images/errortriangle.png"); + background-position: 15px center; + background-repeat: no-repeat; + -moz-box-shadow: inset 0px 0px 0px 1px #d00; + word-wrap: break-word; + font-weight: bold; + color: #531; +} + +div.sorry hr { + color: #531; + background: #531; + height: 1px; + border: 1px solid #531; + margin: 10px 0 15px 0; +} + +div.main { + margin: 10px 10px 20px 207px; + padding: 0 15px 15px 15px; + background: #ffe; + text-align: left; + color: #001; + width: auto; + min-width: 500px; + border: 1px solid #447; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: inset 0px 0px 1px 1px #bbf; + background: #ffe url('images/magic.png') center bottom;} + +div.main hr, hr { + color: #113; + background: #113; + height: 1px; + border: 0px solid #113; + margin: 10px 0; +} + +hr:last-child { + margin-top: 20px !important; +} + +div.main textarea { + background: #ffe; + color: #001; + font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; +} + +div.news { + margin: 0px 10px 5px 207px; + padding: 7px 20px 7px 20px; + border: 1px solid #447; + color: #224; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + text-align: right !important; + font-size: 7.5pt; + line-height: 140%; + -moz-box-shadow: inset 0px 0px 1px 0px #410; + background: #ffe url('images/magic.png') center bottom; + min-width: 480px; +} + +div.news p { + font-size: 9pt; + text-align: justify !important; + line-height: 120%; + margin-top: -7px; + padding: 0 15px; +} + +/* +div.news a:link{ + color: #a30; + text-decoration: none; +} + +div.news a:visited{ + color: #930; +} + +div.news a:hover{ + color: #d20; + text-decoration: underline; +} + +div.news a:active{ + color: #c30; +} +*/ + +div.news hr{ + color: #225; + background: #225; + height: 1px; + border: 0px dotted #225; + margin: 10px 0 5px; +/* -moz-box-shadow: 0px -1px 1px 1px #ffe;*/ + opacity: 0.6; +} + +div.news li { + text-align: justify; + list-style: none; + margin: 5px 0 16px 0 !important; + vertical-align: bottom; + border: 1px solid #113; + border-left: 5px solid #113; + padding: 5px 5px; + border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + -khtml-border-radius: 0 4px 4px 0; + font-size: 10pt; + opacity: 1; + background: #ffe url('images/header.png') center center repeat-x; + -moz-box-shadow: 0 1px 1px 1px rgba(176, 176, 216, 0.4); + -moz-box-shadow: 0 1px 1px 1px rgba(176, 176, 216, 0.4); + font-weight: bold; + text-transform: capitalize; +} + +div.news li:first-child { + margin-top: 10px !important; +} + +div.news h3 { + background: none !important; + text-align: left; + border: none !important; + padding-left: 0; + padding-top: 0px; + border-bottom: 1px dotted #225 !important; + -moz-box-shadow: none; + -hktml-box-shadow: none; + box-shadow: none; + font-size: 10pt !important; + letter-spacing: 0.05em; + text-transform: capitalize !important; +} + + +/* +div.news h4 a{ + color: #910 !important; + opacity: 1 !important; +} +*/ + +div.news h4 { + border-bottom: 0px; + padding: 0; + margin: 0 0 -10px 0; + font-size: 11pt; +} + +div.confignav { + padding: 15px 10px !important; + margin: 15px 0 15px 0; + background: #ffe url('images/header.png') center center repeat-x; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + border: 1px solid #113; + font-size: 9.5pt !important; + font-weight: bold !important; + line-height: 160% !important; + -moz-box-shadow: inset 0px 0px 1px 1px #bbf; + min-width: 400px; +} + +div.configure { +/* padding: 5px 15px 0px 15px !important; + margin: 0px 0px 15px 0; + background: #ffe; url('images/lightbluetile.png') + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + border: 1px solid #447; + -moz-box-shadow: inset 0px 0px 1px 1px #bbf;*/ + min-width: 400px; + margin-bottom: 0px; +} + +div.configure h3, div.graphspanel h3 { + border: 1px solid #113; + border-left: 5px solid #113; + padding: 5px; + margin: 15px 0 15px 0; + border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + -khtml-border-radius: 0 4px 4px 0; + background: #ffe; + text-align: left; +} + +div.graphspanel { +/* padding: 12px; + margin: 10px 0px 25px 0; + background: #ffe url('images/lightbluetile.png'); + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + border: 1px solid #447; + -moz-box-shadow: inset 0px 0px 1px 1px #bbf;*/ + text-align: center !important; + margin: 15px 0px -15px; +} + +div.graphspanel img { + border: 1px solid #447; + padding: 2px; + margin: 6px; + text-align: center !important; + background: #001; + -moz-box-shadow: inset 0px 0px 1px 1px #99f; + opacity: 0.8; +} + +div.graphspanel img:hover { + border: 1px solid #447; + padding: 2px; + margin: 6px; + text-align: center !important; + background: #001; + -moz-box-shadow: inset 0px 0px 2px 1px #f60; + opacity: 1; +} + +div.graphspanel form { + text-align: left; +} + +div.messages { + padding: 10px; + margin: 10px 0 15px 0; + background: #ffe; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + border: 1px solid #447; + background: #ffe url('images/magic.png'); + font-weight: bold; + -moz-box-shadow: inset 0px 0px 1px 1px #bbf; +} + +div.messages span.error { + color: #d00000; +} + +div.messages span.notice { + font-style: italic; +} + +div.messages li { + text-align: justify !important; + font-weight: bold; + list-style: url(images/warning.png) !important; + margin: 0 10px 0 35px !important; + padding: 5px 10px !important; + border: 0px !important; +} + +table { + border-collapse: collapse; + width: 100%; + border: 1px solid #447; + margin: 1px -15px 5px 0px; + cell-padding: 1px; + font-size: 7pt; + background: #b4c8ff url('images/tabletitlelight.png') repeat-x; + font: 7pt/130% "Lucida Sans Unicode", Verdana, "Bitstream Vera Sans", Tahoma, Helvetica, sans-serif; +} + +table hr { + padding: 0px 0; + color: #99f; + background: #99f; + border: 0px solid #99f; + margin: 0px 0px; + height: 1px; + display: none; +} + +th { + padding: 6px 2px; + color: #000; + background: #ffe url('images/header.png') center center repeat-x; + text-align: center; + font-size: 9pt; + line-height: 110%; + border-bottom: 1px solid #447 !important; + border-top: 1px solid #447 !important; +} + +tr { + vertical-align: middle !important; + align: center; +} + +tr:nth-child(even) { + background: #eef url(images/magic.png); +} + +tr:nth-child(odd) { + background: #fff url(images/magic.png); +} +/* +tr:last-child { + background: #bbf url('images/tabletilelighter.png') !important; + font-weight: bold; + border: 1px solid #002 !important; +} +*/ +td { + padding: 5px 3px; + color: #000; + vertical-align: middle; + border-top: 1px inset #447; + border-bottom: 1px outset #99f; +} + +tt { + font: bold 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; + color: #008000; + padding: 1px 5px; +} + +div.main li { + text-align: left; + list-style: square; + margin: 2px 5px 0px 20px; + padding: 1px 10px 1px 10px; + line-height: 150%; + word-wrap: break-word; +} + +div.main li { + text-align: left; + list-style: square; + margin: 2px 20px 0px 40px; + padding: 1px 10px 1px 10px; + line-height: 150%; + word-wrap: break-word; +} + +div.main li b { + color: #514!important; + letter-spacing: 0.01em; + font-size: 9.5pt; + line-height: 170%; +} + +div.main li:first-child { + margin-top: 10px !important; +} +.tidylist { + text-align: justify !important; +} + +.tidylist li:first-child { + margin-top: -10px !important; +} + +.tidylist:last-child { + padding-bottom: 5px; +} + +.tidylist code { + text-align: left; + font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; + color: #910; + padding: 2px 3px; + background: #fff; + font-weight: bold; + background: #ffb url('images/magic.png') center bottom; +} + +ol { + + margin: 1px 0 0 5px; + padding: 1px 0 0 20px; +} + +ul { + display: inline; + margin: 0; + padding: 0; +} + +code { + text-align: left; + font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; +} + + +code { + text-align: left; + font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; + color: #390; + padding: 2px 3px; + font-weight: bold; +} + +a:link{ + color: #359; + text-decoration: none; + font-weight: bold; + word-wrap: break-word; +} + +a:visited{ + color: #218; + text-decoration: none; + font-weight: bold; +} + +a:hover{ + color: #f60; + text-decoration: underline; + font-weight: bold; +} + +a:active{ + color: #f93; + text-decoration: underline; + font-weight: bold; +} + +.links li { + list-style: url(images/link.png) !important; + padding-bottom: -2px; + text-align: justify; + line-height: 120% !important; + padding-right: -100px !important; +} + +.links li:first-child { + padding-top: 0 !important; +} + +.links li:last-child { + padding-bottom: -15px !important; +} + +.links ul { + margin-top: -5px !important; +} + +p { + text-align: justify; + line-height: 160%; +} + +h1 { + text-align: left; + color: #000; + padding: 10px 15px; + margin: 0 10px 10px 207px; + font: normal bold 16pt/120% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + letter-spacing: 0.15em; + text-transform: uppercase; + text-shadow: 0px 0px 1px #77f; + -moz-box-shadow: inset 0px 0px 1px 1px #bbf; + white-space: normal; + background: #ffe url('images/header.png') center center repeat-x; + border: 1px solid #447; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + min-width: 500px; +} + +h2 { + font-size: 13pt; + color: #000; + letter-spacing: 0.05em; + background: #ffe url('images/header.png') center center repeat-x; + text-shadow: 0px 0px 1px rgba(0, 0, 64, 0.5); + padding: 10px 10px; + wordwrap: none; + border: 1px solid #113; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + margin: 15px 0px 15px 0 !important; + -moz-box-shadow: 0 1px 1px 1px rgba(176, 176, 216, 0.4); + word-wrap: break-word; + text-transform: uppercase; + opacity: 1; +} + +h2 a:hover { + text-shadow: 0px 0px 1px rgba(255, 255, 72, 0.9); + border-bottom: 1px #ff6600; + padding-bottom: 5px; +} + +h2 img { + opacity: 0.9 !important; +} + +h3 { + border: 1px solid #113; + border-left: 5px solid #113; + padding: 5px 5px 5px 5px; + margin: 12px 0 15px 0; + border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + -khtml-border-radius: 0 4px 4px 0; + background: #ffe url('images/header.png') center center repeat-x !important; + text-transform: uppercase; + text-shadow: 0px 0px 1px #77f; + font-size: 11pt; + color: #000; + -moz-box-shadow: 0 1px 1px 1px rgba(176, 176, 216, 0.4); + opacity: 1; +} + +h4 { + border-bottom: 1px; + border-bottom-style: solid; + border-bottom-color: #447; + padding: 0 0 10px 0; + margin: 5px 0 10px 0; + font-size: 11pt; +} + +button, button:visited{ + font: bold 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + border: 1px outset #999; + padding: 1px 3px; + background: #ffe !important; + text-decoration: none; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + font-size: 8pt; + font-weight: bold; + margin: 0 1px; + text-align: center; + min-width: 80px; + -moz-box-shadow: inset 0px 2px 8px 0px #fff; + -khtml-box-shadow: inset 0px 2px 8px 0px #fff; + box-shadow: inset 0px 2px 8px 0px #fff; + color: #316; +} + +button:hover{ + border: 1px solid #f60; + background: #f60 !important; + color: #fff; + -moz-box-shadow: inset 0px 0px 0px 1px #fff; + -khtml-box-shadow: inset 0px 0px 0px 1px #fff; + box-shadow: inset 0px 0px 0px 1px #fff; +} + +button:active{ + border: 1px solid #f60; + background: #202 !important; + color: #f60; + -moz-box-shadow: inset 0px 0px 0px 1px #f60; + box-shadow: inset 0px 0px 0px 1px #f60; + -khtml-box-shadow: inset 0px 0px 0px 1px #f60; +} + +.underline { + border-bottom: 1px solid #000022; + padding: 5px 0px 5px 0px; + margin: 0px 0px 10px 0px; +} + +.langbox { + margin: 20px 10px 4px 5px; + padding: 8px 5px; + color: #001; + font-size: 7pt; + width: 260px; + text-align: right; + float: right; + valign: middle; + opacity: 1 !important; +} + +.langbox img { + opacity: 0.7 !important; + -moz-box-shadow: 0 0 1px #447; +} + +.langbox img:hover { + opacity: 1 !important; + -moz-box-shadow: 0 0 1px #f60; +} + +input { + background: #ffe; + color: #316; + margin: 5px 10px 5px 10px; + padding: 4px 2px; + font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + border: 1px solid #447; + text-decoration: none; + min-width: 110px; +} + +input, input:visited { + border: 1px outset #999; + background: #ffe; + color: #316; + margin: 5px; + font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + padding: 1px 2px; + text-decoration: none; + min-width: 110px; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -moz-box-shadow: inset 0px 2px 8px 0px #fff; + color: #813 + opacity: 1; +} + + +input:hover { + background: #f60; + color: #fff; + border: 1px solid #f60; + opacity: 1.0; + -moz-box-shadow: inset 0px 0px 0px 1px #fff; + +} + +input:active { + background: #002; + color: #f60; + border: 1px solid #f60; + opacity: 1.0; + -moz-box-shadow: inset 0px 0px 0px 1px #f60; +} + +input[type=text] { + background: #ffe; + color: #001; + margin: 5px 10px 5px 10px; + padding: 4px 2px; + font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + border: 1px solid #447; + text-decoration: none; +} + +submit { + background: #f00; + color: #ffe; + margin: 10px 2px 10px 0; + padding: 2px; + font-family: "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + font-weight: bold; + border: 1px solid #447; + text-decoration: none; +} + +input checkbox { + border: 0 !important; +} + +select { + background: #ffe; + color: #003; + margin: 5px 10px 5px 10px; + padding: 4px; + border: 1px solid #447; + min-width: 110px; + font: 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + text-align: left !important; +} + +textarea { + padding: 5px; + margin: 5px 15px 5px 10px; + background: #ffe; + color: #003; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; + min-height: 100px; + min-width: 97%; + border: 1px solid #447; +} + +form {} + +.proxyfooter { + margin: 0 20px 10px 240px; + padding: 20px 25px 20px 75px; + font-color: #f00; + font-size: 7pt; + text-align: right !important; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border: 1px solid #447; + display: none; +} + +.statusnotes { + font-style: italic; + font-size: 8pt; + font-color: #001 !important; + text-align: center; + border: 1px solid #447 !important; + border-top: 0 !important; + margin: -5px 0 5px 0; + padding: 7px; + background: #ffe url('images/magic.png') center bottom; + -moz-box-shadow: inset 0px 0px 2px 1px #ffe; +} + +/* +.joblog { + margin: 15px 0; + padding: 10px 20px !important; + border: 1px solid #447; + background-color: #004; + background: #ffe url('images/lightbluetile.png'); + color: #001; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + text-align: justify; + -moz-box-shadow: inset 0px 0px 1px 1px #bbf; + overflow: auto; + } + + div.joblog:li { + word-wrap: break-word !important; +} + + .joblog:ul { + word-wrap: break-word !important; +} + +.joblog table { + margin-top: 10px; +} +*/ + +div.joblog { +/* margin: 15px 0; + padding: 10px 20px !important; + border: 1px solid #447; + background-color: #004; + background: #ffe; /*url('images/lightbluetile.png') + color: #001; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + text-align: justify; + -moz-box-shadow: inset 0px 0px 1px 1px #bbf;*/ + overflow: auto; + border: 0; + margin-top: 5px; + } + +div.joblog i { + color: #050; + font-weight: bold; +} + + div.joblog ul { + word-wrap: break-word !important; + text-align: justify; + line-height: 100% !important; + margin-top: -5px !important; +} + + div.joblog li { + word-wrap: break-word !important; + text-align: justify !important; + line-height: 115% !important; + padding: 0; + font-size: 9pt !important; +} + +div.joblog li:last-child { + margin-bottom: -5px; +} + +div.joblog li:first-child { + margin-top: 10px !important; +} + +div.joblog form:first-child { + margin-top: 10px; +} + +div.joblog table { + margin-top: 15px; +} + +div.joblog p { + line-height: 130%; +} + +div.joblog hr { + margin: 15px 0; +} + +div.joblog h3 { + margin-bottom: 5px; +} + +.smallhead { + font-size: 7pt +} + +.mediumtags { + font-size: 8pt; + font-style: italic; + font-weight: bold; +} + +.optbox { + min-width: 16px !important; + max-width: 16px !important; + width: 16px !important; + min-height: 16px; + max-height: 16px; + height: 16px; + opacity: 1.0; + border: 0; + margin: 5px 5px 5px 10px; + padding: 2px; +} + +.optbox:hover { + min-width: 16px !important; + max-width: 16px !important; + width: 16px !important; + min-height: 16px; + max-height: 16px; + height: 16px; + opacity: 1.0; + border: 0; + margin: 5px 5px 5px 10px; + padding: 2px; +} + +.cells { + border-left: 1px outset #bbf; + border-top: 1px inset #99f !important; + border-bottom: 1px inset #99f !important; +} + +.tablefooter { + background: #b4c8ff url('images/tabletitlelight.png') repeat-x; +} + +.tablefooter tr, .tablefooter td { + background: #ffe url('images/header.png') center center repeat-x; + border-top: 1px solid #447; + border-bottom: 1px solid #447 !important; + padding: 8px 2px !important; + font-size: 7pt; + line-height: 110%; +} + +.formaction { + text-align: right; +} + +div.footnote { + text-align: right; + color: #447; + font-size: 7pt; + margin-bottom: -5px !important; +} + +div.footnote hr{ + margin: 20px 0 5px 0 !important; + color: #447; + background: #447; + height: 1px; + border: 0px solid #447; +} + +.topness { + font-size: 7.5pt; + text-align: right; + margin-top: 0px; + margin-bottom: -18px; + margin-right: 5px; +} \ No newline at end of file diff --git a/installer/resources/themes/console/midnight/console.css b/installer/resources/themes/console/midnight/console.css index fbb7006f1..75632baf2 100644 --- a/installer/resources/themes/console/midnight/console.css +++ b/installer/resources/themes/console/midnight/console.css @@ -329,7 +329,7 @@ div.main { border-top: 0; text-align: left; color: #eef; - min-width: 570px; + min-width: 590px; /* -moz-border-radius: 0 0 3px 3px; -khtml-border-radius: 0 0 3px 3px; border-radius: 0 0 3px 3px;*/ @@ -432,13 +432,27 @@ div.news li { } div.news h3 { - text-align: left !important; + background: none !important; + text-align: left; + border: none !important; + padding-left: 0; + padding-top: 0px; + border-bottom: 1px dotted !important; + -moz-box-shadow: none; + -hktml-box-shadow: none; + box-shadow: none; + font-size: 10pt !important; + letter-spacing: 0.05em; + text-transform: uppercase !important; + margin: 15px 10px -5px; + padding: 5px 0 5px; } div.news p { color: #eef; font-size: 9pt; margin-bottom: -10px; + margin-top: 10px; } /* div.news p:first-child { @@ -755,7 +769,7 @@ input { vertical-align: middle; } -input[type=text], input[type=password] { +input[type=text] { margin: 3px 5px 3px 5px; vertical-align: middle; } @@ -765,7 +779,7 @@ select { vertical-align: middle; } -input[type=text], input[type=password] select { +input[type=text], select { background: #001; color: #eef; border: 1px solid #99f; @@ -964,4 +978,4 @@ div.footnote hr{ margin-top: -5px; margin-bottom: -10px; margin-right: 5px; -} +} \ No newline at end of file From 4c1050b93a0ad2d08fc022da541b73a436ae0e0a Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Wed, 12 Jan 2011 13:19:20 +0000 Subject: [PATCH 059/463] * Router: - Add new RandomIterator, use in UDP, peer selector, profile organizer - Add a stat to monitor peer selector run time --- .../kademlia/FloodfillPeerSelector.java | 11 +- .../router/networkdb/kademlia/KBucketSet.java | 3 + .../router/peermanager/ProfileOrganizer.java | 21 ++- .../router/transport/udp/UDPTransport.java | 6 +- .../net/i2p/router/util/RandomIterator.java | 178 ++++++++++++++++++ .../java/src/net/i2p/router/util/package.html | 6 + 6 files changed, 210 insertions(+), 15 deletions(-) create mode 100644 router/java/src/net/i2p/router/util/RandomIterator.java create mode 100644 router/java/src/net/i2p/router/util/package.html diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java index 4eb4e4825..eaf68fd07 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java @@ -11,6 +11,7 @@ package net.i2p.router.networkdb.kademlia; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.TreeSet; @@ -19,6 +20,7 @@ import net.i2p.data.Hash; import net.i2p.data.RouterInfo; import net.i2p.router.RouterContext; import net.i2p.router.peermanager.PeerProfile; +import net.i2p.router.util.RandomIterator; import net.i2p.stat.Rate; import net.i2p.util.Log; @@ -74,6 +76,7 @@ class FloodfillPeerSelector extends PeerSelector { if (peersToIgnore == null) peersToIgnore = new HashSet(1); peersToIgnore.add(_context.routerHash()); + // TODO this is very slow FloodfillSelectionCollector matches = new FloodfillSelectionCollector(key, peersToIgnore, maxNumRouters); if (kbuckets == null) return new ArrayList(); kbuckets.getAll(matches); @@ -104,6 +107,8 @@ class FloodfillPeerSelector extends PeerSelector { */ private List<Hash> selectFloodfillParticipants(Set<Hash> toIgnore, KBucketSet kbuckets) { if (kbuckets == null) return Collections.EMPTY_LIST; + // TODO this is very slow - use profile getPeersByCapability('f') instead + _context.statManager().addRateData("netDb.newFSC", 0, 0); FloodfillSelectionCollector matches = new FloodfillSelectionCollector(null, toIgnore, 0); kbuckets.getAll(matches); return matches.getFloodfillParticipants(); @@ -320,7 +325,6 @@ class FloodfillPeerSelector extends PeerSelector { * Group 4: Non-floodfills, sorted by closest-to-the-key */ public List<Hash> get(int howMany, boolean preferConnected) { - Collections.shuffle(_floodfillMatches, _context.random()); List<Hash> rv = new ArrayList(howMany); List<Hash> badff = new ArrayList(howMany); List<Hash> unconnectedff = new ArrayList(howMany); @@ -329,8 +333,8 @@ class FloodfillPeerSelector extends PeerSelector { // Only add in "good" floodfills here... // Let's say published in last 3h and no failed sends in last 30m // (Forever shitlisted ones are excluded in add() above) - for (int i = 0; found < howMany && i < _floodfillMatches.size(); i++) { - Hash entry = (Hash) _floodfillMatches.get(i); + for (Iterator<Hash> iter = new RandomIterator(_floodfillMatches); (found < howMany) && iter.hasNext(); ) { + Hash entry = iter.next(); RouterInfo info = _context.netDb().lookupRouterInfoLocally(entry); if (info != null && now - info.getPublished() > 3*60*60*1000) { badff.add(entry); @@ -391,6 +395,7 @@ class FloodfillPeerSelector extends PeerSelector { if (peersToIgnore != null && peersToIgnore.contains(Hash.FAKE_HASH)) { // return non-ff peersToIgnore.addAll(selectFloodfillParticipants(peersToIgnore, kbuckets)); + // TODO this is very slow FloodfillSelectionCollector matches = new FloodfillSelectionCollector(rkey, peersToIgnore, maxNumRouters); kbuckets.getAll(matches); return matches.get(maxNumRouters); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/KBucketSet.java b/router/java/src/net/i2p/router/networkdb/kademlia/KBucketSet.java index f576d967c..c630e2e9d 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/KBucketSet.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/KBucketSet.java @@ -42,6 +42,7 @@ class KBucketSet { _context = context; _log = context.logManager().getLog(KBucketSet.class); createBuckets(); + context.statManager().createRateStat("netDb.KBSGetAllTime", "Time to add all Hashes to the Collector", "NetworkDatabase", new long[] { 60*60*1000 }); } /** @@ -99,8 +100,10 @@ class KBucketSet { } public void getAll(SelectionCollector collector) { + long start = _context.clock().now(); for (int i = 0; i < _buckets.length; i++) _buckets[i].getEntries(collector); + _context.statManager().addRateData("netDb.KBSGetAllTime", _context.clock().now() - start, 0); } public int pickBucket(Hash key) { diff --git a/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java b/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java index 03b49269f..fe33c3447 100644 --- a/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java +++ b/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java @@ -28,6 +28,7 @@ import net.i2p.data.RouterInfo; import net.i2p.router.NetworkDatabaseFacade; import net.i2p.router.RouterContext; import net.i2p.router.tunnel.pool.TunnelPeerSelector; +import net.i2p.router.util.RandomIterator; import net.i2p.stat.Rate; import net.i2p.stat.RateStat; import net.i2p.util.Log; @@ -1043,17 +1044,19 @@ public class ProfileOrganizer { private void locked_selectPeers(Map<Hash, PeerProfile> peers, int howMany, Set<Hash> toExclude, Set<Hash> matches) { locked_selectPeers(peers, howMany, toExclude, matches, 0); } + private void locked_selectPeers(Map<Hash, PeerProfile> peers, int howMany, Set<Hash> toExclude, Set<Hash> matches, int mask) { - List all = new ArrayList(peers.keySet()); - if (toExclude != null) - all.removeAll(toExclude); - - all.removeAll(matches); - all.remove(_us); - Collections.shuffle(all, _random); + List<Hash> all = new ArrayList(peers.keySet()); Set<Integer> IPSet = new HashSet(8); - for (int i = 0; (matches.size() < howMany) && (i < all.size()); i++) { - Hash peer = (Hash)all.get(i); + // use RandomIterator to avoid shuffling the whole thing + for (Iterator<Hash> iter = new RandomIterator(all); (matches.size() < howMany) && iter.hasNext(); ) { + Hash peer = iter.next(); + if (toExclude != null && toExclude.contains(peer)) + continue; + if (matches.contains(peer)) + continue; + if (_us.equals(peer)) + continue; boolean ok = isSelectable(peer); if (ok) { ok = mask <= 0 || notRestricted(peer, IPSet, mask); 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 8cad7bb0a..e39bf7a6c 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java @@ -34,6 +34,7 @@ import net.i2p.router.RouterContext; import net.i2p.router.transport.Transport; import net.i2p.router.transport.TransportBid; import net.i2p.router.transport.TransportImpl; +import net.i2p.router.util.RandomIterator; import net.i2p.util.ConcurrentHashSet; import net.i2p.util.Log; import net.i2p.util.SimpleScheduler; @@ -2326,9 +2327,8 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority PeerState pickTestPeer(RemoteHostId dontInclude) { List<PeerState> peers = new ArrayList(_peersByIdent.values()); - Collections.shuffle(peers, _context.random()); - for (int i = 0; i < peers.size(); i++) { - PeerState peer = peers.get(i); + for (Iterator<PeerState> iter = new RandomIterator(peers); iter.hasNext(); ) { + PeerState peer = iter.next(); if ( (dontInclude != null) && (dontInclude.equals(peer.getRemoteHostId())) ) continue; RouterInfo peerInfo = _context.netDb().lookupRouterInfoLocally(peer.getRemotePeer()); diff --git a/router/java/src/net/i2p/router/util/RandomIterator.java b/router/java/src/net/i2p/router/util/RandomIterator.java new file mode 100644 index 000000000..db8a560b8 --- /dev/null +++ b/router/java/src/net/i2p/router/util/RandomIterator.java @@ -0,0 +1,178 @@ +package net.i2p.router.util; + +/* + * Modified from: + * http://www.lockergnome.com/awarberg/2007/04/22/random-iterator-in-java/ + * No license, free to use + */ + +//import java.util.ArrayList; +import java.util.BitSet; +import java.util.List; +import java.util.Iterator; +import java.util.NoSuchElementException; +import java.util.Random; + +import net.i2p.util.RandomSource; + +/** + * + * + * This is some Java code I wrote for a school project to save some time when iterating in + * random order over a part of list (until some condition becomes true): + * + * Here is a sample on how to use the code: + * + <pre> + for(Iterator<Object> iter = new RandomIterator<Object>(myObjList); iter.hasNext();){ + Object o = iter.next(); + if(someCondition(o) ) + return o; // iteration stopped early + } + </pre> + * + * I wrote it to replace a Collection.shuffle call and this code gave us an overall increase in program execution speed of about 25%. + * As the javadoc description says, you are better off calling Collection.shuffle if you need to iterate over the entire list. But if you may stop early this class can save you some time, as it did in our case. + * + * Provides a random iteration over the given list. + * + * This effect can be achieved by using Collections.shuffle, + * which shuffles the entire collection in linear time. + * + * If the iteration process may end before all items + * are processed, this class may give a speed increase + * because the shuffling process is performed as items are requested + * rather than in the beginning. + * + * I2P changes: + *<pre> + * - Use BitSet instead of boolean[] + * - Use I2P RandomSource + * - Done check in next(), throw NSEE + * - Ensure lower and upper bounds are always clear + * - Replace unbounded loop in next(). It is now O(N) time, but now + * the iterator will tend to "clump" results and thus is not truly random. + * *** This class is not recommended for small Lists, + * *** or for iterating through a large portion of a List. + * *** Use Collections.shuffle() instead. + * - Add test code + *</pre> + * + */ +public class RandomIterator<E> implements Iterator<E> { + /** + * Mapping indicating which items were served (by index). + * if served[i] then the item with index i in the list + * has already been served. + * + * Note it is possible to save memory here by using + * BitSet rather than a boolean array, however it will + * increase the running time slightly. + */ + private final BitSet served; + + /** The amount of items served so far */ + private int servedCount = 0; + private final List<E> list; + private final int LIST_SIZE; + + /** + * The random number generator has a great influence + * on the running time of this iterator. + * + * See, for instance, + * <a href="http://www.qbrundage.com/michaelb/pubs/essays/random_number_generation" title="http://www.qbrundage.com/michaelb/pubs/essays/random_number_generation" target="_blank">http://www.qbrundage.com/michaelb/pubs/e…</a> + * for some implementations, which are faster than java.util.Random. + */ + private static final Random rand = RandomSource.getInstance(); + + /** Used to narrow the range to take random indexes from */ + private int lower, upper; + + public RandomIterator(List<E> list){ + this.list = list; + LIST_SIZE = list.size(); + served = new BitSet(LIST_SIZE); + upper = LIST_SIZE - 1; + } + + public boolean hasNext() { + return servedCount < LIST_SIZE; + } + + public E next() { + if (!hasNext()) + throw new NoSuchElementException(); + int range = upper - lower + 1; + + // This has unbounded behavior, even with lower/upper + //int index; + //do { + // index = lower + rand.nextInt(range); + //} while (served.get(index)); + + // This tends to "clump" results, escpecially toward the end of the iteration. + // It also tends to leave the first and last few elements until the end. + int start = lower + rand.nextInt(range); + int index; + if ((start % 2) == 0) // coin flip + index = served.nextClearBit(start); + else + index = previousClearBit(start); + if (index < 0) + throw new NoSuchElementException("shouldn't happen"); + servedCount++; + served.set(index); + + // check if the range from which random values + // are taken can be reduced + // I2P - ensure lower and upper are always clear + if (hasNext()) { + if (index == lower) + lower = served.nextClearBit(lower); + else if (index == upper) + upper = previousClearBit(upper - 1); + } + return list.get(index); + } + + /** just like nextClearBit() */ + private int previousClearBit(int n) { + for (int i = n; i >= lower; i--) { + if (!served.get(i)) { + return i; + } + } + return -1; + } + + /** + * @throws UnsupportedOperationException always + */ + public void remove() { + throw new UnsupportedOperationException(); + } + +/***** + public static void main(String[] args) { + System.out.println("\n testing with 0"); + test(0); + System.out.println("\n testing with 1"); + test(1); + System.out.println("\n testing with 2"); + test(2); + System.out.println("\n testing with 1000"); + test(1000); + } + + public static void test(int n) { + List<Integer> l = new ArrayList(n); + for (int i = 0; i < n; i++) { + l.add(Integer.valueOf(i)); + } + for (Iterator<Integer> iter = new RandomIterator(l); iter.hasNext(); ) { + System.out.println(iter.next().toString()); + } + } +*****/ +} diff --git a/router/java/src/net/i2p/router/util/package.html b/router/java/src/net/i2p/router/util/package.html new file mode 100644 index 000000000..bf81eb3fa --- /dev/null +++ b/router/java/src/net/i2p/router/util/package.html @@ -0,0 +1,6 @@ +<html><body> +<p> +These classes define the several useful utilities used +throughout the router. +</p> +</body></html> From 1ad1883d563c1d4d1eaf4df8ff77fcd685f8e623 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Wed, 12 Jan 2011 13:27:55 +0000 Subject: [PATCH 060/463] fix hashCode --- core/java/src/net/i2p/data/PrivateKey.java | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/core/java/src/net/i2p/data/PrivateKey.java b/core/java/src/net/i2p/data/PrivateKey.java index bf415bdc9..5b0a5e4bb 100644 --- a/core/java/src/net/i2p/data/PrivateKey.java +++ b/core/java/src/net/i2p/data/PrivateKey.java @@ -16,6 +16,9 @@ import net.i2p.crypto.KeyGenerator; * A private key is 256byte Integer. The private key represents only the * exponent, not the primes, which are constant and defined in the crypto spec. * + * Note that we use short exponents, so all but the last 28.25 bytes are zero. + * See http://www.i2p2.i2p/how_cryptography for details. + * * @author jrandom */ public class PrivateKey extends SimpleDataStructure { @@ -50,4 +53,24 @@ public class PrivateKey extends SimpleDataStructure { return KeyGenerator.getPublicKey(this); } + /** + * We assume the data has enough randomness in it, so use the last 4 bytes for speed. + * Overridden since we use short exponents, so the first 227 bytes are all zero. + * Not that we are storing PrivateKeys in any Sets or Maps anywhere. + */ + @Override + public int hashCode() { + if (_data == null) + return 0; + int rv = _data[KEYSIZE_BYTES - 4]; + for (int i = 1; i < 4; i++) + rv ^= (_data[i + (KEYSIZE_BYTES - 4)] << (i*8)); + return rv; + } + + @Override + public boolean equals(Object obj) { + if ((obj == null) || !(obj instanceof PrivateKey)) return false; + return DataHelper.eq(_data, ((PrivateKey) obj)._data); + } } From 79bd5f1c116f40d699d0585f87cec17ebd8626d7 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Wed, 12 Jan 2011 13:28:32 +0000 Subject: [PATCH 061/463] fix log init problem --- core/java/src/net/i2p/util/LogManager.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/java/src/net/i2p/util/LogManager.java b/core/java/src/net/i2p/util/LogManager.java index 49eaf291f..0ca7ef209 100644 --- a/core/java/src/net/i2p/util/LogManager.java +++ b/core/java/src/net/i2p/util/LogManager.java @@ -152,7 +152,9 @@ public class LogManager { if (_writer != null) return; _writer = new LogWriter(this); - Thread t = new I2PThread(_writer, "LogWriter", true); + // NOT an I2PThread, as it contains logging and we end up with problems + Thread t = new Thread(_writer, "LogWriter"); + t.setDaemon(true); t.start(); } From b4e0fe121c7b241e355364eada5d1ace4e72c259 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Wed, 12 Jan 2011 13:54:41 +0000 Subject: [PATCH 062/463] dont update globals until end of storage check --- .../java/src/org/klomp/snark/Storage.java | 36 +++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/Storage.java b/apps/i2psnark/java/src/org/klomp/snark/Storage.java index 23fba7f35..dfc229dce 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Storage.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Storage.java @@ -538,7 +538,7 @@ public class Storage } else { // the following sets the needed variable changed = true; - checkCreateFiles(); + checkCreateFiles(false); } if (complete()) { _util.debug("Torrent is complete", Snark.NOTICE); @@ -649,15 +649,26 @@ public class Storage /** * This is called at the beginning, and at presumed completion, * so we have to be careful about locking. + * + * @param recheck if true, this is a check after we downloaded the + * last piece, and we don't modify the global bitfield unless + * the check fails. */ - private void checkCreateFiles() throws IOException + private void checkCreateFiles(boolean recheck) throws IOException { // Whether we are resuming or not, // if any of the files already exists we assume we are resuming. boolean resume = false; _probablyComplete = true; - needed = metainfo.getPieces(); + // use local variables during the check + int need = metainfo.getPieces(); + BitField bfield; + if (recheck) { + bfield = new BitField(need); + } else { + bfield = bitfield; + } // Make sure all files are available and of correct length for (int i = 0; i < rafs.length; i++) @@ -718,8 +729,8 @@ public class Storage } if (correctHash) { - bitfield.set(i); - needed--; + bfield.set(i); + need--; } if (listener != null) @@ -739,6 +750,15 @@ public class Storage // } //} + // do this here so we don't confuse the user during checking + needed = need; + if (recheck && need > 0) { + // whoops, recheck failed + synchronized(bitfield) { + bitfield = bfield; + } + } + if (listener != null) { listener.storageAllChecked(this); if (needed <= 0) @@ -903,11 +923,7 @@ public class Storage // checkCreateFiles() which will set 'needed' and 'bitfield' // and also call listener.storageCompleted() if the double-check // was successful. - // Todo: set a listener variable so the web shows "checking" and don't - // have the user panic when completed amount goes to zero temporarily? - needed = metainfo.getPieces(); - bitfield = new BitField(needed); - checkCreateFiles(); + checkCreateFiles(true); if (needed > 0) { if (listener != null) listener.setWantedPieces(this); From 330f1f341e1539926dd745ad0e4ca28ec3ba922f Mon Sep 17 00:00:00 2001 From: dev <dev@robertfoss.se> Date: Wed, 12 Jan 2011 20:06:22 +0000 Subject: [PATCH 063/463] Fixes to Atom identification. --- .../java/src/freenet/support/CPUInformation/CPUID.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core/java/src/freenet/support/CPUInformation/CPUID.java b/core/java/src/freenet/support/CPUInformation/CPUID.java index d8f8967fb..921f497dd 100644 --- a/core/java/src/freenet/support/CPUInformation/CPUID.java +++ b/core/java/src/freenet/support/CPUInformation/CPUID.java @@ -326,10 +326,10 @@ public class CPUID { public boolean IsPentium3Compatible() { // Atom - if (getCPUExtendedModel() == 1 && (getCPUFamily() == 6 && (getCPUModel() == 10))){ + if (getCPUExtendedModel() == 1 && (getCPUFamily() == 6 && (getCPUModel() == 12))){ return true; // ?? - } else if (getCPUFamily() > 6 || (getCPUFamily() == 6 && getCPUModel() >=7)){ + } else if (getCPUExtendedModel() == 0 && (getCPUFamily() > 6 || (getCPUFamily() == 6 && getCPUModel() >=7))){ return true; } else { return false; @@ -337,13 +337,13 @@ public class CPUID { } public boolean IsPentium4Compatible() { - // P4 + // P4 if (getCPUFamily() >= 15){ return true; - // Xeon MP (45nm) or Core i7 + // Xeon MP (45nm) or Core i7 } else if (getCPUExtendedModel() == 1 && (getCPUFamily() == 6 && (getCPUModel() == 10 || getCPUModel() == 13))){ return true; - // Core 2 Duo + // Core 2 Duo } else if (getCPUExtendedModel() == 0 && getCPUFamily() == 6 && getCPUModel() == 15){ return true; } else { From 9e2c063465a49e5cb863590536a13cb609017d0d Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Thu, 13 Jan 2011 04:35:30 +0000 Subject: [PATCH 064/463] Console: tunnelmanager a:link color consistency fix. --- .../themes/console/light/default.css | 773 +++++++++--------- 1 file changed, 389 insertions(+), 384 deletions(-) diff --git a/installer/resources/themes/console/light/default.css b/installer/resources/themes/console/light/default.css index cbe675c2b..d80cf3c1b 100644 --- a/installer/resources/themes/console/light/default.css +++ b/installer/resources/themes/console/light/default.css @@ -1,384 +1,389 @@ -body { - margin: 0px; - padding: 0px; - text-align: center; - font-family: "Lucida Sans Unicode", Verdana, Helvetica, sans-serif; - background: #eef url('images/snowcamo.png'); - color: #001; - font-size: 10pt; -/* we've avoided Tantek Hacks so far, - ** but we can't avoid using the non-w3c method of - ** box rendering. (and therefore one of mozilla's - ** proprietry -moz properties (which hopefully they'll - ** drop soon). - */ - -moz-box-sizing: border-box; - box-sizing: border-box; - background: #99f url(images/magic.png); -} - -div { - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -label { - margin: 0px 4px; - padding: 1px 10px 2px 0px; - float: left; - width: 120px; - height: 24px; - font-weight: normal; - text-align: right; - font-size: 8pt; - font-style: italic; - -moz-box-sizing: border-box; - box-sizing: border-box; - line-height: 120%; - color: #101; -} - -h4 { - font-size: 14px; - font-weight: bold !important; - color: #001; - text-align: center; - border: 1px solid #225; - margin: 5px 0 15px 0; - padding: 5px 10px; - background: #eef url(images/header.png) repeat-x center center; - letter-spacing: 0.08em; - -moz-box-shadow: inset 0px 0px 4px 0px #bbf; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; -} - -a { - text-decoration: none; -} - -form { - margin: 0px; -} - -textarea, input, select, button, a { - -moz-box-sizing: border-box; - box-sizing: border-box; - font-size: 9pt; - float: left; - vertical-align: middle; -} - -button { - float: none; - text-decoration: none; -} - -textarea { - border: 1px solid #9999ff; - color: #001; - background: #ddf; - border: 1px solid #44d; -} - -br { - clear: left; -} - -div.statusNotRunning { - float: left; - width: 68px; - height: 24px; - overflow: hidden; - color: #d00; - background: url('images/console_status_stopped.png') 0 0 no-repeat; - padding-top: 24px; - margin-top: 4px; -} - -div.statusRunning { - float: left; - width: 68px; - height: 24px; - overflow: hidden; - color: #0b0; - background: url('images/console_status_running.png') 0 0 no-repeat; - padding-top: 24px; - margin-top: 4px; -} - -div.statusStarting { - float: left; - width: 68px; - height: 24px; - overflow: hidden; - color: #339933; - background: url('images/console_status_starting.png') 0 0 no-repeat; - padding-top: 24px; - margin-top: 4px; -} - -hr { - display: none; -} - -.separator, .subdivider { - clear: both; - height: 1px; - margin: 1px 0px 1px 0px; - border-bottom: 1px solid #225; -/* - display: none; -*/ -} - -.subdivider { - border-bottom: 1px solid #225; - padding: 5px 0px 0px 0px; -} - -.freetext { - width: 150px; - height: 24px; - border: 1px solid #44d; - padding: 2px; - margin: 4px 0 2px 0px; - font: 10pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; - font-weight: bold; - background: #ddf; - color: #001; - -moz-border-radius: 0 4px 4px 0; - -khtml-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; -/* - -moz-box-shadow: inset 0px -1px 1px 0px #fff; -*/ -} - -.control, control:link, control:visited { - margin: 4px 0 0 4px !important; - padding: 2px; - overflow: hidden; - min-width: 60px; - font-weight: bold; - background: #ffe; - color: #001; - border: 1px outset #ddddc0; - text-align: center; - white-space: nowrap; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - margin-top: 8px; - text-decoration: none; -} - -/* -.control:active { - border: 1px inset; - background-color: #003; - color: #f60; - text-decoration: none; -} -*/ -.control:hover, control:visited:hover { - border: 1px solid #eef; - background-color: #f60; - color: #fff !important; - text-decoration: none; -} - -.control:link, control:visited { - margin: 4px 0 0 4px !important; - padding: 2px; - overflow: hidden; - min-width: 60px; - font-weight: bold; - color: #001; - border: 1px outset #ddddc0; - text-align: center; - white-space: nowrap; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - margin-top: 8px; - background: #ffe url(images/header.png) center center repeat:x !important; - text-decoration: none; -} - -.panel { - width: 800px; - margin: 16px auto 16px auto; - overflow: hidden; - text-align: left !important; - font-size: 7pt; - background-color: #fff; - background: url(images/magic.png); - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - border: 1px solid #002; - padding: 10px 20px; - -moz-box-shadow: inset 0px 0px 1px 0px #002; - background: none repeat scroll 0 0 #EEEEFF; - background: #fff url(images/magic.png); - border: 1px solid #444477; - color: #000011; -} - -.panel .footer { - float: right; - padding: 4px; -} - -.toolbox { - float: right; -} - -.rowItem { - width: 750px; - float: left; - margin: 0px; -} - -.comment { - font-weight: bold; - display: block; - padding: 2px 10px 0 20px; - text-align: left; -} - -.text { - height: 24px; - width: 150px; - padding: 0 0 0 2px; - float: left; - margin: 0; - font-size: 9pt !important; - font-weight: bold; -} - -.accessKey { - text-decoration: underline; -} - -#globalOperationsPanel { - background-color: #fff; - border: 1px solid #003; - padding: 5px 20px 11px 10px; - - -moz-box-shadow: inset 0px 0px 0px 1px #f00; - -moz-box-shadow: inset 0px 0px 1px 0px #f60; - background: #fff url(images/magic.png); - border: 1px solid #444477; - color: #613; - -} - -#globalOperationsPanel .control { - min-width: 120px; -} - -#globalOperationsPanel .control:link { - min-width: 120px; -} - - -globalOperationsPanel .control:link { - min-width: 120px; - margin: 4px 0 0 4px !important; - padding: 2px; - overflow: hidden; - font-weight: bold; - background-color: #bbbbff; - color: black; - border: 1px outset #ddddc0; - text-align: center; - white-space: nowrap; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - margin-top: 8px; - background: #ffe url(images/header.png) 0 0 repeat: x !important; -} - - -globalOperationsPanel .control:visited { - min-width: 120px; - margin: 4px 0 0 4px !important; - padding: 2px; - overflow: hidden; - font-weight: bold; - background-color: #ffe; - color: black; - border: 1px outset #ddddc0; - text-align: center; - white-space: nowrap; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - margin-top: 8px; - background: url(images/header.png) 0 0 repeat: x !important; -} - -globalOperationsPanel .control:hover { - min-width: 120px; - margin: 4px 0 0 4px !important; - padding: 2px; - overflow: hidden; - font-weight: bold; - background-color: #003; - color: #f60; - border: 1px outset #fff; - text-align: center; - white-space: nowrap; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - margin-top: 8px; - background: url(images/header_on.png) 0 0 repeat: x !important; -} -.header { - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; -} - -select { - background-color: #eef; - color: #001; - margin: 4px; - font-family: "Lucida Sans Unicode", Verdana, Tahoma, Helvetica, sans-serif; - font-weight: bold; - border: 1px solid #001; - padding: 2px; - min-width: 270px; - font-size: 8pt; - max-height: 24px; -} - -a:link{ - color: #613; - text-decoration: none; - font-weight: bold; - word-wrap: break-word; -} - -a:visited{ - color: #606; - text-decoration: none; - font-weight: bold; -} - -a:hover{ - color: #f60; - text-decoration: underline; - font-weight: bold; -} - -a:active{ - color: #f93; - text-decoration: underline; - font-weight: bold; -} +/* I2P Tunnel Manager Theme: Light */ +/* Description: Light blue highlights. */ +/* Author: dr|z3d */ + +body { + margin: 0px; + padding: 0px; + text-align: center; + font-family: "Lucida Sans Unicode", Verdana, Helvetica, sans-serif; + background: #eef url('images/snowcamo.png'); + color: #001; + font-size: 10pt; +/* we've avoided Tantek Hacks so far, + ** but we can't avoid using the non-w3c method of + ** box rendering. (and therefore one of mozilla's + ** proprietry -moz properties (which hopefully they'll + ** drop soon). + */ + -moz-box-sizing: border-box; + box-sizing: border-box; + background: #99f url(images/magic.png); +} + +div { + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +label { + margin: 0px 4px; + padding: 1px 10px 2px 0px; + float: left; + width: 120px; + height: 24px; + font-weight: normal; + text-align: right; + font-size: 8pt; + font-style: italic; + -moz-box-sizing: border-box; + box-sizing: border-box; + line-height: 120%; + color: #101; +} + +h4 { + font-size: 14px; + font-weight: bold !important; + color: #001; + text-align: center; + border: 1px solid #225; + margin: 5px 0 15px 0; + padding: 5px 10px; + background: #eef url(images/header.png) repeat-x center center; + text-transform: uppercase; + letter-spacing: 0.08em; + -moz-box-shadow: inset 0px 0px 4px 0px #bbf; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; +} + +a { + text-decoration: none; +} + +form { + margin: 0px; +} + +textarea, input, select, button, a { + -moz-box-sizing: border-box; + box-sizing: border-box; + font-size: 9pt; + float: left; + vertical-align: middle; +} + +button { + float: none; + text-decoration: none; +} + +textarea { + border: 1px solid #9999ff; + color: #001; + background: #ddf; + border: 1px solid #44d; +} + +br { + clear: left; +} + +div.statusNotRunning { + float: left; + width: 68px; + height: 24px; + overflow: hidden; + color: #d00; + background: url('images/console_status_stopped.png') 0 0 no-repeat; + padding-top: 24px; + margin-top: 4px; +} + +div.statusRunning { + float: left; + width: 68px; + height: 24px; + overflow: hidden; + color: #0b0; + background: url('images/console_status_running.png') 0 0 no-repeat; + padding-top: 24px; + margin-top: 4px; +} + +div.statusStarting { + float: left; + width: 68px; + height: 24px; + overflow: hidden; + color: #339933; + background: url('images/console_status_starting.png') 0 0 no-repeat; + padding-top: 24px; + margin-top: 4px; +} + +hr { + display: none; +} + +.separator, .subdivider { + clear: both; + height: 1px; + margin: 1px 0px 1px 0px; + border-bottom: 1px solid #225; +/* + display: none; +*/ +} + +.subdivider { + border-bottom: 1px solid #225; + padding: 5px 0px 0px 0px; +} + +.freetext { + width: 150px; + height: 24px; + border: 1px solid #44d; + padding: 2px; + margin: 4px 0 2px 0px; + font: 10pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; + font-weight: bold; + background: #ddf; + color: #001; + -moz-border-radius: 0 4px 4px 0; + -khtml-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +/* + -moz-box-shadow: inset 0px -1px 1px 0px #fff; +*/ +} + +.control, control:link, control:visited { + margin: 4px 0 0 4px !important; + padding: 2px; + overflow: hidden; + min-width: 60px; + font-weight: bold; + background: #ffe; + color: #001; + border: 1px outset #ddddc0; + text-align: center; + white-space: nowrap; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + margin-top: 8px; + text-decoration: none; +} + +/* +.control:active { + border: 1px inset; + background-color: #003; + color: #f60; + text-decoration: none; +} +*/ +.control:hover, control:visited:hover { + border: 1px solid #eef; + background-color: #f60; + color: #fff !important; + text-decoration: none; +} + +.control:link, control:visited { + margin: 4px 0 0 4px !important; + padding: 2px; + overflow: hidden; + min-width: 60px; + font-weight: bold; + color: #001; + border: 1px outset #ddddc0; + text-align: center; + white-space: nowrap; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + margin-top: 8px; + background: #ffe url(images/header.png) center center repeat:x !important; + text-decoration: none; +} + +.panel { + width: 800px; + margin: 16px auto 16px auto; + overflow: hidden; + text-align: left !important; + font-size: 7pt; + background-color: #fff; + background: url(images/magic.png); + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + border: 1px solid #002; + padding: 10px 20px; + -moz-box-shadow: inset 0px 0px 1px 0px #002; + background: none repeat scroll 0 0 #EEEEFF; + background: #fff url(images/magic.png); + border: 1px solid #444477; + color: #000011; +} + +.panel .footer { + float: right; + padding: 4px; +} + +.toolbox { + float: right; +} + +.rowItem { + width: 750px; + float: left; + margin: 0px; +} + +.comment { + font-weight: bold; + display: block; + padding: 2px 10px 0 20px; + text-align: left; +} + +.text { + height: 24px; + width: 150px; + padding: 0 0 0 2px; + float: left; + margin: 0; + font-size: 9pt !important; + font-weight: bold; +} + +.accessKey { + text-decoration: underline; +} + +#globalOperationsPanel { + background-color: #fff; + border: 1px solid #003; + padding: 5px 20px 11px 10px; + + -moz-box-shadow: inset 0px 0px 0px 1px #f00; + -moz-box-shadow: inset 0px 0px 1px 0px #f60; + background: #fff url(images/magic.png); + border: 1px solid #444477; + color: #613; + +} + +#globalOperationsPanel .control { + min-width: 120px; +} + +#globalOperationsPanel .control:link { + min-width: 120px; +} + + +globalOperationsPanel .control:link { + min-width: 120px; + margin: 4px 0 0 4px !important; + padding: 2px; + overflow: hidden; + font-weight: bold; + background-color: #bbbbff; + color: black; + border: 1px outset #ddddc0; + text-align: center; + white-space: nowrap; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + margin-top: 8px; + background: #ffe url(images/header.png) 0 0 repeat: x !important; +} + + +globalOperationsPanel .control:visited { + min-width: 120px; + margin: 4px 0 0 4px !important; + padding: 2px; + overflow: hidden; + font-weight: bold; + background-color: #ffe; + color: black; + border: 1px outset #ddddc0; + text-align: center; + white-space: nowrap; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + margin-top: 8px; + background: url(images/header.png) 0 0 repeat: x !important; +} + +globalOperationsPanel .control:hover { + min-width: 120px; + margin: 4px 0 0 4px !important; + padding: 2px; + overflow: hidden; + font-weight: bold; + background-color: #003; + color: #f60; + border: 1px outset #fff; + text-align: center; + white-space: nowrap; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + margin-top: 8px; + background: url(images/header_on.png) 0 0 repeat: x !important; +} +.header { + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; +} + +select { + background-color: #eef; + color: #001; + margin: 4px; + font-family: "Lucida Sans Unicode", Verdana, Tahoma, Helvetica, sans-serif; + font-weight: bold; + border: 1px solid #001; + padding: 2px; + min-width: 270px; + font-size: 8pt; + max-height: 24px; +} + +a:link{ + color: #359; + text-decoration: none; + font-weight: bold; + word-wrap: break-word; +} + +a:visited{ + color: #218; + text-decoration: none; + font-weight: bold; +} + +a:hover{ + color: #f60; + text-decoration: underline; + font-weight: bold; +} + +a:active{ + color: #f93; + text-decoration: underline; + font-weight: bold; +} From 65c6186479b292cf5b2bee51164a9c7d8215b628 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 13 Jan 2011 14:21:48 +0000 Subject: [PATCH 065/463] Cleanups: Collections.singleton(), COWAS - includes ticket #388 --- .../java/src/net/i2p/i2ptunnel/I2PTunnel.java | 14 +++------- .../i2p/i2ptunnel/TunnelControllerGroup.java | 2 +- .../i2p/client/streaming/MessageHandler.java | 4 +-- .../src/net/i2p/crypto/ElGamalAESEngine.java | 5 ++-- core/java/src/net/i2p/util/Clock.java | 26 ++++++------------- core/java/src/net/i2p/util/I2PAppThread.java | 4 +-- core/java/src/net/i2p/util/I2PThread.java | 4 +-- .../src/net/i2p/router/OutNetMessage.java | 2 +- .../java/src/net/i2p/router/RouterClock.java | 2 +- router/java/src/net/i2p/router/Shitlist.java | 2 +- .../kademlia/FloodfillPeerSelector.java | 14 +++++----- .../networkdb/kademlia/PeerSelector.java | 4 +-- .../router/networkdb/kademlia/SearchJob.java | 5 ++-- .../i2p/router/peermanager/PeerManager.java | 4 +-- .../net/i2p/router/tunnel/pool/TestJob.java | 5 ++-- 15 files changed, 38 insertions(+), 59 deletions(-) diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java index 3a557c5a1..293703ac9 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java @@ -43,13 +43,13 @@ import java.io.OutputStream; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.ArrayList; -import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Properties; import java.util.Set; import java.util.StringTokenizer; +import java.util.concurrent.CopyOnWriteArraySet; import net.i2p.I2PAppContext; import net.i2p.I2PException; @@ -99,7 +99,7 @@ public class I2PTunnel implements Logging, EventDispatcher { private final List tasks = new ArrayList(); private int next_task_id = 1; - private final Set listeners = new HashSet(); + private final Set listeners = new CopyOnWriteArraySet(); public static void main(String[] args) throws IOException { new I2PTunnel(args); @@ -1626,16 +1626,12 @@ public class I2PTunnel implements Logging, EventDispatcher { public void addConnectionEventListener(ConnectionEventListener lsnr) { if (lsnr == null) return; - synchronized (listeners) { - listeners.add(lsnr); - } + listeners.add(lsnr); } public void removeConnectionEventListener(ConnectionEventListener lsnr) { if (lsnr == null) return; - synchronized (listeners) { - listeners.remove(lsnr); - } + listeners.remove(lsnr); } private String getPrefix() { return "[" + _tunnelId + "]: "; } @@ -1649,12 +1645,10 @@ public class I2PTunnel implements Logging, EventDispatcher { */ void routerDisconnected() { _log.error(getPrefix() + "Router disconnected - firing notification events"); - synchronized (listeners) { for (Iterator iter = listeners.iterator(); iter.hasNext();) { ConnectionEventListener lsnr = (ConnectionEventListener) iter.next(); if (lsnr != null) lsnr.routerDisconnected(); } - } } /** diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelControllerGroup.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelControllerGroup.java index 618b035f7..d021131ed 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelControllerGroup.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelControllerGroup.java @@ -310,7 +310,7 @@ public class TunnelControllerGroup { synchronized (_sessions) { Set<TunnelController> owners = _sessions.get(session); if (owners == null) { - owners = new HashSet(1); + owners = new HashSet(2); _sessions.put(session, owners); } owners.add(controller); diff --git a/apps/streaming/java/src/net/i2p/client/streaming/MessageHandler.java b/apps/streaming/java/src/net/i2p/client/streaming/MessageHandler.java index 4097c568f..a94b1a4da 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/MessageHandler.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/MessageHandler.java @@ -2,13 +2,13 @@ package net.i2p.client.streaming; import java.util.Iterator; import java.util.Set; +import java.util.concurrent.CopyOnWriteArraySet; import net.i2p.I2PAppContext; import net.i2p.client.I2PSession; import net.i2p.client.I2PSessionException; import net.i2p.client.I2PSessionListener; import net.i2p.util.Log; -import net.i2p.util.ConcurrentHashSet; /** * Receive raw information from the I2PSession and turn it into @@ -24,7 +24,7 @@ class MessageHandler implements I2PSessionListener { public MessageHandler(I2PAppContext ctx, ConnectionManager mgr) { _manager = mgr; _context = ctx; - _listeners = new ConcurrentHashSet(1); + _listeners = new CopyOnWriteArraySet(); _log = ctx.logManager().getLog(MessageHandler.class); _context.statManager().createRateStat("stream.packetReceiveFailure", "When do we fail to decrypt or otherwise receive a packet sent to us?", "Stream", new long[] { 60*60*1000, 24*60*60*1000 }); } diff --git a/core/java/src/net/i2p/crypto/ElGamalAESEngine.java b/core/java/src/net/i2p/crypto/ElGamalAESEngine.java index 6160caf5b..df4867574 100644 --- a/core/java/src/net/i2p/crypto/ElGamalAESEngine.java +++ b/core/java/src/net/i2p/crypto/ElGamalAESEngine.java @@ -10,6 +10,7 @@ package net.i2p.crypto; */ import java.util.ArrayList; +import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -527,8 +528,6 @@ public class ElGamalAESEngine { return aesEncr; } - private final static Set EMPTY_SET = new HashSet(); - /** * 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 @@ -552,7 +551,7 @@ public class ElGamalAESEngine { long paddedSize, int prefixBytes) { //_log.debug("iv for encryption: " + DataHelper.toString(iv, 16)); //_log.debug("Encrypting AES"); - if (tagsForDelivery == null) tagsForDelivery = EMPTY_SET; + if (tagsForDelivery == null) tagsForDelivery = Collections.EMPTY_SET; int size = 2 // sizeof(tags) + tagsForDelivery.size() + SessionTag.BYTE_LENGTH*tagsForDelivery.size() diff --git a/core/java/src/net/i2p/util/Clock.java b/core/java/src/net/i2p/util/Clock.java index 4fc5eaff0..80696fc95 100644 --- a/core/java/src/net/i2p/util/Clock.java +++ b/core/java/src/net/i2p/util/Clock.java @@ -1,8 +1,8 @@ package net.i2p.util; -import java.util.HashSet; import java.util.Iterator; import java.util.Set; +import java.util.concurrent.CopyOnWriteArraySet; import net.i2p.I2PAppContext; import net.i2p.time.Timestamper; @@ -19,19 +19,19 @@ import net.i2p.time.Timestamper; * */ public class Clock implements Timestamper.UpdateListener { - protected I2PAppContext _context; - private Timestamper _timestamper; - protected long _startedOn; + protected final I2PAppContext _context; + private final Timestamper _timestamper; + protected final long _startedOn; protected boolean _statCreated; + protected volatile long _offset; + protected boolean _alreadyChanged; + private final Set _listeners; public Clock(I2PAppContext context) { _context = context; - _offset = 0; - _alreadyChanged = false; - _listeners = new HashSet(1); + _listeners = new CopyOnWriteArraySet(); _timestamper = new Timestamper(context, this); _startedOn = System.currentTimeMillis(); - _statCreated = false; } public static Clock getInstance() { return I2PAppContext.getGlobalContext().clock(); @@ -41,10 +41,6 @@ public class Clock implements Timestamper.UpdateListener { /** we fetch it on demand to avoid circular dependencies (logging uses the clock) */ protected Log getLog() { return _context.logManager().getLog(Clock.class); } - - protected volatile long _offset; - protected boolean _alreadyChanged; - private final Set _listeners; /** if the clock is skewed by 3+ days, fuck 'em */ public final static long MAX_OFFSET = 3 * 24 * 60 * 60 * 1000; @@ -136,24 +132,18 @@ public class Clock implements Timestamper.UpdateListener { } public void addUpdateListener(ClockUpdateListener lsnr) { - synchronized (_listeners) { _listeners.add(lsnr); - } } public void removeUpdateListener(ClockUpdateListener lsnr) { - synchronized (_listeners) { _listeners.remove(lsnr); - } } protected void fireOffsetChanged(long delta) { - synchronized (_listeners) { for (Iterator iter = _listeners.iterator(); iter.hasNext();) { ClockUpdateListener lsnr = (ClockUpdateListener) iter.next(); lsnr.offsetChanged(delta); } - } } public static interface ClockUpdateListener { diff --git a/core/java/src/net/i2p/util/I2PAppThread.java b/core/java/src/net/i2p/util/I2PAppThread.java index a9f027cae..811108355 100644 --- a/core/java/src/net/i2p/util/I2PAppThread.java +++ b/core/java/src/net/i2p/util/I2PAppThread.java @@ -10,9 +10,9 @@ package net.i2p.util; */ -import java.util.HashSet; import java.util.Iterator; import java.util.Set; +import java.util.concurrent.CopyOnWriteArraySet; /** * Like I2PThread but with per-thread OOM listeners, @@ -22,7 +22,7 @@ import java.util.Set; */ public class I2PAppThread extends I2PThread { - private Set _threadListeners = new HashSet(0); + private final Set _threadListeners = new CopyOnWriteArraySet(); public I2PAppThread() { super(); diff --git a/core/java/src/net/i2p/util/I2PThread.java b/core/java/src/net/i2p/util/I2PThread.java index 9b76b8fc9..90c95d381 100644 --- a/core/java/src/net/i2p/util/I2PThread.java +++ b/core/java/src/net/i2p/util/I2PThread.java @@ -10,9 +10,9 @@ package net.i2p.util; */ -import java.util.HashSet; import java.util.Iterator; import java.util.Set; +import java.util.concurrent.CopyOnWriteArraySet; /** * In case its useful later... @@ -21,7 +21,7 @@ import java.util.Set; */ public class I2PThread extends Thread { private static volatile Log _log; - private static Set _listeners = new HashSet(4); + private static final Set _listeners = new CopyOnWriteArraySet(); private String _name; private Exception _createdBy; diff --git a/router/java/src/net/i2p/router/OutNetMessage.java b/router/java/src/net/i2p/router/OutNetMessage.java index 6adc31953..0c430b07e 100644 --- a/router/java/src/net/i2p/router/OutNetMessage.java +++ b/router/java/src/net/i2p/router/OutNetMessage.java @@ -225,7 +225,7 @@ public class OutNetMessage { public void transportFailed(String transportStyle) { if (_failedTransports == null) - _failedTransports = new HashSet(1); + _failedTransports = new HashSet(2); _failedTransports.add(transportStyle); } /** not thread safe - dont fail transports and iterate over this at the same time */ diff --git a/router/java/src/net/i2p/router/RouterClock.java b/router/java/src/net/i2p/router/RouterClock.java index 06337f5a6..fd15d7db3 100644 --- a/router/java/src/net/i2p/router/RouterClock.java +++ b/router/java/src/net/i2p/router/RouterClock.java @@ -34,7 +34,7 @@ public class RouterClock extends Clock { private long _lastChanged; private int _lastStratum; - RouterContext _contextRC; // LINT field hides another field + private final RouterContext _contextRC; public RouterClock(RouterContext context) { super(context); diff --git a/router/java/src/net/i2p/router/Shitlist.java b/router/java/src/net/i2p/router/Shitlist.java index 55b778ad1..a5c1c1c42 100644 --- a/router/java/src/net/i2p/router/Shitlist.java +++ b/router/java/src/net/i2p/router/Shitlist.java @@ -156,7 +156,7 @@ public class Shitlist { e.causeCode = reasonCode; e.transports = null; if (transport != null) { - e.transports = new ConcurrentHashSet(1); + e.transports = new ConcurrentHashSet(2); e.transports.add(transport); } diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java index eaf68fd07..9c4093899 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java @@ -74,8 +74,9 @@ class FloodfillPeerSelector extends PeerSelector { */ List<Hash> selectNearestExplicitThin(Hash key, int maxNumRouters, Set<Hash> peersToIgnore, KBucketSet kbuckets, boolean preferConnected) { if (peersToIgnore == null) - peersToIgnore = new HashSet(1); - peersToIgnore.add(_context.routerHash()); + peersToIgnore = Collections.singleton(_context.routerHash()); + else + peersToIgnore.add(_context.routerHash()); // TODO this is very slow FloodfillSelectionCollector matches = new FloodfillSelectionCollector(key, peersToIgnore, maxNumRouters); if (kbuckets == null) return new ArrayList(); @@ -94,8 +95,7 @@ class FloodfillPeerSelector extends PeerSelector { * List is not sorted and not shuffled. */ List<Hash> selectFloodfillParticipants(KBucketSet kbuckets) { - Set<Hash> ignore = new HashSet(1); - ignore.add(_context.routerHash()); + Set<Hash> ignore = Collections.singleton(_context.routerHash()); return selectFloodfillParticipants(ignore, kbuckets); } @@ -132,8 +132,7 @@ class FloodfillPeerSelector extends PeerSelector { * Group 3: All others */ List<Hash> selectFloodfillParticipants(Hash key, int maxNumRouters, KBucketSet kbuckets) { - Set<Hash> ignore = new HashSet(1); - ignore.add(_context.routerHash()); + Set<Hash> ignore = Collections.singleton(_context.routerHash()); return selectFloodfillParticipants(key, maxNumRouters, ignore, kbuckets); } @@ -152,8 +151,7 @@ class FloodfillPeerSelector extends PeerSelector { */ List<Hash> selectFloodfillParticipants(Hash key, int howMany, Set<Hash> toIgnore, KBucketSet kbuckets) { if (toIgnore == null) { - toIgnore = new HashSet(1); - toIgnore.add(_context.routerHash()); + toIgnore = Collections.singleton(_context.routerHash()); } else if (!toIgnore.contains(_context.routerHash())) { // copy the Set so we don't confuse StoreJob toIgnore = new HashSet(toIgnore); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/PeerSelector.java b/router/java/src/net/i2p/router/networkdb/kademlia/PeerSelector.java index 2a6d88900..49dbc8b8f 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/PeerSelector.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/PeerSelector.java @@ -31,8 +31,8 @@ import net.i2p.util.Log; * Mostly unused, see overrides in FloodfillPeerSelector */ class PeerSelector { - protected Log _log; - protected RouterContext _context; + protected final Log _log; + protected final RouterContext _context; public PeerSelector(RouterContext ctx) { _context = ctx; diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java index 09f150db0..739a7c148 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java @@ -9,7 +9,7 @@ package net.i2p.router.networkdb.kademlia; */ import java.util.ArrayList; -import java.util.HashSet; +import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Set; @@ -800,8 +800,7 @@ class SearchJob extends JobImpl { if (rv) { if (_log.shouldLog(Log.DEBUG)) _log.debug(getJobId() + ": Queueing up for next time: " + peer); - Set s = new HashSet(1); - s.add(peer); + Set<Hash> s = Collections.singleton(peer); _facade.queueForExploration(s); } return rv; diff --git a/router/java/src/net/i2p/router/peermanager/PeerManager.java b/router/java/src/net/i2p/router/peermanager/PeerManager.java index bfe038e8c..800b75c3e 100644 --- a/router/java/src/net/i2p/router/peermanager/PeerManager.java +++ b/router/java/src/net/i2p/router/peermanager/PeerManager.java @@ -11,6 +11,7 @@ package net.i2p.router.peermanager; import java.io.IOException; import java.io.Writer; import java.util.ArrayList; +import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -115,8 +116,7 @@ class PeerManager { */ List<Hash> selectPeers(PeerSelectionCriteria criteria) { Set<Hash> peers = new HashSet(criteria.getMinimumRequired()); - Set<Hash> exclude = new HashSet(1); - exclude.add(_context.routerHash()); + Set<Hash> exclude = Collections.singleton(_context.routerHash()); switch (criteria.getPurpose()) { case PeerSelectionCriteria.PURPOSE_TEST: // for now, the peers we test will be the reliable ones diff --git a/router/java/src/net/i2p/router/tunnel/pool/TestJob.java b/router/java/src/net/i2p/router/tunnel/pool/TestJob.java index 74910cbcb..50f87f4da 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TestJob.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TestJob.java @@ -1,6 +1,6 @@ package net.i2p.router.tunnel.pool; -import java.util.HashSet; +import java.util.Collections; import java.util.Set; import net.i2p.crypto.SessionKeyManager; @@ -144,8 +144,7 @@ class TestJob extends JobImpl { scheduleRetest(); return; } - Set encryptTags = new HashSet(1); - encryptTags.add(encryptTag); + Set<SessionTag> encryptTags = Collections.singleton(encryptTag); // Register the single tag with the appropriate SKM if (_cfg.isInbound() && !_pool.getSettings().isExploratory()) { SessionKeyManager skm = getContext().clientManager().getClientSessionKeyManager(_pool.getSettings().getDestination()); From c92a8851b22ca6e41a4eff381b5bb03655b305d6 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 13 Jan 2011 19:52:11 +0000 Subject: [PATCH 066/463] whoops 2 un-singletons --- router/java/src/net/i2p/router/peermanager/PeerManager.java | 5 +++-- router/java/src/net/i2p/router/tunnel/pool/TestJob.java | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/router/java/src/net/i2p/router/peermanager/PeerManager.java b/router/java/src/net/i2p/router/peermanager/PeerManager.java index 800b75c3e..a2c432763 100644 --- a/router/java/src/net/i2p/router/peermanager/PeerManager.java +++ b/router/java/src/net/i2p/router/peermanager/PeerManager.java @@ -11,7 +11,6 @@ package net.i2p.router.peermanager; import java.io.IOException; import java.io.Writer; import java.util.ArrayList; -import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -116,7 +115,9 @@ class PeerManager { */ List<Hash> selectPeers(PeerSelectionCriteria criteria) { Set<Hash> peers = new HashSet(criteria.getMinimumRequired()); - Set<Hash> exclude = Collections.singleton(_context.routerHash()); + // not a singleton, SANFP adds to it + Set<Hash> exclude = new HashSet(1); + exclude.add(_context.routerHash()); switch (criteria.getPurpose()) { case PeerSelectionCriteria.PURPOSE_TEST: // for now, the peers we test will be the reliable ones diff --git a/router/java/src/net/i2p/router/tunnel/pool/TestJob.java b/router/java/src/net/i2p/router/tunnel/pool/TestJob.java index 50f87f4da..7c64df958 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TestJob.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TestJob.java @@ -1,6 +1,6 @@ package net.i2p.router.tunnel.pool; -import java.util.Collections; +import java.util.HashSet; import java.util.Set; import net.i2p.crypto.SessionKeyManager; @@ -144,7 +144,9 @@ class TestJob extends JobImpl { scheduleRetest(); return; } - Set<SessionTag> encryptTags = Collections.singleton(encryptTag); + // can't be a singleton, the SKM modifies it + Set encryptTags = new HashSet(1); + encryptTags.add(encryptTag); // Register the single tag with the appropriate SKM if (_cfg.isInbound() && !_pool.getSettings().isExploratory()) { SessionKeyManager skm = getContext().clientManager().getClientSessionKeyManager(_pool.getSettings().getDestination()); From c1c4e50b5bd3583ff002ed932a16509fe4819f3c Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 13 Jan 2011 19:54:56 +0000 Subject: [PATCH 067/463] - Finish PEX send/rcv - Disable KRPC - Shorten tracker string --- .../src/org/klomp/snark/ExtensionHandler.java | 19 ++++- .../src/org/klomp/snark/I2PSnarkUtil.java | 6 +- .../java/src/org/klomp/snark/Peer.java | 3 +- .../src/org/klomp/snark/PeerCheckerTask.java | 4 +- .../src/org/klomp/snark/PeerCoordinator.java | 71 ++++++++++++++++--- .../src/org/klomp/snark/TrackerClient.java | 33 ++++++--- .../org/klomp/snark/web/I2PSnarkServlet.java | 12 +++- 7 files changed, 120 insertions(+), 28 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java b/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java index 7b2979b8a..44490c37b 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java +++ b/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java @@ -85,10 +85,18 @@ abstract class ExtensionHandler { // peer state calls peer listener calls sendPEX() } + MagnetState state = peer.getMagnetState(); + if (msgmap.get(TYPE_METADATA) == null) { if (_log.shouldLog(Log.WARN)) _log.debug("Peer does not support metadata extension: " + peer); - // drop if we need metainfo ? + // drop if we need metainfo and we haven't found anybody yet + synchronized(state) { + if (!state.isInitialized()) { + _log.debug("Dropping peer, we need metadata! " + peer); + peer.disconnect(); + } + } return; } @@ -96,14 +104,19 @@ abstract class ExtensionHandler { if (msize == null) { if (_log.shouldLog(Log.WARN)) _log.debug("Peer does not have the metainfo size yet: " + peer); - // drop if we need metainfo ? + // drop if we need metainfo and we haven't found anybody yet + synchronized(state) { + if (!state.isInitialized()) { + _log.debug("Dropping peer, we need metadata! " + peer); + peer.disconnect(); + } + } return; } int metaSize = msize.getInt(); if (_log.shouldLog(Log.WARN)) _log.debug("Got the metainfo size: " + metaSize); - MagnetState state = peer.getMagnetState(); int remaining; synchronized(state) { if (state.isComplete()) diff --git a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java index 8fd774567..a3ecb1777 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java +++ b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java @@ -35,7 +35,7 @@ import net.i2p.util.SimpleTimer; import net.i2p.util.Translate; import org.klomp.snark.dht.DHT; -import org.klomp.snark.dht.KRPC; +//import org.klomp.snark.dht.KRPC; /** * I2P specific helpers for I2PSnark @@ -213,8 +213,8 @@ public class I2PSnarkUtil { _manager = I2PSocketManagerFactory.createManager(_i2cpHost, _i2cpPort, opts); } // FIXME this only instantiates krpc once, left stuck with old manager - if (ENABLE_DHT && _manager != null && _dht == null) - _dht = new KRPC(_context, _manager.getSession()); + //if (ENABLE_DHT && _manager != null && _dht == null) + // _dht = new KRPC(_context, _manager.getSession()); return (_manager != null); } diff --git a/apps/i2psnark/java/src/org/klomp/snark/Peer.java b/apps/i2psnark/java/src/org/klomp/snark/Peer.java index 5a003cac2..5110ae9a5 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Peer.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Peer.java @@ -29,6 +29,7 @@ import java.util.Arrays; import java.util.List; import java.util.Map; +import net.i2p.I2PAppContext; import net.i2p.client.streaming.I2PSocket; import net.i2p.data.DataHelper; import net.i2p.data.Destination; @@ -38,7 +39,7 @@ import org.klomp.snark.bencode.BEValue; public class Peer implements Comparable { - private Log _log = new Log(Peer.class); + private final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(Peer.class); // Identifying property, the peer id of the other side. private final PeerID peerID; diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java index b767f875a..5d7b6d66d 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java @@ -205,12 +205,14 @@ class PeerCheckerTask extends TimerTask } } peer.retransmitRequests(); + // send PEX + if ((_runCount % 17) == 0 && !peer.isCompleted()) + coordinator.sendPeers(peer); peer.keepAlive(); // announce them to local tracker (TrackerClient does this too) if (_util.getDHT() != null && (_runCount % 5) == 0) { _util.getDHT().announce(coordinator.getInfoHash(), peer.getPeerID().getDestHash()); } - // send PEX } // Resync actual uploaders value diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java index 5e75f1764..cdf1e58b5 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java @@ -27,15 +27,22 @@ import java.util.Collections; import java.util.Iterator; import java.util.LinkedList; import java.util.List; +import java.util.Map; import java.util.Queue; import java.util.Random; +import java.util.Set; import java.util.concurrent.LinkedBlockingQueue; import net.i2p.I2PAppContext; +import net.i2p.data.DataHelper; +import net.i2p.data.Destination; +import net.i2p.util.ConcurrentHashSet; import net.i2p.util.I2PAppThread; import net.i2p.util.Log; import net.i2p.util.SimpleTimer2; +import org.klomp.snark.bencode.BEValue; +import org.klomp.snark.bencode.InvalidBEncodingException; import org.klomp.snark.dht.DHT; /** @@ -90,6 +97,11 @@ public class PeerCoordinator implements PeerListener */ final Queue<Peer> peers; + /** + * Peers we heard about via PEX + */ + private final Set<PeerID> pexPeers; + /** estimate of the peers, without requiring any synchronization */ private volatile int peerCount; @@ -134,6 +146,7 @@ public class PeerCoordinator implements PeerListener partialPieces = new ArrayList(getMaxConnections() + 1); peers = new LinkedBlockingQueue(); magnetState = new MagnetState(infohash, metainfo); + pexPeers = new ConcurrentHashSet(); // Install a timer to check the uploaders. // Randomize the first start time so multiple tasks are spread out, @@ -1143,18 +1156,33 @@ public class PeerCoordinator implements PeerListener } } } else if (id == ExtensionHandler.ID_HANDSHAKE) { - try { - if (peer.getHandshakeMap().get("m").getMap().get(ExtensionHandler.TYPE_PEX) != null) { - List<Peer> pList = peerList(); - pList.remove(peer); - ExtensionHandler.sendPEX(peer, pList); - } - } catch (Exception e) { - // NPE, no map - } + sendPeers(peer); } } + /** + * Send a PEX message to the peer, if he supports PEX. + * This just sends everybody we are connected to, we don't + * track new vs. old peers yet. + * @since 0.8.4 + */ + void sendPeers(Peer peer) { + Map<String, BEValue> handshake = peer.getHandshakeMap(); + if (handshake == null) + return; + BEValue bev = handshake.get("m"); + if (bev == null) + return; + try { + if (bev.getMap().get(ExtensionHandler.TYPE_PEX) != null) { + List<Peer> pList = peerList(); + pList.remove(peer); + if (!pList.isEmpty()) + ExtensionHandler.sendPEX(peer, pList); + } + } catch (InvalidBEncodingException ibee) {} + } + /** * Sets the storage after transition out of magnet mode * Snark calls this after we call gotMetaInfo() @@ -1185,7 +1213,30 @@ public class PeerCoordinator implements PeerListener * @since 0.8.4 */ public void gotPeers(Peer peer, List<PeerID> peers) { - // spin off thread or timer task to do a new Peer() and an addPeer() for each one + if (completed() || !needPeers()) + return; + Destination myDest = _util.getMyDestination(); + if (myDest == null) + return; + byte[] myHash = myDest.calculateHash().getData(); + List<Peer> pList = peerList(); + for (PeerID id : peers) { + if (peerIDInList(id, pList) != null) + continue; + if (DataHelper.eq(myHash, id.getDestHash())) + continue; + pexPeers.add(id); + } + // TrackerClient will poll for pexPeers and do the add in its thread, + // rather than running another thread here. + } + + /** + * Called by TrackerClient + * @since 0.8.4 + */ + Set<PeerID> getPEXPeers() { + return pexPeers; } /** Return number of allowed uploaders for this torrent. diff --git a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java index d03ca55db..c8f1cd6c9 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java +++ b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java @@ -300,10 +300,8 @@ public class TrackerClient extends I2PAppThread Peer cur = it.next(); // FIXME if id == us || dest == us continue; // only delay if we actually make an attempt to add peer - if(coordinator.addPeer(cur)) { - int delay = DELAY_MUL; - delay *= r.nextInt(10); - delay += DELAY_MIN; + if(coordinator.addPeer(cur) && it.hasNext()) { + int delay = (DELAY_MUL * r.nextInt(10)) + DELAY_MIN; sleptTime += delay; try { Thread.sleep(delay); } catch (InterruptedException ie) {} } @@ -341,6 +339,27 @@ public class TrackerClient extends I2PAppThread maxSeenPeers = tr.seenPeers; } // *** end of trackers loop here + // Get peers from PEX + if (left > 0 && coordinator.needPeers() && !stop) { + Set<PeerID> pids = coordinator.getPEXPeers(); + if (!pids.isEmpty()) { + _util.debug("Got " + pids.size() + " from PEX", Snark.INFO); + List<Peer> peers = new ArrayList(pids.size()); + for (PeerID pID : pids) { + peers.add(new Peer(pID, snark.getID(), snark.getInfoHash(), snark.getMetaInfo())); + } + Collections.shuffle(peers, r); + Iterator<Peer> it = peers.iterator(); + while ((!stop) && it.hasNext()) { + Peer cur = it.next(); + if (coordinator.addPeer(cur) && it.hasNext()) { + int delay = (DELAY_MUL * r.nextInt(10)) + DELAY_MIN; + try { Thread.sleep(delay); } catch (InterruptedException ie) {} + } + } + } + } + // Get peers from DHT // FIXME this needs to be in its own thread if (_util.getDHT() != null && !stop) { @@ -369,10 +388,8 @@ public class TrackerClient extends I2PAppThread Iterator<Peer> it = peers.iterator(); while ((!stop) && it.hasNext()) { Peer cur = it.next(); - if (coordinator.addPeer(cur)) { - int delay = DELAY_MUL; - delay *= r.nextInt(10); - delay += DELAY_MIN; + if (coordinator.addPeer(cur) && it.hasNext()) { + int delay = (DELAY_MUL * r.nextInt(10)) + DELAY_MIN; try { Thread.sleep(delay); } catch (InterruptedException ie) {} } } diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index c859c436c..9bbfec8fe 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -910,8 +910,8 @@ public class I2PSnarkServlet extends Default { out.write(formatSize(total-remaining) + thinsp(noThinsp) + formatSize(total)); else if (remaining == 0) out.write(formatSize(total)); // 3GB - else - out.write("??"); // no meta size yet + //else + // out.write("??"); // no meta size yet out.write("</td>\n\t"); out.write("<td align=\"right\" class=\"snarkTorrentUploaded " + rowClass + "\">"); if(isRunning && isValid) @@ -1058,6 +1058,12 @@ public class I2PSnarkServlet extends Default { out.write("\">"); out.write(formatSize(peer.getDownloadRate()) + "ps</a></span>"); } + } else if (!isValid) { + //if (peer supports metadata extension) { + out.write("<span class=\"unchoked\">"); + out.write(formatSize(peer.getDownloadRate()) + "ps</span>"); + //} else { + //} } out.write("</td>\n\t"); out.write("<td align=\"right\" class=\"snarkTorrentStatus " + rowClass + "\">"); @@ -1629,6 +1635,8 @@ public class I2PSnarkServlet extends Default { int slsh = announce.indexOf('/'); if (slsh > 0) announce = announce.substring(0, slsh); + if (announce.length() > 67) + announce = announce.substring(0, 40) + "…" + announce.substring(announce.length() - 8); buf.append(announce); } } From 4a85f30bf43d737e8d3056ab320d12af9ce42623 Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Thu, 13 Jan 2011 20:58:12 +0000 Subject: [PATCH 068/463] Light tweaks. --- .../themes/console/light/console.css | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 414b2ee6d..55082b8b9 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -139,6 +139,7 @@ div.routersummary h3 { -khtml-border-radius: 3px; border-radius: 3px; -moz-box-shadow: 0px 1px 5px #bbf; + text-shadow: 0px 0px 1px #77f; } div.routersummary h3 a { @@ -752,13 +753,13 @@ p { h1 { text-align: left; - color: #000; + color: #003; padding: 10px 15px; margin: 0 10px 10px 207px; font: normal bold 16pt/120% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; letter-spacing: 0.15em; text-transform: uppercase; - text-shadow: 0px 0px 1px #77f; + text-shadow: 0px 1px 1px #77f; -moz-box-shadow: inset 0px 0px 1px 1px #bbf; white-space: normal; background: #ffe url('images/header.png') center center repeat-x; @@ -771,18 +772,18 @@ h1 { h2 { font-size: 13pt; - color: #000; - letter-spacing: 0.05em; + color: #003; + letter-spacing: 0.07em; background: #ffe url('images/header.png') center center repeat-x; - text-shadow: 0px 0px 1px rgba(0, 0, 64, 0.5); + text-shadow: 0px 1px 1px #77f; padding: 10px 10px; wordwrap: none; - border: 1px solid #113; + border: 1px solid #447; border-radius: 4px; -moz-border-radius: 4px; -khtml-border-radius: 4px; margin: 15px 0px 15px 0 !important; - -moz-box-shadow: 0 1px 1px 1px rgba(176, 176, 216, 0.4); + -moz-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); word-wrap: break-word; text-transform: uppercase; opacity: 1; @@ -799,8 +800,8 @@ h2 img { } h3 { - border: 1px solid #113; - border-left: 5px solid #113; + border: 1px solid #447; + border-left: 5px solid #447; padding: 5px 5px 5px 5px; margin: 12px 0 15px 0; border-radius: 0 4px 4px 0; @@ -808,11 +809,12 @@ h3 { -khtml-border-radius: 0 4px 4px 0; background: #ffe url('images/header.png') center center repeat-x !important; text-transform: uppercase; - text-shadow: 0px 0px 1px #77f; + text-shadow: 0px 1px 1px #77f; font-size: 11pt; - color: #000; - -moz-box-shadow: 0 1px 1px 1px rgba(176, 176, 216, 0.4); + color: #003; + -moz-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); opacity: 1; + letter-spacing: 0.07em; } h4 { From 9ea41b6e67abf29abbd109a03ac37e25ac1d06da Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Thu, 13 Jan 2011 21:27:10 +0000 Subject: [PATCH 069/463] More light tweaks. --- installer/resources/themes/console/light/console.css | 1 + 1 file changed, 1 insertion(+) diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 55082b8b9..0d3dc5bb2 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -436,6 +436,7 @@ div.news h3 { font-size: 10pt !important; letter-spacing: 0.05em; text-transform: capitalize !important; + text-shadow: 0px 0px 0px #77f; } From 1aea5b3decb4177e8f06b630183376204f7aca77 Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Thu, 13 Jan 2011 21:39:04 +0000 Subject: [PATCH 070/463] Additional light tweaks. --- .../resources/themes/console/light/console.css | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 0d3dc5bb2..f4261ed01 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -439,6 +439,9 @@ div.news h3 { text-shadow: 0px 0px 0px #77f; } +div.news i { + font-style: normal; +} /* div.news h4 a{ @@ -645,7 +648,8 @@ div.main li { } div.main li b { - color: #514!important; + color: #514 !important; + color: #003 !important; letter-spacing: 0.01em; font-size: 9.5pt; line-height: 170%; @@ -671,9 +675,8 @@ div.main li:first-child { font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; color: #910; padding: 2px 3px; - background: #fff; font-weight: bold; - background: #ffb url('images/magic.png') center bottom; +/* background: #ffb url('images/magic.png') center bottom;*/ } ol { @@ -777,7 +780,7 @@ h2 { letter-spacing: 0.07em; background: #ffe url('images/header.png') center center repeat-x; text-shadow: 0px 1px 1px #77f; - padding: 10px 10px; + padding: 10px; wordwrap: none; border: 1px solid #447; border-radius: 4px; @@ -803,7 +806,7 @@ h2 img { h3 { border: 1px solid #447; border-left: 5px solid #447; - padding: 5px 5px 5px 5px; + padding: 5px 5px 5px 10px; margin: 12px 0 15px 0; border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; From dc120847e1cc304b1c7a51341a4bc38347215668 Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Thu, 13 Jan 2011 22:16:43 +0000 Subject: [PATCH 071/463] Readme (en): Clarify "rejecting tunnels". --- installer/resources/readme/readme.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer/resources/readme/readme.html b/installer/resources/readme/readme.html index 00667aea2..fec88a435 100644 --- a/installer/resources/readme/readme.html +++ b/installer/resources/readme/readme.html @@ -15,7 +15,7 @@ <div class="welcome"><h2>Welcome to the Invisible Internet</h2></div> <ul class="links"><li class="tidylist"><b>Starting Up…</b><br>If you've just started I2P, the number of <i>Active Peers</i> indicated under the <i>Peers</i> section in the side panel on the left should start to grow over the next few minutes and you'll also see a <i>Local Destination</i> named <i>Shared Clients</i> listed there, and possibly other clients and servers depending on how I2P is configured (if not, see the troubleshooting section <a href="#trouble">below</a>). These <i>Local Destinations</i> provide connections on different ports (and sometimes protocols) to the I2P network, enabling your bittorrent, e-mail, web proxy and other services to function. Your <a href="/netdb">Network Database</a> indicates all known peers on the network. Additionally, you can monitor existing <a href="/peers">Peer Connections</a>, and view existing <a href="/tunnels">Tunnels</a> and their status. More information is available on the <a href="/help">help page</a>.</li> -<li class="tidylist"><b>Network integration</b><br> The first time you start I2P it may take a few minutes to bootstrap (integrate) you into the network and find additional peers to optimize your integration, so please be patient. Once green stars are indicated next to your <i>Local Destinations</i>, there is a wide variety of things you can do with I2P, and below we introduce you to some of them.</li></ul> +<li class="tidylist"><b>Network integration</b><br> The first time you start I2P it may take a few minutes to bootstrap (integrate) you into the network and find additional peers to optimize your integration, so please be patient. When I2P starts up, and during normal operation, I2P's tunnel build readiness indicator (immediately above the <i>Local Destinations</i> section in the sidepanel) may tell you that it's "Rejecting Tunnels"; this is normal behavior if seen occasionally and just after I2P starts and should be of no cause for concern! Once green stars are indicated next to your <i>Local Destinations</i>, there is a wide variety of things you can do with I2P, and below we introduce you to some of them.</li></ul> <h3>Services on I2P</h3> <ul class="links"> From c36aaa62ba27105396b4c8d7098c80cc317942e0 Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Thu, 13 Jan 2011 22:34:10 +0000 Subject: [PATCH 072/463] Readme (eng): decombobulation. --- installer/resources/readme/readme.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer/resources/readme/readme.html b/installer/resources/readme/readme.html index fec88a435..e6cfe69a8 100644 --- a/installer/resources/readme/readme.html +++ b/installer/resources/readme/readme.html @@ -15,7 +15,7 @@ <div class="welcome"><h2>Welcome to the Invisible Internet</h2></div> <ul class="links"><li class="tidylist"><b>Starting Up…</b><br>If you've just started I2P, the number of <i>Active Peers</i> indicated under the <i>Peers</i> section in the side panel on the left should start to grow over the next few minutes and you'll also see a <i>Local Destination</i> named <i>Shared Clients</i> listed there, and possibly other clients and servers depending on how I2P is configured (if not, see the troubleshooting section <a href="#trouble">below</a>). These <i>Local Destinations</i> provide connections on different ports (and sometimes protocols) to the I2P network, enabling your bittorrent, e-mail, web proxy and other services to function. Your <a href="/netdb">Network Database</a> indicates all known peers on the network. Additionally, you can monitor existing <a href="/peers">Peer Connections</a>, and view existing <a href="/tunnels">Tunnels</a> and their status. More information is available on the <a href="/help">help page</a>.</li> -<li class="tidylist"><b>Network integration</b><br> The first time you start I2P it may take a few minutes to bootstrap (integrate) you into the network and find additional peers to optimize your integration, so please be patient. When I2P starts up, and during normal operation, I2P's tunnel build readiness indicator (immediately above the <i>Local Destinations</i> section in the sidepanel) may tell you that it's "Rejecting Tunnels"; this is normal behavior if seen occasionally and just after I2P starts and should be of no cause for concern! Once green stars are indicated next to your <i>Local Destinations</i>, there is a wide variety of things you can do with I2P, and below we introduce you to some of them.</li></ul> +<li class="tidylist"><b>Network integration</b><br> The first time you start I2P it may take a few minutes to bootstrap (integrate) you into the network and find additional peers to optimize your integration, so please be patient. When I2P starts up, and during normal operation, I2P's tunnel build readiness indicator (immediately above the <i>Local Destinations</i> section in the sidepanel) may tell you that I2P is "Rejecting Tunnels"; this is normal behavior and should be of no cause for concern! Once green stars are indicated next to your <i>Local Destinations</i>, there is a wide variety of things you can do with I2P, and below we introduce you to some of them.</li></ul> <h3>Services on I2P</h3> <ul class="links"> From 19f1f7c380c923a00dbbe0cc8f7f12502dcb248b Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Fri, 14 Jan 2011 04:45:59 +0000 Subject: [PATCH 073/463] Console: Enhanced support for webkit/opera in light theme. --- .../themes/console/light/console.css | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index f4261ed01..3f660ae26 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -105,6 +105,8 @@ div.routersummary { float: left; */ -moz-box-shadow: inset 0px 0px 1px 1px #bbf; + -khtml-box-shadow: inset 0px 0px 1px 1px #bbf; + box-shadow: inset 0px 0px 1px 1px #bbf; } div.routersummary input[type=text] { @@ -140,6 +142,9 @@ div.routersummary h3 { border-radius: 3px; -moz-box-shadow: 0px 1px 5px #bbf; text-shadow: 0px 0px 1px #77f; + -moz-box-shadow: inset 0px 0px 2px 1px #bbf; + -khtml-box-shadow: inset 0px 0px 2px 1px #bbf; + box-shadow: inset 0px 0px 2px 1px #bbf; } div.routersummary h3 a { @@ -325,6 +330,8 @@ div.main { -khtml-border-radius: 4px; border-radius: 4px; -moz-box-shadow: inset 0px 0px 1px 1px #bbf; + -khtml-box-shadow: inset 0px 0px 1px 1px #bbf; + box-shadow: inset 0px 0px 1px 1px #bbf; background: #ffe url('images/magic.png') center bottom;} div.main hr, hr { @@ -356,7 +363,9 @@ div.news { text-align: right !important; font-size: 7.5pt; line-height: 140%; - -moz-box-shadow: inset 0px 0px 1px 0px #410; + -moz-box-shadow: inset 0px 0px 1px 1px #bbf; + -khtml-box-shadow: inset 0px 0px 1px 1px #bbf; + box-shadow: inset 0px 0px 1px 1px #bbf; background: #ffe url('images/magic.png') center bottom; min-width: 480px; } @@ -431,7 +440,7 @@ div.news h3 { padding-top: 0px; border-bottom: 1px dotted #225 !important; -moz-box-shadow: none; - -hktml-box-shadow: none; + -khtml-box-shadow: none; box-shadow: none; font-size: 10pt !important; letter-spacing: 0.05em; @@ -765,6 +774,8 @@ h1 { text-transform: uppercase; text-shadow: 0px 1px 1px #77f; -moz-box-shadow: inset 0px 0px 1px 1px #bbf; + -khtml-box-shadow: inset 0px 0px 1px 1px #bbf; + box-shadow: inset 0px 0px 1px 1px #bbf; white-space: normal; background: #ffe url('images/header.png') center center repeat-x; border: 1px solid #447; @@ -788,6 +799,8 @@ h2 { -khtml-border-radius: 4px; margin: 15px 0px 15px 0 !important; -moz-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + -khtml-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); word-wrap: break-word; text-transform: uppercase; opacity: 1; @@ -817,6 +830,8 @@ h3 { font-size: 11pt; color: #003; -moz-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + -khtml-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); opacity: 1; letter-spacing: 0.07em; } From 65387def16be75c5a11eeeb16b95c00b5144d8b9 Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Fri, 14 Jan 2011 05:51:02 +0000 Subject: [PATCH 074/463] Light relief. --- installer/resources/themes/console/light/console.css | 3 +++ 1 file changed, 3 insertions(+) diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 3f660ae26..bcb5fb89e 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -154,6 +154,9 @@ div.routersummary h3 a { div.routersummary h3:hover { background: #ffa url('images/header.png') center center repeat-x !important; text-shadow: 0 0 0; + -moz-box-shadow: inset 0px 0px 2px 1px #ffa; + -khtml-box-shadow: inset 0px 0px 2px 1px #ffa; + box-shadow: inset 0px 0px 2px 1px #ffa; } div.routersummary h4 { From 9944dc0696ad01ec79b85627fa36333d14d30bdd Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Fri, 14 Jan 2011 06:16:04 +0000 Subject: [PATCH 075/463] Console: light theme, borderline tweak. --- installer/resources/themes/console/light/console.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index bcb5fb89e..90979121c 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -370,7 +370,7 @@ div.news { -khtml-box-shadow: inset 0px 0px 1px 1px #bbf; box-shadow: inset 0px 0px 1px 1px #bbf; background: #ffe url('images/magic.png') center bottom; - min-width: 480px; + min-width: 490px; } div.news p { From 50a6a8170691d9480357b02b214378f4a2dd0e9d Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Fri, 14 Jan 2011 12:12:19 +0000 Subject: [PATCH 076/463] Light tweaks. --- installer/resources/themes/console/light/console.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 90979121c..41c957a04 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -141,10 +141,10 @@ div.routersummary h3 { -khtml-border-radius: 3px; border-radius: 3px; -moz-box-shadow: 0px 1px 5px #bbf; - text-shadow: 0px 0px 1px #77f; - -moz-box-shadow: inset 0px 0px 2px 1px #bbf; - -khtml-box-shadow: inset 0px 0px 2px 1px #bbf; - box-shadow: inset 0px 0px 2px 1px #bbf; + text-shadow: 0px 1px 1px #77f; + -moz-box-shadow: outset 0px 0px 2px 1px #bbf; + -khtml-box-shadow: outset 0px 0px 2px 1px #bbf; + box-shadow: outset 0px 0px 2px 1px #bbf; } div.routersummary h3 a { From 8b8a3a4a602abb3cac1e8d8285447139f720daf8 Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Fri, 14 Jan 2011 12:55:26 +0000 Subject: [PATCH 077/463] Light tweaks. --- installer/resources/themes/console/light/console.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 41c957a04..b6239be0c 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -905,13 +905,13 @@ button:active{ } .langbox img { - opacity: 0.7 !important; - -moz-box-shadow: 0 0 1px #447; + opacity: 0.8 !important; +/* -moz-box-shadow: 0 0 1px #447;*/ } .langbox img:hover { opacity: 1 !important; - -moz-box-shadow: 0 0 1px #f60; +/* -moz-box-shadow: 0 0 1px #f60;*/ } input { From f679ef250bcde9616793f49b8969b5e15a03fa5d Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Fri, 14 Jan 2011 17:12:44 +0000 Subject: [PATCH 078/463] stub out flags support in I2CP SMES --- .../net/i2p/client/I2CPMessageProducer.java | 20 ++- core/java/src/net/i2p/client/I2PSession.java | 66 +++++++-- .../src/net/i2p/client/I2PSessionImpl.java | 15 -- .../src/net/i2p/client/I2PSessionImpl2.java | 21 ++- .../net/i2p/client/I2PSessionMuxedImpl.java | 24 ++- core/java/src/net/i2p/data/DateAndFlags.java | 139 ++++++++++++++++++ .../data/i2cp/SendMessageExpiresMessage.java | 54 +++++-- .../src/net/i2p/router/ClientMessage.java | 23 ++- .../router/client/ClientConnectionRunner.java | 23 +-- .../net/i2p/router/client/ClientManager.java | 21 ++- .../OutboundClientMessageOneShotJob.java | 14 +- 11 files changed, 345 insertions(+), 75 deletions(-) create mode 100644 core/java/src/net/i2p/data/DateAndFlags.java diff --git a/core/java/src/net/i2p/client/I2CPMessageProducer.java b/core/java/src/net/i2p/client/I2CPMessageProducer.java index f9840c5c3..336c858ca 100644 --- a/core/java/src/net/i2p/client/I2CPMessageProducer.java +++ b/core/java/src/net/i2p/client/I2CPMessageProducer.java @@ -130,19 +130,31 @@ class I2CPMessageProducer { */ public void sendMessage(I2PSessionImpl session, Destination dest, long nonce, byte[] payload, SessionTag tag, SessionKey key, Set tags, SessionKey newKey, long expires) throws I2PSessionException { + sendMessage(session, dest, nonce, payload, expires, 0); + } + + /** + * Package up and send the payload to the router for delivery + * @since 0.8.4 + */ + public void sendMessage(I2PSessionImpl session, Destination dest, long nonce, byte[] payload, + long expires, int flags) throws I2PSessionException { + if (!updateBps(payload.length, expires)) // drop the message... send fail notification? return; SendMessageMessage msg; - if (expires > 0) { - msg = new SendMessageExpiresMessage(); - ((SendMessageExpiresMessage)msg).setExpiration(new Date(expires)); + if (expires > 0 || flags > 0) { + SendMessageExpiresMessage smsg = new SendMessageExpiresMessage(); + smsg.setExpiration(expires); + smsg.setFlags(flags); + msg = smsg; } else msg = new SendMessageMessage(); msg.setDestination(dest); msg.setSessionId(session.getSessionId()); msg.setNonce(nonce); - Payload data = createPayload(dest, payload, tag, key, tags, newKey); + Payload data = createPayload(dest, payload, null, null, null, null); msg.setPayload(data); session.sendMessage(msg); } diff --git a/core/java/src/net/i2p/client/I2PSession.java b/core/java/src/net/i2p/client/I2PSession.java index 27138b884..567c9e521 100644 --- a/core/java/src/net/i2p/client/I2PSession.java +++ b/core/java/src/net/i2p/client/I2PSession.java @@ -21,17 +21,20 @@ import net.i2p.data.SigningPrivateKey; /** * <p>Define the standard means of sending and receiving messages on the * I2P network by using the I2CP (the client protocol). This is done over a - * bidirectional TCP socket and never sends any private keys - all end to end - * encryption is done transparently within the client's I2PSession - * itself. Periodically the router will ask the client to authorize a new set of + * bidirectional TCP socket and never sends any private keys. + * + * End to end encryption in I2PSession was disabled in release 0.6. + * + * Periodically the router will ask the client to authorize a new set of * tunnels to be allocated to the client, which the client can accept by sending a * {@link net.i2p.data.LeaseSet} signed by the {@link net.i2p.data.Destination}. - * In addition, the router may on occation provide the client with an updated + * In addition, the router may on occasion provide the client with an updated * clock offset so that the client can stay in sync with the network (even if * the host computer's clock is off).</p> * */ public interface I2PSession { + /** Send a new message to the given destination, containing the specified * payload, returning true if the router feels confident that the message * was delivered. @@ -40,11 +43,18 @@ public interface I2PSession { * @return whether it was accepted by the router for delivery or not */ public boolean sendMessage(Destination dest, byte[] payload) throws I2PSessionException; + public boolean sendMessage(Destination dest, byte[] payload, int offset, int size) throws I2PSessionException; - /** See I2PSessionMuxedImpl for details */ + + /** + * See I2PSessionMuxedImpl for proto/port details. + * @since 0.7.1 + */ public boolean sendMessage(Destination dest, byte[] payload, int proto, int fromport, int toport) throws I2PSessionException; /** + * End-to-End Crypto is disabled, tags and keys are ignored! + * * Like sendMessage above, except the key used and the tags sent are exposed to the * application. <p /> * @@ -62,25 +72,62 @@ public interface I2PSession { * * @param dest location to send the message * @param payload body of the message to be sent (unencrypted) - * @param keyUsed session key delivered to the destination for association with the tags sent. This is essentially + * @param keyUsed UNUSED, IGNORED. Session key delivered to the destination for association with the tags sent. This is essentially * an output parameter - keyUsed.getData() is ignored during this call, but after the call completes, * it will be filled with the bytes of the session key delivered. Typically the key delivered is the * same one as the key encrypted with, but not always. If this is null then the key data will not be * exposed. - * @param tagsSent set of tags delivered to the peer and associated with the keyUsed. This is also an output parameter - + * @param tagsSent UNUSED, IGNORED. Set of tags delivered to the peer and associated with the keyUsed. This is also an output parameter - * the contents of the set is ignored during the call, but afterwards it contains a set of SessionTag * objects that were sent along side the given keyUsed. */ public boolean sendMessage(Destination dest, byte[] payload, SessionKey keyUsed, Set tagsSent) throws I2PSessionException; + + /** + * End-to-End Crypto is disabled, tags and keys are ignored. + * @param keyUsed UNUSED, IGNORED. + * @param tagsSent UNUSED, IGNORED. + */ public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent) throws I2PSessionException; + + /** + * End-to-End Crypto is disabled, tags and keys are ignored. + * @param keyUsed UNUSED, IGNORED. + * @param tagsSent UNUSED, IGNORED. + * @since 0.7.1 + */ public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expire) throws I2PSessionException; - /** See I2PSessionMuxedImpl for details */ + + /** + * See I2PSessionMuxedImpl for proto/port details. + * End-to-End Crypto is disabled, tags and keys are ignored. + * @param keyUsed UNUSED, IGNORED. + * @param tagsSent UNUSED, IGNORED. + * @since 0.7.1 + */ public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, int proto, int fromport, int toport) throws I2PSessionException; - /** See I2PSessionMuxedImpl for details */ + + /** + * See I2PSessionMuxedImpl for proto/port details. + * End-to-End Crypto is disabled, tags and keys are ignored. + * @param keyUsed UNUSED, IGNORED. + * @param tagsSent UNUSED, IGNORED. + * @since 0.7.1 + */ public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expire, int proto, int fromport, int toport) throws I2PSessionException; + /** + * See I2PSessionMuxedImpl for proto/port details. + * End-to-End Crypto is disabled, tags and keys are ignored. + * @param keyUsed UNUSED, IGNORED. + * @param tagsSent UNUSED, IGNORED. + * @since 0.8.4 + */ + public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expire, + int proto, int fromport, int toport, int flags) throws I2PSessionException; + /** Receive a message that the router has notified the client about, returning * the payload. * @param msgId message to fetch @@ -161,6 +208,7 @@ public interface I2PSession { /** * Get the current bandwidth limits. Blocking. + * @since 0.8.3 */ public int[] bandwidthLimits() throws I2PSessionException; diff --git a/core/java/src/net/i2p/client/I2PSessionImpl.java b/core/java/src/net/i2p/client/I2PSessionImpl.java index b904b121d..dc7e875d9 100644 --- a/core/java/src/net/i2p/client/I2PSessionImpl.java +++ b/core/java/src/net/i2p/client/I2PSessionImpl.java @@ -438,21 +438,6 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa _producer.reportAbuse(this, msgId, severity); } - /** - * Send the data to the destination. - * TODO: this currently always returns true, regardless of whether the message was - * delivered successfully. make this wait for at least ACCEPTED - * - */ - public abstract boolean sendMessage(Destination dest, byte[] payload) throws I2PSessionException; - - /** - * @param keyUsed unused - no end-to-end crypto - * @param tagsSent unused - no end-to-end crypto - */ - public abstract boolean sendMessage(Destination dest, byte[] payload, SessionKey keyUsed, - Set tagsSent) throws I2PSessionException; - public abstract void receiveStatus(int msgId, long nonce, int status); /****** no end-to-end crypto diff --git a/core/java/src/net/i2p/client/I2PSessionImpl2.java b/core/java/src/net/i2p/client/I2PSessionImpl2.java index f0000b68c..3af551eaa 100644 --- a/core/java/src/net/i2p/client/I2PSessionImpl2.java +++ b/core/java/src/net/i2p/client/I2PSessionImpl2.java @@ -130,6 +130,10 @@ class I2PSessionImpl2 extends I2PSessionImpl { int proto, int fromport, int toport) throws I2PSessionException { throw new IllegalArgumentException("Use MuxedImpl"); } + public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expire, + int proto, int fromport, int toport, int flags) throws I2PSessionException { + throw new IllegalArgumentException("Use MuxedImpl"); + } @Override public boolean sendMessage(Destination dest, byte[] payload) throws I2PSessionException { @@ -222,14 +226,23 @@ 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 */ protected boolean sendBestEffort(Destination dest, byte payload[], SessionKey keyUsed, Set tagsSent, long expires) throws I2PSessionException { + return sendBestEffort(dest, payload, expires, 0); + } + + /** + * TODO - Don't need to save MessageState since actuallyWait is false... + * But for now just use sendNoEffort() instead. + * + * @param flags to be passed to the router + * @since 0.8.4 + */ + protected boolean sendBestEffort(Destination dest, byte payload[], long expires, int flags) + throws I2PSessionException { //SessionKey key = null; //SessionKey newKey = null; //SessionTag tag = null; @@ -324,7 +337,7 @@ class I2PSessionImpl2 extends I2PSessionImpl { + " sync took " + (inSendingSync-beforeSendingSync) + " add took " + (afterSendingSync-inSendingSync)); //_producer.sendMessage(this, dest, nonce, payload, tag, key, sentTags, newKey, expires); - _producer.sendMessage(this, dest, nonce, payload, null, null, null, null, expires); + _producer.sendMessage(this, dest, nonce, payload, expires, flags); // since this is 'best effort', all we're waiting for is a status update // saying that the router received it - in theory, that should come back diff --git a/core/java/src/net/i2p/client/I2PSessionMuxedImpl.java b/core/java/src/net/i2p/client/I2PSessionMuxedImpl.java index c8ddaf77b..fcf11d0da 100644 --- a/core/java/src/net/i2p/client/I2PSessionMuxedImpl.java +++ b/core/java/src/net/i2p/client/I2PSessionMuxedImpl.java @@ -162,12 +162,34 @@ class I2PSessionMuxedImpl extends I2PSessionImpl2 implements I2PSession { * 255 disallowed * @param fromPort 1-65535 or 0 for unset * @param toPort 1-65535 or 0 for unset + * @since 0.7.1 */ @Override public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expires, int proto, int fromPort, int toPort) throws I2PSessionException { + return sendMessage(dest, payload, offset, size, keyUsed, tagsSent, 0, proto, fromPort, toPort, 0); + } + + /** + * @param keyUsed unused - no end-to-end crypto + * @param tagsSent unused - no end-to-end crypto + * @param proto 1-254 or 0 for unset; recommended: + * I2PSession.PROTO_UNSPECIFIED + * I2PSession.PROTO_STREAMING + * I2PSession.PROTO_DATAGRAM + * 255 disallowed + * @param fromPort 1-65535 or 0 for unset + * @param toPort 1-65535 or 0 for unset + * @param flags to be passed to the router + * @since 0.8.4 + */ + @Override + public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, + SessionKey keyUsed, Set tagsSent, long expires, + int proto, int fromPort, int toPort, int flags) + throws I2PSessionException { if (isClosed()) throw new I2PSessionException("Already closed"); updateActivity(); @@ -183,7 +205,7 @@ class I2PSessionMuxedImpl extends I2PSessionImpl2 implements I2PSession { _context.statManager().addRateData("i2cp.tx.msgCompressed", payload.length, 0); _context.statManager().addRateData("i2cp.tx.msgExpanded", size, 0); - return sendBestEffort(dest, payload, keyUsed, tagsSent, expires); + return sendBestEffort(dest, payload, expires, flags); } /** diff --git a/core/java/src/net/i2p/data/DateAndFlags.java b/core/java/src/net/i2p/data/DateAndFlags.java new file mode 100644 index 000000000..70f88ce65 --- /dev/null +++ b/core/java/src/net/i2p/data/DateAndFlags.java @@ -0,0 +1,139 @@ +package net.i2p.data; + +/* + * free (adj.): unencumbered; not under the control of others + * Released into the public domain + * with no warranty of any kind, either expressed or implied. + * + */ + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.Date; + +/** + * A six-byte Date and 2 bytes of flags, since a Date won't encroach + * on the top two bytes until the year 10889. + * + * The flag format is not specified here. The bits may be used in + * an application-specific manner. The application should + * be designed so that a flags value of 0 is the default, for + * compatibility with an 8-byte Date. + * + * If we really need some more bits we could use the first few bits + * of the third byte. + * + * @author zzz + * @since 0.8.4 + */ +public class DateAndFlags extends DataStructureImpl { + private int _flags; + private long _date; + + public DateAndFlags() {} + + /** + * @param flags 0 - 65535 + */ + public DateAndFlags(int flags, long date) { + _flags = flags; + _date = date; + } + + /** + * @param flags 0 - 65535 + */ + public DateAndFlags(int flags, Date date) { + _flags = flags; + _date = date.getTime(); + } + + public int getFlags() { + return _flags; + } + + /** + * @param flags 0 - 65535 + */ + public void setFlags(int flags) { + _flags = flags; + } + + /** + * The Date object is created here, it is not cached. + * Use getTime() if you only need the long value. + */ + public Date getDate() { + return new Date(_date); + } + + public long getTime() { + return (_date); + } + + public void setDate(long date) { + _date = date; + } + + public void setDate(Date date) { + _date = date.getTime(); + } + + public void readBytes(InputStream in) throws DataFormatException, IOException { + _flags = (int) DataHelper.readLong(in, 2); + _date = DataHelper.readLong(in, 6); + } + + public void writeBytes(OutputStream out) throws DataFormatException, IOException { + DataHelper.writeLong(out, 2, _flags); + DataHelper.writeLong(out, 6, _date); + } + + /** + * Overridden for efficiency. + */ + @Override + public byte[] toByteArray() { + byte[] rv = DataHelper.toLong(8, _date); + rv[0] = (byte) ((_flags >> 8) & 0xff); + rv[1] = (byte) (_flags & 0xff); + return rv; + } + + /** + * Overridden for efficiency. + * @param data non-null + * @throws DataFormatException if null or wrong length + */ + @Override + public void fromByteArray(byte data[]) throws DataFormatException { + if (data == null) throw new DataFormatException("Null data passed in"); + if (data.length != 8) throw new DataFormatException("Bad data length"); + _flags = (int) DataHelper.fromLong(data, 0, 2); + _date = DataHelper.fromLong(data, 2, 6); + } + + @Override + public boolean equals(Object object) { + if ((object == null) || !(object instanceof DateAndFlags)) return false; + DateAndFlags daf = (DateAndFlags) object; + return _date == daf._date && _flags == daf._flags; + + } + + @Override + public int hashCode() { + return _flags + (int) _date; + } + + @Override + public String toString() { + StringBuilder buf = new StringBuilder(64); + buf.append("[DateAndFlags: "); + buf.append("\n\tDate: ").append((new Date(_date)).toString()); + buf.append("\n\tFlags: 0x").append(Integer.toHexString(_flags)); + buf.append("]"); + return buf.toString(); + } +} diff --git a/core/java/src/net/i2p/data/i2cp/SendMessageExpiresMessage.java b/core/java/src/net/i2p/data/i2cp/SendMessageExpiresMessage.java index 9bcabe2fb..08b31a6e7 100644 --- a/core/java/src/net/i2p/data/i2cp/SendMessageExpiresMessage.java +++ b/core/java/src/net/i2p/data/i2cp/SendMessageExpiresMessage.java @@ -16,32 +16,66 @@ import java.util.Date; import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; +import net.i2p.data.DateAndFlags; import net.i2p.data.Destination; import net.i2p.data.Payload; /** * Same as SendMessageMessage, but with an expiration to be passed to the router * + * As of 0.8.4, retrofitted to use DateAndFlags. Backwards compatible. + * * @author zzz */ public class SendMessageExpiresMessage extends SendMessageMessage { /* FIXME hides another field FIXME */ public final static int MESSAGE_TYPE = 36; - private SessionId _sessionId; - private Destination _destination; - private Payload _payload; - private Date _expiration; + private final DateAndFlags _daf; public SendMessageExpiresMessage() { super(); + _daf = new DateAndFlags(); } + /** + * The Date object is created here, it is not cached. + * Use getExpirationTime() if you only need the long value. + */ public Date getExpiration() { - return _expiration; + return _daf.getDate(); + } + + /** + * Use this instead of getExpiration().getTime() + * @since 0.8.4 + */ + public long getExpirationTime() { + return _daf.getTime(); } public void setExpiration(Date d) { - _expiration = d; + _daf.setDate(d); + } + + /** + * @since 0.8.4 + */ + public void setExpiration(long d) { + _daf.setDate(d); + } + + /** + * @since 0.8.4 + */ + public int getFlags() { + return _daf.getFlags(); + } + + /** + * @since 0.8.4 + */ + public void setFlags(int f) { + _daf.setFlags(f); } /** @@ -54,7 +88,7 @@ public class SendMessageExpiresMessage extends SendMessageMessage { super.readMessage(in, length, type); try { - _expiration = DataHelper.readDate(in); + _daf.readBytes(in); } catch (DataFormatException dfe) { throw new I2CPMessageException("Unable to load the message data", dfe); } @@ -68,7 +102,7 @@ public class SendMessageExpiresMessage extends SendMessageMessage { */ @Override public void writeMessage(OutputStream out) throws I2CPMessageException, IOException { - if ((getSessionId() == null) || (getDestination() == null) || (getPayload() == null) || (getNonce() <= 0) || (_expiration == null)) + if ((getSessionId() == null) || (getDestination() == null) || (getPayload() == null) || (getNonce() <= 0)) throw new I2CPMessageException("Unable to write out the message as there is not enough data"); int len = 2 + getDestination().size() + getPayload().getSize() + 4 + 4 + DataHelper.DATE_LENGTH; @@ -79,7 +113,7 @@ public class SendMessageExpiresMessage extends SendMessageMessage { getDestination().writeBytes(out); getPayload().writeBytes(out); DataHelper.writeLong(out, 4, getNonce()); - DataHelper.writeDate(out, _expiration); + _daf.writeBytes(out); } catch (DataFormatException dfe) { throw new I2CPMessageException("Error writing the msg", dfe); } @@ -96,7 +130,7 @@ public class SendMessageExpiresMessage extends SendMessageMessage { if ((object != null) && (object instanceof SendMessageExpiresMessage)) { SendMessageExpiresMessage msg = (SendMessageExpiresMessage) object; return super.equals(object) - && DataHelper.eq(getExpiration(), msg.getExpiration()); + && _daf.equals(msg._daf); } return false; diff --git a/router/java/src/net/i2p/router/ClientMessage.java b/router/java/src/net/i2p/router/ClientMessage.java index ec7820d69..5b5a228a1 100644 --- a/router/java/src/net/i2p/router/ClientMessage.java +++ b/router/java/src/net/i2p/router/ClientMessage.java @@ -28,16 +28,10 @@ public class ClientMessage { private Hash _destinationHash; private MessageId _messageId; private long _expiration; + /** only for outbound messages */ + private int _flags; public ClientMessage() { - setPayload(null); - setDestination(null); - setFromDestination(null); - setReceptionInfo(null); - setSenderConfig(null); - setDestinationHash(null); - setMessageId(null); - setExpiration(0); } /** @@ -101,4 +95,17 @@ public class ClientMessage { */ public long getExpiration() { return _expiration; } public void setExpiration(long e) { _expiration = e; } + + /** + * Flags requested by the client that sent the message. This will only be available + * for locally originated messages. + * + * @since 0.8.4 + */ + public int getFlags() { return _flags; } + + /** + * @since 0.8.4 + */ + public void setFlags(int f) { _flags = f; } } diff --git a/router/java/src/net/i2p/router/client/ClientConnectionRunner.java b/router/java/src/net/i2p/router/client/ClientConnectionRunner.java index 8bef2776d..a73dcde83 100644 --- a/router/java/src/net/i2p/router/client/ClientConnectionRunner.java +++ b/router/java/src/net/i2p/router/client/ClientConnectionRunner.java @@ -280,8 +280,12 @@ class ClientConnectionRunner { MessageId id = new MessageId(); id.setMessageId(getNextMessageId()); long expiration = 0; - if (message instanceof SendMessageExpiresMessage) - expiration = ((SendMessageExpiresMessage) message).getExpiration().getTime(); + int flags = 0; + if (message.getType() == SendMessageExpiresMessage.MESSAGE_TYPE) { + SendMessageExpiresMessage msg = (SendMessageExpiresMessage) message; + expiration = msg.getExpirationTime(); + flags = msg.getFlags(); + } if (!_dontSendMSM) _acceptedPending.add(id); @@ -289,16 +293,17 @@ class ClientConnectionRunner { _log.debug("** Receiving message [" + id.getMessageId() + "] with payload of size [" + payload.getSize() + "]" + " for session [" + _sessionId.getSessionId() + "]"); - long beforeDistribute = _context.clock().now(); + //long beforeDistribute = _context.clock().now(); // the following blocks as described above SessionConfig cfg = _config; if (cfg != null) - _manager.distributeMessage(cfg.getDestination(), dest, payload, id, expiration); - long timeToDistribute = _context.clock().now() - beforeDistribute; - if (_log.shouldLog(Log.DEBUG)) - _log.warn("Time to distribute in the manager to " - + dest.calculateHash().toBase64() + ": " - + timeToDistribute); + _manager.distributeMessage(cfg.getDestination(), dest, payload, id, expiration, flags); + // else log error? + //long timeToDistribute = _context.clock().now() - beforeDistribute; + //if (_log.shouldLog(Log.DEBUG)) + // _log.warn("Time to distribute in the manager to " + // + dest.calculateHash().toBase64() + ": " + // + timeToDistribute); return id; } diff --git a/router/java/src/net/i2p/router/client/ClientManager.java b/router/java/src/net/i2p/router/client/ClientManager.java index bc2d09135..6f4d4414f 100644 --- a/router/java/src/net/i2p/router/client/ClientManager.java +++ b/router/java/src/net/i2p/router/client/ClientManager.java @@ -193,7 +193,11 @@ class ClientManager { } } - void distributeMessage(Destination fromDest, Destination toDest, Payload payload, MessageId msgId, long expiration) { + /** + * Distribute message to a local or remote destination. + * @param flags ignored for local + */ + void distributeMessage(Destination fromDest, Destination toDest, Payload payload, MessageId msgId, long expiration, int flags) { // check if there is a runner for it ClientConnectionRunner runner = getRunner(toDest); if (runner != null) { @@ -204,6 +208,7 @@ class ClientManager { // sender went away return; } + // TODO can we just run this inline instead? _ctx.jobQueue().addJob(new DistributeLocal(toDest, runner, sender, fromDest, payload, msgId)); } else { // remote. w00t @@ -217,22 +222,22 @@ class ClientManager { ClientMessage msg = new ClientMessage(); msg.setDestination(toDest); msg.setPayload(payload); - msg.setReceptionInfo(null); msg.setSenderConfig(runner.getConfig()); msg.setFromDestination(runner.getConfig().getDestination()); msg.setMessageId(msgId); msg.setExpiration(expiration); + msg.setFlags(flags); _ctx.clientMessagePool().add(msg, true); } } private class DistributeLocal extends JobImpl { - private Destination _toDest; - private ClientConnectionRunner _to; - private ClientConnectionRunner _from; - private Destination _fromDest; - private Payload _payload; - private MessageId _msgId; + private final Destination _toDest; + private final ClientConnectionRunner _to; + private final ClientConnectionRunner _from; + private final Destination _fromDest; + private final Payload _payload; + private final MessageId _msgId; public DistributeLocal(Destination toDest, ClientConnectionRunner to, ClientConnectionRunner from, Destination fromDest, Payload payload, MessageId id) { super(_ctx); diff --git a/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java b/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java index 5b3e3e507..d1e86db95 100644 --- a/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java +++ b/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java @@ -47,21 +47,21 @@ import net.i2p.util.SimpleTimer; * */ public class OutboundClientMessageOneShotJob extends JobImpl { - private Log _log; + private final Log _log; private long _overallExpiration; private ClientMessage _clientMessage; - private MessageId _clientMessageId; - private int _clientMessageSize; - private Destination _from; - private Destination _to; - private String _toString; + private final MessageId _clientMessageId; + private final int _clientMessageSize; + private final Destination _from; + private final Destination _to; + private final String _toString; /** target destination's leaseSet, if known */ private LeaseSet _leaseSet; /** Actual lease the message is being routed through */ private Lease _lease; private PayloadGarlicConfig _clove; private long _cloveId; - private long _start; + private final long _start; private boolean _finished; private long _leaseSetLookupBegin; private TunnelInfo _outTunnel; From c453dd0e3476142b25053b94d7c88eca67dda8d1 Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Sat, 15 Jan 2011 04:09:53 +0000 Subject: [PATCH 079/463] Console/tunnelmanager: light theme adulteration. --- .../themes/console/light/console.css | 2 +- .../themes/console/light/default.css | 46 +++++++++++-------- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index b6239be0c..cfe13ea0e 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -850,7 +850,7 @@ h4 { button, button:visited{ font: bold 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - border: 1px outset #999; + border: 1px outset #66a; padding: 1px 3px; background: #ffe !important; text-decoration: none; diff --git a/installer/resources/themes/console/light/default.css b/installer/resources/themes/console/light/default.css index d80cf3c1b..0700b59f6 100644 --- a/installer/resources/themes/console/light/default.css +++ b/installer/resources/themes/console/light/default.css @@ -43,7 +43,7 @@ label { } h4 { - font-size: 14px; + font-size: 11pt; font-weight: bold !important; color: #001; text-align: center; @@ -52,11 +52,14 @@ h4 { padding: 5px 10px; background: #eef url(images/header.png) repeat-x center center; text-transform: uppercase; - letter-spacing: 0.08em; - -moz-box-shadow: inset 0px 0px 4px 0px #bbf; + letter-spacing: 0.07em; -moz-border-radius: 4px; -khtml-border-radius: 4px; border-radius: 4px; + text-shadow: 0px 1px 1px #77f; + -moz-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + -khtml-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); } a { @@ -81,10 +84,9 @@ button { } textarea { - border: 1px solid #9999ff; - color: #001; - background: #ddf; - border: 1px solid #44d; + color: #003; + background: #fff; + border: 1px solid #447; } br { @@ -131,28 +133,28 @@ hr { .separator, .subdivider { clear: both; height: 1px; - margin: 1px 0px 1px 0px; - border-bottom: 1px solid #225; + margin: 10px 0px 10px 0px; + border-bottom: 1px dotted #447; /* display: none; */ } .subdivider { - border-bottom: 1px solid #225; - padding: 5px 0px 0px 0px; + border-bottom: 1px dotted #447; + padding: 5px 0; } .freetext { width: 150px; height: 24px; - border: 1px solid #44d; + border: 1px solid #447; padding: 2px; margin: 4px 0 2px 0px; font: 10pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; font-weight: bold; - background: #ddf; - color: #001; + background: #fff; + color: #003; -moz-border-radius: 0 4px 4px 0; -khtml-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; @@ -169,7 +171,7 @@ hr { font-weight: bold; background: #ffe; color: #001; - border: 1px outset #ddddc0; + border: 1px outset #66a; text-align: center; white-space: nowrap; -moz-border-radius: 4px; @@ -187,11 +189,17 @@ hr { text-decoration: none; } */ + .control:hover, control:visited:hover { - border: 1px solid #eef; background-color: #f60; color: #fff !important; text-decoration: none; + border: 1px solid #f60 !important; + background: #f60 !important; + color: #fff; + -moz-box-shadow: inset 0px 0px 0px 1px #fff !important; + -khtml-box-shadow: inset 0px 0px 0px 1px #fff !important; + box-shadow: inset 0px 0px 0px 1px #fff !important; } .control:link, control:visited { @@ -201,7 +209,7 @@ hr { min-width: 60px; font-weight: bold; color: #001; - border: 1px outset #ddddc0; + border: 1px outset #66a; text-align: center; white-space: nowrap; -moz-border-radius: 4px; @@ -352,11 +360,11 @@ globalOperationsPanel .control:hover { select { background-color: #eef; - color: #001; + color: #003; margin: 4px; font-family: "Lucida Sans Unicode", Verdana, Tahoma, Helvetica, sans-serif; font-weight: bold; - border: 1px solid #001; + border: 1px solid #447; padding: 2px; min-width: 270px; font-size: 8pt; From 02fbd7f9d6cf1f3983873edf8adcba207a135de6 Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Sat, 15 Jan 2011 05:05:06 +0000 Subject: [PATCH 080/463] Light touch. --- installer/resources/themes/console/light/console.css | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index cfe13ea0e..bfb38ff70 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -164,14 +164,16 @@ div.routersummary h4 { border-bottom: 0 !important; font-size: 8.5pt; letter-spacing: 0.02em; - margin: -5px -7px -5px -7px !important; + margin: -6px !important; padding: 3px 3px 5px 3px; - background: #eed url(images/magic.png); + background: #ddf url(images/magic.png); text-transform: capitalize; text-decoration: none !important; color: #2b2; line-height: 105%; -/* text-shadow: 0px 1px 1px #99f;*/ + -moz-box-shadow: 0px 0px 1px 1px #fff; + -khtml-box-shadow: 0px 0px 1px 1px #fff; + box-shadow: 0px 0px 1px 1px #fff; } div.routersummary table { From 29dfa77bce023c170fc69f2ddb10ad4f4b061d1b Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Sat, 15 Jan 2011 05:39:03 +0000 Subject: [PATCH 081/463] Tunnelmanager light finesse. --- .../themes/console/light/default.css | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/installer/resources/themes/console/light/default.css b/installer/resources/themes/console/light/default.css index 0700b59f6..305d75fe3 100644 --- a/installer/resources/themes/console/light/default.css +++ b/installer/resources/themes/console/light/default.css @@ -87,6 +87,13 @@ textarea { color: #003; background: #fff; border: 1px solid #447; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; +} + +textarea:active { + -moz-box-shadow: inset 0px 0px 0px 1px #f60; } br { @@ -155,14 +162,18 @@ hr { font-weight: bold; background: #fff; color: #003; - -moz-border-radius: 0 4px 4px 0; - -khtml-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; /* -moz-box-shadow: inset 0px -1px 1px 0px #fff; */ } +.freetext:active { + -moz-box-shadow: inset 0px 0px 0px 1px #f60; +} + .control, control:link, control:visited { margin: 4px 0 0 4px !important; padding: 2px; @@ -252,7 +263,7 @@ hr { .rowItem { width: 750px; float: left; - margin: 0px; + margin: 2px 0; } .comment { @@ -365,10 +376,17 @@ select { font-family: "Lucida Sans Unicode", Verdana, Tahoma, Helvetica, sans-serif; font-weight: bold; border: 1px solid #447; - padding: 2px; + padding: 3px 3px 3px 0; min-width: 270px; font-size: 8pt; max-height: 24px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; +} + +select:active { + -moz-box-shadow: inset 0px 0px 0px 1px #f60; } a:link{ From f7df15fd5d0e2c4e69190acc362bca2cd25b06bc Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Sat, 15 Jan 2011 05:48:45 +0000 Subject: [PATCH 082/463] Light tweaks. --- .../resources/themes/console/light/console.css | 14 ++++++++++++++ .../resources/themes/console/light/default.css | 8 +++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index bfb38ff70..0e9c0f612 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -960,6 +960,8 @@ input:active { border: 1px solid #f60; opacity: 1.0; -moz-box-shadow: inset 0px 0px 0px 1px #f60; + -khtml-box-shadow: inset 0px 0px 0px 1px #f60; + box-shadow: inset 0px 0px 0px 1px #f60; } input[type=text] { @@ -1001,6 +1003,12 @@ select { text-align: left !important; } +select:active { + -moz-box-shadow: inset 0px 0px 0px 1px #f60; + -khtml-box-shadow: inset 0px 0px 0px 1px #f60; + box-shadow: inset 0px 0px 0px 1px #f60; +} + textarea { padding: 5px; margin: 5px 15px 5px 10px; @@ -1015,6 +1023,12 @@ textarea { border: 1px solid #447; } +textarea:active { + -moz-box-shadow: inset 0px 0px 0px 1px #f60; + -khtml-box-shadow: inset 0px 0px 0px 1px #f60; + box-shadow: inset 0px 0px 0px 1px #f60; +} + form {} .proxyfooter { diff --git a/installer/resources/themes/console/light/default.css b/installer/resources/themes/console/light/default.css index 305d75fe3..068801114 100644 --- a/installer/resources/themes/console/light/default.css +++ b/installer/resources/themes/console/light/default.css @@ -94,6 +94,8 @@ textarea { textarea:active { -moz-box-shadow: inset 0px 0px 0px 1px #f60; + -khtml-box-shadow: inset 0px 0px 0px 1px #f60; + box-shadow: inset 0px 0px 0px 1px #f60; } br { @@ -172,6 +174,8 @@ hr { .freetext:active { -moz-box-shadow: inset 0px 0px 0px 1px #f60; + -khtml-box-shadow: inset 0px 0px 0px 1px #f60; + box-shadow: inset 0px 0px 0px 1px #f60; } .control, control:link, control:visited { @@ -370,7 +374,7 @@ globalOperationsPanel .control:hover { } select { - background-color: #eef; + background-color: #fff; color: #003; margin: 4px; font-family: "Lucida Sans Unicode", Verdana, Tahoma, Helvetica, sans-serif; @@ -387,6 +391,8 @@ select { select:active { -moz-box-shadow: inset 0px 0px 0px 1px #f60; + -khtml-box-shadow: inset 0px 0px 0px 1px #f60; + box-shadow: inset 0px 0px 0px 1px #f60; } a:link{ From d4a717e6b68c4c158d5e441222c14a25296fd8f5 Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Sat, 15 Jan 2011 14:49:15 +0000 Subject: [PATCH 083/463] Console themes: Fix for http://trac.i2p2.i2p/ticket/359 --- installer/resources/themes/console/dark/console.css | 2 +- installer/resources/themes/console/light/console.css | 2 +- installer/resources/themes/console/midnight/console.css | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/installer/resources/themes/console/dark/console.css b/installer/resources/themes/console/dark/console.css index 1cf5e3d87..527cfceb0 100644 --- a/installer/resources/themes/console/dark/console.css +++ b/installer/resources/themes/console/dark/console.css @@ -617,7 +617,7 @@ code { text-align: left; font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; color: #dd0; - padding: 1px 2px; +/* padding: 1px 2px;*/ } a:link, h2 a:link{ diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 0e9c0f612..699198f8b 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -715,7 +715,7 @@ code { text-align: left; font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; color: #390; - padding: 2px 3px; +/* padding: 2px 3px; */ font-weight: bold; } diff --git a/installer/resources/themes/console/midnight/console.css b/installer/resources/themes/console/midnight/console.css index 75632baf2..dac6f3fe0 100644 --- a/installer/resources/themes/console/midnight/console.css +++ b/installer/resources/themes/console/midnight/console.css @@ -954,7 +954,7 @@ code { text-align: left; font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; color: #0d0; - padding: 0 2px; +/* padding: 0 2px;*/ } div.footnote { From 04d04d0169f960cae7abd0e0fe3ad6159c2b9761 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sat, 15 Jan 2011 22:23:57 +0000 Subject: [PATCH 084/463] add some HTTP headers in the view servlets --- apps/routerconsole/jsp/flags.jsp | 20 +++++++++++++++++-- apps/routerconsole/jsp/viewtheme.jsp | 18 ++++++++++++++++- history.txt | 7 +++++++ .../src/net/i2p/router/RouterVersion.java | 2 +- 4 files changed, 43 insertions(+), 4 deletions(-) diff --git a/apps/routerconsole/jsp/flags.jsp b/apps/routerconsole/jsp/flags.jsp index c736e8b46..153b4c2f2 100644 --- a/apps/routerconsole/jsp/flags.jsp +++ b/apps/routerconsole/jsp/flags.jsp @@ -15,11 +15,27 @@ boolean rendered = false; String c = request.getParameter("c"); if (c != null && c.length() > 0) { java.io.OutputStream cout = response.getOutputStream(); - response.setContentType("image/png"); - response.setHeader("Cache-Control", "max-age=86400"); // cache for a day String base = net.i2p.I2PAppContext.getGlobalContext().getBaseDir().getAbsolutePath(); String file = "docs" + java.io.File.separatorChar + "icons" + java.io.File.separatorChar + "flags" + java.io.File.separatorChar + c + ".png"; + java.io.File ffile = new java.io.File(base, file); + long lastmod = ffile.lastModified(); + if (lastmod > 0) { + long iflast = request.getDateHeader("If-Modified-Since"); + // iflast is -1 if not present; round down file time + if (iflast >= ((lastmod / 1000) * 1000)) { + response.sendError(304, "Not Modified"); + return; + } + response.setDateHeader("Last-Modified", lastmod); + // cache for a day + response.setDateHeader("Expires", net.i2p.I2PAppContext.getGlobalContext().clock().now() + 86400000l); + response.setHeader("Cache-Control", "public, max-age=86400"); + } + long length = ffile.length(); + if (length > 0) + response.setHeader("Content-Length", Long.toString(length)); + response.setContentType("image/png"); try { net.i2p.util.FileUtil.readFile(file, base, cout); rendered = true; diff --git a/apps/routerconsole/jsp/viewtheme.jsp b/apps/routerconsole/jsp/viewtheme.jsp index 723b0ec32..814705e14 100644 --- a/apps/routerconsole/jsp/viewtheme.jsp +++ b/apps/routerconsole/jsp/viewtheme.jsp @@ -19,7 +19,6 @@ if (uri.endsWith(".css")) { } else if (uri.endsWith(".ico")) { response.setContentType("image/x-icon"); } -response.setHeader("Cache-Control", "max-age=86400"); // cache for a day /* * User or plugin themes * If the request is for /themes/console/foo/bar/baz, @@ -44,6 +43,23 @@ if (themePath != null) else base = net.i2p.I2PAppContext.getGlobalContext().getBaseDir().getAbsolutePath() + java.io.File.separatorChar + "docs"; +java.io.File file = new java.io.File(base, uri); +long lastmod = file.lastModified(); +if (lastmod > 0) { + long iflast = request.getDateHeader("If-Modified-Since"); + // iflast is -1 if not present; round down file time + if (iflast >= ((lastmod / 1000) * 1000)) { + response.sendError(304, "Not Modified"); + return; + } + response.setDateHeader("Last-Modified", lastmod); + // cache for a day + response.setDateHeader("Expires", net.i2p.I2PAppContext.getGlobalContext().clock().now() + 86400000l); + response.setHeader("Cache-Control", "public, max-age=86400"); +} +long length = file.length(); +if (length > 0) + response.setHeader("Content-Length", Long.toString(length)); try { net.i2p.util.FileUtil.readFile(uri, base, response.getOutputStream()); } catch (java.io.IOException ioe) { diff --git a/history.txt b/history.txt index 118de8648..31c79e052 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,10 @@ +2011-01-15 zzz + * Console: Add some HTTP headers in the view servlets + +2011-01-12 zzz + * Log: Fix rare initialization problem + * PrivateKey: Fix hashCode() + 2011-01-09 zzz * DataHelper: Speed up and annotate sortStructures() * Data Structures: More caching improvements, don't cache where we shouldn't diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 7ca1a3ec2..5a58b19bc 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 = 10; + public final static long BUILD = 11; /** for example "-test" */ public final static String EXTRA = ""; From 32b817f9b1f08e2dcb822fbc5ac5368951bdf81d Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 16 Jan 2011 15:30:04 +0000 Subject: [PATCH 085/463] allow editing of console args --- .../java/src/net/i2p/router/web/ConfigClientsHelper.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java index 4ce5c5b99..352df72ee 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java @@ -105,7 +105,9 @@ public class ConfigClientsHelper extends HelperBase { for (int cur = 0; cur < clients.size(); cur++) { ClientAppConfig ca = clients.get(cur); renderForm(buf, ""+cur, ca.clientName, false, !ca.disabled, - "webConsole".equals(ca.clientName) || "Web console".equals(ca.clientName), + // dangerous, but allow editing the console args too + //"webConsole".equals(ca.clientName) || "Web console".equals(ca.clientName), + false, ca.className + ((ca.args != null) ? " " + ca.args : ""), (""+cur).equals(_edit), true, false, false, true, ca.disabled); } From 0ed88c5686a58af9ed79450ae32fc61715369cd5 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 16 Jan 2011 15:30:41 +0000 Subject: [PATCH 086/463] * UDP: Prevent rare startup NPE --- .../router/transport/udp/UDPTransport.java | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) 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 b55d845ad..b7b6f28da 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java @@ -52,16 +52,16 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private PacketHandler _handler; private EstablishmentManager _establisher; private final MessageQueue _outboundMessages; - private OutboundMessageFragments _fragments; + private final OutboundMessageFragments _fragments; private final OutboundMessageFragments.ActiveThrottle _activeThrottle; private OutboundRefiller _refiller; private PacketPusher _pusher; - private InboundMessageFragments _inboundFragments; + private final InboundMessageFragments _inboundFragments; private UDPFlooder _flooder; private PeerTestManager _testManager; private final IntroductionManager _introManager; - private ExpirePeerEvent _expireEvent; - private PeerTestEvent _testEvent; + private final ExpirePeerEvent _expireEvent; + private final PeerTestEvent _testEvent; private short _reachabilityStatus; private long _reachabilityStatusLastUpdated; private long _introducersSelectedOn; @@ -227,8 +227,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority } public void startup() { - if (_fragments != null) - _fragments.shutdown(); + _fragments.shutdown(); if (_pusher != null) _pusher.shutdown(); if (_handler != null) @@ -239,8 +238,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority _establisher.shutdown(); if (_refiller != null) _refiller.shutdown(); - if (_inboundFragments != null) - _inboundFragments.shutdown(); + _inboundFragments.shutdown(); if (_flooder != null) _flooder.shutdown(); _introManager.reset(); @@ -345,14 +343,12 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority _refiller.shutdown(); if (_handler != null) _handler.shutdown(); - if (_fragments != null) - _fragments.shutdown(); + _fragments.shutdown(); if (_pusher != null) _pusher.shutdown(); if (_establisher != null) _establisher.shutdown(); - if (_inboundFragments != null) - _inboundFragments.shutdown(); + _inboundFragments.shutdown(); _expireEvent.setIsAlive(false); _testEvent.setIsAlive(false); } @@ -1116,7 +1112,11 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority if (msg == null) return; if (msg.getTarget() == null) return; if (msg.getTarget().getIdentity() == null) return; - + if (_establisher == null) { + failed(msg, "UDP not up yet"); + return; + } + msg.timestamp("sending on UDP transport"); Hash to = msg.getTarget().getIdentity().calculateHash(); PeerState peer = getPeerState(to); @@ -1443,11 +1443,12 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority if (_log.shouldLog(Log.INFO)) _log.info("Sending message failed: " + msg, new Exception("failed from")); - if (!_context.messageHistory().getDoLog()) + if (_context.messageHistory().getDoLog()) _context.messageHistory().sendMessage(msg.getMessageType(), msg.getMessageId(), msg.getExpiration(), msg.getTarget().getIdentity().calculateHash(), false, reason); super.afterSend(msg, false); } + public void succeeded(OutboundMessageState msg) { if (msg == null) return; if (_log.shouldLog(Log.DEBUG)) From 5a1027c5ed3839be77feaf2731346691f83a28ec Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 16 Jan 2011 15:31:45 +0000 Subject: [PATCH 087/463] * UPnP: - Change all log errors to warns (tickets #76, #95, #120) - Double socket soTimeout to 2 seconds --- history.txt | 7 +++++++ router/java/src/net/i2p/router/RouterVersion.java | 4 ++-- router/java/src/org/cybergarage/http/HTTPRequest.java | 4 ++-- router/java/src/org/cybergarage/util/Debug.java | 6 +++--- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/history.txt b/history.txt index 31c79e052..e7ed2db0d 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,10 @@ +2011-01-16 zzz + * Console: Allow editing of console args + * UDP: Prevent rare startup NPE + * UPnP: + - Change all log errors to warns (tickets #76, #95, #120) + - Double socket soTimeout to 2 seconds + 2011-01-15 zzz * Console: Add some HTTP headers in the view servlets diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 5a58b19bc..cef568607 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 = 11; + public final static long BUILD = 12; /** for example "-test" */ - public final static String EXTRA = ""; + public final static String EXTRA = "-rc"; public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA; public static void main(String args[]) { System.out.println("I2P Router version: " + FULL_VERSION); diff --git a/router/java/src/org/cybergarage/http/HTTPRequest.java b/router/java/src/org/cybergarage/http/HTTPRequest.java index c1c3b50f6..938450c93 100644 --- a/router/java/src/org/cybergarage/http/HTTPRequest.java +++ b/router/java/src/org/cybergarage/http/HTTPRequest.java @@ -388,10 +388,10 @@ public class HTTPRequest extends HTTPPacket // Set the timeout to be nice and short, the device should be local and fast. // Yeah, the UPnP standard is a minute or something, too bad. // If he can't get back to us in a few seconds, forget it. - // And set the soTimeout to 1 second (for reads). + // And set the soTimeout to 2 second (for reads). //postSocket = new Socket(host, port); postSocket = new Socket(); - postSocket.setSoTimeout(1000); + postSocket.setSoTimeout(2000); SocketAddress sa = new InetSocketAddress(host, port); postSocket.connect(sa, 3000); } diff --git a/router/java/src/org/cybergarage/util/Debug.java b/router/java/src/org/cybergarage/util/Debug.java index 5b01ac43a..c6415591e 100644 --- a/router/java/src/org/cybergarage/util/Debug.java +++ b/router/java/src/org/cybergarage/util/Debug.java @@ -52,14 +52,14 @@ public final class Debug } public static final void warning(String s) { if (_log != null) - _log.error(s); + _log.warn(s); } public static final void warning(String m, Exception e) { if (_log != null) - _log.error(m, e); + _log.warn(m, e); } public static final void warning(Exception e) { if (_log != null) - _log.error("", e); + _log.warn("", e); } } From 99405b7dff653826091e5be4bf95843e40770354 Mon Sep 17 00:00:00 2001 From: hiddenz <hiddenz@mail.i2p> Date: Mon, 17 Jan 2011 18:52:24 +0000 Subject: [PATCH 088/463] readme_ru.html: sync with english version --- installer/resources/readme/readme_ru.html | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/installer/resources/readme/readme_ru.html b/installer/resources/readme/readme_ru.html index ffa8c435e..ef1786c88 100644 --- a/installer/resources/readme/readme_ru.html +++ b/installer/resources/readme/readme_ru.html @@ -14,8 +14,7 @@ </div><a name="top"></a> <div class="welcome"><h2>Добро пожаловать в Невидимый Интернет</h2></div> <ul class="links"><li class="tidylist"><b>Начало…</b><br>Если вы только что запустили I2P, число <i>Активных пиров</i>, отображаемых под секцией <i>Пиры</i> на боковой панели должно начать увеличиваться через несколько минут, и вы так же увидите <i>Локальный туннель</i> с именем <i>Коллективные Клиенты</i>, и, возможно, другие клиентские и серверные туннели в зависимости от того, как настроен I2P (если нет, смотрите секцию по разрешению проблем <a href="#trouble">ниже</a>). Эти <i>Локальные туннели</i> предоставляют соединения на разных портах (и иногда разные протоколы) для сети I2P, позволяя функционировать вашим torrent, e-mail, прокси и другим сервисам. Ваша <a href="/netdb">База данных сети I2P</a> показывает всех известных роутеру пиров в сети. Больше информации доступно на <a href="/help">странице помощи</a>.</li> - -<li class="tidylist"><b>Сетевая интеграция</b><br> Когда вы впервые запускаете I2P, это может занять несколько минут, т.к. роутер выполняет процедуру начальной загрузки (bootstrap) для интеграции в сеть и поиска пиров для оптимизации интегрированности. Будте терпеливы. Когда возле ваших <i>Локальных туннелей</i> загорятся зелёные звёздочки, вы сможете делать с I2P разнообразные вещи, и ниже мы представим вам некоторые из них. </li></ul> +<li class="tidylist"><b>Сетевая интеграция</b><br> Когда вы впервые запускаете I2P, это может занять несколько минут, т.к. роутер выполняет процедуру начальной загрузки (bootstrap) для интеграции в сеть и поиска пиров для оптимизации интегрированности. Будте терпеливы. Когда I2P запускается, и во время нормальной работы, индикатор готовности к построению туннелей (прямо над секцией <i>Локальные туннели</i> на боковой панели) может показывать "Не принимаем туннели"; это нормальное поведение и не стоит слишком беспокоиться. Когда возле ваших <i>Локальных туннелей</i> загорятся зелёные звёздочки, вы сможете делать с I2P разнообразные вещи, и ниже мы представим вам некоторые из них. </li></ul> <h3>Сервисы в I2P</h3> <ul class="links"> From 2ea05f01eb65f1de3480642404339a8afe022482 Mon Sep 17 00:00:00 2001 From: hiddenz <hiddenz@mail.i2p> Date: Mon, 17 Jan 2011 19:26:41 +0000 Subject: [PATCH 089/463] Fix typo --- apps/i2ptunnel/jsp/index.jsp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/i2ptunnel/jsp/index.jsp b/apps/i2ptunnel/jsp/index.jsp index faf904de0..dcacee195 100644 --- a/apps/i2ptunnel/jsp/index.jsp +++ b/apps/i2ptunnel/jsp/index.jsp @@ -238,7 +238,7 @@ String cHost= indexBean.getClientInterface(curClient); if ("".equals(cHost)) { out.write("<font color=\"red\">"); - out.write(intl._("Hort not set")); + out.write(intl._("Host not set")); out.write("</font>"); } else { out.write(cHost); From bbb731af6c0d7824cd40ad9121170ca7b6071a06 Mon Sep 17 00:00:00 2001 From: hiddenz <hiddenz@mail.i2p> Date: Mon, 17 Jan 2011 19:37:12 +0000 Subject: [PATCH 090/463] i2ptunnel: update russian translation --- apps/i2ptunnel/locale/messages_ru.po | 445 +++++++++++++++------------ 1 file changed, 248 insertions(+), 197 deletions(-) diff --git a/apps/i2ptunnel/locale/messages_ru.po b/apps/i2ptunnel/locale/messages_ru.po index 718e82e9f..c0a1bdfeb 100644 --- a/apps/i2ptunnel/locale/messages_ru.po +++ b/apps/i2ptunnel/locale/messages_ru.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2ptunnel\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-13 19:43+0000\n" -"PO-Revision-Date: 2010-12-14 00:54+0500\n" +"POT-Creation-Date: 2011-01-17 18:54+0000\n" +"PO-Revision-Date: 2011-01-18 00:34+0500\n" "Last-Translator: Hidden Z <hiddenz@mail.i2p>\n" "Language-Team: foo <foo@bar>\n" "Language: \n" @@ -18,15 +18,20 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Russian\n" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:475 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474 #, java-format msgid "To visit the destination in your host database, click <a href=\"{0}\">here</a>. To visit the conflicting addresshelper destination, click <a href=\"{1}\">here</a>." msgstr "Для перехода по ссылке из локальной адресной книги, нажмите <a href=\"{0}\">здесь</a>. Для перехода по новой addresshelper-ссылке, нажмите <a href=\"{1}\">здесь</a>." -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:932 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931 msgid "Click a link below to look for an address helper by using a \"jump\" service:" msgstr "Jump-сервисы, которые, возможно, знают нужную Вам addresshelper-ссылку:" +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336 +msgid "internal" +msgstr "внутренний" + #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:170 msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit." msgstr "Неправильно переданная форма, возможно вы использовали действие браузера \"назад\" или \"обновить\". Пожалуйста повторите попытку." @@ -97,6 +102,15 @@ msgstr "Streamr-сервер" msgid "HTTP bidir" msgstr "HTTP bidir (экспериментальный двунаправленный режим, инструкцию спрашивайте у sponge)" +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:508 +msgid "Host not set" +msgstr "Хост не задан" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:512 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:272 +msgid "Port not set" +msgstr "Порт не задан" + #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:73 msgid "I2P Tunnel Manager - Edit Client Tunnel" msgstr "Менеджер Туннелей I2P — Редактирование Клиентского Туннеля" @@ -121,14 +135,14 @@ msgstr "Название" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:116 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:116 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:246 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:270 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:279 msgid "Type" msgstr "Тип" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:120 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:120 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:226 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:367 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:386 msgid "Description" msgstr "Описание" @@ -139,357 +153,340 @@ msgstr "Точка доступа" #: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:162 msgid "Access Point" msgstr "Точка доступа" #: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:150 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:192 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:153 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:167 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:213 msgid "required" msgstr "*" -#: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:159 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:178 msgid "Reachable by" msgstr "Кому будет доступно (Сетевой интерфейс)" -#: ../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 "Только в пределах этого компьютера (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 "Всем (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-адрес)" - -#: ../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 "Адрес сетевого интерфейса" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:195 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:180 msgid "Outproxies" msgstr "Список outproxy" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:187 msgid "Tunnel Destination" msgstr "Адрес назначения туннеля" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:214 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:199 msgid "name or destination" msgstr "имя или адрес" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202 msgid "b32 not recommended" msgstr "b32 не рекомендуется" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208 msgid "Shared Client" msgstr "Коллективный клиент" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:212 msgid "(Share tunnels with other clients and irc/httpclients? Change requires restart of client proxy)" msgstr "(Использовать туннели коллективно/совместно с другими прокси-клиентами? Изменение настройки потребует перезапуска туннеля)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:231 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:216 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:124 msgid "Auto Start" msgstr "Автозапуск" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:128 msgid "(Check the Box for 'YES')" msgstr "(поставьте галочку для включения)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:237 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:258 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:243 msgid "Advanced networking options" msgstr "Расширенные сетевые настройки" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224 msgid "(NOTE: when this client proxy is configured to share tunnels, then these options are for all the shared proxy clients!)" msgstr "(ПРИМЕЧАНИЕ: при коллективном использовании туннелей эти опции будут применяться ко всем коллективным прокси-клиентам!)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:241 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:260 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245 msgid "Tunnel Options" msgstr "Параметры туннеля" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:262 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:247 msgid "Length" msgstr "Длина" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:250 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:269 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:254 msgid "0 hop tunnel (low anonymity, low latency)" msgstr "0 хопов (низкая анонимность, малые задержки)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:254 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:273 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:258 msgid "1 hop tunnel (medium anonymity, medium latency)" msgstr "1 хоп (умеренная анонимность, умеренные задержки)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:258 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:277 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:262 msgid "2 hop tunnel (high anonymity, high latency)" msgstr "2 хопа (высокая анонимность, высокие задержки)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:262 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:281 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:266 msgid "3 hop tunnel (very high anonymity, poor performance)" msgstr "3 хопа (очень высокая анонимность, низкая производительность)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:271 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:290 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:256 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:275 msgid "hop tunnel (very poor performance)" msgstr "хопов (очень низкая производительность)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:261 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:280 msgid "Variance" msgstr "Разброс" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:283 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:268 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:287 msgid "0 hop variance (no randomisation, consistant performance)" msgstr "нулевой разброс (без рандомизации, фиксированная производительность)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:287 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:272 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:291 msgid "+ 0-1 hop variance (medium additive randomisation, subtractive performance)" msgstr "+ 0-1 разброс (умеренно повышенная рандомизация, пониженная производительность)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:291 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295 msgid "+ 0-2 hop variance (high additive randomisation, subtractive performance)" msgstr "+ 0-2 разброс (сильно повышенная рандомизация, пониженная производительность)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:295 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:314 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:299 msgid "+/- 0-1 hop variance (standard randomisation, standard performance)" msgstr "+/- 0-1 разброс (стандартная рандомизация, стандартная производительность)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:299 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:284 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:303 msgid "+/- 0-2 hop variance (not recommended)" msgstr "+/- 0-2 разброс (не рекомендуется)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:311 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:315 msgid "hop variance" msgstr "разброс" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:320 msgid "Count" msgstr "Количество" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:323 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:342 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:327 msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)" msgstr "1 входящий, 1 исходящий туннель (низкая пропускная способность, низкая надежность) " -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:327 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:346 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:331 msgid "2 inbound, 2 outbound tunnels (standard bandwidth usage, standard reliability)" msgstr "2 входящих, 2 исходящих туннеля (стандартная пропускная способность, стандартная надежность)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:331 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:350 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335 msgid "3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)" msgstr "3 входящих, 3 исходящих туннеля (высокая пропускная способность, высокая надежность)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:340 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:344 msgid "tunnels" msgstr "туннелей" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:345 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349 msgid "Backup Count" msgstr "Резервное количество" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:352 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:371 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:356 msgid "0 backup tunnels (0 redundancy, no added resource usage)" msgstr "без резервных туннелей (отсутствие избыточности, отсутствие дополнительной нагрузки на систему)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:356 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:375 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:360 msgid "1 backup tunnel each direction (low redundancy, low resource usage)" msgstr "1 резервный туннель в каждом направлении (низкая избыточность, низкая нагрузка на систему)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:360 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:379 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364 msgid "2 backup tunnels each direction (medium redundancy, medium resource usage)" msgstr "2 резервных туннеля в каждом направлении (умеренная избыточность, умеренная нагрузка на систему)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:364 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:383 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:349 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:368 msgid "3 backup tunnels each direction (high redundancy, high resource usage)" msgstr "3 резервных туннеля в каждом направлении (высокая избыточность, высокая нагрузка на систему)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:373 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:392 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:358 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377 msgid "backup tunnels" msgstr "резервных туннелей" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:380 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:384 msgid "Profile" msgstr "Режим" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:387 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:406 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:372 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:391 msgid "interactive connection" msgstr "оптимизировать для малых задержек (irc)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:391 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:410 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:376 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:395 msgid "bulk connection (downloads/websites/BT)" msgstr "оптимизировать для большого обьема (www/bittorrent)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:393 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:378 msgid "Delay Connect" msgstr "Задержка соединения" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:382 msgid "for request/response connections" msgstr "оптимизация для соединений, начинающихся с запроса клиента/ответа сервера" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:401 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:414 -msgid "I2CP Options" -msgstr "Параметры I2CP" +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399 +msgid "Router I2CP Address" +msgstr "I2CP Адрес Роутера" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:403 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:146 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:416 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401 msgid "Host" msgstr "Адрес" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:407 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:152 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:420 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:396 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:148 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:244 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:266 msgid "Port" msgstr "Порт" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:413 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:452 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:406 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479 msgid "Reduce tunnel quantity when idle" msgstr "Снижать количество туннелей при простое" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:415 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:429 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:437 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:449 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:459 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:479 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:493 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:426 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:442 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:454 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:408 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:422 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:430 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:442 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:452 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:472 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:419 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481 msgid "Enable" msgstr "Включить" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:419 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:458 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:412 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:485 msgid "Reduced tunnel count" msgstr "Количество туннелей" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:423 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:443 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:462 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:416 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:489 msgid "Idle minutes" msgstr "Минут простоя" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:427 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420 msgid "Close tunnels when idle" msgstr "Закрыть туннели при простое" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:426 msgid "New Keys on Reopen" msgstr "Генерировать новый ключ при переоткрытии" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:441 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435 msgid "Disable" msgstr "Выключить" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:447 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440 msgid "Delay tunnel open until required" msgstr "Отложить запуск до первого запроса" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:457 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:450 msgid "Persistent private key" msgstr "Постоянный секретный ключ" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:463 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:456 msgid "File" msgstr "Файл" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:467 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:460 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:220 msgid "Local destination" msgstr "Локальный адрес назначения" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:471 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464 msgid "(if known)" msgstr "(если известен)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:477 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:470 msgid "Local Authorization" msgstr "Локальная авторизация" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:483 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:497 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490 msgid "Username" msgstr "Имя пользователя" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:487 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:501 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:480 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:494 msgid "Password" msgstr "Пароль" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:491 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484 msgid "Outproxy Authorization" msgstr "Авторизация outproxy" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:507 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:498 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502 +msgid "Jump URL List" +msgstr "Список адресов jump-сервисов" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:508 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525 msgid "Custom options" msgstr "Дополнительные параметры" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:511 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:502 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:512 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:529 msgid "NOTE: If tunnel is currently running, most changes will not take effect until tunnel is stopped and restarted." msgstr "ПРИМЕЧАНИЕ: для вступления в силу измененных настроек потребуется остановка и перезапуск туннеля" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:513 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:504 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:514 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531 msgid "Cancel" msgstr "Отмена" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:517 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:508 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535 msgid "Delete" msgstr "Удалить" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:519 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:510 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:520 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537 msgid "Save" msgstr "Сохранить" @@ -505,92 +502,124 @@ msgstr "Редактирование настроек серверного ту msgid "New server settings" msgstr "Настройки нового серверного туннеля" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:214 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:199 msgid "Website name" msgstr "Имя веб-сайта" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:218 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:203 msgid "(leave blank for outproxies)" msgstr "(не заполнять для outproxy)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:208 msgid "Private key file" msgstr "Файл секретного ключа" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:230 msgid "Add to local addressbook" msgstr "Добавить в локальную адресную книгу" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:252 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:237 msgid "Hostname Signature" msgstr "Подпись хоста" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:424 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417 msgid "Encrypt Leaseset" msgstr "Шифровать LeaseSet" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:430 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423 msgid "Encryption Key" msgstr "Ключ шифрования" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:434 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427 msgid "Generate New Key" msgstr "Сгенерировать новый ключ" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429 msgid "Generate" msgstr "Сгенерировать" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:438 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:496 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:523 msgid "(Tunnel must be stopped first)" msgstr "(Туннель перед этим следует остановить)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:440 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433 msgid "Restricted Access List" msgstr "Ограниченный доступ" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:446 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439 +msgid "Whitelist" +msgstr "Белый список" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443 +msgid "Blacklist" +msgstr "Чёрный список" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447 msgid "Access List" msgstr "Список доступа" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:450 -msgid "(Restrict to these clients only)" -msgstr "(Разрешить доступ только перечисленным клиентам)" +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451 +msgid "Inbound connection limits (0 to disable)" +msgstr "Ограничение входящих соединений (0 для отключения)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:466 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453 +msgid "Per client" +msgstr "На клиента" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455 +msgid "Per minute" +msgstr "В минуту" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459 +msgid "Per hour" +msgstr "В час" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463 +msgid "Per day" +msgstr "В сутки" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467 +msgid "Total" +msgstr "Всего" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475 +msgid "Max concurrent connections (0 to disable)" +msgstr "Максимум одновременных соединений (0 для отключения)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493 msgid "New Certificate type" msgstr "Создать новый сертификат. Тип" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:468 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495 msgid "None" msgstr "Без" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:472 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499 msgid "Hashcash (effort)" msgstr "Hashcash (экспериментальный)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:478 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505 msgid "Hashcash Calc Time" msgstr "Время генерации hashcash-сертификата" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:480 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507 msgid "Estimate" msgstr "Прогноз" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:482 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509 msgid "Hidden" msgstr "Скрытый" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:486 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513 msgid "Signed (signed by)" msgstr "Подписанный (указать кем подписан)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:492 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519 msgid "Modify Certificate" msgstr "Изменить сертификат" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:494 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521 msgid "Modify" msgstr "Изменить" @@ -640,7 +669,7 @@ msgstr "Предпросмотр" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:113 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:177 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:250 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:278 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:297 msgid "Status" msgstr "Состояние" @@ -653,30 +682,30 @@ msgid "No Preview" msgstr "Предпросмотр недоступен" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:184 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:285 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:304 msgid "Starting..." msgstr "Запускается..." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:191 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:205 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java: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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:339 msgid "Stop" msgstr "Остановить" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:198 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:332 msgid "Running" msgstr "Запущен" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:212 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:346 msgid "Stopped" msgstr "Остановлен" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:334 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:353 msgid "Start" msgstr "Запустить" @@ -685,12 +714,12 @@ msgid "New server tunnel" msgstr "Новый серверный туннель" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:236 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:377 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:396 msgid "Standard" msgstr "Стандартный" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:238 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:379 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:398 msgid "Create" msgstr "Создать" @@ -699,30 +728,52 @@ msgid "I2P Client Tunnels" msgstr "Клиентские I2P туннели" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:248 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:274 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:283 msgid "Interface" msgstr "Сетевой интерфейс" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:299 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290 +msgid "Host not set" +msgstr "Хост не задан" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:318 msgid "Standby" msgstr "Режим ожидания" # This term intentionally left in English -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:344 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:363 msgid "Outproxy" msgstr "Outproxy" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:348 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:367 msgid "Destination" msgstr "Адрес назначения" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:362 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:381 msgid "none" msgstr "нет" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:375 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394 msgid "New client tunnel" msgstr "Новый клиентский туннель" +#~ msgid "Locally (127.0.0.1)" +#~ msgstr "Только в пределах этого компьютера (127.0.0.1)" + +#~ msgid "Everyone (0.0.0.0)" +#~ msgstr "Всем (0.0.0.0)" + +#~ msgid "LAN Hosts (Please specify your LAN address)" +#~ msgstr "Только из локальной сети (Введите свой LAN-адрес)" + +#~ msgid "Other" +#~ msgstr "Адрес сетевого интерфейса" + +#~ msgid "I2CP Options" +#~ msgstr "Параметры I2CP" + +#~ msgid "(Restrict to these clients only)" +#~ msgstr "(Разрешить доступ только перечисленным клиентам)" + #~ msgid "Unimplemented" #~ msgstr "не реализовано" From f9384d627c602c54f3adcc25c86ba6ac094c33a3 Mon Sep 17 00:00:00 2001 From: hiddenz <hiddenz@mail.i2p> Date: Mon, 17 Jan 2011 20:37:13 +0000 Subject: [PATCH 091/463] readme_ru.html: fix link to anchor --- installer/resources/readme/readme_ru.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer/resources/readme/readme_ru.html b/installer/resources/readme/readme_ru.html index ef1786c88..0b2d5de12 100644 --- a/installer/resources/readme/readme_ru.html +++ b/installer/resources/readme/readme_ru.html @@ -24,7 +24,7 @@ <li class="tidylist"><b>Анонимная электронная почта</b><br>Почтовая система Postman-а, расположенная в I2P, доступна через <a href="../../../../../../susimail/">встроенный почтовый клиент с веб-интерфейсом</a> (susimail), либо через любой почтовый клиент, поддерживающий smtp и pop3. Пользователи сервиса могут отправлять и получать почту из обычного интернета. Для -получения аккаунта, посетите <a href="http://hq.postman.i2p/" target="_blank">hq.postman.i2p</a>. Так же, доступна <a href="http://i2pbote.i2p/" target="_blank">I2P-Bote</a> - новая безсерверная почтовая система со сквозным шифрованием с веб-интерфейсом и встроенной адресной книгой. Она разрабатывается HungryHobo и может быть установлена как <a href="readme.html#plugins">плагин</a>.</li> +получения аккаунта, посетите <a href="http://hq.postman.i2p/" target="_blank">hq.postman.i2p</a>. Так же, доступна <a href="http://i2pbote.i2p/" target="_blank">I2P-Bote</a> - новая безсерверная почтовая система со сквозным шифрованием с веб-интерфейсом и встроенной адресной книгой. Она разрабатывается HungryHobo и может быть установлена как <a href="#plugins">плагин</a>.</li> <li class="tidylist"><b>Анонимная передача файлов</b><br><a href="/i2psnark" target="_blank">I2PSnark</a> - интегрированный в I2P <a href="https://secure.wikimedia.org/wikipedia/en/wiki/BitTorrent_%28protocol%29" target="_blank">торрент</a>-клиент, обеспечивающий анонимную и шифрованную передачу файлов. Помимо этого, Sponge разрабатывает битторрент-клиент <a href="http://bob.i2p/Robert.html">Robert</a>, написанный на Python. Так же имеется порт <a href="http://www.emule-project.net/" target="_blank">eMule</a> для I2P, именуемый <a href="http://echelon.i2p/imule">iMule</a> [нуждается в разработчиках!]; анонимная и безопасная реализация <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Gnutella" target="_blank">Gnutella network</a>, доступная через <a href="http://echelon.i2p/i2phex/" target="_blank">I2Phex</a> [поддерживается Complication-ом, ищутся разработчики!], и прочие возможности, включая веб-обменники, для работы с которыми достаточно только браузера.</li> From ae00ec5dd6ad88b6483eef8770c6fa19f6b4e08b Mon Sep 17 00:00:00 2001 From: hiddenz <hiddenz@mail.i2p> Date: Mon, 17 Jan 2011 20:38:27 +0000 Subject: [PATCH 092/463] routerconsole: update russian translation --- apps/routerconsole/locale/messages_ru.po | 809 ++++++++++++++--------- 1 file changed, 509 insertions(+), 300 deletions(-) diff --git a/apps/routerconsole/locale/messages_ru.po b/apps/routerconsole/locale/messages_ru.po index 41f73635c..f9f42f85e 100644 --- a/apps/routerconsole/locale/messages_ru.po +++ b/apps/routerconsole/locale/messages_ru.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-13 19:43+0000\n" -"PO-Revision-Date: 2010-12-24 00:11+0500\n" +"POT-Creation-Date: 2011-01-17 18:53+0000\n" +"PO-Revision-Date: 2011-01-18 01:19+0500\n" "Last-Translator: Hidden Z <hiddenz@mail.i2p>\n" "Language-Team: \n" "Language: \n" @@ -28,7 +28,7 @@ msgstr "" #. {0,number,####} prevents 1234 from being output as 1,234 in the English locale. #. If you want the digit separator in your locale, translate as {0}. #. alternates: msec, msecs -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1092 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1124 #, java-format msgid "1 ms" msgid_plural "{0,number,####} ms" @@ -39,8 +39,7 @@ msgstr[2] "{0,number,####} мс" #. seconds #. Note to translators: quantity will always be greater than one. #. alternates: secs, sec. 'seconds' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1097 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:354 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1129 #, java-format msgid "1 sec" msgid_plural "{0} sec" @@ -51,7 +50,7 @@ msgstr[2] "{0} с." #. minutes #. Note to translators: quantity will always be greater than one. #. alternates: mins, min. 'minutes' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1102 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1134 #, java-format msgid "1 min" msgid_plural "{0} min" @@ -62,7 +61,7 @@ msgstr[2] "{0} мин." #. hours #. Note to translators: quantity will always be greater than one. #. alternates: hrs, hr., hrs. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1107 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1139 #, java-format msgid "1 hour" msgid_plural "{0} hours" @@ -70,14 +69,14 @@ msgstr[0] "{0} час" msgstr[1] "{0} часа" msgstr[2] "{0} часов" -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1109 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1141 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313 msgid "n/a" msgstr "нет данных" #. days #. Note to translators: quantity will always be greater than one. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1113 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1145 #, java-format msgid "1 day" msgid_plural "{0} days" @@ -153,15 +152,12 @@ msgstr "Принимаем туннели" msgid "Rejecting tunnels" msgstr "Не принимаем туннели" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:67 -msgid "Ensure that nothing blocks outbound HTTP, check <a target=\"_top\" href=\"logs.jsp\">logs</a> and if nothing helps, read the <a target=\"_top\" href=\"http://www.i2p2.de/faq.html\">FAQ</a> about reseeding manually." -msgstr "Убедитесь, что исходящие HTTP-запросы ничем не блокируются, загляните в <a href=logs.jsp>логи</a> и если ничто не помогло, прочтите в <a target=\"_top\" href=\"http://www.i2p2.de/faq.html\">FAQ</a> инструкцию по начальной загрузке вручную." - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:100 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:98 +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 msgid "Reseeding" -msgstr "Производится начальная загрузка" +msgstr "Начальная загрузка" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:123 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:121 #, java-format msgid "Reseed fetched only 1 router." msgid_plural "Reseed fetched only {0} routers." @@ -169,10 +165,19 @@ msgstr[0] "При начальной загрузке получены данн msgstr[1] "При начальной загрузке получены данные только о {0} роутерах." msgstr[2] "При начальной загрузке получены данные только о {0} роутерах." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:130 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:128 msgid "Reseed failed." msgstr "Попытка начальной загрузки провалилась." +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:129 +#, java-format +msgid "See {0} for help." +msgstr "Смотрите {0} для помощи." + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:130 +msgid "reseed configuration page" +msgstr "страница настройки начальной загрузки" + #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:231 msgid "Reseeding: fetching seed URL." msgstr "Производится начальная загрузка: загружается URL каталога маршрутизаторов." @@ -182,7 +187,7 @@ msgstr "Производится начальная загрузка: загру msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." msgstr "Производится начальная загрузка: получение информации о маршрутизаторах ({0} удачно, {1} ошибок)." -#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:510 +#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:513 msgid "NetDb entry" msgstr "показать описание в NetDb" @@ -191,39 +196,40 @@ msgstr "показать описание в NetDb" msgid "No transports (hidden or starting up?)" msgstr "Нет транспортных протоколов (в скрытом режиме или запущен недавно?)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:451 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:452 msgid "Unreachable on any transport" msgstr "Недоступен по всем транспортным протоколам" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:500 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:501 msgid "Router Transport Addresses" msgstr "Адреса транспортов маршрутизатора" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:505 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:506 #, java-format msgid "{0} is used for outbound connections only" msgstr "{0} используется только для исходящих соединений" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:520 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123 msgid "Help" msgstr "Справка" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:520 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 msgid "Your transport connection limits are automatically set based on your configured bandwidth." msgstr "Лимиты транспортных соединений назначены автоматически на основе заданной вами пропускной способности." -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:522 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 msgid "To override these limits, add the settings i2np.ntcp.maxConnections=nnn and i2np.udp.maxConnections=nnn on the advanced configuration page." msgstr "Для переопределения этих лимитов добавьте параметры i2np.ntcp.maxConnections=nnn и i2np.udp.maxConnections=nnn на странице расширенных настроек." -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 msgid "Definitions" msgstr "Условные обозначения" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:715 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:735 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890 #: ../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 @@ -233,149 +239,149 @@ msgstr "Условные обозначения" msgid "Peer" msgstr "Пир" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 msgid "The remote peer, identified by router hash" msgstr "Уникальный идентификатор пира (несколько начальных символов из хеша его маршрутизатора)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:716 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1891 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:527 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:736 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 msgid "Dir" msgstr "Направление" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:527 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 msgid "Inbound connection" msgstr "Входящее соединение" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 msgid "Outbound connection" msgstr "Исходящее соединение" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 msgid "They offered to introduce us (help other peers traverse our firewall)" msgstr "Этот пир предлагает себя в качестве нашего посредника (для того, чтобы другие пиры могли соединяться с нами в обход нашего брандмауэра)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 msgid "We offered to introduce them (help other peers traverse their firewall)" msgstr "Мы предлагаем себя в качестве посредника для этого пира (для того, чтобы другие пиры могли соединяться с ним в обход его брандмауэра)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 msgid "How long since a packet has been received / sent" msgstr "Сколько прошло времени после приёма/передачи последнего пакета" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:717 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1892 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895 msgid "Idle" msgstr "Неактивен" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:718 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1897 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1900 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "In/Out" msgstr "Приём/Передача" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 msgid "The smoothed inbound / outbound transfer rate (KBytes per second)" msgstr "Усреднённые скорости приёма / передачи (КБайт/сек) " -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 msgid "How long ago this connection was established" msgstr "Время жизни соединения" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:719 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1902 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905 msgid "Up" msgstr "Подключен" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:720 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1904 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1907 msgid "Skew" msgstr "Сдвиг" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 msgid "The difference between the peer's clock and your own" msgstr "Разница хода часов между пиром и нами" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 msgid "The congestion window, which is how many bytes can be sent without an acknowledgement" msgstr "<i>Congestion Window.</i> Окно насыщения — количество байт, которое мы можем послать до ожидания подтверждения" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 msgid "The number of sent messages awaiting acknowledgement" msgstr "Количество отправленных сообщений ожидающих подтверждения" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 msgid "The maximum number of concurrent messages to send" msgstr "Максимальное количество параллельно отправляемых сообщений" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 msgid "The number of pending sends which exceed congestion window" msgstr "Количество ожидающих посылок превосходящих размер окна насыщения" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 msgid "The slow start threshold" msgstr "<i>Slow Start Threshold.</i> Величина порога медленного старта" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 msgid "The round trip time in milliseconds" msgstr "<i>Round-Trip Time.</i> Время между отправкой запроса и получением ответа (миллисекунды)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1914 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 msgid "Dev" msgstr "Отклонение" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 msgid "The standard deviation of the round trip time in milliseconds" msgstr "Среднеквадратическое отклонение RTT (миллисекунды)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 msgid "The retransmit timeout in milliseconds" msgstr "<i>Retransmit Time-Out.</i> Время ожидания подтверждения перед повторной посылкой пакета (миллисекунды)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 msgid "Current maximum send packet size / estimated maximum receive packet size (bytes)" msgstr "<i>Maximum Transfer Unit.</i> Текущий максимальный размер исходящего пакета / максимальный размер принятого пакета (байт) " -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:721 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1921 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 msgid "TX" msgstr "Передано" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 msgid "The total number of packets sent to the peer" msgstr "Общее количество посланных пиру пакетов" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:722 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1923 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:742 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926 msgid "RX" msgstr "Принято" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 msgid "The total number of packets received from the peer" msgstr "Общее количество принятых от пира пакетов" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1929 msgid "Dup TX" msgstr "Повт. принято" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 msgid "The total number of packets retransmitted to the peer" msgstr "Общее количество повторно посланных пиру пакетов" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1928 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1931 msgid "Dup RX" msgstr "Повт. передано" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 msgid "The total number of duplicate packets received from the peer" msgstr "Общее количество повторно принятых от пира пакетов" @@ -385,149 +391,149 @@ msgstr "Общее количество повторно принятых от msgid "Excessive clock skew: {0}" msgstr "Чрезмерное расхождение времени: {0}" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:710 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:730 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:1883 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:731 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1886 msgid "Limit" msgstr "Ограничение" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:712 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1884 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 msgid "Timeout" msgstr "Таймаут" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:723 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:743 msgid "Out Queue" msgstr "Исходящая очередь" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:724 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:744 msgid "Backlogged?" msgstr "В очереди?" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1946 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:758 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1949 #: ../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:1948 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1951 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 msgid "Outbound" msgstr "Исходящие" #. buf.append("<tr> <td colspan=\"11\"><hr></td></tr>\n"); -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:787 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:807 msgid "peers" msgstr "пиров" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1882 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1885 msgid "UDP connections" msgstr "UDP соединения" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1889 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1892 msgid "Sort by peer hash" msgstr "Сортировать по идентификатору пира" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1891 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 msgid "Direction/Introduction" msgstr "Направление / Посредничество" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1893 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1896 msgid "Sort by idle inbound" msgstr "Сортировать по неактивности приёма" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1898 msgid "Sort by idle outbound" msgstr "Сортировать по неактивности передачи" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1898 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1901 msgid "Sort by inbound rate" msgstr "Сортировать по скорости приёма" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1900 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1903 msgid "Sort by outbound rate" msgstr "Сортировать по скорости передачи" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1903 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1906 msgid "Sort by connection uptime" msgstr "Сортировать по времени жизни соединения" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1908 msgid "Sort by clock skew" msgstr "Сортировать по расхождению часов" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1908 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1911 msgid "Sort by congestion window" msgstr "Сортировать по размеру окна насыщения" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1910 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1913 msgid "Sort by slow start threshold" msgstr "Сортировать по размеру порога медленного старта" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1913 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1916 msgid "Sort by round trip time" msgstr "Сортировать по времени прохождения сигнала" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1915 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918 msgid "Sort by round trip time deviation" msgstr "Сортировать по отклонению времени прохождения сигнала" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1920 msgid "Sort by retransmission timeout" msgstr "Сортировать по таймауту передачи" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1920 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1923 msgid "Sort by outbound maximum transmit unit" msgstr "Сортировать по размеру исходящего MTU" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1922 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1925 msgid "Sort by packets sent" msgstr "Сортировать по количеству посланных пакетов" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927 msgid "Sort by packets received" msgstr "Сортировать по количеству принятых пакетов" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1930 msgid "Sort by packets retransmitted" msgstr "Сортировать по количеству повторно посланных пакетов" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1929 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1932 msgid "Sort by packets received more than once" msgstr "Сортировать по количеству повторно принятых пакетов" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1950 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1953 msgid "We offered to introduce them" msgstr "Мы предлагаем себя в качестве посредника для этого пира" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1952 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1955 msgid "They offered to introduce us" msgstr "Этот пир предлагает себя в качестве нашего посредника" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1956 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1959 msgid "Choked" msgstr "Дросселирован" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1964 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1967 msgid "1 fail" msgstr "1 сбой" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1966 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1969 #, java-format msgid "{0} fails" msgstr "{0} сбоя(-ев)" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1972 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1975 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:162 msgid "Banned" msgstr "Забанен" #. buf.append("<tr><td colspan=\"16\"><hr></td></tr>\n"); -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2103 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2106 msgid "SUMMARY" msgstr "ИТОГО" @@ -1487,6 +1493,7 @@ msgstr "Зимбабве" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:35 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:37 #: ../java/strings/Strings.java:29 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:119 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:233 msgid "I2P Router Console" msgstr "Консоль маршрутизатора I2P" @@ -1505,235 +1512,245 @@ msgstr "Настройки сохранены" msgid "Error saving the configuration (applied but not saved) - please see the error logs" msgstr "Не удалось сохранить настройки (применены, но не сохранены) — загляните в логи ошибок" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:34 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:335 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:347 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:39 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:405 +msgid "Save Interface Configuration" +msgstr "Сохранить настройки интерфейса" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 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:357 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:47 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427 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:363 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:51 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433 msgid "Install Plugin" msgstr "Установить плагин" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:82 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:87 #, java-format msgid "Deleted plugin {0}" msgstr "Удален плагин {0}" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:84 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:89 #, java-format msgid "Error deleting plugin {0}" msgstr "Ошибка при удалении плагина {0}" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:96 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:101 #, java-format msgid "Stopped plugin {0}" msgstr "Остановлен плагин {0}" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:98 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:103 #, 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 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:255 msgid "Start" msgstr "Запустить" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:138 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:143 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:49 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:61 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:33 msgid "Unsupported" msgstr "Не поддерживается" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:184 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:189 msgid "New client added" msgstr "Добавлен новый клиент" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:188 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:193 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 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 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/ConfigClientsHandler.java:212 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:379 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:384 msgid "Client" msgstr "Клиентские" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:266 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:271 msgid "started" msgstr "запущен" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223 msgid "deleted" msgstr "удален" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:235 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:240 msgid "WebApp configuration saved." msgstr "Настройки веб-апплета сохранены." -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:251 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:256 msgid "Plugin configuration saved." msgstr "Настройки плагина сохранены." -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:266 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:58 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:271 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 msgid "WebApp" msgstr "Веб-апплет" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:268 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:273 msgid "Failed to start" msgstr "Не удалось запустить" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:273 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:278 msgid "Failed to find server." msgstr "Не удалось найти сервер." -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:279 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:284 msgid "No plugin URL specified." msgstr "Не указан URL загрузки плагина" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:289 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:294 #, 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:307 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:320 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:325 msgid "Plugin or update download already in progress." msgstr "Загрузка плагина или обновления уже запущена." -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:306 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:311 #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:118 #, java-format msgid "Downloading plugin from {0}" msgstr "Производится загрузка плагина с {0}" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:324 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:329 #, java-format msgid "Checking plugin {0} for updates" msgstr "Проверяется наличие обновления для плагина {0}" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:334 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:339 #, java-format msgid "Started plugin {0}" msgstr "Запущен плагин {0}" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:336 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:341 #, 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 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 +msgid "Interface configuration saved successfully - restart required to take effect." +msgstr "Настройки интерфейса успешно сохранены, требуется перезапуск маршрутизатора для вступления в силу." + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:85 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258 msgid "Edit" msgstr "Редактировать" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:30 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:94 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:331 msgid "Add Client" msgstr "Добавить клиент" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:38 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 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 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 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 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 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 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:197 msgid "Description" msgstr "Описание" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:82 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 msgid "Plugin" msgstr "Плагин" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:95 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:161 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185 msgid "Version" msgstr "Версия" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:97 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:163 msgid "Signed by" msgstr "Подписано" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:114 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:180 msgid "Date" msgstr "Дата" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:120 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:186 msgid "Author" msgstr "Автор" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:136 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:202 msgid "License" msgstr "Лицензия" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:141 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:207 msgid "Website" msgstr "Веб-сайт" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:146 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:212 msgid "Update link" msgstr "Адрес обновления" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:194 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:260 msgid "Stop" msgstr "Остановить" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:196 -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:81 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:262 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:78 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:313 msgid "Check for updates" msgstr "Проверить обновления" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:197 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:263 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:242 msgid "Update" msgstr "Обновление" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:202 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:268 #, java-format msgid "Are you sure you want to delete {0}?" msgstr "Вы действительно хотите удалить {0}?" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:204 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:270 msgid "Delete" msgstr "Удалить" @@ -1886,11 +1903,13 @@ 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/ConfigReseedHandler.java:29 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:34 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:360 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:516 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:307 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:352 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:377 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:344 msgid "Save changes" @@ -1978,19 +1997,19 @@ msgstr "Обновление доли транзитного трафика" 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 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:41 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:49 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:59 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:62 msgid "unknown" msgstr "неизвестен" -#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:169 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:172 msgid "bits per second" msgstr "бит/секунду" -#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:170 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:173 #, java-format msgid "or {0} bytes per month maximum" msgstr "или {0} байт/месяц максимум" @@ -2041,6 +2060,24 @@ msgstr "Некорректное значение скорости" msgid "Bad capacity value" msgstr "Некорректное значение ёмкости" +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:17 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 +msgid "Save changes and reseed now" +msgstr "Сохранить настройки и выполнить начальную загрузку" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:21 +msgid "Reseeding is already in progress" +msgstr "Загрузка начального списка узлов (reseeding) уже в процессе" + +#. skip the nonce checking in ReseedHandler +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:24 +msgid "Starting reseed process" +msgstr "Запускается процесс загрузки начального списка узлов (reseed)" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:66 +msgid "Configuration saved successfully." +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 @@ -2366,52 +2403,52 @@ msgstr "中文" msgid "Swedish" msgstr "Svenska" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:88 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:85 msgid "Update available, attempting to download now" msgstr "Доступно обновление, пытаемся загрузить" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:90 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:87 msgid "Update available, click button on left to download" msgstr "Доступно обновление, нажмите кнопку слева для загрузки" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:96 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:93 msgid "No update available" msgstr "Нет доступных обновлений" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:104 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:101 msgid "Updating news URL to" msgstr "Новый URL новостей" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:112 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:109 msgid "Updating proxy host to" msgstr "Новый адрес I2P-прокси" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:120 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:117 msgid "Updating proxy port to" msgstr "Новый порт I2P-прокси" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:133 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:130 msgid "Updating refresh frequency to" msgstr "Новый интервал проверки обновлений" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:140 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:137 msgid "Updating update policy to" msgstr "Новый режим обновлений" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:149 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:146 msgid "Updating update URLs." msgstr "Новые URL обновлений" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:155 msgid "Updating trusted keys." msgstr "Обновление списка доверенных ключей." -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:166 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:163 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:148 +#: ../java/src/net/i2p/router/web/GraphHelper.java:167 msgid "Never" msgstr "Никогда" @@ -2435,80 +2472,68 @@ msgstr "Скачать, проверить и обновить I2P" 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:87 +#: ../java/src/net/i2p/router/web/GraphHelper.java:93 msgid "Combined bandwidth graph" msgstr "График загрузки канала" #. e.g. "statname for 60m" -#: ../java/src/net/i2p/router/web/GraphHelper.java:101 +#: ../java/src/net/i2p/router/web/GraphHelper.java:107 #, java-format msgid "{0} for {1}" msgstr "{0} за {1}" -#: ../java/src/net/i2p/router/web/GraphHelper.java:138 +#: ../java/src/net/i2p/router/web/GraphHelper.java:146 msgid "Configure Graph Display" msgstr "Настройка показа графиков" -#: ../java/src/net/i2p/router/web/GraphHelper.java:138 +#: ../java/src/net/i2p/router/web/GraphHelper.java:146 msgid "Select Stats" msgstr "Выбрать параметры" -#: ../java/src/net/i2p/router/web/GraphHelper.java:142 +#: ../java/src/net/i2p/router/web/GraphHelper.java:150 msgid "Periods" msgstr "Количество интервалов" -#: ../java/src/net/i2p/router/web/GraphHelper.java:143 +#: ../java/src/net/i2p/router/web/GraphHelper.java:151 msgid "Plot averages" msgstr "Строить график средних значений" -#: ../java/src/net/i2p/router/web/GraphHelper.java:144 +#: ../java/src/net/i2p/router/web/GraphHelper.java:152 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:333 msgid "or" msgstr "или" -#: ../java/src/net/i2p/router/web/GraphHelper.java:144 +#: ../java/src/net/i2p/router/web/GraphHelper.java:152 msgid "plot events" msgstr "строить график количества событий" -#: ../java/src/net/i2p/router/web/GraphHelper.java:145 +#: ../java/src/net/i2p/router/web/GraphHelper.java:153 msgid "Image sizes" msgstr "Размеры графиков" -#: ../java/src/net/i2p/router/web/GraphHelper.java:145 +#: ../java/src/net/i2p/router/web/GraphHelper.java:153 msgid "width" msgstr "ширина" -#: ../java/src/net/i2p/router/web/GraphHelper.java:146 +#: ../java/src/net/i2p/router/web/GraphHelper.java:154 msgid "height" msgstr "высота" -#: ../java/src/net/i2p/router/web/GraphHelper.java:146 -#: ../java/src/net/i2p/router/web/GraphHelper.java:147 +#: ../java/src/net/i2p/router/web/GraphHelper.java:154 +#: ../java/src/net/i2p/router/web/GraphHelper.java:155 msgid "pixels" msgstr "пикселей" -#: ../java/src/net/i2p/router/web/GraphHelper.java:148 +#: ../java/src/net/i2p/router/web/GraphHelper.java:156 msgid "Refresh delay" msgstr "Интервал обновления" -#: ../java/src/net/i2p/router/web/GraphHelper.java:148 -msgid "hour" -msgstr "час" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:148 -msgid "minute" -msgstr "минута" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:148 -msgid "minutes" -msgstr "минут(ы)" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:149 +#: ../java/src/net/i2p/router/web/GraphHelper.java:171 msgid "Redraw" msgstr "Перерисовать" -#: ../java/src/net/i2p/router/web/GraphHelper.java:181 +#: ../java/src/net/i2p/router/web/GraphHelper.java:203 msgid "Graph settings saved" msgstr "Настройки графиков сохранены" @@ -2644,7 +2669,7 @@ msgid "Full entry" msgstr "Показать полную запись" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:110 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:115 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 msgid "Hidden" msgstr "Скрытый" @@ -2738,7 +2763,7 @@ msgid "Downloading plugin" msgstr "Загружается плагин" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:146 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:185 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:244 #, java-format msgid "{0}B transferred" msgstr "{0} байт скачано" @@ -2754,7 +2779,7 @@ msgid "Cannot create plugin directory {0}" msgstr "Не удалось создать директорию плагина {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:166 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:226 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:298 #, java-format msgid "from {0}" msgstr "из {0}" @@ -3327,7 +3352,7 @@ msgid "Textual router performance statistics" msgstr "Статистика производительности маршрутизатора в текстовом виде" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:365 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:370 msgid "Local Destinations" msgstr "Локальные туннели" @@ -3460,107 +3485,107 @@ msgstr "Задержка туннелей" msgid "Backlog" msgstr "Очередь" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:101 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:106 msgid "ERR-Client Manager I2CP Error - check logs" msgstr "ОШИБКА - ошибка менеджера I2CP - загляните в логи" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:108 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:113 #, java-format msgid "ERR-Clock Skew of {0}" msgstr "ОШИБКА - Часы сбиты (расхождение {0})" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:117 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:122 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 msgid "OK" msgstr "OK" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:118 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:123 msgid "ERR-Private TCP Address" msgstr "ОШИБКА - Частный TCP Адрес" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:120 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:125 msgid "ERR-SymmetricNAT" msgstr "ОШИБКА - Симмметричный NAT" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:123 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:128 msgid "WARN-Firewalled with Inbound TCP Enabled" msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне при включенном на вход TCP" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:125 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:130 msgid "WARN-Firewalled and Floodfill" msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне и Floodfill" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:127 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:132 msgid "WARN-Firewalled and Fast" msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне и Быстрый" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:128 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:133 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 msgid "Firewalled" msgstr "Заблокирован извне" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:130 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:135 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 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:141 msgid "ERR-No Active Peers, Check Network Connection and Firewall" msgstr "ОШИБКА - Нет активных пиров, проверьте подключение к сети и брандмауэр" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:139 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:144 msgid "ERR-UDP Disabled and Inbound TCP host/port not set" msgstr "ОШИБКА - UDP отключено и не заданы адрес/порт для входящих TCP-соединений" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:141 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:146 msgid "WARN-Firewalled with UDP Disabled" msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне при отключенном UDP" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:143 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:148 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 msgid "Testing" msgstr "Проверка" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:365 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:370 msgid "Add/remove/edit & control your client and server tunnels" msgstr "Управление клиентскими и серверными туннелями" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:377 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:382 msgid "Server" msgstr "Сервер" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:381 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:386 msgid "Show tunnels" msgstr "Перейти к списку туннелей" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:392 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:397 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 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:397 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:398 msgid "Rebuilding" msgstr "Построение заново" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:393 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:398 msgid "ago" msgstr "назад" #. green light -#: ../java/src/net/i2p/router/web/SummaryHelper.java:396 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:401 msgid "Ready" msgstr "Готов к работе" #. yellow light -#: ../java/src/net/i2p/router/web/SummaryHelper.java:400 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 msgid "Building" msgstr "Построение" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:400 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 msgid "Building tunnels" msgstr "Построение туннелей" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:410 msgid "none" msgstr "нет" @@ -3568,7 +3593,7 @@ msgstr "нет" #. 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/src/net/i2p/router/web/SummaryHelper.java:421 #: ../java/strings/Strings.java:36 msgid "shared clients" msgstr "коллективные клиенты" @@ -3727,17 +3752,17 @@ 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:178 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:142 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:237 msgid "Updating" msgstr "Загружается обновление" +#. Process the .sud/.su2 file #: ../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:189 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:214 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:261 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:286 msgid "Update downloaded" msgstr "Обновление загружено" @@ -3747,22 +3772,22 @@ 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:209 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:281 msgid "Restarting" msgstr "Производится перезапуск" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:118 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:216 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:288 msgid "Click Restart to install" msgstr "Перезапустите I2P-маршрутизатор для установки" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:120 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:218 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:290 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:220 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:292 #, java-format msgid "Version {0}" msgstr "Версия {0}" @@ -3772,13 +3797,24 @@ msgstr "Версия {0}" msgid "Failed copy to {0}" msgstr "Не удалось скопировать в {0}" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:209 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:184 +#, java-format +msgid "Updating from {0}" +msgstr "Обновление из {0}" + +#: ../java/src/net/i2p/router/web/UpdateHandler.java:253 +#, java-format +msgid "No new version found at {0}" +msgstr "Новая версия не обнаружена на {0}" + +#: ../java/src/net/i2p/router/web/UpdateHandler.java:281 msgid "Update verified" msgstr "Подлинность обновления проверена" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:234 -msgid "Transfer failed" -msgstr "Не удалось загрузить" +#: ../java/src/net/i2p/router/web/UpdateHandler.java:307 +#, java-format +msgid "Transfer failed from {0}" +msgstr "Не удалось произвести передачу файлов от {0}" #. wars for ConfigClientsHelper #: ../java/strings/Strings.java:12 @@ -4063,6 +4099,7 @@ msgstr "настройки сети" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:216 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:230 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:216 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:216 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:217 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:216 @@ -4095,6 +4132,7 @@ msgstr "Интервал автообновления<br> панели (сек.) #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:234 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:221 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:220 @@ -4180,8 +4218,10 @@ msgstr "Чем выше доля транзитного трафика, тем #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:305 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:403 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:321 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:348 #: ../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:342 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:322 @@ -4194,6 +4234,8 @@ msgid "IP and Transport Configuration" msgstr "Настройки IP и транспортных протоколов" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:377 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:306 msgid "The default settings will work for most people." msgstr "Большинству пользователей подойдут настройки по умолчанию." @@ -4647,35 +4689,88 @@ msgid "To change other client options, edit the file" msgstr "Для изменения других клиентских настроек отредактируйте файл" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:325 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:401 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:415 msgid "All changes require restart to take effect." msgstr "Для вступления изменённых настроек в силу потребуется перезапуск маршрутизатора." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:337 +msgid "Advanced Client Interface Configuration" +msgstr "Дополнительные настройки клиентского интерфейса" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:339 +msgid "External I2CP (I2P Client Protocol) Interface Configuration" +msgstr "Настройки внешнего интерфейса I2CP (I2P Client Protocol)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 +msgid "Enabled without SSL" +msgstr "Включен без требования SSL" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351 +msgid "Enabled with SSL required" +msgstr "Включен с требованием SSL" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 +msgid "Disabled - Clients outside this Java process may not connect" +msgstr "Выключен - клиенты снаружи данного Java-процесса могут не соединяться" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:359 +msgid "I2CP Port" +msgstr "Порт I2CP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:363 +msgid "I2CP Interface" +msgstr "I2CP-интерфейс" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:379 +msgid "Authorization" +msgstr "Авторизация " + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:385 +msgid "Require username and password" +msgstr "Требовать имя пользователя и пароль" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:387 +msgid "Username" +msgstr "Имя пользователя" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:391 +msgid "Password" +msgstr "Пароль" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:397 +msgid "Any changes made here must also be configured in the external client." +msgstr "Любые изменения, сделанные здесь, так же должны быть выполнены во внешнем клиенте." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:399 +msgid "Many clients do not support SSL or authorization." +msgstr "Многие клиенты не поддерживают SSL или авторизацию." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:407 msgid "WebApp Configuration" msgstr "Настройки веб-апплетов" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 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:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:411 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:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:421 msgid "Plugin Configuration" msgstr "Настройки плагинов" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:353 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 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:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:429 msgid "Plugin Installation" msgstr "Установка плагина" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:361 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 msgid "To install a plugin, enter the download URL:" msgstr "Для установки нового плагина введите URL:" @@ -4820,6 +4915,71 @@ msgstr "Забаненные пиры" msgid "Banned IPs" msgstr "Забаненные IP-адреса" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:106 +msgid "config reseeding" +msgstr "настройка reseeding" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:240 +msgid "I2P Reseeding Configuration" +msgstr "Настройки начального обнаружения узлов I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:300 +msgid "Reseeding Configuration" +msgstr "Настройки начального обнаружения узлов (reseeding)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:302 +msgid "Reseeding is the bootstrapping process used to find other routers when you first install I2P, or when your router has too few router references remaining." +msgstr "Загрузка начального списка узлов (reseeding) - это процесс начальной загрузки (бутстрап), используемый для нахождения других роутеров, когда вы впервые установили I2P, или когда ваш роутер имеет слишком мало данных о других роутерах." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304 +msgid "If reseeding has failed, you should first check your network connection." +msgstr "Если начальная загрузка не удалась, первым делом вы должны проверить соединение с сетью." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:308 +msgid "Change these only if HTTP is blocked by a restrictive firewall, reseed has failed, and you have access to an HTTP proxy." +msgstr "Меняйте эти параметры только если HTTP заблокирован на брандмауэре, начальная загрузка не удалась, и вы имеете доступ к HTTP-прокси." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +#, java-format +msgid "See {0} for instructions on reseeding manually." +msgstr "Смотрите {0} на предмет инструкций как выполнить начальную загрузку вручную." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +msgid "the FAQ" +msgstr "FAQ" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:312 +msgid "Reseed URL Selection" +msgstr "Выбор URL для начальной загрузки" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 +msgid "Try SSL first then non-SSL" +msgstr "Сперва пробовать SSL, потом не-SSL" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:324 +msgid "Use SSL only" +msgstr "Использовать только SSL" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:330 +msgid "Use non-SSL only" +msgstr "Использовать только не-SSL" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:332 +msgid "Reseed URLs" +msgstr "Адреса reseed-узлов" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:336 +msgid "Enable HTTP proxy (not used for SSL)" +msgstr "Использовать HTTP-прокси (не используется для SSL)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:340 +msgid "HTTP Proxy Host" +msgstr "Хост HTTP-прокси" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:344 +msgid "HTTP Proxy Port" +msgstr "Порт HTTP-прокси" + #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:106 msgid "config service" msgstr "настройки службы" @@ -5105,6 +5265,58 @@ msgstr "Функция автообновления I2P недоступна: у msgid "Save" msgstr "Сохранить" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:115 +msgid "Internal Error" +msgstr "Внутренняя ошибка" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:117 +msgid "Router Console" +msgstr "Консоль маршрутизатора I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:121 +msgid "Configuration" +msgstr "Настройки" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129 +msgid "Sorry! There has been an internal error." +msgstr "К сожалению, была обнаружена внутренняя ошибка." + +#. note to translators - both parameters are URLs +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:133 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:232 +#, java-format +msgid "Please report bugs on {0} or {1}." +msgstr "Пожалуйста сообщайте об ошибках в багтрекер по адресу {0} или {1}." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 +msgid "You may use the username \"guest\" and password \"guest\" if you do not wish to register." +msgstr "Вы можете использовать имя пользователя \"guest\" и пароль \"guest\" если не хотите регистрироваться." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 +msgid "Please include this information in bug reports" +msgstr "Пожалуйста, добавляйте эту информацию в Ваши сообщения об ошибках" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:141 +msgid "Error Details" +msgstr "Подробности ошибки" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:143 +#, java-format +msgid "Error {0}" +msgstr "Ошибка {0}" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:163 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:228 +msgid "I2P Version and Running Environment" +msgstr "Версия I2P и информация о среде выполнения" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 +msgid "Note that system information, log timestamps, and log messages may provide clues to your location; please review everything you include in a bug report." +msgstr "Имейте в виду, что информация о системе, временные метки в логах, и сами логи могут помочь выявить ваше местоположение; пожалуйста проверьте всё, что вы включаете в сообщение об ошибке." + #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:117 msgid "Page Not Found" msgstr "Страница не найдена" @@ -5149,28 +5361,6 @@ msgstr "логи" msgid "I2P Router Logs" msgstr "Логи маршрутизатора I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:228 -msgid "I2P Version & Running Environment" -msgstr "Версия I2P & Информация о среде выполнения" - -#. note to translators - both parameters are URLs -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:232 -#, java-format -msgid "Please report bugs on {0} or {1}." -msgstr "Пожалуйста сообщайте об ошибках в багтрекер по адресу {0} или {1}." - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 -msgid "You may use the username \"guest\" and password \"guest\" if you do not wish to register." -msgstr "Вы можете использовать имя пользователя \"guest\" и пароль \"guest\" если не хотите регистрироваться." - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 -msgid "Please include this information in bug reports" -msgstr "Пожалуйста, добавляйте эту информацию в Ваши сообщения об ошибках" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 -msgid "Note that system information, log timestamps, and log messages may provide clues to your location; please review everything you include in a bug report." -msgstr "Имейте в виду, что информация о системе, временные метки в логах, и сами логи могут помочь выявить ваше местоположение; пожалуйста проверьте всё, что вы включаете в сообщение об ошибке." - #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:281 msgid "Critical Logs" msgstr "Логи критических ошибок" @@ -5244,6 +5434,25 @@ msgstr "обзор туннелей" msgid "I2P Tunnel Summary" msgstr "Обзор туннелей I2P" +#~ msgid "" +#~ "Ensure that nothing blocks outbound HTTP, check <a target=\"_top\" href=" +#~ "\"logs.jsp\">logs</a> and if nothing helps, read the <a target=\"_top\" " +#~ "href=\"http://www.i2p2.de/faq.html\">FAQ</a> about reseeding manually." +#~ msgstr "" +#~ "Убедитесь, что исходящие HTTP-запросы ничем не блокируются, загляните в " +#~ "<a href=logs.jsp>логи</a> и если ничто не помогло, прочтите в <a target=" +#~ "\"_top\" href=\"http://www.i2p2.de/faq.html\">FAQ</a> инструкцию по " +#~ "начальной загрузке вручную." + +#~ msgid "hour" +#~ msgstr "час" + +#~ msgid "minute" +#~ msgstr "минута" + +#~ msgid "minutes" +#~ msgstr "минут(ы)" + #~ msgid "Last reseed failed fully (failed reading seed URL)." #~ msgstr "" #~ "Предыдущая попытка начальной загрузки полностью провалилась (не удалось " From 7a7889b59a19fd081d8cc960bb6572bae384fd5f Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Wed, 19 Jan 2011 14:40:29 +0000 Subject: [PATCH 093/463] clean up OCMOSJ init --- .../src/net/i2p/router/ClientMessagePool.java | 7 +++- .../OutboundClientMessageOneShotJob.java | 41 +++++++++---------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/router/java/src/net/i2p/router/ClientMessagePool.java b/router/java/src/net/i2p/router/ClientMessagePool.java index f4dfd0e44..750c76915 100644 --- a/router/java/src/net/i2p/router/ClientMessagePool.java +++ b/router/java/src/net/i2p/router/ClientMessagePool.java @@ -23,12 +23,13 @@ import net.i2p.util.Log; * */ public class ClientMessagePool { - private Log _log; - private RouterContext _context; + private final Log _log; + private final RouterContext _context; public ClientMessagePool(RouterContext context) { _context = context; _log = _context.logManager().getLog(ClientMessagePool.class); + OutboundClientMessageOneShotJob.init(_context); } /** @@ -65,6 +66,7 @@ public class ClientMessagePool { } } +/****** private boolean isGuaranteed(ClientMessage msg) { Properties opts = null; if (msg.getSenderConfig() != null) @@ -76,4 +78,5 @@ public class ClientMessagePool { return false; } } +******/ } diff --git a/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java b/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java index d1e86db95..d48d9c520 100644 --- a/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java +++ b/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java @@ -103,8 +103,6 @@ public class OutboundClientMessageOneShotJob extends JobImpl { */ private static final int BUNDLE_PROBABILITY_DEFAULT = 100; - private static final Object _initializeLock = new Object(); - private static boolean _initialized = false; private static final int CLEAN_INTERVAL = 5*60*1000; private static final int REPLY_REQUEST_INTERVAL = 60*1000; @@ -115,26 +113,6 @@ public class OutboundClientMessageOneShotJob extends JobImpl { super(ctx); _log = ctx.logManager().getLog(OutboundClientMessageOneShotJob.class); - synchronized (_initializeLock) { - if (!_initialized) { - SimpleScheduler.getInstance().addPeriodicEvent(new OCMOSJCacheCleaner(ctx), CLEAN_INTERVAL, CLEAN_INTERVAL); - ctx.statManager().createFrequencyStat("client.sendMessageFailFrequency", "How often does a client fail to send a message?", "ClientMessages", new long[] { 60*1000l, 60*60*1000l, 24*60*60*1000l }); - ctx.statManager().createRateStat("client.sendMessageSize", "How large are messages sent by the client?", "ClientMessages", new long[] { 60*1000l, 60*60*1000l, 24*60*60*1000l }); - ctx.statManager().createRateStat("client.sendAckTime", "Message round trip time", "ClientMessages", new long[] { 60*1000l, 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - ctx.statManager().createRateStat("client.timeoutCongestionTunnel", "How lagged our tunnels are when a send times out?", "ClientMessages", new long[] { 60*1000l, 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - ctx.statManager().createRateStat("client.timeoutCongestionMessage", "How fast we process messages locally when a send times out?", "ClientMessages", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - ctx.statManager().createRateStat("client.timeoutCongestionInbound", "How much faster we are receiving data than our average bps when a send times out?", "ClientMessages", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - ctx.statManager().createRateStat("client.leaseSetFoundLocally", "How often we tried to look for a leaseSet and found it locally?", "ClientMessages", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - ctx.statManager().createRateStat("client.leaseSetFoundRemoteTime", "How long we tried to look for a remote leaseSet (when we succeeded)?", "ClientMessages", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - ctx.statManager().createRateStat("client.leaseSetFailedRemoteTime", "How long we tried to look for a remote leaseSet (when we failed)?", "ClientMessages", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - ctx.statManager().createRateStat("client.dispatchPrepareTime", "How long until we've queued up the dispatch job (since we started)?", "ClientMessages", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - ctx.statManager().createRateStat("client.dispatchTime", "How long until we've dispatched the message (since we started)?", "ClientMessages", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - ctx.statManager().createRateStat("client.dispatchSendTime", "How long the actual dispatching takes?", "ClientMessages", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - ctx.statManager().createRateStat("client.dispatchNoTunnels", "How long after start do we run out of tunnels to send/receive with?", "ClientMessages", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - ctx.statManager().createRateStat("client.dispatchNoACK", "Repeated message sends to a peer (no ack required)", "ClientMessages", new long[] { 60*1000l, 5*60*1000l, 60*60*1000l }); - _initialized = true; - } - } long timeoutMs = OVERALL_TIMEOUT_MS_DEFAULT; _clientMessage = msg; _clientMessageId = msg.getMessageId(); @@ -174,6 +152,25 @@ public class OutboundClientMessageOneShotJob extends JobImpl { _finished = false; } + /** call once only */ + public static void init(RouterContext ctx) { + SimpleScheduler.getInstance().addPeriodicEvent(new OCMOSJCacheCleaner(ctx), CLEAN_INTERVAL, CLEAN_INTERVAL); + ctx.statManager().createFrequencyStat("client.sendMessageFailFrequency", "How often does a client fail to send a message?", "ClientMessages", new long[] { 60*1000l, 60*60*1000l, 24*60*60*1000l }); + ctx.statManager().createRateStat("client.sendMessageSize", "How large are messages sent by the client?", "ClientMessages", new long[] { 60*1000l, 60*60*1000l, 24*60*60*1000l }); + ctx.statManager().createRateStat("client.sendAckTime", "Message round trip time", "ClientMessages", new long[] { 60*1000l, 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); + ctx.statManager().createRateStat("client.timeoutCongestionTunnel", "How lagged our tunnels are when a send times out?", "ClientMessages", new long[] { 60*1000l, 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); + ctx.statManager().createRateStat("client.timeoutCongestionMessage", "How fast we process messages locally when a send times out?", "ClientMessages", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); + ctx.statManager().createRateStat("client.timeoutCongestionInbound", "How much faster we are receiving data than our average bps when a send times out?", "ClientMessages", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); + ctx.statManager().createRateStat("client.leaseSetFoundLocally", "How often we tried to look for a leaseSet and found it locally?", "ClientMessages", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); + ctx.statManager().createRateStat("client.leaseSetFoundRemoteTime", "How long we tried to look for a remote leaseSet (when we succeeded)?", "ClientMessages", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); + ctx.statManager().createRateStat("client.leaseSetFailedRemoteTime", "How long we tried to look for a remote leaseSet (when we failed)?", "ClientMessages", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); + ctx.statManager().createRateStat("client.dispatchPrepareTime", "How long until we've queued up the dispatch job (since we started)?", "ClientMessages", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); + ctx.statManager().createRateStat("client.dispatchTime", "How long until we've dispatched the message (since we started)?", "ClientMessages", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); + ctx.statManager().createRateStat("client.dispatchSendTime", "How long the actual dispatching takes?", "ClientMessages", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); + ctx.statManager().createRateStat("client.dispatchNoTunnels", "How long after start do we run out of tunnels to send/receive with?", "ClientMessages", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); + ctx.statManager().createRateStat("client.dispatchNoACK", "Repeated message sends to a peer (no ack required)", "ClientMessages", new long[] { 60*1000l, 5*60*1000l, 60*60*1000l }); + } + public String getName() { return "Outbound client message"; } public void runJob() { From 7538766c88d96d7c3101d5b25aa68a61bcabc80a Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Wed, 19 Jan 2011 14:42:14 +0000 Subject: [PATCH 094/463] DBF/DHS cleanups and speedups --- .../src/net/i2p/util/DecayingBloomFilter.java | 81 ++++++++++--------- .../src/net/i2p/util/DecayingHashSet.java | 75 ++++++++--------- 2 files changed, 77 insertions(+), 79 deletions(-) diff --git a/core/java/src/net/i2p/util/DecayingBloomFilter.java b/core/java/src/net/i2p/util/DecayingBloomFilter.java index 4179edd38..ff564b265 100644 --- a/core/java/src/net/i2p/util/DecayingBloomFilter.java +++ b/core/java/src/net/i2p/util/DecayingBloomFilter.java @@ -20,28 +20,34 @@ import org.xlattice.crypto.filters.BloomSHA1; * Further analysis and tweaking for the tunnel IVV may be required. */ public class DecayingBloomFilter { - private I2PAppContext _context; - private Log _log; + protected final I2PAppContext _context; + protected final Log _log; private BloomSHA1 _current; private BloomSHA1 _previous; - private int _durationMs; - private int _entryBytes; + protected final int _durationMs; + protected final int _entryBytes; private byte _extenders[][]; private byte _extended[]; private byte _longToEntry[]; private long _longToEntryMask; protected long _currentDuplicates; - private boolean _keepDecaying; - private DecayEvent _decayEvent; + protected volatile boolean _keepDecaying; + protected SimpleTimer.TimedEvent _decayEvent; /** just for logging */ - private String _name; + protected final String _name; private static final int DEFAULT_M = 23; private static final int DEFAULT_K = 11; private static final boolean ALWAYS_MISS = false; - /** noop for DHS */ - public DecayingBloomFilter() {} + /** only for extension by DHS */ + protected DecayingBloomFilter(int durationMs, int entryBytes, String name, I2PAppContext context) { + _context = context; + _log = context.logManager().getLog(getClass()); + _entryBytes = entryBytes; + _name = name; + _durationMs = durationMs; + } /** * Create a bloom filter that will decay its entries over time. @@ -87,7 +93,6 @@ public class DecayingBloomFilter { _longToEntry = new byte[_entryBytes]; _longToEntryMask = (1l << (_entryBytes * 8l)) -1; } - _currentDuplicates = 0; _decayEvent = new DecayEvent(); _keepDecaying = true; SimpleTimer.getInstance().addEvent(_decayEvent, _durationMs); @@ -105,11 +110,13 @@ public class DecayingBloomFilter { } public long getCurrentDuplicateCount() { return _currentDuplicates; } + public int getInsertedCount() { synchronized (this) { return _current.size() + _previous.size(); } } + public double getFalsePositiveRate() { synchronized (this) { return _current.falsePositives(); @@ -117,12 +124,15 @@ public class DecayingBloomFilter { } /** - * return true if the entry added is a duplicate - * + * @return true if the entry added is a duplicate */ public boolean add(byte entry[]) { return add(entry, 0, entry.length); } + + /** + * @return true if the entry added is a duplicate + */ public boolean add(byte entry[], int off, int len) { if (ALWAYS_MISS) return false; if (entry == null) @@ -131,55 +141,52 @@ public class DecayingBloomFilter { throw new IllegalArgumentException("Bad entry [" + len + ", expected " + _entryBytes + "]"); synchronized (this) { - return locked_add(entry, off, len); + return locked_add(entry, off, len, true); } } /** - * return true if the entry added is a duplicate. the number of low order + * @return true if the entry added is a duplicate. the number of low order * bits used is determined by the entryBytes parameter used on creation of the * filter. * */ public boolean add(long entry) { if (ALWAYS_MISS) return false; + if (_entryBytes <= 7) + entry = ((entry ^ _longToEntryMask) & ((1 << 31)-1)) | (entry ^ _longToEntryMask); + //entry &= _longToEntryMask; + if (entry < 0) { + DataHelper.toLong(_longToEntry, 0, _entryBytes, 0-entry); + _longToEntry[0] |= (1 << 7); + } else { + DataHelper.toLong(_longToEntry, 0, _entryBytes, entry); + } synchronized (this) { - if (_entryBytes <= 7) - entry = ((entry ^ _longToEntryMask) & ((1 << 31)-1)) | (entry ^ _longToEntryMask); - //entry &= _longToEntryMask; - if (entry < 0) { - DataHelper.toLong(_longToEntry, 0, _entryBytes, 0-entry); - _longToEntry[0] |= (1 << 7); - } else { - DataHelper.toLong(_longToEntry, 0, _entryBytes, entry); - } - return locked_add(_longToEntry, 0, _longToEntry.length); + return locked_add(_longToEntry, 0, _longToEntry.length, true); } } /** - * return true if the entry is already known. this does NOT add the + * @return true if the entry is already known. this does NOT add the * entry however. * */ public boolean isKnown(long entry) { if (ALWAYS_MISS) return false; + if (_entryBytes <= 7) + entry = ((entry ^ _longToEntryMask) & ((1 << 31)-1)) | (entry ^ _longToEntryMask); + if (entry < 0) { + DataHelper.toLong(_longToEntry, 0, _entryBytes, 0-entry); + _longToEntry[0] |= (1 << 7); + } else { + DataHelper.toLong(_longToEntry, 0, _entryBytes, entry); + } synchronized (this) { - if (_entryBytes <= 7) - entry = ((entry ^ _longToEntryMask) & ((1 << 31)-1)) | (entry ^ _longToEntryMask); - if (entry < 0) { - DataHelper.toLong(_longToEntry, 0, _entryBytes, 0-entry); - _longToEntry[0] |= (1 << 7); - } else { - DataHelper.toLong(_longToEntry, 0, _entryBytes, entry); - } return locked_add(_longToEntry, 0, _longToEntry.length, false); } } - private boolean locked_add(byte entry[], int offset, int len) { - return locked_add(entry, offset, len, true); - } private boolean locked_add(byte entry[], int offset, int len, boolean addIfNew) { if (_extended != null) { // extend the entry to 32 bytes @@ -195,7 +202,6 @@ public class DecayingBloomFilter { } else { if (addIfNew) { _current.locked_insert(_extended); - _previous.locked_insert(_extended); } return false; } @@ -208,7 +214,6 @@ public class DecayingBloomFilter { } else { if (addIfNew) { _current.locked_insert(entry, offset, len); - _previous.locked_insert(entry, offset, len); } return false; } diff --git a/core/java/src/net/i2p/util/DecayingHashSet.java b/core/java/src/net/i2p/util/DecayingHashSet.java index a72b6b9e2..f090cf727 100644 --- a/core/java/src/net/i2p/util/DecayingHashSet.java +++ b/core/java/src/net/i2p/util/DecayingHashSet.java @@ -17,12 +17,15 @@ import net.i2p.data.DataHelper; * * ./router/java/src/net/i2p/router/tunnel/BuildMessageProcessor.java: * 32 bytes, peak 10 entries in 1m + * (320 peak entries seen on fast router) * * ./router/java/src/net/i2p/router/transport/udp/InboundMessageFragments.java: * 4 bytes, peak 150 entries in 10s + * (1600 peak entries seen on fast router) * * ./router/java/src/net/i2p/router/MessageValidator.java: * 8 bytes, peak 1K entries in 2m + * (36K peak entries seen on fast router) * * ./router/java/src/net/i2p/router/tunnel/BloomFilterIVValidator.java: * 16 bytes, peak 15K entries in 10m @@ -57,19 +60,10 @@ import net.i2p.data.DataHelper; * @author zzz */ public class DecayingHashSet extends DecayingBloomFilter { - private final I2PAppContext _context; - private final Log _log; private ConcurrentHashSet<ArrayWrapper> _current; private ConcurrentHashSet<ArrayWrapper> _previous; - private int _durationMs; - private int _entryBytes; - private volatile boolean _keepDecaying; - private final DecayEvent _decayEvent; - /** just for logging */ - private final String _name; /** synchronize against this lock when switching double buffers */ private final ReentrantReadWriteLock _reorganizeLock = new ReentrantReadWriteLock(true); - /** * Create a double-buffered hash set that will decay its entries over time. @@ -83,16 +77,11 @@ public class DecayingHashSet extends DecayingBloomFilter { /** @param name just for logging / debugging / stats */ public DecayingHashSet(I2PAppContext context, int durationMs, int entryBytes, String name) { + super(durationMs, entryBytes, name, context); if (entryBytes <= 0 || entryBytes > 32) throw new IllegalArgumentException("Bad size"); - _context = context; - _log = context.logManager().getLog(DecayingHashSet.class); - _entryBytes = entryBytes; - _name = name; _current = new ConcurrentHashSet(128); _previous = new ConcurrentHashSet(128); - _durationMs = durationMs; - _currentDuplicates = 0; _decayEvent = new DecayEvent(); _keepDecaying = true; SimpleScheduler.getInstance().addEvent(_decayEvent, _durationMs); @@ -111,6 +100,7 @@ public class DecayingHashSet extends DecayingBloomFilter { public int getInsertedCount() { return _current.size() + _previous.size(); } + /** pointless, only used for logging elsewhere */ @Override public double getFalsePositiveRate() { @@ -121,7 +111,6 @@ public class DecayingHashSet extends DecayingBloomFilter { /** * @return true if the entry added is a duplicate - * */ @Override public boolean add(byte entry[], int off, int len) { @@ -130,9 +119,10 @@ public class DecayingHashSet extends DecayingBloomFilter { if (len != _entryBytes) throw new IllegalArgumentException("Bad entry [" + len + ", expected " + _entryBytes + "]"); + ArrayWrapper w = new ArrayWrapper(entry, off, len); getReadLock(); try { - return locked_add(entry, off, len, true); + return locked_add(w, true); } finally { releaseReadLock(); } } @@ -158,35 +148,30 @@ public class DecayingHashSet extends DecayingBloomFilter { } private boolean add(long entry, boolean addIfNew) { - int len = Math.min(8, _entryBytes); - byte[] b = toLong(len, entry); + ArrayWrapper w = new ArrayWrapper(entry); getReadLock(); try { - return locked_add(b, 0, len, addIfNew); + return locked_add(w, addIfNew); } finally { releaseReadLock(); } } - /** from DataHelper, except negative values ok */ - private static byte[] toLong(int numBytes, long value) { - byte target[] = new byte[numBytes]; - for (int i = 0; i < numBytes; i++) - target[numBytes-i-1] = (byte)(value >>> (i*8)); - return target; - } - - /** so many questions... */ - private boolean locked_add(byte entry[], int offset, int len, boolean addIfNew) { - ArrayWrapper w = new ArrayWrapper(entry, offset, len); - boolean seen = _current.contains(w); - seen = seen || _previous.contains(w); + /** + * @param addIfNew if true, add the element to current if it is not already there; + * if false, only check + * @return if the element is in either the current or previous set + */ + private boolean locked_add(ArrayWrapper w, boolean addIfNew) { + boolean seen; + // only access _current once. This adds to _current even if seen in _previous. + if (addIfNew) + seen = !_current.add(w); + else + seen = _current.contains(w); + if (!seen) + seen = _previous.contains(w); if (seen) { - // why increment if addIfNew == false? - // why not add to current if only in previous? + // why increment if addIfNew == false? Only used for stats... _currentDuplicates++; - } else if (addIfNew) { - _current.add(w); - // why add to previous? - _previous.add(w); } return seen; } @@ -270,14 +255,22 @@ public class DecayingHashSet extends DecayingBloomFilter { * the maximum entropy given the length of the data. */ private static class ArrayWrapper { - private long _longhashcode; + private final long _longhashcode; + public ArrayWrapper(byte[] b, int offset, int len) { int idx = offset; int shift = Math.min(8, 64 / len); + long lhc = 0; for (int i = 0; i < len; i++) { // xor better than + in tests - _longhashcode ^= (((long) b[idx++]) << (i * shift)); + lhc ^= (((long) b[idx++]) << (i * shift)); } + _longhashcode = lhc; + } + + /** faster version for when storing <= 8 bytes */ + public ArrayWrapper(long b) { + _longhashcode = b; } public int hashCode() { From 7b9f98721d909bdad2a24d49ac27d66c40047879 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Wed, 19 Jan 2011 15:05:28 +0000 Subject: [PATCH 095/463] cleanups - final, init, pkg private --- .../src/net/i2p/router/message/CloveSet.java | 5 ++--- .../net/i2p/router/message/GarlicConfig.java | 4 ++-- .../router/message/GarlicMessageHandler.java | 2 +- .../router/message/GarlicMessageParser.java | 6 ++--- .../router/message/GarlicMessageReceiver.java | 10 ++++----- .../message/HandleGarlicMessageJob.java | 6 ++--- .../router/message/PayloadGarlicConfig.java | 1 - .../router/message/SendMessageDirectJob.java | 22 ++++++++----------- 8 files changed, 25 insertions(+), 31 deletions(-) diff --git a/router/java/src/net/i2p/router/message/CloveSet.java b/router/java/src/net/i2p/router/message/CloveSet.java index 8c414edcd..6cab7b738 100644 --- a/router/java/src/net/i2p/router/message/CloveSet.java +++ b/router/java/src/net/i2p/router/message/CloveSet.java @@ -18,15 +18,14 @@ import net.i2p.data.i2np.GarlicClove; * Wrap up the data contained in a CloveMessage after being decrypted * */ -public class CloveSet { - private List _cloves; +class CloveSet { + private final List _cloves; private Certificate _cert; private long _msgId; private long _expiration; public CloveSet() { _cloves = new ArrayList(); - _cert = null; _msgId = -1; _expiration = -1; } diff --git a/router/java/src/net/i2p/router/message/GarlicConfig.java b/router/java/src/net/i2p/router/message/GarlicConfig.java index b23d4ac9a..32c254719 100644 --- a/router/java/src/net/i2p/router/message/GarlicConfig.java +++ b/router/java/src/net/i2p/router/message/GarlicConfig.java @@ -21,13 +21,13 @@ import net.i2p.data.i2np.DeliveryInstructions; * Define the contents of a garlic chunk that contains 1 or more sub garlics * */ -public class GarlicConfig { +class GarlicConfig { private RouterInfo _recipient; private PublicKey _recipientPublicKey; private Certificate _cert; private long _id; private long _expiration; - private List _cloveConfigs; + private final List _cloveConfigs; private DeliveryInstructions _instructions; private boolean _requestAck; private RouterInfo _replyThroughRouter; // router through which any replies will be sent before delivery to us diff --git a/router/java/src/net/i2p/router/message/GarlicMessageHandler.java b/router/java/src/net/i2p/router/message/GarlicMessageHandler.java index 1db82eddb..9f435c3bd 100644 --- a/router/java/src/net/i2p/router/message/GarlicMessageHandler.java +++ b/router/java/src/net/i2p/router/message/GarlicMessageHandler.java @@ -21,7 +21,7 @@ import net.i2p.router.RouterContext; * */ public class GarlicMessageHandler implements HandlerJobBuilder { - private RouterContext _context; + private final RouterContext _context; public GarlicMessageHandler(RouterContext context) { _context = context; diff --git a/router/java/src/net/i2p/router/message/GarlicMessageParser.java b/router/java/src/net/i2p/router/message/GarlicMessageParser.java index a41b39763..b56ed291c 100644 --- a/router/java/src/net/i2p/router/message/GarlicMessageParser.java +++ b/router/java/src/net/i2p/router/message/GarlicMessageParser.java @@ -24,9 +24,9 @@ import net.i2p.util.Log; * Read a GarlicMessage, decrypt it, and return the resulting CloveSet * */ -public class GarlicMessageParser { - private Log _log; - private RouterContext _context; +class GarlicMessageParser { + private final Log _log; + private final RouterContext _context; public GarlicMessageParser(RouterContext context) { _context = context; diff --git a/router/java/src/net/i2p/router/message/GarlicMessageReceiver.java b/router/java/src/net/i2p/router/message/GarlicMessageReceiver.java index 5013ab409..def373cf7 100644 --- a/router/java/src/net/i2p/router/message/GarlicMessageReceiver.java +++ b/router/java/src/net/i2p/router/message/GarlicMessageReceiver.java @@ -26,11 +26,11 @@ import net.i2p.util.Log; * */ public class GarlicMessageReceiver { - private RouterContext _context; - private Log _log; - private CloveReceiver _receiver; - private Hash _clientDestination; - private GarlicMessageParser _parser; + private final RouterContext _context; + private final Log _log; + private final CloveReceiver _receiver; + private final Hash _clientDestination; + private final GarlicMessageParser _parser; private final static int FORWARD_PRIORITY = 50; diff --git a/router/java/src/net/i2p/router/message/HandleGarlicMessageJob.java b/router/java/src/net/i2p/router/message/HandleGarlicMessageJob.java index 32959b3a4..d879cb5fc 100644 --- a/router/java/src/net/i2p/router/message/HandleGarlicMessageJob.java +++ b/router/java/src/net/i2p/router/message/HandleGarlicMessageJob.java @@ -28,9 +28,9 @@ import net.i2p.util.Log; * need to be. soon) * */ -public class HandleGarlicMessageJob extends JobImpl implements GarlicMessageReceiver.CloveReceiver { - private Log _log; - private GarlicMessage _message; +class HandleGarlicMessageJob extends JobImpl implements GarlicMessageReceiver.CloveReceiver { + private final Log _log; + private final GarlicMessage _message; //private RouterIdentity _from; //private Hash _fromHash; //private Map _cloves; // map of clove Id --> Expiration of cloves we've already seen diff --git a/router/java/src/net/i2p/router/message/PayloadGarlicConfig.java b/router/java/src/net/i2p/router/message/PayloadGarlicConfig.java index a5e8368d3..fb92898c8 100644 --- a/router/java/src/net/i2p/router/message/PayloadGarlicConfig.java +++ b/router/java/src/net/i2p/router/message/PayloadGarlicConfig.java @@ -19,7 +19,6 @@ public class PayloadGarlicConfig extends GarlicConfig { public PayloadGarlicConfig() { super(); - _payload = null; } /** diff --git a/router/java/src/net/i2p/router/message/SendMessageDirectJob.java b/router/java/src/net/i2p/router/message/SendMessageDirectJob.java index c67eeaa4a..5ded790ab 100644 --- a/router/java/src/net/i2p/router/message/SendMessageDirectJob.java +++ b/router/java/src/net/i2p/router/message/SendMessageDirectJob.java @@ -22,16 +22,16 @@ import net.i2p.router.RouterContext; import net.i2p.util.Log; public class SendMessageDirectJob extends JobImpl { - private Log _log; - private I2NPMessage _message; - private Hash _targetHash; + private final Log _log; + private final I2NPMessage _message; + private final Hash _targetHash; private RouterInfo _router; - private long _expiration; - private int _priority; - private Job _onSend; - private ReplyJob _onSuccess; - private Job _onFail; - private MessageSelector _selector; + private final long _expiration; + private final int _priority; + private final Job _onSend; + private final ReplyJob _onSuccess; + private final Job _onFail; + private final MessageSelector _selector; private boolean _alreadySearched; private boolean _sent; private long _searchOn; @@ -47,7 +47,6 @@ public class SendMessageDirectJob extends JobImpl { _log = getContext().logManager().getLog(SendMessageDirectJob.class); _message = message; _targetHash = toPeer; - _router = null; if (timeoutMs < 10*1000) { if (_log.shouldLog(Log.WARN)) _log.warn("Very little time given [" + timeoutMs + "], resetting to 5s", new Exception("stingy bastard")); @@ -56,8 +55,6 @@ public class SendMessageDirectJob extends JobImpl { _expiration = timeoutMs + ctx.clock().now(); } _priority = priority; - _searchOn = 0; - _alreadySearched = false; _onSend = onSend; _onSuccess = onSuccess; _onFail = onFail; @@ -66,7 +63,6 @@ public class SendMessageDirectJob extends JobImpl { throw new IllegalArgumentException("Attempt to send a null message"); if (_targetHash == null) throw new IllegalArgumentException("Attempt to send a message to a null peer"); - _sent = false; } public String getName() { return "Send Message Direct"; } From 96de505b5bd4db584fd89a7dd2bc11cf519f4126 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Wed, 19 Jan 2011 15:23:44 +0000 Subject: [PATCH 096/463] OCMOSJ: dont send an already-expired msg --- .../OutboundClientMessageOneShotJob.java | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java b/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java index d48d9c520..fc22cadfa 100644 --- a/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java +++ b/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java @@ -127,10 +127,17 @@ public class OutboundClientMessageOneShotJob extends JobImpl { // otherwise router config, otherwise default _overallExpiration = msg.getExpiration(); if (_overallExpiration > 0) { - _overallExpiration = Math.max(_overallExpiration, _start + OVERALL_TIMEOUT_MS_MIN); - _overallExpiration = Math.min(_overallExpiration, _start + OVERALL_TIMEOUT_MS_DEFAULT); - if (_log.shouldLog(Log.INFO)) - _log.info(getJobId() + ": Message Expiration (ms): " + (_overallExpiration - _start)); + // Unless it's already expired, set a min and max expiration + if (_overallExpiration <= _start) { + _overallExpiration = Math.max(_overallExpiration, _start + OVERALL_TIMEOUT_MS_MIN); + _overallExpiration = Math.min(_overallExpiration, _start + OVERALL_TIMEOUT_MS_DEFAULT); + if (_log.shouldLog(Log.INFO)) + _log.info(getJobId() + ": Message Expiration (ms): " + (_overallExpiration - _start)); + } else { + if (_log.shouldLog(Log.WARN)) + _log.warn(getJobId() + ": Expired before we got to it"); + // runJob() will call dieFatal() + } } else { String param = msg.getSenderConfig().getOptions().getProperty(OVERALL_TIMEOUT_MS_PARAM); if (param == null) @@ -149,7 +156,6 @@ public class OutboundClientMessageOneShotJob extends JobImpl { if (_log.shouldLog(Log.INFO)) _log.info(getJobId() + " Default Expiration (ms): " + timeoutMs); } - _finished = false; } /** call once only */ @@ -174,9 +180,14 @@ public class OutboundClientMessageOneShotJob extends JobImpl { public String getName() { return "Outbound client message"; } public void runJob() { + long now = getContext().clock().now(); + if (now >= _overallExpiration) { + dieFatal(); + return; + } if (_log.shouldLog(Log.DEBUG)) _log.debug(getJobId() + ": Send outbound client message job beginning"); - long timeoutMs = _overallExpiration - getContext().clock().now(); + long timeoutMs = _overallExpiration - now; if (_log.shouldLog(Log.DEBUG)) _log.debug(getJobId() + ": preparing to search for the leaseSet for " + _toString); Hash key = _to.calculateHash(); From 0d52399b15158c456cb9d688e5dc0b897e1e7e0a Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Wed, 19 Jan 2011 15:33:58 +0000 Subject: [PATCH 097/463] tweak --- router/java/src/net/i2p/router/message/CloveSet.java | 2 +- router/java/src/net/i2p/router/message/GarlicConfig.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/router/java/src/net/i2p/router/message/CloveSet.java b/router/java/src/net/i2p/router/message/CloveSet.java index 6cab7b738..5df375256 100644 --- a/router/java/src/net/i2p/router/message/CloveSet.java +++ b/router/java/src/net/i2p/router/message/CloveSet.java @@ -25,7 +25,7 @@ class CloveSet { private long _expiration; public CloveSet() { - _cloves = new ArrayList(); + _cloves = new ArrayList(4); _msgId = -1; _expiration = -1; } diff --git a/router/java/src/net/i2p/router/message/GarlicConfig.java b/router/java/src/net/i2p/router/message/GarlicConfig.java index 32c254719..93af2714c 100644 --- a/router/java/src/net/i2p/router/message/GarlicConfig.java +++ b/router/java/src/net/i2p/router/message/GarlicConfig.java @@ -39,7 +39,7 @@ class GarlicConfig { public GarlicConfig() { _id = -1; _expiration = -1; - _cloveConfigs = new ArrayList(); + _cloveConfigs = new ArrayList(4); _replyBlockMessageId = -1; _replyBlockExpiration = -1; } From 8da1e9022674156b32fc821eb40e446c154c1069 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Wed, 19 Jan 2011 16:40:48 +0000 Subject: [PATCH 098/463] * RouterContext: Clean up clock overrides * PeerManager: Make calculators static, take out of router context --- core/java/src/net/i2p/I2PAppContext.java | 2 +- .../src/net/i2p/router/RouterContext.java | 38 +------------------ .../i2p/router/peermanager/Calculator.java | 18 --------- .../peermanager/CapacityCalculator.java | 16 ++------ .../peermanager/IntegrationCalculator.java | 15 +------- .../i2p/router/peermanager/PeerProfile.java | 20 +++------- .../router/peermanager/SpeedCalculator.java | 10 +---- 7 files changed, 17 insertions(+), 102 deletions(-) delete mode 100644 router/java/src/net/i2p/router/peermanager/Calculator.java diff --git a/core/java/src/net/i2p/I2PAppContext.java b/core/java/src/net/i2p/I2PAppContext.java index e5ec21c75..ad1140a0f 100644 --- a/core/java/src/net/i2p/I2PAppContext.java +++ b/core/java/src/net/i2p/I2PAppContext.java @@ -776,7 +776,7 @@ public class I2PAppContext { * enable simulators to play with clock skew among different instances. * */ - public Clock clock() { // overridden in RouterContext + public Clock clock() { if (!_clockInitialized) initializeClock(); return _clock; diff --git a/router/java/src/net/i2p/router/RouterContext.java b/router/java/src/net/i2p/router/RouterContext.java index 7fa3c4607..086dab8b9 100644 --- a/router/java/src/net/i2p/router/RouterContext.java +++ b/router/java/src/net/i2p/router/RouterContext.java @@ -9,13 +9,9 @@ import net.i2p.data.Hash; import net.i2p.internal.InternalClientManager; import net.i2p.router.client.ClientManagerFacadeImpl; import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade; -import net.i2p.router.peermanager.Calculator; -import net.i2p.router.peermanager.CapacityCalculator; -import net.i2p.router.peermanager.IntegrationCalculator; import net.i2p.router.peermanager.PeerManagerFacadeImpl; import net.i2p.router.peermanager.ProfileManagerImpl; import net.i2p.router.peermanager.ProfileOrganizer; -import net.i2p.router.peermanager.SpeedCalculator; import net.i2p.router.transport.CommSystemFacadeImpl; import net.i2p.router.transport.FIFOBandwidthLimiter; import net.i2p.router.transport.OutboundMessageRegistry; @@ -57,11 +53,6 @@ public class RouterContext extends I2PAppContext { private MessageValidator _messageValidator; private MessageStateMonitor _messageStateMonitor; private RouterThrottle _throttle; - private RouterClock _clockX; // LINT field hides another field, hope rename won't break anything. - private Calculator _integrationCalc; - private Calculator _speedCalc; - private Calculator _capacityCalc; - private static List<RouterContext> _contexts = new ArrayList(1); @@ -147,9 +138,6 @@ public class RouterContext extends I2PAppContext { _messageValidator = new MessageValidator(this); _throttle = new RouterThrottleImpl(this); //_throttle = new RouterDoSThrottle(this); - _integrationCalc = new IntegrationCalculator(this); - _speedCalc = new SpeedCalculator(this); - _capacityCalc = new CapacityCalculator(this); } /** @@ -271,13 +259,6 @@ public class RouterContext extends I2PAppContext { */ public RouterThrottle throttle() { return _throttle; } - /** how do we rank the integration of profiles? */ - public Calculator integrationCalculator() { return _integrationCalc; } - /** how do we rank the speed of profiles? */ - public Calculator speedCalculator() { return _speedCalc; } - /** how do we rank the capacity of profiles? */ - public Calculator capacityCalculator() { return _capacityCalc; } - @Override public String toString() { StringBuilder buf = new StringBuilder(512); @@ -301,8 +282,6 @@ public class RouterContext extends I2PAppContext { buf.append(_statPublisher).append('\n'); buf.append(_shitlist).append('\n'); buf.append(_messageValidator).append('\n'); - buf.append(_integrationCalc).append('\n'); - buf.append(_speedCalc).append('\n'); return buf.toString(); } @@ -363,24 +342,11 @@ public class RouterContext extends I2PAppContext { return rv; } - /** - * The context's synchronized clock, which is kept context specific only to - * enable simulators to play with clock skew among different instances. - * - * It wouldn't be necessary to override clock(), except for the reason - * that it triggers initializeClock() of which we definitely - * need the local version to run. - */ - @Override - public Clock clock() { - if (!_clockInitialized) initializeClock(); - return _clockX; - } @Override protected void initializeClock() { synchronized (this) { - if (_clockX == null) - _clockX = new RouterClock(this); + if (_clock == null) + _clock = new RouterClock(this); _clockInitialized = true; } } diff --git a/router/java/src/net/i2p/router/peermanager/Calculator.java b/router/java/src/net/i2p/router/peermanager/Calculator.java deleted file mode 100644 index 99fb99fd8..000000000 --- a/router/java/src/net/i2p/router/peermanager/Calculator.java +++ /dev/null @@ -1,18 +0,0 @@ -package net.i2p.router.peermanager; - - -/** - * Provide a means of quantifying a profiles fitness in some particular aspect, as well - * as to coordinate via statics the four known aspects. - * - */ -public class Calculator { - /** - * Evaluate the profile according to the current metric - */ - public double calc(PeerProfile profile) { return 0.0d; } - /** - * Evaluate the profile according to the current metric - */ - public boolean calcBoolean(PeerProfile profile) { return false; } -} diff --git a/router/java/src/net/i2p/router/peermanager/CapacityCalculator.java b/router/java/src/net/i2p/router/peermanager/CapacityCalculator.java index 891ca88c4..9d23ceddf 100644 --- a/router/java/src/net/i2p/router/peermanager/CapacityCalculator.java +++ b/router/java/src/net/i2p/router/peermanager/CapacityCalculator.java @@ -1,21 +1,14 @@ package net.i2p.router.peermanager; -import net.i2p.router.RouterContext; +import net.i2p.I2PAppContext; import net.i2p.stat.Rate; import net.i2p.stat.RateStat; -import net.i2p.util.Log; /** * Estimate how many of our tunnels the peer can join per hour. */ -public class CapacityCalculator extends Calculator { - private Log _log; - private RouterContext _context; - - public CapacityCalculator(RouterContext context) { - _context = context; - _log = context.logManager().getLog(CapacityCalculator.class); - } +class CapacityCalculator { + private static final I2PAppContext _context = I2PAppContext.getGlobalContext(); /** used to adjust each period so that we keep trying to expand the peer's capacity */ static long GROWTH_FACTOR = 5; @@ -23,8 +16,7 @@ public class CapacityCalculator extends Calculator { /** the calculator estimates over a 1 hour period */ private static long ESTIMATE_PERIOD = 60*60*1000; - @Override - public double calc(PeerProfile profile) { + public static double calc(PeerProfile profile) { double capacity; if (tooOld(profile)) { diff --git a/router/java/src/net/i2p/router/peermanager/IntegrationCalculator.java b/router/java/src/net/i2p/router/peermanager/IntegrationCalculator.java index f306b1995..14437e4bf 100644 --- a/router/java/src/net/i2p/router/peermanager/IntegrationCalculator.java +++ b/router/java/src/net/i2p/router/peermanager/IntegrationCalculator.java @@ -1,24 +1,13 @@ package net.i2p.router.peermanager; -import net.i2p.router.RouterContext; -import net.i2p.util.Log; - /** * Determine how well integrated the peer is - how likely they will be useful * to us if we are trying to get further connected. * */ -public class IntegrationCalculator extends Calculator { - private Log _log; - private RouterContext _context; +class IntegrationCalculator { - public IntegrationCalculator(RouterContext context) { - _context = context; - _log = context.logManager().getLog(IntegrationCalculator.class); - } - - @Override - public double calc(PeerProfile profile) { + public static double calc(PeerProfile profile) { long val = 0; if (profile.getIsExpandedDB()) { // give more weight to recent counts diff --git a/router/java/src/net/i2p/router/peermanager/PeerProfile.java b/router/java/src/net/i2p/router/peermanager/PeerProfile.java index a2665004b..6818abb96 100644 --- a/router/java/src/net/i2p/router/peermanager/PeerProfile.java +++ b/router/java/src/net/i2p/router/peermanager/PeerProfile.java @@ -24,10 +24,10 @@ import net.i2p.util.Log; */ public class PeerProfile { - private Log _log; - private RouterContext _context; + private final Log _log; + private final RouterContext _context; // whoozaat? - private Hash _peer; + private final Hash _peer; // general peer stats private long _firstHeardAbout; private long _lastHeardAbout; @@ -65,13 +65,6 @@ public class PeerProfile { public PeerProfile(RouterContext context, Hash peer, boolean expand) { _context = context; _log = context.logManager().getLog(PeerProfile.class); - _expanded = false; - _speedValue = 0; - _capacityValue = 0; - _integrationValue = 0; - _isFailing = false; - _consecutiveShitlists = 0; - _tunnelTestResponseTimeAvg = 0.0d; _peer = peer; // this is always true, and there are several places in the router that will NPE // if it is false, so all need to be fixed before we can have non-expanded profiles @@ -81,7 +74,6 @@ public class PeerProfile { /** what peer is being profiled */ public Hash getPeer() { return _peer; } - public void setPeer(Hash peer) { _peer = peer; } /** * are we keeping an expanded profile on the peer, or just the bare minimum. @@ -474,9 +466,9 @@ public class PeerProfile { _log.debug("Coalesced: speed [" + _speedValue + "] capacity [" + _capacityValue + "] integration [" + _integrationValue + "] failing? [" + _isFailing + "]"); } - private double calculateSpeed() { return _context.speedCalculator().calc(this); } - private double calculateCapacity() { return _context.capacityCalculator().calc(this); } - private double calculateIntegration() { return _context.integrationCalculator().calc(this); } + private double calculateSpeed() { return SpeedCalculator.calc(this); } + private double calculateCapacity() { return CapacityCalculator.calc(this); } + private double calculateIntegration() { return IntegrationCalculator.calc(this); } /** deprecated - unused - always false */ private boolean calculateIsFailing() { return false; } /** deprecated - unused - always false */ diff --git a/router/java/src/net/i2p/router/peermanager/SpeedCalculator.java b/router/java/src/net/i2p/router/peermanager/SpeedCalculator.java index c5ac1c3c5..cf1b7f069 100644 --- a/router/java/src/net/i2p/router/peermanager/SpeedCalculator.java +++ b/router/java/src/net/i2p/router/peermanager/SpeedCalculator.java @@ -1,7 +1,5 @@ package net.i2p.router.peermanager; -import net.i2p.router.RouterContext; - /** * Quantify how fast the peer is - how fast they respond to our requests, how fast * they pass messages on, etc. This should be affected both by their bandwidth/latency, @@ -13,13 +11,9 @@ import net.i2p.router.RouterContext; * see the previous versions in change control to get 400+ lines of old code. * */ -public class SpeedCalculator extends Calculator { +class SpeedCalculator { - public SpeedCalculator(RouterContext context) { - } - - @Override - public double calc(PeerProfile profile) { + public static double calc(PeerProfile profile) { // measures 1 minute throughput of individual tunnels double d = (profile.getPeakTunnel1mThroughputKBps()*1024d) + profile.getSpeedBonus(); if (d >= 0) return d; From 84d86834b9527e2255da2a71aef749bc49f591e5 Mon Sep 17 00:00:00 2001 From: mathiasdm <mathiasdm@mail.i2p> Date: Wed, 19 Jan 2011 16:51:42 +0000 Subject: [PATCH 099/463] Added desktopgui to installation, updater and startup. --- apps/desktopgui/TODO | 24 ++++++++++++++ apps/desktopgui/locale/messages_nl.po | 32 +++++++++---------- .../src/net/i2p/desktopgui/Main.java | 8 +++-- apps/routerconsole/java/build.xml | 6 +++- .../i2p/router/web/ConfigServiceHandler.java | 24 -------------- .../i2p/router/web/RouterConsoleRunner.java | 7 ++-- apps/routerconsole/jsp/configservice.jsp | 9 +----- build.xml | 22 +++++++++---- 8 files changed, 71 insertions(+), 61 deletions(-) diff --git a/apps/desktopgui/TODO b/apps/desktopgui/TODO index 1a62d7722..c05b8dcd8 100644 --- a/apps/desktopgui/TODO +++ b/apps/desktopgui/TODO @@ -15,7 +15,31 @@ HIGH PRIORITY: * One possibility: Adding some kind of 'ApplicationManager' that allows starting applications. Extra remark: ApplicationManager should also allow stopping certain applications from launching. + Suggestion: + * ApplicationManager reads/writes clients.config + * ApplicationManager itself: independent from clients.config? + * Upon reboot, ApplicationManager could add a new application to clients.config _if_ the 'application.manager.version' is not there, or is smaller than the current version. + * ApplicationManager can be the clients.config backend for routerconsole, so routerconsole is not the dependency. + * API: + - addConfig(args, name, ...) + - removeConfig(int) + - removeConfig(ConfigFilter) + ConfigFilter() { + boolean filterArgs(String args); + boolean filterMain(String main); + ... + } + - editConfig(args, name, ..., ConfigFilter) + - editConfig(args, name, ..., int) + - editConfigArgs(args, ConfigFilter) + - editConfigArgs(args, int) + - ... + * For now: added in the routerconsole startup (like the old SysTray. - DONE + Possible migration path: startup ApplicationManager in routerconsole the first time. +- Check bug: restart is happening instead of shutdown! +- Check build order (for example: first desktopgui, only later routerconsole) - Fix tabs versus spaces ;-) +- Add check for Java version 6 in RouterConsoleRunner! UNKNOWN: - API to allow applications to add themselves to the menu? * registerApplication(); -- should return a positive number on success, -1 on failure diff --git a/apps/desktopgui/locale/messages_nl.po b/apps/desktopgui/locale/messages_nl.po index f994059d2..433eb604b 100644 --- a/apps/desktopgui/locale/messages_nl.po +++ b/apps/desktopgui/locale/messages_nl.po @@ -1,31 +1,29 @@ -#: src/net/i2p/desktopgui/TrayManager.java:73 -msgid "Launch I2P Browser" -msgstr "Start I2P Browser" - -#: src/net/i2p/desktopgui/TrayManager.java:99 -msgid "Browser not found" -msgstr "Browser niet gevonden" - -#: src/net/i2p/desktopgui/TrayManager.java:100 -msgid "The default browser for your system was not found." -msgstr "De standaard webbrowser voor je systeem werd niet gevonden." - -#: src/net/i2p/desktopgui/TrayManager.java:111 +#: src/net/i2p/desktopgui/ExternalTrayManager.java:23 msgid "Start I2P" msgstr "I2P starten" -#: src/net/i2p/desktopgui/TrayManager.java:126 +#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 msgid "I2P is starting!" msgstr "I2P is aan het starten!" -#: src/net/i2p/desktopgui/TrayManager.java:126 +#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 msgid "Starting" msgstr "Bezig met starten" -#: src/net/i2p/desktopgui/TrayManager.java:140 +#: src/net/i2p/desktopgui/InternalTrayManager.java:25 +msgid "Launch I2P Browser" +msgstr "Start I2P Browser" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:49 msgid "Restart I2P" msgstr "I2P herstarten" -#: src/net/i2p/desktopgui/TrayManager.java:161 +#: src/net/i2p/desktopgui/InternalTrayManager.java:67 msgid "Stop I2P" msgstr "I2P stoppen" + +#~ msgid "Browser not found" +#~ msgstr "Browser niet gevonden" + +#~ msgid "The default browser for your system was not found." +#~ msgstr "De standaard webbrowser voor je systeem werd niet gevonden." diff --git a/apps/desktopgui/src/net/i2p/desktopgui/Main.java b/apps/desktopgui/src/net/i2p/desktopgui/Main.java index 7bed90e3a..0783936ac 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/Main.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/Main.java @@ -28,7 +28,7 @@ public class Main { * Start the tray icon code (loads tray icon in the tray area). * @throws Exception */ - private void startUp() throws Exception { + public void startUp() throws Exception { trayManager = TrayManager.getInstance(); trayManager.startManager(); @@ -45,11 +45,15 @@ public class Main { }); } } + + public static void main(String[] args) { + beginStartup(args); + } /** * Main method launching the application. */ - public static void main(String[] args) { + public static void beginStartup(String[] args) { System.setProperty("java.awt.headless", "false"); try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); diff --git a/apps/routerconsole/java/build.xml b/apps/routerconsole/java/build.xml index d544e59ac..e1904d3fb 100644 --- a/apps/routerconsole/java/build.xml +++ b/apps/routerconsole/java/build.xml @@ -24,6 +24,7 @@ <pathelement location="../../jetty/jettylib/javax.servlet.jar" /> <pathelement location="../../systray/java/build/obj" /> <pathelement location="../../systray/java/lib/systray4j.jar" /> + <pathelement location="../../desktopgui/build" /> <pathelement location="../../../installer/lib/wrapper/win32/wrapper.jar" /> <!-- we dont care if we're not on win32 --> <pathelement location="../../jrobin/jrobin-1.4.0.jar" /> </classpath> @@ -54,6 +55,7 @@ <pathelement location="../../jetty/jettylib/javax.servlet.jar" /> <pathelement location="../../systray/java/build/systray.jar" /> <pathelement location="../../systray/java/lib/systray4j.jar" /> + <pathelement location="../../desktopgui/dist/desktopgui.jar" /> <pathelement location="../../../installer/lib/wrapper/win32/wrapper.jar" /> <!-- we dont care if we're not on win32 --> <pathelement location="../../jrobin/jrobin-1.4.0.jar" /> </classpath> @@ -161,6 +163,7 @@ <pathelement location="../../jetty/jettylib/ant.jar" /> <pathelement location="../../systray/java/build/obj" /> <pathelement location="../../systray/java/lib/systray4j.jar" /> + <pathelement location="../../desktopgui/dist/desktopgui.jar" /> <pathelement location="../../../installer/lib/wrapper/win32/wrapper.jar" /> <pathelement location="build/routerconsole.jar" /> <pathelement location="build/" /> @@ -191,6 +194,7 @@ <pathelement location="../../jetty/jettylib/org.mortbay.jetty.jar" /> <pathelement location="../../systray/java/build/obj" /> <pathelement location="../../systray/java/lib/systray4j.jar" /> + <pathelement location="../../desktopgui/dist/desktopgui.jar" /> <pathelement location="../../../installer/lib/wrapper/win32/wrapper.jar" /> <pathelement location="build/routerconsole.jar" /> <pathelement location="build" /> @@ -220,7 +224,7 @@ <mkdir dir="./build" /> <mkdir dir="./build/javadoc" /> <javadoc - sourcepath="./src:../../../core/java/src:../../../router/java/src:../../systray/java/src" destdir="./build/javadoc" + sourcepath="./src:../../../core/java/src:../../../router/java/src:../../systray/java/src:../../desktopgui/src" destdir="./build/javadoc" packagenames="*" use="true" splitindex="true" diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigServiceHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigServiceHandler.java index ce4dc8863..7b1d7bc62 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigServiceHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigServiceHandler.java @@ -88,30 +88,6 @@ public class ConfigServiceHandler extends FormHandler { addFormError("Warning: unable to contact the service manager - " + t.getMessage()); } addFormNotice("Threads dumped to wrapper.log"); - } else if (_("Show systray icon").equals(_action)) { - try { - SysTray tray = SysTray.getInstance(); - if (tray != null) { - tray.show(); - addFormNotice(_("System tray icon enabled.")); - } else { - addFormNotice(_("System tray icon feature not supported on this platform. Sorry!")); - } - } catch (Throwable t) { - addFormError(_("Warning: unable to contact the systray manager") + " - " + t.getMessage()); - } - } else if (_("Hide systray icon").equals(_action)) { - try { - SysTray tray = SysTray.getInstance(); - if (tray != null) { - tray.hide(); - addFormNotice(_("System tray icon disabled.")); - } else { - addFormNotice(_("System tray icon feature not supported on this platform. Sorry!")); - } - } catch (Throwable t) { - addFormError(_("Warning: unable to contact the systray manager") + " - " + t.getMessage()); - } } else if (_("View console on startup").equals(_action)) { browseOnStartup(true); addFormNotice(_("Console is to be shown on startup")); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java index d3b6ecc29..8adf1da5c 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -10,7 +10,7 @@ import java.util.Properties; import java.util.StringTokenizer; import net.i2p.I2PAppContext; -import net.i2p.apps.systray.SysTray; +import net.i2p.desktopgui.Main; import net.i2p.data.Base32; import net.i2p.data.DataHelper; import net.i2p.router.RouterContext; @@ -301,7 +301,10 @@ public class RouterConsoleRunner { } try { - SysTray tray = SysTray.getInstance(); + //TODO: move away from routerconsole into a separate application. + //ApplicationManager? + String[] args = new String[0]; + net.i2p.desktopgui.Main.beginStartup(args); } catch (Throwable t) { t.printStackTrace(); } diff --git a/apps/routerconsole/jsp/configservice.jsp b/apps/routerconsole/jsp/configservice.jsp index f87479a92..cfbd4ece1 100644 --- a/apps/routerconsole/jsp/configservice.jsp +++ b/apps/routerconsole/jsp/configservice.jsp @@ -42,14 +42,7 @@ <% } %></div> <% if ( (System.getProperty("os.name") != null) && (System.getProperty("os.name").startsWith("Win")) ) { %> - <h3><%=intl._("Systray integration")%></h3> - <p><%=intl._("On the windows platform, there is a small application to sit in the system tray, allowing you to view the router's status")%> - <%=intl._("(later on, I2P client applications will be able to integrate their own functionality into the system tray as well).")%> - <%=intl._("If you are on windows, you can either enable or disable that icon here.")%></p> - <hr><div class="formaction"> - <input type="submit" name="action" value="<%=intl._("Show systray icon")%>" > - <input type="submit" name="action" value="<%=intl._("Hide systray icon")%>" > -</div><h3><%=intl._("Run on startup")%></h3> + <h3><%=intl._("Run on startup")%></h3> <p><%=intl._("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.")%> <%=intl._("If you prefer the command line, you can also run the ")%> <code>install_i2p_service_winnt.bat</code> (<%=intl._("or")%> <code>uninstall_i2p_service_winnt.bat</code>).</p> diff --git a/build.xml b/build.xml index 98fec26e7..8f4291577 100644 --- a/build.xml +++ b/build.xml @@ -61,7 +61,7 @@ <target name="builddep" depends="builddepSmall, buildBOB, buildSAM, buildSusiMail, buildSusiDNS, buildI2PSnark" /> - <target name="builddepSmall" depends="buildrouter, buildSystray, buildRouterConsole, buildStreaming, buildI2PTunnel, buildAddressbook" /> + <target name="builddepSmall" depends="buildrouter, buildSystray, buildDesktopGui, buildRouterConsole, buildStreaming, buildI2PTunnel, buildAddressbook" /> <!-- start of buildX, one for each sub-build.xml. Do not put ant tasks in the sub-build.xmls anymore, @@ -97,7 +97,11 @@ <ant dir="apps/i2ptunnel/java/" target="build" /> </target> - <target name="buildRouterConsole" depends="buildrouter, buildSystray, buildJetty" > + <target name="buildDesktopGui" depends="buildCore, buildrouter" > + <ant dir="apps/desktopgui" target="jar" /> + </target> + + <target name="buildRouterConsole" depends="buildrouter, buildSystray, buildDesktopGui, buildJetty" > <ant dir="apps/routerconsole/java/" target="jar" /> </target> @@ -165,7 +169,7 @@ <jar destfile="./build/launchi2p.jar"> <manifest> <attribute name="Main-Class" value="net.i2p.router.RouterLaunch" /> - <attribute name="Class-Path" value="lib/i2p.jar lib/router.jar lib/jbigi.jar lib/BOB.jar lib/sam.jar lib/mstreaming.jar lib/streaming.jar lib/routerconsole.jar lib/i2ptunnel.jar lib/org.mortbay.jetty.jar lib/javax.servlet.jar lib/jasper-compiler.jar lib/jasper-runtime.jar lib/commons-logging.jar lib/commons-el.jar lib/wrapper.jar lib/systray.jar lib/systray4j.jar" /> + <attribute name="Class-Path" value="lib/i2p.jar lib/router.jar lib/jbigi.jar lib/BOB.jar lib/sam.jar lib/mstreaming.jar lib/streaming.jar lib/routerconsole.jar lib/i2ptunnel.jar lib/org.mortbay.jetty.jar lib/javax.servlet.jar lib/jasper-compiler.jar lib/jasper-runtime.jar lib/commons-logging.jar lib/commons-el.jar lib/wrapper.jar lib/systray.jar lib/systray4j.jar lib/desktopgui.jar" /> </manifest> </jar> <!-- now the standalone launcher exe --> @@ -192,6 +196,7 @@ <copy file="apps/i2ptunnel/java/build/i2ptunnel.jar" todir="build/" /> <copy file="apps/i2ptunnel/java/build/i2ptunnel.war" todir="build/" /> <copy file="apps/systray/java/build/systray.jar" todir="build/" /> + <copy file="apps/desktopgui/dist/desktopgui.jar" todir="build/" /> <copy file="installer/lib/jbigi/jbigi.jar" todir="build" /> <copy file="apps/addressbook/dist/addressbook.war" todir="build/" /> </target> @@ -201,6 +206,7 @@ <ant dir="apps/i2psnark/java/" target="poupdate" /> <ant dir="apps/i2ptunnel/java/" target="poupdate" /> <ant dir="apps/susidns/src/" target="poupdate" /> + <ant dir="apps/desktopgui" target="poupdate" /> </target> <target name="javadoc"> <ant dir="apps/jetty" target="ensureJettylib" /> @@ -246,6 +252,7 @@ <group title="SusiDNS Application" packages="i2p.susi.dns" /> <group title="SusiMail Application" packages="i2p.susi.webmail:i2p.susi.webmail.*:i2p.susi.debug:i2p.susi.util" /> <group title="Systray Application" packages="net.i2p.apps.systray" /> + <group title="Desktopgui Application" packages="net.i2p.desktopgui.*" /> <sourcepath> <pathelement location="core/java/src" /> <!--<pathelement location="core/java/test" />--> @@ -255,6 +262,7 @@ <pathelement location="apps/streaming/java/src" /> <pathelement location="apps/i2ptunnel/java/src" /> <pathelement location="apps/systray/java/src" /> + <pathelement location="apps/desktopgui/src" /> <pathelement location="apps/routerconsole/java/src" /> <pathelement location="apps/addressbook/java/src" /> <pathelement location="apps/i2psnark/java/src" /> @@ -301,6 +309,7 @@ <ant dir="apps/i2ptunnel/java/" target="distclean" /> <ant dir="apps/sam/java/" target="distclean" /> <ant dir="apps/BOB" target="clean" /> + <ant dir="apps/desktopgui" target="clean" /> <ant dir="apps/routerconsole/java/" target="distclean" /> <ant dir="apps/addressbook/" target="distclean" /> <ant dir="apps/susimail/" target="distclean" /> @@ -432,6 +441,7 @@ <copy file="build/streaming.jar" todir="pkg-temp/lib/" /> <copy file="build/org.mortbay.jetty.jar" todir="pkg-temp/lib/" /> <copy file="build/router.jar" todir="pkg-temp/lib/" /> + <copy file="build/desktopgui.jar" todir="pkg-temp/lib/" /> <copy file="build/routerconsole.jar" todir="pkg-temp/lib/" /> <!-- pulled out of routerconsole.jar in 0.7.12; name without version so we can overwrite if we upgrade --> <copy file="apps/jrobin/jrobin-1.4.0.jar" tofile="pkg-temp/lib/jrobin.jar" /> @@ -602,6 +612,7 @@ <copy file="build/i2psnark.jar" todir="pkg-temp/lib" /> <!-- include systray changes in 0.7.5 --> <copy file="build/systray.jar" todir="pkg-temp/lib/" /> + <copy file="build/desktopgui.jar" todir="pkg-temp/lib/" /> <copy file="build/susimail.war" todir="pkg-temp/webapps/" /> <copy file="build/susidns.war" todir="pkg-temp/webapps/" /> <!-- as of 0.7.12; someday, we can remove these from the updater --> @@ -733,10 +744,6 @@ <ant dir="core/java/" target="fullclovertest" /> <ant dir="router/java/" target="fullclovertest" /> </target> - <target name="desktopgui" depends="builddepSmall"> - <ant dir="apps/desktopgui" target="jar" /> - <copy file="apps/desktopgui/dist/desktopgui.jar" todir="." /> - </target> <target name="syndie" > <ant dir="apps/syndie/java/" target="standalone" /> <copy file="apps/syndie/java/syndie-standalone.zip" todir="." /> @@ -780,6 +787,7 @@ <arg value="build/jbigi.jar"/> <arg value="build/mstreaming.jar"/> <arg value="build/router.jar/"/> + <arg value="build/desktopgui.jar"/> <arg value="build/routerconsole.jar"/> <arg value="build/routerconsole.war"/> <arg value="build/sam.jar"/> From 653abbcc7e2992ee4290c5d9c14e258437c658fb Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Wed, 19 Jan 2011 17:18:39 +0000 Subject: [PATCH 100/463] transport cleanups: final, init, pkg private --- .../transport/CommSystemFacadeImpl.java | 5 ++- .../transport/FIFOBandwidthLimiter.java | 32 ++++++++----------- .../transport/FIFOBandwidthRefiller.java | 6 ++-- .../src/net/i2p/router/transport/GeoIP.java | 2 +- .../net/i2p/router/transport/GetBidsJob.java | 8 ++--- .../router/transport/TransportManager.java | 12 ++++--- .../src/net/i2p/router/transport/UPnP.java | 2 +- .../net/i2p/router/transport/UPnPManager.java | 2 +- 8 files changed, 32 insertions(+), 37 deletions(-) diff --git a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java index 8a90adc37..d7849d532 100644 --- a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java +++ b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java @@ -36,15 +36,14 @@ import net.i2p.util.SimpleTimer; import net.i2p.util.Translate; public class CommSystemFacadeImpl extends CommSystemFacade { - private Log _log; - private RouterContext _context; + private final Log _log; + private final RouterContext _context; private TransportManager _manager; private GeoIP _geoIP; public CommSystemFacadeImpl(RouterContext context) { _context = context; _log = _context.logManager().getLog(CommSystemFacadeImpl.class); - _manager = null; _context.statManager().createRateStat("transport.getBidsJobTime", "How long does it take?", "Transport", new long[] { 10*60*1000l }); startGeoIP(); } diff --git a/router/java/src/net/i2p/router/transport/FIFOBandwidthLimiter.java b/router/java/src/net/i2p/router/transport/FIFOBandwidthLimiter.java index 112d36601..c02454783 100644 --- a/router/java/src/net/i2p/router/transport/FIFOBandwidthLimiter.java +++ b/router/java/src/net/i2p/router/transport/FIFOBandwidthLimiter.java @@ -31,18 +31,18 @@ import net.i2p.util.Log; * */ public class FIFOBandwidthLimiter { - private Log _log; - private I2PAppContext _context; + private final Log _log; + private final I2PAppContext _context; private final List<Request> _pendingInboundRequests; private final List<Request> _pendingOutboundRequests; /** how many bytes we can consume for inbound transmission immediately */ - private AtomicInteger _availableInbound = new AtomicInteger(); + private final AtomicInteger _availableInbound = new AtomicInteger(); /** how many bytes we can consume for outbound transmission immediately */ - private AtomicInteger _availableOutbound = new AtomicInteger(); + private final AtomicInteger _availableOutbound = new AtomicInteger(); /** how many bytes we can queue up for bursting */ - private AtomicInteger _unavailableInboundBurst = new AtomicInteger(); + private final AtomicInteger _unavailableInboundBurst = new AtomicInteger(); /** how many bytes we can queue up for bursting */ - private AtomicInteger _unavailableOutboundBurst = new AtomicInteger(); + private final AtomicInteger _unavailableOutboundBurst = new AtomicInteger(); /** how large _unavailableInbound can get */ private int _maxInboundBurst; /** how large _unavailableInbound can get */ @@ -56,14 +56,14 @@ public class FIFOBandwidthLimiter { /** shortcut of whether our inbound rate is unlimited */ private boolean _inboundUnlimited; /** lifetime counter of bytes received */ - private AtomicLong _totalAllocatedInboundBytes = new AtomicLong(); + private final AtomicLong _totalAllocatedInboundBytes = new AtomicLong(); /** lifetime counter of bytes sent */ - private AtomicLong _totalAllocatedOutboundBytes = new AtomicLong(); + private final AtomicLong _totalAllocatedOutboundBytes = new AtomicLong(); /** lifetime counter of tokens available for use but exceeded our maxInboundBurst size */ - private AtomicLong _totalWastedInboundBytes = new AtomicLong(); + private final AtomicLong _totalWastedInboundBytes = new AtomicLong(); /** lifetime counter of tokens available for use but exceeded our maxOutboundBurst size */ - private AtomicLong _totalWastedOutboundBytes = new AtomicLong(); - private FIFOBandwidthRefiller _refiller; + private final AtomicLong _totalWastedOutboundBytes = new AtomicLong(); + private final FIFOBandwidthRefiller _refiller; private long _lastTotalSent; private long _lastTotalReceived; @@ -73,8 +73,6 @@ public class FIFOBandwidthLimiter { private float _sendBps15s; private float _recvBps15s; - private static int __id = 0; - public /* static */ long now() { // dont use the clock().now(), since that may jump return System.currentTimeMillis(); @@ -98,13 +96,9 @@ public class FIFOBandwidthLimiter { _pendingOutboundRequests = new ArrayList(16); _lastTotalSent = _totalAllocatedOutboundBytes.get(); _lastTotalReceived = _totalAllocatedInboundBytes.get(); - _sendBps = 0; - _recvBps = 0; _lastStatsUpdated = now(); _refiller = new FIFOBandwidthRefiller(_context, this); - I2PThread t = new I2PThread(_refiller); - t.setName("BWRefiller" + (++__id)); - t.setDaemon(true); + I2PThread t = new I2PThread(_refiller, "BWRefiller", true); t.setPriority(I2PThread.NORM_PRIORITY-1); t.start(); } @@ -753,7 +747,7 @@ public class FIFOBandwidthLimiter { private int _allocationsSinceWait; private boolean _aborted; private boolean _waited; - List<Request> satisfiedBuffer; + final List<Request> satisfiedBuffer; private CompleteListener _lsnr; private Object _attachment; diff --git a/router/java/src/net/i2p/router/transport/FIFOBandwidthRefiller.java b/router/java/src/net/i2p/router/transport/FIFOBandwidthRefiller.java index 2065cdc28..bc8dd1852 100644 --- a/router/java/src/net/i2p/router/transport/FIFOBandwidthRefiller.java +++ b/router/java/src/net/i2p/router/transport/FIFOBandwidthRefiller.java @@ -7,9 +7,9 @@ import net.i2p.I2PAppContext; import net.i2p.util.Log; public class FIFOBandwidthRefiller implements Runnable { - private Log _log; - private I2PAppContext _context; - private FIFOBandwidthLimiter _limiter; + private final Log _log; + private final I2PAppContext _context; + private final FIFOBandwidthLimiter _limiter; /** how many KBps do we want to allow? */ private int _inboundKBytesPerSecond; /** how many KBps do we want to allow? */ diff --git a/router/java/src/net/i2p/router/transport/GeoIP.java b/router/java/src/net/i2p/router/transport/GeoIP.java index 85a89b3c6..1406460ee 100644 --- a/router/java/src/net/i2p/router/transport/GeoIP.java +++ b/router/java/src/net/i2p/router/transport/GeoIP.java @@ -35,7 +35,7 @@ import net.i2p.util.Log; * * @author zzz */ -public class GeoIP { +class GeoIP { private Log _log; private RouterContext _context; private final Map<String, String> _codeToName; diff --git a/router/java/src/net/i2p/router/transport/GetBidsJob.java b/router/java/src/net/i2p/router/transport/GetBidsJob.java index 55f8cdb79..e014cc641 100644 --- a/router/java/src/net/i2p/router/transport/GetBidsJob.java +++ b/router/java/src/net/i2p/router/transport/GetBidsJob.java @@ -21,10 +21,10 @@ import net.i2p.util.Log; * pass it on to the transport for processing * */ -public class GetBidsJob extends JobImpl { - private Log _log; - private CommSystemFacadeImpl _facade; - private OutNetMessage _msg; +class GetBidsJob extends JobImpl { + private final Log _log; + private final CommSystemFacadeImpl _facade; + private final OutNetMessage _msg; public GetBidsJob(RouterContext ctx, CommSystemFacadeImpl facade, OutNetMessage msg) { super(ctx); diff --git a/router/java/src/net/i2p/router/transport/TransportManager.java b/router/java/src/net/i2p/router/transport/TransportManager.java index a0a7db519..266561cbc 100644 --- a/router/java/src/net/i2p/router/transport/TransportManager.java +++ b/router/java/src/net/i2p/router/transport/TransportManager.java @@ -37,14 +37,14 @@ import net.i2p.util.Log; import net.i2p.util.Translate; public class TransportManager implements TransportEventListener { - private Log _log; + private final Log _log; /** * 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<String, Transport> _transports; - private RouterContext _context; - private UPnPManager _upnpManager; + private final Map<String, Transport> _transports; + private final RouterContext _context; + private final UPnPManager _upnpManager; /** default true */ public final static String PROP_ENABLE_UDP = "i2np.udp.enable"; @@ -63,8 +63,10 @@ public class TransportManager implements TransportEventListener { _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 ConcurrentHashMap(2); - if (Boolean.valueOf(_context.getProperty(PROP_ENABLE_UPNP, "true")).booleanValue()) + if (_context.getBooleanPropertyDefaultTrue(PROP_ENABLE_UPNP)) _upnpManager = new UPnPManager(context, this); + else + _upnpManager = null; } public void addTransport(Transport transport) { diff --git a/router/java/src/net/i2p/router/transport/UPnP.java b/router/java/src/net/i2p/router/transport/UPnP.java index c2ccf03f1..05529935d 100644 --- a/router/java/src/net/i2p/router/transport/UPnP.java +++ b/router/java/src/net/i2p/router/transport/UPnP.java @@ -52,7 +52,7 @@ import org.freenetproject.ForwardPortStatus; * TODO: Advertise the node like the MDNS plugin does * TODO: Implement EventListener and react on ip-change */ -public class UPnP extends ControlPoint implements DeviceChangeListener, EventListener { +class UPnP extends ControlPoint implements DeviceChangeListener, EventListener { private Log _log; private I2PAppContext _context; diff --git a/router/java/src/net/i2p/router/transport/UPnPManager.java b/router/java/src/net/i2p/router/transport/UPnPManager.java index fbd0d7db2..ee8b60072 100644 --- a/router/java/src/net/i2p/router/transport/UPnPManager.java +++ b/router/java/src/net/i2p/router/transport/UPnPManager.java @@ -24,7 +24,7 @@ import org.freenetproject.ForwardPortStatus; * * @author zzz */ -public class UPnPManager { +class UPnPManager { private Log _log; private RouterContext _context; private UPnP _upnp; From da2f4cb9159d6a2270c9d3f553587d1e4149236c Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Wed, 19 Jan 2011 20:16:18 +0000 Subject: [PATCH 101/463] * Console: Put all socket handlers in same thread pool, set min/max threads and idle timeout --- .../i2p/router/web/RouterConsoleRunner.java | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java index d3b6ecc29..137bc392c 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -24,6 +24,7 @@ import org.mortbay.http.DigestAuthenticator; import org.mortbay.http.HashUserRealm; import org.mortbay.http.NCSARequestLog; import org.mortbay.http.SecurityConstraint; +import org.mortbay.http.SocketListener; import org.mortbay.http.SslListener; import org.mortbay.http.handler.SecurityHandler; import org.mortbay.jetty.Server; @@ -184,11 +185,21 @@ public class RouterConsoleRunner { while (tok.hasMoreTokens()) { String host = tok.nextToken().trim(); try { - if (host.indexOf(":") >= 0) // IPV6 - requires patched Jetty 5 - _server.addListener('[' + host + "]:" + _listenPort); - else - _server.addListener(host + ':' + _listenPort); + //if (host.indexOf(":") >= 0) // IPV6 - requires patched Jetty 5 + // _server.addListener('[' + host + "]:" + _listenPort); + //else + // _server.addListener(host + ':' + _listenPort); + Integer lport = Integer.parseInt(_listenPort); + InetAddrPort iap = new InetAddrPort(host, lport); + SocketListener lsnr = new SocketListener(iap); + lsnr.setMinThreads(1); // default 2 + lsnr.setMaxThreads(24); // default 256 + lsnr.setMaxIdleTimeMs(90*1000); // default 10 sec + lsnr.setName("ConsoleSocket"); // all with same name will use the same thread pool + _server.addListener(lsnr); boundAddresses++; + } catch (NumberFormatException nfe) { + System.err.println("Unable to bind routerconsole to " + host + " port " + _listenPort + ' ' + nfe); } catch (IOException ioe) { // this doesn't seem to work, exceptions don't happen until start() below System.err.println("Unable to bind routerconsole to " + host + " port " + _listenPort + ' ' + ioe); } @@ -220,6 +231,10 @@ public class RouterConsoleRunner { ssll.setPassword(ctx.getProperty(PROP_KEYSTORE_PASSWORD, DEFAULT_KEYSTORE_PASSWORD)); // the X.509 cert password (if not present, verifyKeyStore() returned false) ssll.setKeyPassword(ctx.getProperty(PROP_KEY_PASSWORD, "thisWontWork")); + ssll.setMinThreads(1); // default 2 + ssll.setMaxThreads(24); // default 256 + ssll.setMaxIdleTimeMs(90*1000); // default 10 sec + ssll.setName("ConsoleSocket"); // all with same name will use the same thread pool _server.addListener(ssll); boundAddresses++; } catch (Exception e) { // probably no exceptions at this point From 2a7bb5b55046acb83314a1ea64d24b7ca6801386 Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Wed, 19 Jan 2011 22:49:43 +0000 Subject: [PATCH 102/463] Midnight and light cleanups/tweaks. --- .../themes/console/light/console.css | 146 ++++-------------- .../themes/console/midnight/console.css | 31 +--- 2 files changed, 29 insertions(+), 148 deletions(-) diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 699198f8b..b6d54d182 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -38,7 +38,7 @@ div.logo { -moz-border-radius: 4px; -khtml-border-radius: 4px; border-radius: 4px; - background: #ffe; /*url('images/lightbluetile.png')*/ + background: #ffe; width: 185px; -moz-box-shadow: inset 0px 0px 1px 1px #bbf; } @@ -90,7 +90,6 @@ div.routersummaryouter { } div.routersummary { -/* margin: 0px 20px 20px 0px; */ width: 180px; padding: 8px 8px 10px 8px; text-align: center !important; @@ -101,9 +100,7 @@ div.routersummary { -moz-border-radius: 4px; -khtml-border-radius: 4px; border-radius: 4px; - background: #ffe url('images/magic.png') center bottom;/* - float: left; -*/ + background: #ffe url('images/magic.png') center bottom; -moz-box-shadow: inset 0px 0px 1px 1px #bbf; -khtml-box-shadow: inset 0px 0px 1px 1px #bbf; box-shadow: inset 0px 0px 1px 1px #bbf; @@ -164,16 +161,16 @@ div.routersummary h4 { border-bottom: 0 !important; font-size: 8.5pt; letter-spacing: 0.02em; - margin: -6px !important; + margin: -6px -6px !important; padding: 3px 3px 5px 3px; background: #ddf url(images/magic.png); text-transform: capitalize; text-decoration: none !important; color: #2b2; line-height: 105%; - -moz-box-shadow: 0px 0px 1px 1px #fff; - -khtml-box-shadow: 0px 0px 1px 1px #fff; - box-shadow: 0px 0px 1px 1px #fff; + -moz-box-shadow: inset 0px 0px 1px 10px #dfd; + -khtml-box-shadow: 0px 0px 1px 1px #dfd; + box-shadow: 0px 0px 1px 1px #fdf; } div.routersummary table { @@ -383,33 +380,12 @@ div.news p { padding: 0 15px; } -/* -div.news a:link{ - color: #a30; - text-decoration: none; -} - -div.news a:visited{ - color: #930; -} - -div.news a:hover{ - color: #d20; - text-decoration: underline; -} - -div.news a:active{ - color: #c30; -} -*/ - div.news hr{ color: #225; background: #225; height: 1px; border: 0px dotted #225; margin: 10px 0 5px; -/* -moz-box-shadow: 0px -1px 1px 1px #ffe;*/ opacity: 0.6; } @@ -457,13 +433,6 @@ div.news i { font-style: normal; } -/* -div.news h4 a{ - color: #910 !important; - opacity: 1 !important; -} -*/ - div.news h4 { border-bottom: 0px; padding: 0; @@ -478,30 +447,25 @@ div.confignav { -moz-border-radius: 4px; -khtml-border-radius: 4px; border-radius: 4px; - border: 1px solid #113; + border: 1px solid #115; font-size: 9.5pt !important; font-weight: bold !important; line-height: 160% !important; - -moz-box-shadow: inset 0px 0px 1px 1px #bbf; + -moz-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + -khtml-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + opacity: 1; min-width: 400px; } div.configure { -/* padding: 5px 15px 0px 15px !important; - margin: 0px 0px 15px 0; - background: #ffe; url('images/lightbluetile.png') - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - border: 1px solid #447; - -moz-box-shadow: inset 0px 0px 1px 1px #bbf;*/ min-width: 400px; margin-bottom: 0px; } div.configure h3, div.graphspanel h3 { - border: 1px solid #113; - border-left: 5px solid #113; + border: 1px solid #115; + border-left: 5px solid #115; padding: 5px; margin: 15px 0 15px 0; border-radius: 0 4px 4px 0; @@ -512,14 +476,6 @@ div.configure h3, div.graphspanel h3 { } div.graphspanel { -/* padding: 12px; - margin: 10px 0px 25px 0; - background: #ffe url('images/lightbluetile.png'); - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - border: 1px solid #447; - -moz-box-shadow: inset 0px 0px 1px 1px #bbf;*/ text-align: center !important; margin: 15px 0px -15px; } @@ -622,13 +578,7 @@ tr:nth-child(even) { tr:nth-child(odd) { background: #fff url(images/magic.png); } -/* -tr:last-child { - background: #bbf url('images/tabletilelighter.png') !important; - font-weight: bold; - border: 1px solid #002 !important; -} -*/ + td { padding: 5px 3px; color: #000; @@ -690,7 +640,6 @@ div.main li:first-child { color: #910; padding: 2px 3px; font-weight: bold; -/* background: #ffb url('images/magic.png') center bottom;*/ } ol { @@ -715,7 +664,6 @@ code { text-align: left; font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; color: #390; -/* padding: 2px 3px; */ font-weight: bold; } @@ -771,7 +719,7 @@ p { h1 { text-align: left; - color: #003; + color: #115; padding: 10px 15px; margin: 0 10px 10px 207px; font: normal bold 16pt/120% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; @@ -792,13 +740,13 @@ h1 { h2 { font-size: 13pt; - color: #003; + color: #115; letter-spacing: 0.07em; background: #ffe url('images/header.png') center center repeat-x; - text-shadow: 0px 1px 1px #77f; + text-shadow: 0px 1px 1px #99f; padding: 10px; wordwrap: none; - border: 1px solid #447; + border: 1px solid #115; border-radius: 4px; -moz-border-radius: 4px; -khtml-border-radius: 4px; @@ -822,18 +770,18 @@ h2 img { } h3 { - border: 1px solid #447; - border-left: 5px solid #447; - padding: 5px 5px 5px 10px; + border: 1px solid #115; + border-left: 5px solid #115; + padding: 4px 5px 4px 8px; margin: 12px 0 15px 0; border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; -khtml-border-radius: 0 4px 4px 0; background: #ffe url('images/header.png') center center repeat-x !important; text-transform: uppercase; - text-shadow: 0px 1px 1px #77f; - font-size: 11pt; - color: #003; + text-shadow: 0px 1px 1px #99f; + font-size: 10.5pt; + color: #115; -moz-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); -khtml-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); @@ -864,7 +812,7 @@ button, button:visited{ margin: 0 1px; text-align: center; min-width: 80px; - -moz-box-shadow: inset 0px 2px 8px 0px #fff; + -moz-box-shadow: inset 0px 0px 2px 1px #fff; -khtml-box-shadow: inset 0px 2px 8px 0px #fff; box-shadow: inset 0px 2px 8px 0px #fff; color: #316; @@ -902,18 +850,16 @@ button:active{ width: 260px; text-align: right; float: right; - valign: middle; + vertical-align: middle; opacity: 1 !important; } .langbox img { opacity: 0.8 !important; -/* -moz-box-shadow: 0 0 1px #447;*/ } .langbox img:hover { opacity: 1 !important; -/* -moz-box-shadow: 0 0 1px #f60;*/ } input { @@ -1057,47 +1003,7 @@ form {} -moz-box-shadow: inset 0px 0px 2px 1px #ffe; } -/* -.joblog { - margin: 15px 0; - padding: 10px 20px !important; - border: 1px solid #447; - background-color: #004; - background: #ffe url('images/lightbluetile.png'); - color: #001; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - text-align: justify; - -moz-box-shadow: inset 0px 0px 1px 1px #bbf; - overflow: auto; - } - - div.joblog:li { - word-wrap: break-word !important; -} - - .joblog:ul { - word-wrap: break-word !important; -} - -.joblog table { - margin-top: 10px; -} -*/ - div.joblog { -/* margin: 15px 0; - padding: 10px 20px !important; - border: 1px solid #447; - background-color: #004; - background: #ffe; /*url('images/lightbluetile.png') - color: #001; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - text-align: justify; - -moz-box-shadow: inset 0px 0px 1px 1px #bbf;*/ overflow: auto; border: 0; margin-top: 5px; diff --git a/installer/resources/themes/console/midnight/console.css b/installer/resources/themes/console/midnight/console.css index dac6f3fe0..c3d5e4e97 100644 --- a/installer/resources/themes/console/midnight/console.css +++ b/installer/resources/themes/console/midnight/console.css @@ -169,10 +169,7 @@ div.routersummary { font-size: 9pt; word-wrap: break-word; font: 9pt/125%; - -moz-box-shadow: inset 0px 0px 0px 1px #00000A; -/* -moz-border-radius: 3px; - -khtml-border-radius: 3px; - border-radius: 3px;*/ + -moz-box-shadow: inset 0px 0px 0px 1px #00000A; } div.routersummary input[type=text] { @@ -330,9 +327,6 @@ div.main { text-align: left; color: #eef; min-width: 590px; -/* -moz-border-radius: 0 0 3px 3px; - -khtml-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px;*/ background: #000 url(images/scarface.jpg) right bottom no-repeat !important; } @@ -454,16 +448,7 @@ div.news p { margin-bottom: -10px; margin-top: 10px; } -/* -div.news p:first-child { - padding-top: 15px !important; -} - -div.news p:nth-child(2n) { - padding-top: 15px !important; -} -*/ div.news p:last-child { margin-bottom: 10px; } @@ -580,9 +565,6 @@ h1 { min-width: 600px; line-height: 100%; color: #fff; -/* -moz-border-radius: 3px 3px 0 0; - -khtml-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; */ } h2 { @@ -592,12 +574,8 @@ h2 { border-top: 1px solid #99f; border-left: 1px solid #99f; background: #000008; -/* font-variant: small-caps; */ text-transform: uppercase; letter-spacing: 0.07em; -/* -moz-border-radius: 0 3px 0 0; - -khtml-border-radius: 0 3px 0 0; - border-radius: 0 3px 0 0;*/ } h3 { @@ -610,9 +588,6 @@ h3 { margin-bottom: 10px; font-weight: bold !important; text-transform: uppercase; -/* -moz-border-radius: 0 3px 0 0; - -khtml-border-radius: 0 3px 0 0; - border-radius: 0 3px 0 0;*/ } h3 a { @@ -786,7 +761,7 @@ input[type=text], select { } submit { margin: 3px 5px 3px 5px; - padding 2px 0; + padding: 2px 0; font: 8pt/140% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; } @@ -807,7 +782,7 @@ p { width: 240px; text-align: center; float: right; - valign: middle; + vertical-align: middle; } .langbox img { From 22108f2c58c03eaf27bb64d50d5c83e3000dd86c Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Wed, 19 Jan 2011 22:56:09 +0000 Subject: [PATCH 103/463] Light tweak. --- installer/resources/themes/console/light/console.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index b6d54d182..5245f6c34 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -772,7 +772,7 @@ h2 img { h3 { border: 1px solid #115; border-left: 5px solid #115; - padding: 4px 5px 4px 8px; + padding: 5px 5px 5px 8px; margin: 12px 0 15px 0; border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; @@ -780,7 +780,7 @@ h3 { background: #ffe url('images/header.png') center center repeat-x !important; text-transform: uppercase; text-shadow: 0px 1px 1px #99f; - font-size: 10.5pt; + font-size: 11pt; color: #115; -moz-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); -khtml-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); From 17946fbfaba98c8bb085a2784b4f25b02cc0fbf3 Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Thu, 20 Jan 2011 09:48:05 +0000 Subject: [PATCH 104/463] Light tweak, consistency fix. --- installer/resources/themes/console/light/console.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 5245f6c34..9f634a1bc 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -730,7 +730,7 @@ h1 { -khtml-box-shadow: inset 0px 0px 1px 1px #bbf; box-shadow: inset 0px 0px 1px 1px #bbf; white-space: normal; - background: #ffe url('images/header.png') center center repeat-x; + background: #ffe url('images/magic.png') center center repeat; border: 1px solid #447; border-radius: 4px; -moz-border-radius: 4px; From 471ddaa209dd6b13824fe66cfc7778ca5b8edb16 Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Thu, 20 Jan 2011 09:57:20 +0000 Subject: [PATCH 105/463] Light chinese bite. --- installer/resources/themes/console/light/console_big.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/installer/resources/themes/console/light/console_big.css b/installer/resources/themes/console/light/console_big.css index ebc83a598..4a1cc0c7d 100644 --- a/installer/resources/themes/console/light/console_big.css +++ b/installer/resources/themes/console/light/console_big.css @@ -18,6 +18,7 @@ div.routersummary h3, div.routersummary h4, div.routersummary p, div.routersumma div.routersummary h4 { font-size: 11pt; letter-spacing: 0.1em; + -moz-box-shadow: inset 0px 0px 1px 15px #dfd; } div.routersummary b { font-size: 9pt; @@ -48,7 +49,7 @@ button, button:visited { } b { - color: #505; + color: #152 !important; } div.news { From 96593c7287e96fb60bc52c40cdc72f8671d448b3 Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Thu, 20 Jan 2011 10:08:07 +0000 Subject: [PATCH 106/463] Light spice. --- .../resources/themes/console/light/console.css | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 9f634a1bc..a33ad6688 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -759,6 +759,19 @@ h2 { opacity: 1; } +h2 a, h3 a { + text-transform: capitalize; + letter-spacing: 0.03em; +} + +h2 a:hover, h3 a:hover { + text-shadow: none; +} + +.routersummary h3 a{ + text-transform: uppercase; +} + h2 a:hover { text-shadow: 0px 0px 1px rgba(255, 255, 72, 0.9); border-bottom: 1px #ff6600; From 08de93e7ef821e5b5c6b8aa5114916c7fd8ffedb Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Thu, 20 Jan 2011 10:29:10 +0000 Subject: [PATCH 107/463] Light relief. --- installer/resources/themes/console/light/console.css | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index a33ad6688..6b7d65b6f 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -1004,16 +1004,19 @@ form {} } .statusnotes { - font-style: italic; + font-style: normal; font-size: 8pt; - font-color: #001 !important; + font-color: #225 !important; text-align: center; border: 1px solid #447 !important; border-top: 0 !important; margin: -5px 0 5px 0; padding: 7px; - background: #ffe url('images/magic.png') center bottom; - -moz-box-shadow: inset 0px 0px 2px 1px #ffe; + background: #fff url('images/magic.png') center bottom; + -moz-box-shadow: inset 0px 0px 40px 5px #ccf; + text-shadow: 0 1px #99f; + letter-spacing: 0em !important; + text-transform: capitalize; } div.joblog { From 4c84930245835d28abde00608ac0f7f76ca7bb0b Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 20 Jan 2011 14:35:38 +0000 Subject: [PATCH 108/463] adjust eepsite thread limits --- installer/resources/jetty.xml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/installer/resources/jetty.xml b/installer/resources/jetty.xml index 29900cb6b..f6b135c3d 100644 --- a/installer/resources/jetty.xml +++ b/installer/resources/jetty.xml @@ -12,7 +12,9 @@ <!-- been patched to allow IPv6 addresses as well, --> <!-- enclosed in brackets e.g. [::1] --> <!-- * port: Default 7658 in the addListener section --> -<!-- * threads: Raise MaxThreads in the addListener section --> +<!-- * docroot: Change the ResourceBase in the addContext section --> +<!-- to serve files from a different location. --> +<!-- * threads: Raise MinThreads and/or MaxThreads in the addListener section --> <!-- if you have a high-traffic site and get a lot of warnings. --> <!-- * Uncomment the addWebApplications section to use to enable --> <!-- war files placed in the webapps/ dir. --> @@ -23,7 +25,7 @@ <!-- found in Jetty 5, you may install and run Jetty 6 in a different JVM, --> <!-- or run any other web server such as Apache. If you do run another --> <!-- web server instead, be sure and disable the Jetty 5 server for your --> -<!-- eepsite on http://127.0.0.1/configclients.jsp . --> +<!-- eepsite on http://127.0.0.1:7657/configclients.jsp . --> <!-- --> <!-- Jetty errors and warnings will appear in wrapper.log, check there --> <!-- to diagnose problems. --> @@ -57,8 +59,8 @@ <Set name="port">7658</Set> </New> </Arg> - <Set name="MinThreads">3</Set> - <Set name="MaxThreads">10</Set> + <Set name="MinThreads">1</Set> + <Set name="MaxThreads">16</Set> <Set name="MaxIdleTimeMs">60000</Set> <Set name="LowResourcePersistTimeMs">1000</Set> <Set name="ConfidentialPort">8443</Set> From 90fc3b0e57c91e51b46192e61b99f135f663d679 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 20 Jan 2011 15:14:56 +0000 Subject: [PATCH 109/463] fix XML comment-in-comment thx KillYourTV --- installer/resources/jetty.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/installer/resources/jetty.xml b/installer/resources/jetty.xml index 29900cb6b..c50679f05 100644 --- a/installer/resources/jetty.xml +++ b/installer/resources/jetty.xml @@ -90,9 +90,7 @@ <Set name="Port">8443</Set> <Set name="PoolName">main</Set> <Set name="Keystore">./eepsite/keystore.ks</Set> - <!-- the keystore password --> <Set name="Password">changeit</Set> - <!-- the X.509 certificate password --> <Set name="KeyPassword">myKeyPassword</Set> <Set name="NonPersistentUserAgent">MSIE 5</Set> </New> From 587dd3041abcf8c484d82af24e8d142f72b10c57 Mon Sep 17 00:00:00 2001 From: mathiasdm <mathiasdm@mail.i2p> Date: Thu, 20 Jan 2011 17:10:30 +0000 Subject: [PATCH 110/463] - Added version check needed before starting desktopgui. - Added correct 'stop I2P' functionality in desktopgui. --- .../net/i2p/desktopgui/router/RouterManager.java | 13 ++++++++++++- .../src/net/i2p/router/web/RouterConsoleRunner.java | 8 ++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java index b107d47d9..09c5558a6 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java @@ -2,6 +2,8 @@ package net.i2p.desktopgui.router; import java.io.IOException; +import org.tanukisoftware.wrapper.WrapperManager; + import net.i2p.I2PAppContext; import net.i2p.desktopgui.i18n.DesktopguiTranslator; import net.i2p.desktopgui.util.ConfigurationManager; @@ -74,7 +76,16 @@ public class RouterManager { */ public static void shutDown() { if(inI2P()) { - getRouter().shutdown(0); + Thread t = new Thread(new Runnable() { + + @Override + public void run() { + WrapperManager.signalStopped(Router.EXIT_HARD); + } + + }); + t.start(); + getRouter().shutdown(Router.EXIT_HARD); } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java index 8adf1da5c..8daa63dac 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -19,6 +19,7 @@ import net.i2p.util.I2PAppThread; import net.i2p.util.SecureDirectory; import net.i2p.util.SecureFileOutputStream; import net.i2p.util.ShellCommand; +import net.i2p.util.VersionComparator; import org.mortbay.http.DigestAuthenticator; import org.mortbay.http.HashUserRealm; @@ -303,8 +304,11 @@ public class RouterConsoleRunner { try { //TODO: move away from routerconsole into a separate application. //ApplicationManager? - String[] args = new String[0]; - net.i2p.desktopgui.Main.beginStartup(args); + VersionComparator v = new VersionComparator(); + if(v.compare(System.getProperty("java.runtime.version"), "1.6") >= 0) { + String[] args = new String[0]; + net.i2p.desktopgui.Main.beginStartup(args); + } } catch (Throwable t) { t.printStackTrace(); } From 9338196c30e3b0133c1b952f0b818e3216d5537d Mon Sep 17 00:00:00 2001 From: duck <duck@mail.i2p> Date: Thu, 20 Jan 2011 21:23:00 +0000 Subject: [PATCH 111/463] Update Dutch translations --- apps/i2psnark/locale/messages_nl.po | 315 ++++----- apps/i2ptunnel/locale/messages_nl.po | 426 ++++++------ apps/routerconsole/locale/messages_nl.po | 841 ++++++++++++++--------- 3 files changed, 906 insertions(+), 676 deletions(-) diff --git a/apps/i2psnark/locale/messages_nl.po b/apps/i2psnark/locale/messages_nl.po index 1eebf765e..3314d8071 100644 --- a/apps/i2psnark/locale/messages_nl.po +++ b/apps/i2psnark/locale/messages_nl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-17 15:04+0000\n" +"POT-Creation-Date: 2011-01-20 19:26+0000\n" "PO-Revision-Date: 2010-06-15 09:07+0100\n" "Last-Translator: duck <duck@mail.i2p>\n" "Language-Team: duck <duck@mail.i2p>, monkeybrains <monkeybrains@mail.i2p>\n" @@ -104,7 +104,8 @@ msgstr "Open Tracker lijst gewijzigd - torrent herstart nodig." #: ../java/src/org/klomp/snark/SnarkManager.java:438 #, java-format msgid "{0} theme loaded, return to main i2psnark page to view." -msgstr "{0} thema geladen, ga naar de hoofd i2psnark pagina om deze te bekijken." +msgstr "" +"{0} thema geladen, ga naar de hoofd i2psnark pagina om deze te bekijken." #: ../java/src/org/klomp/snark/SnarkManager.java:445 msgid "Configuration unchanged." @@ -234,176 +235,176 @@ msgstr "Kan niet verbinden met I2P!" msgid "Unable to add {0}" msgstr "Kan {0} niet toevoegen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:185 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:196 msgid "I2PSnark - Anonymous BitTorrent Client" msgstr "I2PSnark - Anonieme BitTorrent Client" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:198 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:209 msgid "Torrents" msgstr "Torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:201 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:208 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:977 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:219 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1003 msgid "I2PSnark" msgstr "I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:216 msgid "Refresh page" msgstr "Ververs pagina" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221 msgid "Forum" msgstr "Forum" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:264 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1483 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:275 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509 msgid "Status" msgstr "Status" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:270 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:272 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:281 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:283 msgid "Hide Peers" msgstr "Verberg Peers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:277 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:279 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:288 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290 msgid "Show Peers" msgstr "Toon Peers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:286 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490 msgid "Torrent" msgstr "Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:301 msgid "Estimated time remaining" msgstr "Schatting resterende tijd" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:304 msgid "ETA" msgstr "ETA" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:308 msgid "Downloaded" msgstr "Gedownload" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:300 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:314 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:325 msgid "RX" msgstr "RX" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:304 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:315 msgid "Uploaded" msgstr "Geupload" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:307 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:324 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:318 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "TX" msgstr "TX" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:312 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:323 msgid "Down Rate" msgstr "Down Snelheid" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:326 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:328 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:337 msgid "Rate" msgstr "Rato" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:333 msgid "Up Rate" msgstr "Up Snelheid" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:340 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:355 msgid "Stop all torrents and the I2P tunnel" msgstr "Stop alle torrents en de I2P tunnel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:357 msgid "Stop All" msgstr "Stop Alle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:351 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:366 msgid "Start all torrents and the I2P tunnel" msgstr "Start alle torrents en de I2P tunnel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 msgid "Start All" msgstr "Start Alle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:387 msgid "No torrents loaded." msgstr "Geen torrents geladen." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:392 msgid "Totals" msgstr "Totalen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:379 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:394 #, 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:382 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397 #, 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:454 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:480 #, java-format msgid "Fetching {0}" msgstr "Downloaden {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:458 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:484 msgid "Invalid URL - must start with http://" msgstr "Ongeldige URL - moet beginnen met http://" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:489 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:515 #, java-format msgid "Starting up torrent {0}" msgstr "Starten met torrent {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:527 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:553 #, java-format msgid "Torrent file deleted: {0}" msgstr "Torrent bestand verwijderd: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:533 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:543 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:559 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569 #, java-format msgid "Data file deleted: {0}" msgstr "Data bestand verwijderd: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:545 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:561 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571 #, 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:554 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580 #, java-format msgid "Data dir deleted: {0}" msgstr "Data directory verwijderd: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:587 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:613 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:602 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628 #, java-format msgid "Torrent created for \"{0}\"" msgstr "Torrent gemaakt voor \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:605 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " @@ -412,121 +413,121 @@ 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:607 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:633 #, 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:610 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:636 #, 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:613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:639 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:616 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:642 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:627 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653 msgid "I2P tunnel closed." msgstr "I2P tunnel gesloten." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:656 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:759 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:764 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:770 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:785 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:796 msgid "Tracker Error" msgstr "Tracker Fout" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:762 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:766 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:794 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:799 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:803 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:788 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:816 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:820 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:825 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:829 #, 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:775 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:806 msgid "Seeding" msgstr "Seeding" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:784 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1559 msgid "Complete" msgstr "Voltooid" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:813 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:818 msgid "OK" msgstr "OK" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:796 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:827 msgid "Stalled" msgstr "Vastgelopen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:805 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834 msgid "No Peers" msgstr "Geen Peers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 msgid "Stopped" msgstr "Gestopt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:863 #, java-format msgid "Details at {0} tracker" msgstr "Details op de {0} tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:864 msgid "Info" msgstr "Info" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:853 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:879 msgid "View files" msgstr "Bekijk bestanden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:855 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:881 msgid "Open file" msgstr "Open bestand" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:865 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1569 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:891 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 msgid "Open" msgstr "Open" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:909 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:935 msgid "Stop the torrent" msgstr "Stop de torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:911 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:937 msgid "Stop" msgstr "Stop" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:921 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:947 msgid "Start the torrent" msgstr "Start de torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:923 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:949 msgid "Start" msgstr "Start" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:933 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "" "Verwijder de torrent van de actieve lijst, het .torrent bestand wordt " @@ -535,7 +536,7 @@ msgstr "" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:938 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:964 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded " @@ -544,18 +545,18 @@ 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:941 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 msgid "Remove" msgstr "Weghalen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:976 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:955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:981 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " @@ -564,151 +565,151 @@ msgstr "" "Weet je zeker dat je de torrent \\''{0}\\'' en alle gedownloade data wilt " "verwijderen?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:984 msgid "Delete" msgstr "Verwijderen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:991 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1017 msgid "Unknown" msgstr "Onbekend" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1027 msgid "Seed" msgstr "Seed" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1019 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1045 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:1021 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1047 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:1035 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061 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:1037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1063 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:1092 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118 msgid "Add Torrent" msgstr "Torrent Toevoegen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1094 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1120 msgid "From URL" msgstr "Van URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1123 msgid "Torrent file must originate from an I2P-based tracker" msgstr "Torrent bestand moet vaan een I2P tracker komen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1102 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1128 msgid "Add torrent" msgstr "Torrent toevoegen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1105 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1131 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "Je kan ook .torrent bestanden kopieren naar: {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1107 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1133 msgid "Removing a .torrent will cause it to stop." msgstr "Verwijderen van een .torrent zorgt dat deze stopt." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1131 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1157 msgid "Create Torrent" msgstr "Creëer Torrent" #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1134 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160 msgid "Data to seed" msgstr "Data om te seeden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1164 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:1140 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166 msgid "Tracker" msgstr "Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1168 msgid "Select a tracker" msgstr "Selecteer een tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181 msgid "or" msgstr "of" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1158 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1184 msgid "Specify custom tracker announce URL" msgstr "Specificeer aangepaste tracker aankondigings URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1161 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1187 msgid "Create torrent" msgstr "Creëer torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1206 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343 msgid "Configuration" msgstr "Configuratie" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1184 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1210 msgid "Data directory" msgstr "Data directory" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1186 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1212 msgid "Edit i2psnark.config and restart to change" msgstr "Bewerk i2psnark.config en herstart de wijziging" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1216 msgid "Auto start" msgstr "Auto start" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220 msgid "If checked, automatically start torrents that are added" msgstr "Indien aangevinkt, start toegevoegde torrents automatisch" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1224 msgid "Theme" msgstr "Thema" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1211 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237 msgid "Startup delay" msgstr "Startup vertraging" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1213 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1239 msgid "minutes" msgstr "minuten" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263 msgid "Total uploader limit" msgstr "Totale uploader limiet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1266 msgid "peers" msgstr "peers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1270 msgid "Up bandwidth limit" msgstr "Up bandbreedte limiet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1247 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1273 msgid "Half available bandwidth recommended." msgstr "Helft van beschikbare bandbreedte aanbevolen." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1249 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1275 msgid "View or change router bandwidth" msgstr "Bekijk of wijzig router bandbreedte" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 msgid "Use open trackers also" msgstr "Gebruik ook open trackers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283 msgid "" "If checked, announce torrents to open trackers as well as the tracker listed " "in the torrent file" @@ -716,123 +717,123 @@ msgstr "" "Indien aangevinkt, kondig torrents ook aan bij de tracker uit het torrent " "bestand" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1261 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287 msgid "Open tracker announce URLs" msgstr "Open tracker aankondigings URLs" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1273 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1299 msgid "Inbound Settings" msgstr "Inkomende Instellingen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1305 msgid "Outbound Settings" msgstr "Uitgaande Instellingen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1286 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312 msgid "I2CP host" msgstr "I2CP host" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317 msgid "I2CP port" msgstr "I2CP poort" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1303 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1329 msgid "I2CP options" msgstr "I2CP opties" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1308 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1334 msgid "Save configuration" msgstr "Configuratie opslaan" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351 #, 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:1326 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1352 #, 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:1480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1506 msgid "Size" msgstr "Grootte" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1487 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1513 msgid "Priority" msgstr "Prioriteit" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1518 msgid "Up to higher level directory" msgstr "Naar bovenliggende directory" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543 msgid "Directory" msgstr "Directory" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1548 msgid "Torrent not found?" msgstr "Torrent niet gevonden?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1556 msgid "File not found in torrent?" msgstr "Bestand niet gevonden in torrent?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1569 msgid "complete" msgstr "voltooid" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1570 msgid "bytes remaining" msgstr "bytes resterend" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1621 msgid "High" msgstr "Hoog" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1600 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1626 msgid "Normal" msgstr "Normaal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1605 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1631 msgid "Skip" msgstr "Overslaan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1640 msgid "Save priorities" msgstr "Prioriteiten opslaan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 #, java-format msgid "Torrent fetched from {0}" msgstr "Torrent gedownload van {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1746 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1772 #, java-format msgid "Torrent already running: {0}" msgstr "Torrent draait al: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1748 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1774 #, 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:1755 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "Kan het torrent bestand niet kopieren naar {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1785 #, java-format msgid "Torrent at {0} was not valid" msgstr "Torrent op {0} was niet geldig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1764 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1790 #, 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 index 90e5be16b..e9aed277f 100644 --- a/apps/i2ptunnel/locale/messages_nl.po +++ b/apps/i2ptunnel/locale/messages_nl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2ptunnel\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-17 15:04+0000\n" +"POT-Creation-Date: 2011-01-20 19:26+0000\n" "PO-Revision-Date: 2010-06-15 14:09+0100\n" "Last-Translator: duck <duck@mail.i2p>\n" "Language-Team: duck <duck@mail.i2p>, monkeybrains <monkeybrains@mail.i2p>\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Dutch\n" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:475 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474 #, java-format msgid "" "To visit the destination in your host database, click <a href=\"{0}\">here</" @@ -28,13 +28,18 @@ msgstr "" "\">hier</a>. Om de conflicterende adreshelper destination te bezoeken, klik " "<a href=\"{1}\">hier</a>." -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:932 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931 msgid "" "Click a link below to look for an address helper by using a \"jump\" service:" msgstr "" "Klik op een onderstaande link om te zoeken naar een adreshelper via een " "\"jump\" service:" +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336 +msgid "internal" +msgstr "intern" + #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:170 msgid "" "Invalid form submission, probably because you used the 'back' or 'reload' " @@ -109,6 +114,16 @@ msgstr "Streamr server" msgid "HTTP bidir" msgstr "HTTP bidir" +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:508 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290 +msgid "Host not set" +msgstr "Host niet opgegeven" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:512 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:272 +msgid "Port not set" +msgstr "Poort niet opgegeven" + #: ../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" @@ -133,14 +148,14 @@ 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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:279 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:367 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:386 msgid "Description" msgstr "Omschrijving" @@ -151,66 +166,45 @@ 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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:162 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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:150 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:192 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:153 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:167 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:213 msgid "required" msgstr "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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:159 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:178 msgid "Reachable by" msgstr "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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:180 msgid "Outproxies" msgstr "Uitgaande proxies" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:187 msgid "Tunnel Destination" msgstr "Tunnel Destinations" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:214 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:199 msgid "name or destination" msgstr "naam of destination" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202 msgid "b32 not recommended" msgstr "b32 niet aanbevolen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208 msgid "Shared Client" msgstr "Gedeelde Client" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:212 msgid "" "(Share tunnels with other clients and irc/httpclients? Change requires " "restart of client proxy)" @@ -218,22 +212,22 @@ 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:231 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:216 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:124 msgid "Auto Start" msgstr "Auto Start" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:128 msgid "(Check the Box for 'YES')" msgstr "(Markeer de Box voor 'JA')" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:237 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:258 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:243 msgid "Advanced networking options" msgstr "Geavanceerde netwerk opties" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224 msgid "" "(NOTE: when this client proxy is configured to share tunnels, then these " "options are for all the shared proxy clients!)" @@ -241,93 +235,93 @@ 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:241 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:260 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245 msgid "Tunnel Options" msgstr "Tunnel Opties" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:262 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:247 msgid "Length" msgstr "Lengte" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:250 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:269 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:254 msgid "0 hop tunnel (low anonymity, low latency)" msgstr "0 hop tunnel (lage anonimiteit, weinig vertraging)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:254 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:273 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:258 msgid "1 hop tunnel (medium anonymity, medium latency)" msgstr "1 hop tunnel (gemiddelde anonimiteit, gemiddelde vertraging)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:258 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:277 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:262 msgid "2 hop tunnel (high anonymity, high latency)" msgstr "2 hop tunnel (hoge anonimiteit, hoge vertraging)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:262 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:281 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:266 msgid "3 hop tunnel (very high anonymity, poor performance)" msgstr "3 hop tunnel (zeer hoge anonimiteit, slechte prestatie)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:271 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:290 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:256 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:275 msgid "hop tunnel (very poor performance)" msgstr "hop tunnel (zeer slechte prestatie)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:261 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:280 msgid "Variance" msgstr "Variantie" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:283 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:268 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:287 msgid "0 hop variance (no randomisation, consistant performance)" msgstr "0 hop variantie (geen randomisatie, consistente prestatie)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:287 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:272 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:291 msgid "" "+ 0-1 hop variance (medium additive randomisation, subtractive performance)" msgstr "" "+ 0-1 hop variantie (gemiddeld toegevoegde randomisatie, minder prestatie)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:291 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295 msgid "" "+ 0-2 hop variance (high additive randomisation, subtractive performance)" msgstr "+ 0-2 hop variantie (hoge toegevoegde randomisatie, minder prestatie)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:295 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:314 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:299 msgid "+/- 0-1 hop variance (standard randomisation, standard performance)" msgstr "+/- 0-1 hop variantie (standaard randomisatie, standaard prestatie)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:299 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:284 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:303 msgid "+/- 0-2 hop variance (not recommended)" msgstr "+/- 0-2 hop variantie (niet aanbevolen)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:311 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:315 msgid "hop variance" msgstr "hop variantie" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:320 msgid "Count" msgstr "Aantal" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:323 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:342 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:327 msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)" msgstr "" "1 inkomende, 1 uitgaande tunnel (laag bandbreedte gebruik, minder " "betrouwbaar)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:327 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:346 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:331 msgid "" "2 inbound, 2 outbound tunnels (standard bandwidth usage, standard " "reliability)" @@ -335,185 +329,189 @@ msgstr "" "2 inkomende, 2 uitgaande tunnels (standaard bandbreedte gebruik, standaard " "betrouwbaarheid)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:331 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:350 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335 msgid "" "3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)" msgstr "" "3 inkomende, 3 uitgaande tunnels (hoge bandbreedte gebruik, hogere " "betrouwbaarheid)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:340 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:344 msgid "tunnels" msgstr "tunnels" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:345 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349 msgid "Backup Count" msgstr "Backup Aantal" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:352 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:371 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:356 msgid "0 backup tunnels (0 redundancy, no added resource usage)" msgstr "0 backup tunnels (0 redundantie, geen additionele bronnen gebruikt)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:356 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:375 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:360 msgid "1 backup tunnel each direction (low redundancy, low resource usage)" msgstr "" "1 backup tunnel in beide richting (lage redundantie, lage aantal bronnen " "gebruikt)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:360 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:379 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364 msgid "" "2 backup tunnels each direction (medium redundancy, medium resource usage)" msgstr "" "2 backup tunnels in beide richting (gemiddelde redundantie, gemiddeld aantal " "bronnen gebruikt)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:364 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:383 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:349 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:368 msgid "3 backup tunnels each direction (high redundancy, high resource usage)" msgstr "" "3 backup tunnels in beide richting (hoge redundantie, hoog aantal bronnen " "gebruikt)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:373 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:392 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:358 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377 msgid "backup tunnels" msgstr "backup tunnels" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:380 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:384 msgid "Profile" msgstr "Profiel" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:387 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:406 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:372 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:391 msgid "interactive connection" msgstr "interactieve connectie" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:391 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:410 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:376 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:395 msgid "bulk connection (downloads/websites/BT)" msgstr "bulk connection (downloads/websites/BT)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:393 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:378 msgid "Delay Connect" msgstr "Vertraagde Connectie" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:382 msgid "for request/response connections" msgstr "voor request/response connecties" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:401 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:414 -msgid "I2CP Options" -msgstr "I2CP Opties" +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399 +msgid "Router I2CP Address" +msgstr "Router I2CP Adres" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:403 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:146 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:416 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401 msgid "Host" msgstr "Host" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:407 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:152 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:420 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:396 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:148 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:244 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:266 msgid "Port" msgstr "Poort" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:413 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:452 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:406 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479 msgid "Reduce tunnel quantity when idle" -msgstr "Verminder tunnel aantal wanneer in rust" +msgstr "Verminder tunnel aantal in ruststand" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:415 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:429 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:437 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:449 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:459 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:479 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:493 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:426 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:442 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:454 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:408 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:422 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:430 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:442 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:452 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:472 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:419 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481 msgid "Enable" msgstr "Ingeschakeld" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:419 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:458 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:412 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:485 msgid "Reduced tunnel count" msgstr "Verminder tunnel aantal" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:423 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:443 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:462 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:416 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:489 msgid "Idle minutes" msgstr "Rust minuten" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:427 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420 msgid "Close tunnels when idle" msgstr "Sluit tunnels wanneer in rust" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:426 msgid "New Keys on Reopen" msgstr "Nieuwe Sleutels bij Heropenen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:441 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435 msgid "Disable" msgstr "Uitgeschakeld" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:447 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440 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:457 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:450 msgid "Persistent private key" msgstr "Persistente private sleutel" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:463 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:456 msgid "File" msgstr "Bestand" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:467 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:460 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:220 msgid "Local destination" msgstr "Lokale destination" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:471 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464 msgid "(if known)" msgstr "(indien bekend)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:477 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:470 msgid "Local Authorization" msgstr "Lokale Autorisatie" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:483 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:497 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490 msgid "Username" msgstr "Gebruikersnaam" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:487 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:501 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:480 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:494 msgid "Password" msgstr "Wachtwoord" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:491 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484 msgid "Outproxy Authorization" msgstr "Uitgaande Proxy Autorisatie" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:507 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:498 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502 +msgid "Jump URL List" +msgstr "Spring URL Lijst" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:508 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525 msgid "Custom options" msgstr "Aangepaste opties" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:511 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:502 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:512 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:529 msgid "" "NOTE: If tunnel is currently running, most changes will not take effect " "until tunnel is stopped and restarted." @@ -521,18 +519,18 @@ 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:513 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:504 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:514 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531 msgid "Cancel" msgstr "Annuleer" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:517 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:508 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535 msgid "Delete" msgstr "Verwijder" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:519 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:510 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:520 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537 msgid "Save" msgstr "Opslaan" @@ -548,92 +546,124 @@ msgstr "Bewerk server instellingen" msgid "New server settings" msgstr "Nieuwe server instellingen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:214 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:199 msgid "Website name" msgstr "Website naam" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:218 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:203 msgid "(leave blank for outproxies)" msgstr "(leeg laten voor uitgaande proxies)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:208 msgid "Private key file" msgstr "Private sleutel bestand" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:230 msgid "Add to local addressbook" msgstr "Toevoegen aan lokaal adresboek" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:252 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:237 msgid "Hostname Signature" msgstr "Hostnaam Handtekening" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:424 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417 msgid "Encrypt Leaseset" msgstr "Versleutel Leaseset" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:430 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423 msgid "Encryption Key" msgstr "Encryptie Sleutel" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:434 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427 msgid "Generate New Key" msgstr "Genereer Nieuwe Sleutel" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429 msgid "Generate" msgstr "Genereer" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:438 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:496 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:523 msgid "(Tunnel must be stopped first)" msgstr "(Tunnel moet eerst gestopt worden)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:440 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433 msgid "Restricted Access List" msgstr "Beperkte Toegangs Lijst" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:446 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439 +msgid "Whitelist" +msgstr "Wittelijst" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443 +msgid "Blacklist" +msgstr "Zwartelijst" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447 msgid "Access List" -msgstr "Toegangs Lijst" +msgstr "Toegangslijst" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:450 -msgid "(Restrict to these clients only)" -msgstr "(Beperkt tot slechts deze clients)" +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451 +msgid "Inbound connection limits (0 to disable)" +msgstr "Inkomende connectie limieten (0 om uit te schakelen)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:466 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453 +msgid "Per client" +msgstr "Per client" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455 +msgid "Per minute" +msgstr "Per minuut" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459 +msgid "Per hour" +msgstr "Per uur" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463 +msgid "Per day" +msgstr "Per dag" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467 +msgid "Total" +msgstr "Totaal" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475 +msgid "Max concurrent connections (0 to disable)" +msgstr "Maximum gelijktijdige connecties (0 om uit te schakelen)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493 msgid "New Certificate type" msgstr "Nieuw Certificaat type" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:468 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495 msgid "None" msgstr "Geen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:472 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499 msgid "Hashcash (effort)" msgstr "Hashcash (effort)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:478 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505 msgid "Hashcash Calc Time" msgstr "Hashcash Reken Tijd" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:480 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507 msgid "Estimate" msgstr "Inschatten" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:482 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509 msgid "Hidden" msgstr "Verborgen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:486 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513 msgid "Signed (signed by)" msgstr "Ondertekend (ondertekend door)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:492 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519 msgid "Modify Certificate" msgstr "Wijzig Certificaat" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:494 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521 msgid "Modify" msgstr "Wijzig" @@ -683,7 +713,7 @@ 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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:297 msgid "Status" msgstr "Status" @@ -696,30 +726,30 @@ 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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:304 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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:339 msgid "Stop" msgstr "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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:332 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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:346 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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:353 msgid "Start" msgstr "Start" @@ -728,12 +758,12 @@ 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:377 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:396 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:379 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:398 msgid "Create" msgstr "Creëer" @@ -742,26 +772,26 @@ 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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:283 msgid "Interface" msgstr "Interface" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:299 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:318 msgid "Standby" msgstr "Stand-by" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:344 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:363 msgid "Outproxy" msgstr "Uitgaande proxy" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:348 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:367 msgid "Destination" msgstr "Destination" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:362 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:381 msgid "none" msgstr "geen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:375 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394 msgid "New client tunnel" msgstr "Nieuwe client tunnel" diff --git a/apps/routerconsole/locale/messages_nl.po b/apps/routerconsole/locale/messages_nl.po index 53ab8ee9d..27e8e5544 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-12-17 15:03+0000\n" +"POT-Creation-Date: 2011-01-20 19:26+0000\n" "PO-Revision-Date: 2010-07-04 15:04+0100\n" "Last-Translator: duck <duck@mail.i2p>\n" "Language-Team: duck <duck@mail.i2p>, monkeybrains <monkeybrains@mail.i2p>\n" @@ -26,7 +26,7 @@ msgstr "" #. {0,number,####} prevents 1234 from being output as 1,234 in the English locale. #. If you want the digit separator in your locale, translate as {0}. #. alternates: msec, msecs -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1092 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1124 #, java-format msgid "1 ms" msgid_plural "{0,number,####} ms" @@ -36,8 +36,7 @@ msgstr[1] "{0,number,####} ms" #. seconds #. Note to translators: quantity will always be greater than one. #. alternates: secs, sec. 'seconds' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1097 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:354 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1129 #, java-format msgid "1 sec" msgid_plural "{0} sec" @@ -47,7 +46,7 @@ msgstr[1] "{0} s" #. minutes #. Note to translators: quantity will always be greater than one. #. alternates: mins, min. 'minutes' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1102 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1134 #, java-format msgid "1 min" msgid_plural "{0} min" @@ -57,21 +56,21 @@ msgstr[1] "{0} min" #. hours #. Note to translators: quantity will always be greater than one. #. alternates: hrs, hr., hrs. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1107 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1139 #, java-format msgid "1 hour" msgid_plural "{0} hours" msgstr[0] "1 uur" msgstr[1] "{0} uren" -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1109 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1141 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313 msgid "n/a" msgstr "nvt" #. days #. Note to translators: quantity will always be greater than one. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1113 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1145 #, java-format msgid "1 day" msgid_plural "{0} days" @@ -146,44 +145,43 @@ msgstr "Tunnels geaccepteerd" msgid "Rejecting tunnels" msgstr "Tunnels geweigerd" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:68 -msgid "" -"Ensure that nothing blocks outbound HTTP, check <a target=\"_top\" href=" -"\"logs.jsp\">logs</a> and if nothing helps, read the <a target=\"_top\" href=" -"\"http://www.i2p2.de/faq.html\">FAQ</a> about reseeding manually." -msgstr "" -"Controlleer of uitgaand HTTP verkeer niet geblokkeerd wordt, kijk in de <a " -"target=\"_top\" href=\"logs.jsp\">logs</a> en wanneer niets anders helpt, " -"zie de <a target=\"_top\" href=\"http://www.i2p2.de/faq.html\">FAQ</a> over " -"handmatig reseeden." - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:101 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:98 +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 msgid "Reseeding" msgstr "Reseeden" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:124 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:121 #, java-format msgid "Reseed fetched only 1 router." msgid_plural "Reseed fetched only {0} routers." msgstr[0] "Reseed heeft slechts 1 router opgehaald." msgstr[1] "Reseed heeft slechts {0} routers opgehaald." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:131 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:128 msgid "Reseed failed." msgstr "Reseed gefaald" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:232 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:129 +#, java-format +msgid "See {0} for help." +msgstr "Zie {0} voor hulp." + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:130 +msgid "reseed configuration page" +msgstr "reseed configuratie pagina" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:231 msgid "Reseeding: fetching seed URL." msgstr "Reseed: opvragen seed URL." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:273 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:272 #, 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)." -#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:510 +#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:513 msgid "NetDb entry" msgstr "NetDd item" @@ -192,24 +190,25 @@ msgstr "NetDd item" msgid "No transports (hidden or starting up?)" msgstr "Geen transport (verborgen of aan het opstarten?)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:451 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:452 msgid "Unreachable on any transport" msgstr "Onbereikbaar op alle transports" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:500 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:501 msgid "Router Transport Addresses" msgstr "Router Transport Adressen" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:505 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:506 #, java-format msgid "{0} is used for outbound connections only" msgstr "{0} is alleen gebruikt voor uitgaande connecties" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:520 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123 msgid "Help" msgstr "Help" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:520 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 msgid "" "Your transport connection limits are automatically set based on your " "configured bandwidth." @@ -217,23 +216,23 @@ msgstr "" "De limieten van je transport verbinding zijn automatisch ingesteld gebaseerd " "op de geconfigureerde bandbreedte." -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:522 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 msgid "" "To override these limits, add the settings i2np.ntcp.maxConnections=nnn and " "i2np.udp.maxConnections=nnn on the advanced configuration page." msgstr "" -"Om deze limieten te overschrijven, voeg dan de instelling " -"i2np.ntcp.maxConnections=nnn en i2np.udp.maxConnections=nnn toe aan de " -"geavanceerde configuratie pagina." +"Om deze limieten te overschrijven, voeg dan de instelling i2np.ntcp." +"maxConnections=nnn en i2np.udp.maxConnections=nnn toe aan de geavanceerde " +"configuratie pagina." -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 msgid "Definitions" msgstr "Definities" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:715 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:735 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890 #: ../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 @@ -243,79 +242,79 @@ msgstr "Definities" msgid "Peer" msgstr "Peer" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 msgid "The remote peer, identified by router hash" msgstr "De remote peer, geïdentificeerd door de router hash" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:716 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1891 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:527 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:736 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 msgid "Dir" msgstr "Richting" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:527 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 msgid "Inbound connection" msgstr "Inkomende connectie" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 msgid "Outbound connection" msgstr "Uitgaande connectie" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 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)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 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)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 msgid "How long since a packet has been received / sent" msgstr "Hoe lang sinds een pakket ontvangen / verstuurd is" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:717 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1892 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895 msgid "Idle" msgstr "Idle" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:718 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1897 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1900 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "In/Out" msgstr "In/Uit" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 msgid "The smoothed inbound / outbound transfer rate (KBytes per second)" msgstr "" "De afgevlakte inkomende / uitgaande overdrachtsnelheid (KBytes per seconde)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 msgid "How long ago this connection was established" msgstr "Hoe lang sinds deze connectie is gemaakt" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:719 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1902 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905 msgid "Up" msgstr "Up" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:720 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1904 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1907 msgid "Skew" msgstr "Afwijking" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 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:538 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 msgid "" "The congestion window, which is how many bytes can be sent without an " "acknowledgement" @@ -323,42 +322,42 @@ msgstr "" "Het congestion window, hoeveel bytes verzonden kunnen worden zonder een " "bevestiging" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 msgid "The number of sent messages awaiting acknowledgement" msgstr "Het aantal verzonden berichten, wachtend op bevestiging" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 msgid "The maximum number of concurrent messages to send" msgstr "Het maximum aantal berichten om gelijktijdig te verzenden" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 msgid "The number of pending sends which exceed congestion window" msgstr "" "Het aantal wachtende uitgaande berichten dat het congestion window " "overschrijdt" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 msgid "The slow start threshold" msgstr "De vertraagde-start drempel" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 msgid "The round trip time in milliseconds" msgstr "De rondgangstijd in milliseconden" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1914 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 msgid "Dev" msgstr "SD" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 msgid "The standard deviation of the round trip time in milliseconds" msgstr "De standaarddeviatie van de rondgangstijd in milliseconden" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 msgid "The retransmit timeout in milliseconds" msgstr "De herzend time-out in milliseconden" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 msgid "" "Current maximum send packet size / estimated maximum receive packet size " "(bytes)" @@ -366,41 +365,41 @@ msgstr "" "Huidige maximum verzonden pakket grootte / verwachte maximimum ontvangen " "pakket grootte (bytes)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:721 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1921 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 msgid "TX" msgstr "TX" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 msgid "The total number of packets sent to the peer" msgstr "Het totaal aantal pakketten verzonden aan de peer" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:722 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1923 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:742 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926 msgid "RX" msgstr "RX" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 msgid "The total number of packets received from the peer" msgstr "Het totaal aantal ontvangen pakketten van de peer" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1929 msgid "Dup TX" msgstr "Dup TX" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 msgid "The total number of packets retransmitted to the peer" msgstr "Het totaal aantal pakketten dat opnieuw is verzonden aan de peer" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1928 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1931 msgid "Dup RX" msgstr "Dup RX" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 msgid "The total number of duplicate packets received from the peer" msgstr "Het totaal aantal pakketten dat dubbel is ontvangen van de peer" @@ -410,149 +409,149 @@ msgstr "Het totaal aantal pakketten dat dubbel is ontvangen van de peer" msgid "Excessive clock skew: {0}" msgstr "Te grote klok afwijking: {0}" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:710 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:730 msgid "NTCP connections" msgstr "NTCP connecties" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:711 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1883 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:731 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1886 msgid "Limit" msgstr "Limiet" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:712 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1884 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 msgid "Timeout" msgstr "Time-out" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:723 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:743 msgid "Out Queue" msgstr "Uitgaande wachtrij" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:724 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:744 msgid "Backlogged?" msgstr "In achterstand?" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1946 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:758 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1949 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 msgid "Inbound" msgstr "Inkomend" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1948 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1951 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 msgid "Outbound" msgstr "Uitgaand" #. buf.append("<tr> <td colspan=\"11\"><hr></td></tr>\n"); -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:787 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:807 msgid "peers" msgstr "peers" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1882 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1885 msgid "UDP connections" msgstr "UDP connecties" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1889 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1892 msgid "Sort by peer hash" msgstr "Gesorteerd op peer hash" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1891 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 msgid "Direction/Introduction" msgstr "Richting/Introductie" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1893 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1896 msgid "Sort by idle inbound" msgstr "Gesorteerd op idle inkomend" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1898 msgid "Sort by idle outbound" msgstr "Gesorteerd op idle uitgaand" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1898 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1901 msgid "Sort by inbound rate" msgstr "Gesorteerd op inkomende snelheid" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1900 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1903 msgid "Sort by outbound rate" msgstr "Gesorteerd op uitgaande snelheid" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1903 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1906 msgid "Sort by connection uptime" msgstr "Gesorteerd op uptime van de connectie" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1908 msgid "Sort by clock skew" msgstr "Gesorteerd op klok afwijking" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1908 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1911 msgid "Sort by congestion window" msgstr "Gesorteerd op congestion window" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1910 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1913 msgid "Sort by slow start threshold" msgstr "Gesorteerd op vertraagde-start drempel" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1913 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1916 msgid "Sort by round trip time" msgstr "Gesorteerd op rondgangstijd" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1915 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918 msgid "Sort by round trip time deviation" msgstr "Gesorteerd op rondgangstijd afwijking" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1920 msgid "Sort by retransmission timeout" msgstr "Gesorteerd op herzendings time-out" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1920 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1923 msgid "Sort by outbound maximum transmit unit" msgstr "Gesorteerd op uitgaande maximum verzend unit" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1922 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1925 msgid "Sort by packets sent" msgstr "Gesorteerd op verzonden pakketten" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927 msgid "Sort by packets received" msgstr "Gesorteerd op ontvangen pakketten" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1930 msgid "Sort by packets retransmitted" msgstr "Gesorteerd op herzonden pakketten" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1929 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1932 msgid "Sort by packets received more than once" msgstr "Gesorteerd op meerdere keren ontvangen pakketten" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1950 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1953 msgid "We offered to introduce them" msgstr "We hebben aangeboden ze te introduceren" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1952 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1955 msgid "They offered to introduce us" msgstr "Zij hebben aangeboden ons te introduceren" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1956 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1959 msgid "Choked" msgstr "Verstikt" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1964 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1967 msgid "1 fail" msgstr "1 gefaald" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1966 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1969 #, java-format msgid "{0} fails" msgstr "{0} gefaald" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1972 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1975 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:162 msgid "Banned" msgstr "Verbannen" #. buf.append("<tr><td colspan=\"16\"><hr></td></tr>\n"); -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2103 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2106 msgid "SUMMARY" msgstr "SAMENVATTING" @@ -1511,6 +1510,7 @@ msgstr "Zimbabwe" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:35 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:37 #: ../java/strings/Strings.java:29 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:119 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:233 msgid "I2P Router Console" msgstr "I2P Router Console" @@ -1533,236 +1533,249 @@ 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 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:335 msgid "Save Client Configuration" msgstr "Client Configuratie Opslaan" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:38 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:347 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:39 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:405 +msgid "Save Interface Configuration" +msgstr "Interface Configuratie Opslaan" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 msgid "Save WebApp Configuration" msgstr "WebApp Configuratie Opslaan" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:42 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:47 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427 msgid "Save Plugin Configuration" msgstr "Plugin Configuratie Opslaan" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:46 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:363 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:51 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433 msgid "Install Plugin" msgstr "Installeer Plugin" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:82 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:87 #, java-format msgid "Deleted plugin {0}" msgstr "Plugin {0} verwijderd" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:84 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:89 #, java-format msgid "Error deleting plugin {0}" msgstr "Fout bij verwijderen plugin {0}" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:96 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:101 #, java-format msgid "Stopped plugin {0}" msgstr "Plugin {0} gestopt" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:98 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:103 #, java-format msgid "Error stopping plugin {0}" msgstr "Fout bij stoppen plugin {0}" #. label (IE) -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:119 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:189 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:255 msgid "Start" msgstr "Start" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:138 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:143 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:49 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:61 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:33 msgid "Unsupported" msgstr "Niet ondersteund" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:184 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:189 msgid "New client added" msgstr "Nieuwe client toegevoegd" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:188 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:193 msgid "" "Client configuration saved successfully - restart required to take effect." -msgstr "Client configuratie succesvol opgeslagen - herstart nodig" +msgstr "" +"Client configuratie succesvol opgeslagen - herstart nodig." -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:202 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:213 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 msgid "Bad client index." 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/ConfigClientsHandler.java:212 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:379 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:384 msgid "Client" msgstr "Client" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:266 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:271 msgid "started" msgstr "gestart" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223 msgid "deleted" msgstr "verwijderd" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:235 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:240 msgid "WebApp configuration saved." msgstr "WebApp configuratie opgeslagen." -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:251 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:256 msgid "Plugin configuration saved." msgstr "Plugin configuratie opgeslagen." -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:266 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:58 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:271 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 msgid "WebApp" msgstr "WebApp" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:268 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:273 msgid "Failed to start" msgstr "Gefaald te starten" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:273 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:278 msgid "Failed to find server." msgstr "Gefaald om server te vinden." -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:279 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:284 msgid "No plugin URL specified." msgstr "Geen plugin URL gespecificeerd." -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:289 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:294 #, java-format msgid "No update URL specified for {0}" msgstr "Geen update URL gespecificeerd voor {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:307 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:320 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:325 msgid "Plugin or update download already in progress." msgstr "Plugin of update download is reeds bezig." -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:306 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:311 #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:118 #, java-format msgid "Downloading plugin from {0}" msgstr "Downloaden plugin van {0}" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:324 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:329 #, java-format msgid "Checking plugin {0} for updates" msgstr "Controlleer plugin {0} voor updates" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:334 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:339 #, java-format msgid "Started plugin {0}" msgstr "Plugin {0} gestart" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:336 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:341 #, java-format msgid "Error starting plugin {0}" msgstr "Fout bij starten plugin {0}" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:21 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:192 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 +msgid "" +"Interface configuration saved successfully - restart required to take effect." +msgstr "" +"Interface configuratie succesvol opgeslagen - herstart nodig." + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:85 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258 msgid "Edit" msgstr "Bewerk" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:30 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:94 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:331 msgid "Add Client" msgstr "Client Toevoegen" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:38 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 msgid "Class and arguments" msgstr "Class en argumenten" -#: ../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 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 msgid "Control" msgstr "Controlle" -#: ../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 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 msgid "Run at Startup?" msgstr "Start bij opstarten?" -#: ../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 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:197 msgid "Description" msgstr "Omschrijving" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:82 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 msgid "Plugin" msgstr "Plugin" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:95 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:161 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185 msgid "Version" msgstr "Versie" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:97 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:163 msgid "Signed by" msgstr "Ondertekend door" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:114 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:180 msgid "Date" msgstr "Datum" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:120 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:186 msgid "Author" msgstr "Auteur" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:136 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:202 msgid "License" msgstr "Licentie" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:141 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:207 msgid "Website" msgstr "Website" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:146 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:212 msgid "Update link" msgstr "Update link" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:194 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:260 msgid "Stop" msgstr "Stop" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:196 -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:81 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:262 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:78 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:313 msgid "Check for updates" msgstr "Controlleer op updates" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:197 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:263 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:242 msgid "Update" msgstr "Update" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:202 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:268 #, java-format msgid "Are you sure you want to delete {0}?" msgstr "Weet je zeker dat je {0} wilt verwijderen?" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:204 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:270 msgid "Delete" msgstr "Verwijder" @@ -1917,11 +1930,13 @@ msgstr "Geavanceerd" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:48 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:264 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:29 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:34 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:360 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:516 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:307 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:352 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:377 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:344 msgid "Save changes" @@ -2009,19 +2024,19 @@ msgstr "Updaten van bandbreedte share percentage" msgid "Updated bandwidth limits" msgstr "Updaten van bandbreedte limieten" -#: ../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 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:41 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:49 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:59 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:62 msgid "unknown" msgstr "ombekend" -#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:169 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:172 msgid "bits per second" msgstr "bits per seconde" -#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:170 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:173 #, java-format msgid "or {0} bytes per month maximum" msgstr "of {0} bytes per maand maximaal" @@ -2072,6 +2087,24 @@ msgstr "Foutieve snelheids waarde" msgid "Bad capacity value" msgstr "Foutieve capaciteits waarde" +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:17 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 +msgid "Save changes and reseed now" +msgstr "Sla wijzigingen op en reseed nu" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:21 +msgid "Reseeding is already in progress" +msgstr "Reseeden is reeds bezig" + +#. skip the nonce checking in ReseedHandler +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:24 +msgid "Starting reseed process" +msgstr "Reseed proces aan het starten" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:66 +msgid "Configuration saved successfully." +msgstr "Configuratie succesvol opgeslagen." + #. 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 @@ -2403,52 +2436,52 @@ msgstr "Chinees" msgid "Swedish" msgstr "Zweeds" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:88 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:85 msgid "Update available, attempting to download now" msgstr "Update beschikbaar, probeer nu te downloaden" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:90 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:87 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 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:93 msgid "No update available" msgstr "Geen update beschikbaar" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:104 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:101 msgid "Updating news URL to" msgstr "Updaten nieuws URL in" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:112 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:109 msgid "Updating proxy host to" msgstr "Updaten proxy host in" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:120 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:117 msgid "Updating proxy port to" msgstr "Updaten proxy poort in" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:133 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:130 msgid "Updating refresh frequency to" msgstr "Updaten vernieuw frequentie in" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:140 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:137 msgid "Updating update policy to" msgstr "Updaten update regels in" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:149 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:146 msgid "Updating update URLs." msgstr "Updaten update URLs." -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:155 msgid "Updating trusted keys." msgstr "Updaten vertrouwde sleutels." -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:166 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:163 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:148 +#: ../java/src/net/i2p/router/web/GraphHelper.java:167 msgid "Never" msgstr "Nooit" @@ -2476,80 +2509,68 @@ 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:87 +#: ../java/src/net/i2p/router/web/GraphHelper.java:93 msgid "Combined bandwidth graph" msgstr "Gecombineerde bandbreedte grafiek" #. e.g. "statname for 60m" -#: ../java/src/net/i2p/router/web/GraphHelper.java:101 +#: ../java/src/net/i2p/router/web/GraphHelper.java:107 #, java-format msgid "{0} for {1}" msgstr "{0} voor {1}" -#: ../java/src/net/i2p/router/web/GraphHelper.java:138 +#: ../java/src/net/i2p/router/web/GraphHelper.java:146 msgid "Configure Graph Display" msgstr "Configureer Grafiek Weergave" -#: ../java/src/net/i2p/router/web/GraphHelper.java:138 +#: ../java/src/net/i2p/router/web/GraphHelper.java:146 msgid "Select Stats" msgstr "Selecteer Statistieken" -#: ../java/src/net/i2p/router/web/GraphHelper.java:142 +#: ../java/src/net/i2p/router/web/GraphHelper.java:150 msgid "Periods" msgstr "Perioden" -#: ../java/src/net/i2p/router/web/GraphHelper.java:143 +#: ../java/src/net/i2p/router/web/GraphHelper.java:151 msgid "Plot averages" msgstr "Teken gemiddelden" -#: ../java/src/net/i2p/router/web/GraphHelper.java:144 +#: ../java/src/net/i2p/router/web/GraphHelper.java:152 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:333 msgid "or" msgstr "of" -#: ../java/src/net/i2p/router/web/GraphHelper.java:144 +#: ../java/src/net/i2p/router/web/GraphHelper.java:152 msgid "plot events" msgstr "teken gebeurtenissen" -#: ../java/src/net/i2p/router/web/GraphHelper.java:145 +#: ../java/src/net/i2p/router/web/GraphHelper.java:153 msgid "Image sizes" msgstr "Afbeelding grootte" -#: ../java/src/net/i2p/router/web/GraphHelper.java:145 +#: ../java/src/net/i2p/router/web/GraphHelper.java:153 msgid "width" msgstr "breedte" -#: ../java/src/net/i2p/router/web/GraphHelper.java:146 +#: ../java/src/net/i2p/router/web/GraphHelper.java:154 msgid "height" msgstr "hoogte" -#: ../java/src/net/i2p/router/web/GraphHelper.java:146 -#: ../java/src/net/i2p/router/web/GraphHelper.java:147 +#: ../java/src/net/i2p/router/web/GraphHelper.java:154 +#: ../java/src/net/i2p/router/web/GraphHelper.java:155 msgid "pixels" msgstr "pixels" -#: ../java/src/net/i2p/router/web/GraphHelper.java:148 +#: ../java/src/net/i2p/router/web/GraphHelper.java:156 msgid "Refresh delay" msgstr "Ververs vertraging" -#: ../java/src/net/i2p/router/web/GraphHelper.java:148 -msgid "hour" -msgstr "uur" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:148 -msgid "minute" -msgstr "minuut" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:148 -msgid "minutes" -msgstr "minuten" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:149 +#: ../java/src/net/i2p/router/web/GraphHelper.java:171 msgid "Redraw" msgstr "Vernieuw" -#: ../java/src/net/i2p/router/web/GraphHelper.java:181 +#: ../java/src/net/i2p/router/web/GraphHelper.java:203 msgid "Graph settings saved" msgstr "Grafiek instellingen opgeslagen" @@ -2683,7 +2704,7 @@ msgid "Full entry" msgstr "Volledige item" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:110 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:115 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 msgid "Hidden" msgstr "Verborgen" @@ -2776,7 +2797,7 @@ msgid "Downloading plugin" msgstr "Downloaden van plugin" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:146 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:185 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:244 #, java-format msgid "{0}B transferred" msgstr "{0}B ontvangen" @@ -2792,7 +2813,7 @@ msgid "Cannot create plugin directory {0}" msgstr "Kan plugin directory {0} niet maken" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:166 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:226 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:298 #, java-format msgid "from {0}" msgstr "van {0}" @@ -3195,7 +3216,8 @@ msgstr "" #: ../java/src/net/i2p/router/web/StatsGenerator.java:64 msgid "These statistics are primarily used for development and debugging." -msgstr "Deze statistieken worden primair gebruikt voor ontwikkeling en debugging." +msgstr "" +"Deze statistieken worden primair gebruikt voor ontwikkeling en debugging." #: ../java/src/net/i2p/router/web/StatsGenerator.java:105 #: ../java/src/net/i2p/router/web/StatsGenerator.java:156 @@ -3383,7 +3405,7 @@ msgid "Textual router performance statistics" msgstr "Tekstuele router prestatie statistieken" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:365 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:370 msgid "Local Destinations" msgstr "Lokale Bestemmingen" @@ -3519,110 +3541,110 @@ msgstr "Tunnel vertraging" msgid "Backlog" msgstr "Achterstand" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:101 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:106 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/src/net/i2p/router/web/SummaryHelper.java:113 #, java-format msgid "ERR-Clock Skew of {0}" msgstr "ERR-Klok Afwijking van {0}" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:117 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:122 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 msgid "OK" msgstr "OK" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:118 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:123 msgid "ERR-Private TCP Address" msgstr "ERR-Privaat TCP Adres" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:120 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:125 msgid "ERR-SymmetricNAT" msgstr "ERR-SymmetricNAT" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:123 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:128 msgid "WARN-Firewalled with Inbound TCP Enabled" msgstr "WARN-Firewall met Inkomende TCP Ingeschakeld" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:125 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:130 msgid "WARN-Firewalled and Floodfill" msgstr "WARN-Firewall en Floodfill" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:127 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:132 msgid "WARN-Firewalled and Fast" msgstr "WARN-Firewall en Snel" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:128 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:133 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 msgid "Firewalled" msgstr "Firewall" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:130 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:135 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 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:141 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 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:144 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 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:146 msgid "WARN-Firewalled with UDP Disabled" msgstr "WARN-Firewall met UDP Uitgeschakeld" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:143 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:148 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 msgid "Testing" msgstr "Testen" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:365 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:370 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 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:382 msgid "Server" msgstr "Server" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:381 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:386 msgid "Show tunnels" msgstr "Toon tunnels" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:392 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:397 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 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:397 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:398 msgid "Rebuilding" msgstr "Herbouwen" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:393 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:398 msgid "ago" msgstr "geleden" #. green light -#: ../java/src/net/i2p/router/web/SummaryHelper.java:396 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:401 msgid "Ready" msgstr "Gereed" #. yellow light -#: ../java/src/net/i2p/router/web/SummaryHelper.java:400 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 msgid "Building" msgstr "Bouwen" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:400 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 msgid "Building tunnels" msgstr "Tunnels aan het bouwen" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:410 msgid "none" msgstr "geen" @@ -3630,7 +3652,7 @@ msgstr "geen" #. 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/src/net/i2p/router/web/SummaryHelper.java:421 #: ../java/strings/Strings.java:36 msgid "shared clients" msgstr "gedeelde clients" @@ -3789,17 +3811,17 @@ 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:178 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:142 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:237 msgid "Updating" msgstr "Aan het updaten" +#. Process the .sud/.su2 file #: ../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:189 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:214 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:261 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:286 msgid "Update downloaded" msgstr "Update gedownload" @@ -3809,22 +3831,22 @@ 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:209 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:281 msgid "Restarting" msgstr "Herstarten" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:118 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:216 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:288 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:218 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:290 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:220 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:292 #, java-format msgid "Version {0}" msgstr "Versie {0}" @@ -3834,13 +3856,24 @@ msgstr "Versie {0}" msgid "Failed copy to {0}" msgstr "Kopie naar {0} gefaald" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:209 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:184 +#, java-format +msgid "Updating from {0}" +msgstr "Updaten van {0}" + +#: ../java/src/net/i2p/router/web/UpdateHandler.java:253 +#, java-format +msgid "No new version found at {0}" +msgstr "Geen nieuwe versie gevonden op {0}" + +#: ../java/src/net/i2p/router/web/UpdateHandler.java:281 msgid "Update verified" msgstr "Update geverifieerd" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:234 -msgid "Transfer failed" -msgstr "Overdracht gefaald" +#: ../java/src/net/i2p/router/web/UpdateHandler.java:307 +#, java-format +msgid "Transfer failed from {0}" +msgstr "Overdracht gefaald van {0}" #. wars for ConfigClientsHelper #: ../java/strings/Strings.java:12 @@ -4100,6 +4133,7 @@ msgstr "configureer netwerk" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:216 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:230 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:216 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:216 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:217 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:216 @@ -4132,6 +4166,7 @@ msgstr "Ververs (s)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:234 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:221 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:220 @@ -4232,8 +4267,10 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:305 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:403 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:321 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:348 #: ../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:342 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:322 @@ -4246,6 +4283,8 @@ msgid "IP and Transport Configuration" msgstr "IP en Transport Configuratie" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:377 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:306 msgid "The default settings will work for most people." msgstr "De standaard instellingen zullen voor de meeste mensen werken." @@ -4853,15 +4892,68 @@ 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:325 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:401 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:415 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:337 +msgid "Advanced Client Interface Configuration" +msgstr "Geavanceerde Client Interface Configuratie" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:339 +msgid "External I2CP (I2P Client Protocol) Interface Configuration" +msgstr "Externe I2CP (I2P Client Protocol) Interface Configuratie" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 +msgid "Enabled without SSL" +msgstr "Ingeschakeld zonder SSL" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351 +msgid "Enabled with SSL required" +msgstr "Ingeschakeld met SSL vereist" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 +msgid "Disabled - Clients outside this Java process may not connect" +msgstr "Uitgeschakeld - Clients buiten dit Java process mogen geen verbinding maken" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:359 +msgid "I2CP Port" +msgstr "I2CP Poort" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:363 +msgid "I2CP Interface" +msgstr "I2CP Interface" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:379 +msgid "Authorization" +msgstr "Authorisatie" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:385 +msgid "Require username and password" +msgstr "Gebruikersnaam en wachtwoord verplicht" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:387 +msgid "Username" +msgstr "Gebruikersnaam" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:391 +msgid "Password" +msgstr "Wachtwoord" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:397 +msgid "Any changes made here must also be configured in the external client." +msgstr "Alle wijzigingen die hier worden gemaakt moeten ook in de externe client worden geconfigureerd." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:399 +msgid "Many clients do not support SSL or authorization." +msgstr "Veel clients understeunen geen SSL of authorisatie." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:407 msgid "WebApp Configuration" msgstr "WebApp Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 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 " @@ -4877,7 +4969,7 @@ msgstr "" "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:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:411 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 " @@ -4890,19 +4982,19 @@ msgstr "" "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:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:421 msgid "Plugin Configuration" msgstr "Plugin Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:353 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 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:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:429 msgid "Plugin Installation" msgstr "Plugin Installatie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:361 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 msgid "To install a plugin, enter the download URL:" msgstr "Om een plugin te installeren, voer de download URL in:" @@ -5073,6 +5165,83 @@ msgstr "Verbannen Peers" msgid "Banned IPs" msgstr "Verbannen IPs" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:106 +msgid "config reseeding" +msgstr "configureer reseeden" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:240 +msgid "I2P Reseeding Configuration" +msgstr "I2P Reseeden Configuratie" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:300 +msgid "Reseeding Configuration" +msgstr "Reseeden Configuratie" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:302 +msgid "" +"Reseeding is the bootstrapping process used to find other routers when you " +"first install I2P, or when your router has too few router references " +"remaining." +msgstr "" +"Reseeden is het opstart proces dat gebruikt wordt om andere routers te vinden " +"wanneer je I2P voor het eerst installeert, of wanneer je router te weinig " +"router referenties heeft." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304 +msgid "" +"If reseeding has failed, you should first check your network connection." +msgstr "" +"Wanneer reseeden heeft gefaald moet je eerst je netwerkverbinding controlleren." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:308 +msgid "" +"Change these only if HTTP is blocked by a restrictive firewall, reseed has " +"failed, and you have access to an HTTP proxy." +msgstr "" +"Wijzig deze alleen wanneer HTTP geblokkeerd is door een beperkende firewall, " +"reseeden heeft gefaald en je toegang hebt tot een HTTP proxy." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +#, java-format +msgid "See {0} for instructions on reseeding manually." +msgstr "Zie {0} voor instructies om handmatig te reseeden." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +msgid "the FAQ" +msgstr "de FAQ" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:312 +msgid "Reseed URL Selection" +msgstr "Reseed URL Selectie" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 +msgid "Try SSL first then non-SSL" +msgstr "Probeer eerst met SSL, daarna zonder SSL" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:324 +msgid "Use SSL only" +msgstr "Gebruik alleen SSL" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:330 +msgid "Use non-SSL only" +msgstr "Gebruik geen SSL" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:332 +msgid "Reseed URLs" +msgstr "Reseed URLs" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:336 +msgid "Enable HTTP proxy (not used for SSL)" +msgstr "HTTP proxy inschakelen (niet gebruikt voor SSL)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:340 +msgid "HTTP Proxy Host" +msgstr "HTTP Proxy Host" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:344 +msgid "HTTP Proxy Port" +msgstr "HTTP Proxy Poort" + #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:106 msgid "config service" msgstr "configureer service" @@ -5434,6 +5603,67 @@ msgstr "" msgid "Save" msgstr "Opslaan" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:115 +msgid "Internal Error" +msgstr "Interne Fout" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:117 +msgid "Router Console" +msgstr "Router Console" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:121 +msgid "Configuration" +msgstr "Configuratie" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129 +msgid "Sorry! There has been an internal error." +msgstr "Sorry! Er is een interne fout opgetreden." + +#. note to translators - both parameters are URLs +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:133 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:232 +#, java-format +msgid "Please report bugs on {0} or {1}." +msgstr "Rapporteer bugs op {0} of {1}." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 +msgid "" +"You may use the username \"guest\" and password \"guest\" if you do not wish " +"to register." +msgstr "" +"Indien je niet wilt registreren kan je de username \"guest\" en wachtwoord " +"\"guest\" gebruiken." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 +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/error500_jsp.java:141 +msgid "Error Details" +msgstr "Fout Details" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:143 +#, java-format +msgid "Error {0}" +msgstr "Fout {0}" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:163 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:228 +msgid "I2P Version and Running Environment" +msgstr "I2P Versie en Omgevingsinformatie" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 +msgid "" +"Note that system information, log timestamps, and log messages may provide " +"clues to your location; please review everything you include in a bug report." +msgstr "" +"Merk op dat systeem informatie, log timestamps en log berichten mogelijk " +"aanwijzingen kunnen geven over je lokatie; controlleer daarom alles dat je " +"in een bug report opneemt." + #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:117 msgid "Page Not Found" msgstr "Pagina Niet Gevonden" @@ -5480,37 +5710,6 @@ msgstr "logs" msgid "I2P Router Logs" msgstr "I2P Router Logs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:228 -msgid "I2P Version & Running Environment" -msgstr "I2P Versie & Omgevingsinformatie" - -#. note to translators - both parameters are URLs -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:232 -#, java-format -msgid "Please report bugs on {0} or {1}." -msgstr "Rapporteer bugs op {0} of {1}." - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 -msgid "" -"You may use the username \"guest\" and password \"guest\" if you do not wish " -"to register." -msgstr "" -"Indien je niet wilt registreren kan je de username \"guest\" en wachtwoord " -"\"guest\" gebruiken." - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 -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:266 -msgid "" -"Note that system information, log timestamps, and log messages may provide " -"clues to your location; please review everything you include in a bug report." -msgstr "" -"Merk op dat systeem informatie, log timestamps en log berichten mogelijk " -"aanwijzingen kunnen geven over je lokatie; controlleer daarom alles dat je in " -"een bug report opneemt." - #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:281 msgid "Critical Logs" msgstr "Kritieke Logs" From 568f24299803835549920d226a8db44262c0f17d Mon Sep 17 00:00:00 2001 From: hiddenz <hiddenz@mail.i2p> Date: Fri, 21 Jan 2011 03:47:03 +0000 Subject: [PATCH 112/463] i2ptunnel: remove dup in russian translation --- apps/i2ptunnel/locale/messages_ru.po | 4 ---- 1 file changed, 4 deletions(-) diff --git a/apps/i2ptunnel/locale/messages_ru.po b/apps/i2ptunnel/locale/messages_ru.po index c0a1bdfeb..2b9790b67 100644 --- a/apps/i2ptunnel/locale/messages_ru.po +++ b/apps/i2ptunnel/locale/messages_ru.po @@ -732,10 +732,6 @@ msgstr "Клиентские I2P туннели" msgid "Interface" msgstr "Сетевой интерфейс" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290 -msgid "Host not set" -msgstr "Хост не задан" - #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:318 msgid "Standby" msgstr "Режим ожидания" From a946af721e8f6943ef13b6c28b8734154f91eb0a Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Fri, 21 Jan 2011 04:29:06 +0000 Subject: [PATCH 113/463] Light tabulatory tweaks. --- installer/resources/themes/console/light/console.css | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 6b7d65b6f..0bb16a8b0 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -742,7 +742,7 @@ h2 { font-size: 13pt; color: #115; letter-spacing: 0.07em; - background: #ffe url('images/header.png') center center repeat-x; + background: url('images/header.png') center center repeat-x; text-shadow: 0px 1px 1px #99f; padding: 10px; wordwrap: none; @@ -790,7 +790,7 @@ h3 { border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; -khtml-border-radius: 0 4px 4px 0; - background: #ffe url('images/header.png') center center repeat-x !important; + background: url('images/header.png') center center repeat-x !important; text-transform: uppercase; text-shadow: 0px 1px 1px #99f; font-size: 11pt; @@ -1012,8 +1012,7 @@ form {} border-top: 0 !important; margin: -5px 0 5px 0; padding: 7px; - background: #fff url('images/magic.png') center bottom; - -moz-box-shadow: inset 0px 0px 40px 5px #ccf; + background: url("images/header.png") repeat scroll center center #eef; text-shadow: 0 1px #99f; letter-spacing: 0em !important; text-transform: capitalize; From a4d270fa63244039c4613eea6c701a5a5be2ca32 Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Fri, 21 Jan 2011 12:05:23 +0000 Subject: [PATCH 114/463] Light consistency tweaks. --- installer/resources/themes/console/light/console.css | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 0bb16a8b0..50b5cdefd 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -168,7 +168,7 @@ div.routersummary h4 { text-decoration: none !important; color: #2b2; line-height: 105%; - -moz-box-shadow: inset 0px 0px 1px 10px #dfd; + -moz-box-shadow: inset 0px 0px 1px 30px #dfd; -khtml-box-shadow: 0px 0px 1px 1px #dfd; box-shadow: 0px 0px 1px 1px #fdf; } @@ -507,14 +507,15 @@ div.graphspanel form { div.messages { padding: 10px; margin: 10px 0 15px 0; - background: #ffe; -moz-border-radius: 4px; -khtml-border-radius: 4px; border-radius: 4px; border: 1px solid #447; - background: #ffe url('images/magic.png'); + background: #fff url('images/magic.png'); font-weight: bold; - -moz-box-shadow: inset 0px 0px 1px 1px #bbf; + -moz-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + -khtml-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); } div.messages span.error { From d05b02de130c85de90e78ae4c0c03dd35fd35f55 Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Fri, 21 Jan 2011 12:52:42 +0000 Subject: [PATCH 115/463] Light Chinese finessing. --- .../themes/console/light/console_big.css | 34 ++++++++++++++++--- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/installer/resources/themes/console/light/console_big.css b/installer/resources/themes/console/light/console_big.css index 4a1cc0c7d..8f3e3a346 100644 --- a/installer/resources/themes/console/light/console_big.css +++ b/installer/resources/themes/console/light/console_big.css @@ -15,19 +15,19 @@ div.routersummary h3, div.routersummary h4, div.routersummary p, div.routersumma } -div.routersummary h4 { - font-size: 11pt; +div.routersummary h4, div.routersummary h4 a { + font-size: 11pt !important; letter-spacing: 0.1em; -moz-box-shadow: inset 0px 0px 1px 15px #dfd; } div.routersummary b { - font-size: 9pt; + font-size: 9.5pt; font-weight: normal !important; } div.routersummary a { - word-spacing: 0.2em !important; - letter-spacing: 0.1em !important; + word-spacing: 0.1em !important; + letter-spacing: 0.05em !important; font-size: 10.5pt; line-height: 150%; } @@ -66,4 +66,28 @@ input, input:visited { table { font: 8.5pt/130% Verdana, "Bitstream Vera Sans", Tahoma, Helvetica, sans-serif; +} + +td { + font-size: 9pt; +} + +.statusnotes { + font-size: 10pt; + letter-spacing: 0.2em !important; + text-shadow: none !important; +} + +.tablefooter tr, .tablefooter td { + font-size: 10pt !important; +} + +div.tunnels a { + font-size: 9.5pt !important; + letter-spacing: 0 !important; + word-spacing: 0 !important; +} + +code, tt { + font-size: 10pt !important; } \ No newline at end of file From d2adbfdf24aca39aa6a198bd16abac9b78f5ce52 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Fri, 21 Jan 2011 15:36:23 +0000 Subject: [PATCH 116/463] dont spec thread pool name, to prevent sharing --- installer/resources/jetty.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/installer/resources/jetty.xml b/installer/resources/jetty.xml index f6b135c3d..39e7bb585 100644 --- a/installer/resources/jetty.xml +++ b/installer/resources/jetty.xml @@ -65,7 +65,6 @@ <Set name="LowResourcePersistTimeMs">1000</Set> <Set name="ConfidentialPort">8443</Set> <Set name="IntegralPort">8443</Set> - <Set name="PoolName">main</Set> </New> </Arg> </Call> From b80c0546a239d50ad7996f6451fc1347ca9b90f2 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Fri, 21 Jan 2011 15:48:05 +0000 Subject: [PATCH 117/463] standard socket cleanups --- .../src/net/i2p/client/streaming/StandardServerSocket.java | 2 ++ .../java/src/net/i2p/client/streaming/StandardSocket.java | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/streaming/java/src/net/i2p/client/streaming/StandardServerSocket.java b/apps/streaming/java/src/net/i2p/client/streaming/StandardServerSocket.java index 937973afe..324d12687 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/StandardServerSocket.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/StandardServerSocket.java @@ -22,6 +22,7 @@ import net.i2p.I2PException; * You may not create an unbound StandardServerSocket. * Create this through the SocketManager. * + * @author zzz * @since 0.8.4 */ class StandardServerSocket extends ServerSocket { @@ -34,6 +35,7 @@ class StandardServerSocket extends ServerSocket { _socket = socket; } + @Override public Socket accept() throws IOException { try { I2PSocket sock = _socket.accept(); diff --git a/apps/streaming/java/src/net/i2p/client/streaming/StandardSocket.java b/apps/streaming/java/src/net/i2p/client/streaming/StandardSocket.java index 3c743d7eb..6ba78bfd4 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/StandardSocket.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/StandardSocket.java @@ -23,6 +23,9 @@ import net.i2p.I2PException; * You may not create an unbound StandardSocket. * Create this through the SocketManager. * + * Todo: Make public and add getPeerDestination() ? + * + * @author zzz * @since 0.8.4 */ class StandardSocket extends Socket { @@ -132,7 +135,7 @@ class StandardSocket extends Socket { OutputStream rv = _socket.getOutputStream(); if (rv != null) return rv; - throw new IOException("Mo stream"); + throw new IOException("No stream"); } /** From 9ee8e045b41e2388458bbefc8b3ee3a245d9c000 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Fri, 21 Jan 2011 15:52:12 +0000 Subject: [PATCH 118/463] small optimization in TunnelID --- core/java/src/net/i2p/data/TunnelId.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/core/java/src/net/i2p/data/TunnelId.java b/core/java/src/net/i2p/data/TunnelId.java index 2e625e606..0e1c815f6 100644 --- a/core/java/src/net/i2p/data/TunnelId.java +++ b/core/java/src/net/i2p/data/TunnelId.java @@ -50,6 +50,26 @@ public class TunnelId extends DataStructureImpl { DataHelper.writeLong(out, 4, _tunnelId); } + /** + * Overridden for efficiency. + */ + @Override + public byte[] toByteArray() { + return DataHelper.toLong(4, _tunnelId); + } + + /** + * Overridden for efficiency. + * @param data non-null + * @throws DataFormatException if null or wrong length + */ + @Override + public void fromByteArray(byte data[]) throws DataFormatException { + if (data == null) throw new DataFormatException("Null data passed in"); + if (data.length != 4) throw new DataFormatException("Bad data length"); + _tunnelId = (int) DataHelper.fromLong(data, 0, 4); + } + @Override public boolean equals(Object obj) { if ( (obj == null) || !(obj instanceof TunnelId)) From e924052fd827675f0dd2749a156eab3f35365b98 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Fri, 21 Jan 2011 15:52:58 +0000 Subject: [PATCH 119/463] final --- core/java/src/net/i2p/util/ConcurrentHashSet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/java/src/net/i2p/util/ConcurrentHashSet.java b/core/java/src/net/i2p/util/ConcurrentHashSet.java index 3610c54b9..6c6d8bfb6 100644 --- a/core/java/src/net/i2p/util/ConcurrentHashSet.java +++ b/core/java/src/net/i2p/util/ConcurrentHashSet.java @@ -14,7 +14,7 @@ import java.util.concurrent.ConcurrentHashMap; */ public class ConcurrentHashSet<E> extends AbstractSet<E> implements Set<E> { private static final Object DUMMY = new Object(); - private Map<E, Object> _map; + private final Map<E, Object> _map; public ConcurrentHashSet() { _map = new ConcurrentHashMap(); From 6981db4fa375a706b874610d031ebc19601fe7a0 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Fri, 21 Jan 2011 15:53:37 +0000 Subject: [PATCH 120/463] comment out main() --- core/java/src/net/i2p/util/LogManager.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/java/src/net/i2p/util/LogManager.java b/core/java/src/net/i2p/util/LogManager.java index be6fe2ef9..a57512d4d 100644 --- a/core/java/src/net/i2p/util/LogManager.java +++ b/core/java/src/net/i2p/util/LogManager.java @@ -639,6 +639,7 @@ public class LogManager { return _dateFormatPattern; } +/***** public static void main(String args[]) { I2PAppContext ctx = new I2PAppContext(); Log l1 = ctx.logManager().getLog("test.1"); @@ -659,6 +660,7 @@ public class LogManager { } System.exit(0); } +*****/ public void shutdown() { if (_writer != null) { From f046eb79bd9315f7cf04916225a920f717395df3 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Fri, 21 Jan 2011 16:04:45 +0000 Subject: [PATCH 121/463] javadoc --- core/java/src/net/i2p/data/ByteArray.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/java/src/net/i2p/data/ByteArray.java b/core/java/src/net/i2p/data/ByteArray.java index 7369a27d1..9f460fe47 100644 --- a/core/java/src/net/i2p/data/ByteArray.java +++ b/core/java/src/net/i2p/data/ByteArray.java @@ -24,6 +24,7 @@ public class ByteArray implements Serializable, Comparable { public ByteArray() { } + /** Sets valid */ public ByteArray(byte[] data) { _data = data; _valid = (data != null ? data.length : 0); @@ -38,6 +39,7 @@ public class ByteArray implements Serializable, Comparable { return _data; } + /** Warning, does not set valid */ public void setData(byte[] data) { _data = data; } From 809bb59c9d02746ad6eb244176b9b4dfee684b55 Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Sat, 22 Jan 2011 01:51:53 +0000 Subject: [PATCH 122/463] Tunnel Manager light tweaks. --- .../resources/themes/console/light/default.css | 14 +++++++------- .../resources/themes/console/light/i2ptunnel.css | 8 ++++---- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/installer/resources/themes/console/light/default.css b/installer/resources/themes/console/light/default.css index 068801114..6e4bf38dc 100644 --- a/installer/resources/themes/console/light/default.css +++ b/installer/resources/themes/console/light/default.css @@ -45,12 +45,12 @@ label { h4 { font-size: 11pt; font-weight: bold !important; - color: #001; - text-align: center; - border: 1px solid #225; + color: #115; + text-align: left; + border: 1px solid #115; margin: 5px 0 15px 0; padding: 5px 10px; - background: #eef url(images/header.png) repeat-x center center; + background: url(images/header.png) repeat-x center center; text-transform: uppercase; letter-spacing: 0.07em; -moz-border-radius: 4px; @@ -73,7 +73,7 @@ form { textarea, input, select, button, a { -moz-box-sizing: border-box; box-sizing: border-box; - font-size: 9pt; + font-size: 8.5pt; float: left; vertical-align: middle; } @@ -160,7 +160,7 @@ hr { border: 1px solid #447; padding: 2px; margin: 4px 0 2px 0px; - font: 10pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; + font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; font-weight: bold; background: #fff; color: #003; @@ -283,7 +283,7 @@ hr { padding: 0 0 0 2px; float: left; margin: 0; - font-size: 9pt !important; + font-size: 8.5pt !important; font-weight: bold; } diff --git a/installer/resources/themes/console/light/i2ptunnel.css b/installer/resources/themes/console/light/i2ptunnel.css index f54cacfca..6eabd0663 100644 --- a/installer/resources/themes/console/light/i2ptunnel.css +++ b/installer/resources/themes/console/light/i2ptunnel.css @@ -84,13 +84,13 @@ padding: 4px; margin: 2px 0 3px 0; background-color: #005; - color: #030; + color: #292; font-family: "Lucida Console", "DejaVu Sans Mono", "Andale Mono", "Courier New", Courier, mono; border: 1px inset #002; font-size: 9pt !important; font-weight: bold; text-align: justify !important; - background: #ddf; /*url(images/tabletile.png);*/ + background: #dfd url(images/magic.png); } #tunnelListPage .footer .control { @@ -140,6 +140,6 @@ #tunnelListPage .descriptionField label, #tunnelListPage .destinationField label { text-align: right; width: 150px; - height: 24px; + height: 28px; float: left; -} +} \ No newline at end of file From b3f8025393273a9100d333b51968cf841bcb491f Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Sat, 22 Jan 2011 02:22:36 +0000 Subject: [PATCH 123/463] TUnnel Manager light festooneries. --- .../resources/themes/console/light/i2ptunnel.css | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/installer/resources/themes/console/light/i2ptunnel.css b/installer/resources/themes/console/light/i2ptunnel.css index 6eabd0663..4f1f18941 100644 --- a/installer/resources/themes/console/light/i2ptunnel.css +++ b/installer/resources/themes/console/light/i2ptunnel.css @@ -82,15 +82,19 @@ width: 100%; height: 100px; padding: 4px; - margin: 2px 0 3px 0; + margin: 2px 0 12px 0; background-color: #005; color: #292; font-family: "Lucida Console", "DejaVu Sans Mono", "Andale Mono", "Courier New", Courier, mono; - border: 1px inset #002; - font-size: 9pt !important; + border: 1px solid #225; + font-size: 8pt !important; font-weight: bold; text-align: justify !important; - background: #dfd url(images/magic.png); + background: #efe url(images/magic.png); + -moz-box-shadow: 0 0 0px 1px #7f7; + -khtml-box-shadow: 0 0 0px 1px #7f7; + box-shadow: 0 0 0px 1px #7f7; + opacity: 0.9; } #tunnelListPage .footer .control { From cb2ce5ea298e831e4515ef2bcafaf43d12e59459 Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Sat, 22 Jan 2011 03:03:42 +0000 Subject: [PATCH 124/463] Classic adjustment. --- installer/resources/themes/console/classic/console.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer/resources/themes/console/classic/console.css b/installer/resources/themes/console/classic/console.css index 1eed76faf..ae7ec3ded 100644 --- a/installer/resources/themes/console/classic/console.css +++ b/installer/resources/themes/console/classic/console.css @@ -303,7 +303,7 @@ div.main { border-top: 0; text-align: left; color: #001; - min-width: 500px; + min-width: 510px; -moz-border-radius: 0 0 3px 0; -khtml-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0; From a71372c67940e9584aec6d3a6339a5106a854934 Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Sat, 22 Jan 2011 03:14:46 +0000 Subject: [PATCH 125/463] TUnnel Manager: light button consistency fix. --- installer/resources/themes/console/light/i2ptunnel.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/installer/resources/themes/console/light/i2ptunnel.css b/installer/resources/themes/console/light/i2ptunnel.css index 4f1f18941..204e17cdf 100644 --- a/installer/resources/themes/console/light/i2ptunnel.css +++ b/installer/resources/themes/console/light/i2ptunnel.css @@ -99,6 +99,8 @@ #tunnelListPage .footer .control { margin-left: 2px; + font-family: "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + font-weight: bold; } #tunnelListPage .footer label { From dc0c97c0aef13ac0b9d5344f7a8e45c722e0accf Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Sat, 22 Jan 2011 07:16:42 +0000 Subject: [PATCH 126/463] Multifarious light tweaks. --- installer/resources/themes/console/light/console.css | 4 ++-- installer/resources/themes/console/light/default.css | 8 +++++--- installer/resources/themes/console/light/i2ptunnel.css | 5 +++++ 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 50b5cdefd..65dacbfc0 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -117,7 +117,7 @@ div.routersummary hr { border-bottom: 1px solid #99f; margin: 8px -7px 8px -7px; -moz-box-shadow: inset 0px 1px 1px 1px #fff; - -khtml-box-shadow: inset 0px 0px 1px #fff; + -khtml-box-shadow: inset 0px 1px 0px #fff; box-shadow: inset 0px 1px 1px 1px #fff; } @@ -161,7 +161,7 @@ div.routersummary h4 { border-bottom: 0 !important; font-size: 8.5pt; letter-spacing: 0.02em; - margin: -6px -6px !important; + margin: -6px -6px -7px !important; padding: 3px 3px 5px 3px; background: #ddf url(images/magic.png); text-transform: capitalize; diff --git a/installer/resources/themes/console/light/default.css b/installer/resources/themes/console/light/default.css index 6e4bf38dc..331205555 100644 --- a/installer/resources/themes/console/light/default.css +++ b/installer/resources/themes/console/light/default.css @@ -248,7 +248,9 @@ hr { border-radius: 4px; border: 1px solid #002; padding: 10px 20px; - -moz-box-shadow: inset 0px 0px 1px 0px #002; + -moz-box-shadow: inset 0px 0px 1px 1px #bbf; + -khtml-box-shadow: inset 0px 0px 1px 1px #bbf; + box-shadow: inset 0px 0px 1px 1px #bbf; background: none repeat scroll 0 0 #EEEEFF; background: #fff url(images/magic.png); border: 1px solid #444477; @@ -295,17 +297,17 @@ hr { background-color: #fff; border: 1px solid #003; padding: 5px 20px 11px 10px; - -moz-box-shadow: inset 0px 0px 0px 1px #f00; -moz-box-shadow: inset 0px 0px 1px 0px #f60; background: #fff url(images/magic.png); border: 1px solid #444477; color: #613; - } #globalOperationsPanel .control { min-width: 120px; + font-family: "Lucida Sans Unicode", Verdana, Tahoma, Helvetica, sans-serif; + font-weight: bold; } #globalOperationsPanel .control:link { diff --git a/installer/resources/themes/console/light/i2ptunnel.css b/installer/resources/themes/console/light/i2ptunnel.css index 204e17cdf..050c7b28a 100644 --- a/installer/resources/themes/console/light/i2ptunnel.css +++ b/installer/resources/themes/console/light/i2ptunnel.css @@ -101,6 +101,11 @@ margin-left: 2px; font-family: "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; font-weight: bold; + color: #001 !important; +} + +#tunnelListPage .footer .control:hover { + color: white !important; } #tunnelListPage .footer label { From 1eec4484fd6f584bced93ae92db3a74e566d4ec9 Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Sat, 22 Jan 2011 08:10:01 +0000 Subject: [PATCH 127/463] Light consistency tweak. --- installer/resources/themes/console/light/console.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 65dacbfc0..f3d991a8e 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -443,7 +443,7 @@ div.news h4 { div.confignav { padding: 15px 10px !important; margin: 15px 0 15px 0; - background: #ffe url('images/header.png') center center repeat-x; + background: url('images/header.png') center center repeat-x; -moz-border-radius: 4px; -khtml-border-radius: 4px; border-radius: 4px; From 4191eb98b065a3e818fcf02909780a8844eefbd3 Mon Sep 17 00:00:00 2001 From: duck <duck@mail.i2p> Date: Sat, 22 Jan 2011 12:12:14 +0000 Subject: [PATCH 128/463] Dutch translation updated (thanks KwukDuck) --- installer/resources/readme/readme_nl.html | 165 +++++++++++++--------- 1 file changed, 100 insertions(+), 65 deletions(-) diff --git a/installer/resources/readme/readme_nl.html b/installer/resources/readme/readme_nl.html index bd5938ef2..84388b344 100644 --- a/installer/resources/readme/readme_nl.html +++ b/installer/resources/readme/readme_nl.html @@ -1,71 +1,106 @@ <div lang="nl"> -<div align="right"> -<div class="langbox" align="right"> - <a href="/index.jsp?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a> - <a href="/index.jsp?lang=zh"><img src="/flags.jsp?c=cn" title="中文" alt="中文"></a> - <a href="/index.jsp?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a> - <a href="/index.jsp?lang=fr"><img src="/flags.jsp?c=fr" title="Français" alt="Français"></a> - <a href="/index.jsp?lang=es"><img src="/flags.jsp?c=es" title="Español" alt="Español"></a> - <a href="/index.jsp?lang=pt"><img src="/flags.jsp?c=pt" title="Português" alt="Português"></a> - <a href="/index.jsp?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a> - <a href="/index.jsp?lang=ru"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a> - <a href="/index.jsp?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a></div> -</div></div> -<div class="welcome"><h2>Welkom bij I2P!</h2></div> -<p>Als je net I2P opgestart hebt, zullen de 'Active:' (Actieve) getallen aan de linkerkant in de komende minuten stijgen, en je zal een "Shared clients" (Gedeelde clients) lokale bestemming zien staan aan de linkerkant (indien niet, <a href=#trouble>zie hieronder</a>). Eenmaal je deze bestemming ziet, kan je:</p> -<ul> - <li><b>surfen naar "eepsites"</b> - op I2P zijn er anonieme websites - stel je browser in om de <b>HTTP proxy op 127.0.0.1, poort 4444</b> te gebruiken, en surf vervolgens naar een eepsite:<br> - <ul class="links"> - <li><a href="http://forum.i2p/">forum.i2p</a>: een beveiligde en anonieme verbinding naar <a href="http://forum.i2p2.de/">forum.i2p2.de</a></li> - <li><a href="http://www.i2p2.i2p/">www.i2p2.i2p</a> en de kopie <a href="http://i2p-projekt.i2p">i2p-projekt.i2p</a>: - beveiligde en anonieme verbindingen naar <a href="http://www.i2p2.de/">www.i2p2.de</a></li> - <li><a href="http://eepsites.i2p/">eepsites.i2p</a>: een anoniem gehoste zoekmachine voor eepsites</li> - <li><a href="http://ugha.i2p/">ugha.i2p</a>: ugha's eepsite, een wiki die door iedereen aangepast kan worden, met veel links</li> - <li><a href="http://fproxy.tino.i2p">fproxy.tino.i2p</a>: proxy naar het Freenet-netwerk</li> - <li><a href="http://echelon.i2p">echelon.i2p</a>: software - archive and information for I2P</li> - <li><a href="http://paste.i2p2.i2p">paste.i2p2.i2p</a>: anonieme Pastebin</li> - </ul><br> - Er zijn nog veel meer eepsites - volg gewoon de links vanaf diegene die je ziet. Voeg de beste toe aan je favorieten, en bezoek ze regelmatig!</li> -<ul><li class="tidylist"><b>surfen op het web</b> - er is momenteel een HTTP "outproxy" in I2P, vastgehaakt aan je eigen HTTP proxy op poort 4444 - stel eenvoudigweg de proxy van je browser in om deze te gebruiken (zoals hierboven voor eepsites) en ga naar een willekeurige normale URL - je verzoeken voor websites worden rondgestuurd via het I2P-network.</li> - <li class="tidylist"><b>bestanden versturen</b> - er is een geintegreerde <a href="i2psnark/">aangepaste versie</a> van de - <a href="http://www.klomp.org/snark/">Snark</a> <a href="http://www.bittorrent.com/">BitTorrent</a> - client.</li> - <li class="tidylist"><b>anonieme e-mail gebruiken</b> - postman heeft een e-mailsysteem gecreerd, compatibel met normale e-mail - clients (POP3 / SMTP) dat toelaat e-mail binnen I2P evenals e-mail van en naar het gewone internet te versturen. - Maak je eigen account op <a href="http://hq.postman.i2p/">hq.postman.i2p</a>. - In i2p zit een gebundelde <a href="/susimail/susimail">susimail</a>, - een webgebaseerde anonimiteits-georienteerde pop3/smtp-client ingesteld om postman zijn e-mailservices te gebruiken.</li> - <li class="tidylist"><b>anoniem chatten</b> - start je eigen IRC-client op en verbind met - de server op <b>127.0.0.1 poort 6668</b>. Dit wijst naar een of twee anoniem gehoste - IRC servers, maar zowel jij als zei weten niet waar de andere is.</li> - <li class="tidylist"><b>anoniem bloggen</b> - neem een kijkje bij <a href="http://syndie.i2p2.de/">Syndie</a></li> - <li class="tidylist">en veel meer</li> +<div align="right"> + <div class="langbox" align="right"> + <a href="/?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a> + <a href="/?lang=zh"><img src="/flags.jsp?c=cn" title="中文" alt="中文"></a> + <a href="/?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a> + <a href="/?lang=fr"><img src="/flags.jsp?c=fr" title="Français" alt="Français"></a> + <a href="/?lang=es"><img src="/flags.jsp?c=es" title="Español" alt="Español"></a> + <a href="/?lang=pt"><img src="/flags.jsp?c=pt" title="Português" alt="Português"></a> + <a href="/?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a> + <a href="/?lang=ru"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a> + <a href="/?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a></div> + </div> +</div><a name="top"></a> +<div class="welcome"><h2>Welkom op het Invisible Internet</h2></div> +<ul class="links"><li class="tidylist"><b>Opstarten…</b><br>Als je zojuist I2P gestart hebt zal het nummer van <i>Actieve Peers</i> onder de <i>Peers</i> sectie in het linker zijpaneel toenemen binnen de komende minuten, tevens zal je een <i>Lokale bestemming</i> genaamd <i>Gedeelde Clients</i> zien, en mogelijk andere clients en servers, afhankelijk van de I2P configuratie (als dit niet het geval is, zie 'problemen oplossen' <a href="#trouble">hier onder</a>). Deze <i>Lokale bestemmingen</i> bieden verbindingen aan op verschillende poorten (en soms protocollen) naar het I2P netwerk waardoor diensten als BitTorrent, email, webproxy en andere diensten zullen werken. De <a href="/netdb">Netwerk Database</a> geeft een indicatie van alle bekende peers op het netwerk. Daarnaast kunnen bestaande <a href="/peers">Peer Connecties</a> gemonitord worden en bestaande <a href="/tunnels">Tunnels</a> en hun status worden bekeken. Meer informatie is beschikbaar op de <a href="/help">hulp pagina</a>.</li> + +<li class="tidylist"><b>Netwerk integratie</b><br> De eerste keer dat I2P start duurt het mogelijk enkele minuten om de router te integreren in het netwerk en meerdere peers te vinden om de verbinding te optimaliseren. Als I2P opstart, bij een normale werking, geeft de tunnel gereedheid indicator (direct boven het <i>Lokale bestemmingen</i> gedeelte in het zijpaneel) mogelijk de melding "Tunnels Geweigerd"; dit is normaal en is geen reden voor zorgen. Zodra de <i>Lokale bestemmingen</i> eenmaal aangegeven worden met groene sterren zijn er veel mogelijkheden voor het gebruik van I2P, hieronder worden enkele voorbeelden geïntroduceerd.</li></ul> + +<h3>Diensten op I2P</h3> +<ul class="links"> + +<li class="tidylist"><b>Invisible Internet & Public Web Browsing</b><br>Op I2P kan je toegang verkrijgen tot anonieme websites (eepsites) en andere diensten (zoals; SSH over I2P, IRC, Jabber etc.), daarnaast heb je ook de mogelijkheid om je eigen dienst aan te bieden. Je kan ook anoniem toegang krijgen tot het normale Internet via de ingebouwde web proxy (outproxy). <a href="http://www.i2p2.de/htproxyports.html" target="_blank">Configureer je browser</a> voor het gebruik van de HTTP proxy op <code>127.0.0.1 poort 4444</code>, waarna je naar zowel eepsites als normale, onversleutelde <code>http://</code> websites kan surfen. Voor een vooraf ingestelde browser kan je <a href="http://echelon.i2p/i2pfox/">I2PFox</a> proberen, dit is een speciaal ontworpen versie van Firefox met extra veiligheid en speciaal ontworpen voor gebruik met I2P. Als je een aanpassing wilt maken aan de outproxy of deze wilt uitschakelen kan je de 'client tunnel' voor <code>false.i2p</code> onder het <i>Outproxies</i> gedeelte in de <a href="/i2ptunnel/edit?tunnel=0" target="_blank">I2P HTTP Proxy Tunnel Editor</a>. In het "Interessante websites" gedeelte <a href="#eepsites">hier onder</a> staat een lijst met een paar van de bekende sites die op I2P gehost worden.</li> + +<li class="tidylist"><b>Anonieme E-Mail</b><br>Postman's I2P email systeem kan worden benaderd via <a href="/susimail/susimail">de ingebouwde email client</a> +(susimail) of door het gebruik van elke andere normale email client die ondersteuning biedt voor SMTP en POP3. +Deze accounts kunnen tevens email versturen en ontvangen naar en van het normale Internet. Voor een account, bezoek <a href="http://hq.postman.i2p/" target="_blank">hq.postman.i2p</a>. Daarnaast is er <a href="http://i2pbote.i2p/" target="_blank">I2P-Bote</a>, dit is een nieuw end-to-end versleuteld email systeem zonder centrale servers welke een webinterface en geïntegreerd adressen boek bied. Het is ontwikkeld door HungryHobo en kan worden geïnstalleerd als <a href="#plugins">plugin</a>.</li> + +<li class="tidylist"><b>Anonieme Bestands Overdracht</b><br><a href="/i2psnark/" target="_blank">I2PSnark</a> is geïntegreerd in I2P en biedt anonieme en versleutelde <a href="https://secure.wikimedia.org/wikipedia/en/wiki/BitTorrent_%28protocol%29" target="_blank">BitTorrent</a> overdracht aan. Tevens is er een bittorrent client door Sponge ontwikkeld genaamd <a href="http://bob.i2p/Robert.html">Robert</a>, geschreven in Python. Er is ook een port van <a href="http://www.emule-project.net/" target="_blank">eMule</a> voor I2P genaamd <a href="http://echelon.i2p/imule/">iMule</a> [Ontwikkelaars gezocht!], dit is een anonieme en veilige implementatie van een <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Gnutella" target="_blank">Gnutella netwerk</a>, toegankelijk op <a href="http://echelon.i2p/i2phex/" target="_blank">I2Phex</a> [onderhouden door Complication, ontwikkelaars gezocht!], daarnaast zijn er nog faciliteiten voor het aanbieden van bestanden via de browser.</li> + +<li class="tidylist"><b>Anonieme Chat</b><br>Start je IRC Client (bijv. mIRC, Chatzilla, Pidgin, XChat) +en maak verbinding met de <a href="irc://127.0.0.1:6668/i2p">server</a> op <code>127.0.0.1 port 6668</code>. Je hoeft geen proxy in te stellen in je IRC client; I2P bied een lokale IRC tunnel aan (geconfigureerd in je IRC client als IRC server of host op afstand. Je lokale I2P IRC tunnel op <code>localhost:6668</code> zal je verbinden met een van de twee IRC servers die gehost worden op I2P door Postman en Badger, geen van beide partijen weet echter wat de identiteit of IP van de ander is, en je moeder, Internet Provider of overheid kan deze gesprekken niet onderscheppen! Eenmaal verbonden zijn <code>#i2p-help</code>,<code>#i2p</code>,<code>#i2p-chat</code> en <code>#i2p-dev</code> onder meer een aantal kanalen die je mogelijk zou willen bezoeken (/join). Er is ook een <a href="http://echelon.i2p/qti2pmessenger/">Instant Messenger</a> gebaseerd op I2P voor ongecensureerde en onaftapbare anonieme chat, alsmede alternatieve IRC servers, Jabber servers, website-based chat, en meer. En, je bent natuurlijk vrij om je eigen servers op I2P te draaien in welke variant dan ook, of als ontwikkelaar zijnde je eigen <a href="http://www.i2p2.i2p/applications.html" target="_blank">I2P applicaties</a> (zowel <a href="https://secure.wikimedia.org/wikipedia/en/wiki/User_Datagram_Protocol" target="_blanK">UDP</a> en <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Transmission_Control_Protocol" target="_blank">TCP</a> protocollen worden <a href="http://www.i2p2.i2p/techintro.html#op.transport" target="_blank">ondersteund</a>), en <a href="http://www.i2p2.i2p/streaming.html" target="_blank">realtime streaming</a> behoort ook tot de mogelijkheden. Ook bieden we volledige toegang tot de <a href="http://docs.i2p2.de/javadoc/" target="_blank">op Java gebaseerde API</a>.</li> + +<li class="tidylist"><b>Forums & Blogging</b><br>Als je opzoek bent om je eigen blog of forum te draaien ben je misschien geïnteresseerd in <a href="http://syndie.i2p2.de/" target="_blank">Syndie</a>, een distributed forum en blogging platform voor I2P [Ontwikkelaars gezocht!]. Er is ook een I2P plugin van het op Java gebaseerde <a href="http://pebble.sourceforge.net/" target="_blank">pebble</a> blogging platform geport naar I2P door zzz, beschikbaar op <a href="http://i2plugins.i2p/" target="_blank">i2plugins.i2p</a>. En, natuurlijk zullen alle normale blogging, forum en CMS software werken op I2P, wel word je geadviseerd extra veiligheidsmaatregelen te nemen bij het opzetten en alle gerelateerde software (bijv. PHP, MySQL, Python, Apache) up-to-date te houden en goed beveiligd! Ook zijn er reeds een aantal forums op I2P in verschillende talen; zie <a href="#eepsites">hier onder</a> voor enkele suggesties.</li> + +<a name="plugins"></a><li class="tidylist"><b>Plugins voor I2P</b><br>Breid de gebruiks mogelijkheden van I2P uit door het installeren van plugins … blogging, chatting, file sharing en andere plugins zijn al geschreven of geport en wachten op <a href="http://i2plugins.i2p/plugins/" target="_blank">installatie</a>! Surf naar de plugins en gerelateerde info op <a href="http://i2plugins.i2p/" target="_blank">i2plugins.i2p</a>. Als je een <a href="http://i2plugins.i2p/developers/" target="_blank">ontwikkelaar</a> bent is er een compleet taal-agnostisch framework beschikbaar voor het schrijven van eigen plugins, geleverd met <a href="http://www.i2p2.i2p/plugins.html" target="_blank">documentatie</a>; I2P plugins kunnen geprogrammeerd worden in elke taal.</li> </ul> -<h2>Wil je je eigen eepsite?</h2> +<h3>Anoniem en versleutelde Web Hosting op I2P</h3> +<ul class="links"> -<p>We hebben aan I2P software toegevoegd om je je eigen eepsite te laten hosten - een -<a href="http://jetty.mortbay.org/">Jetty</a> webserver, die luistert op -<a href="http://127.0.0.1:7658/">http://127.0.0.1:7658/</a>. Plaats gewoonweg je bestanden in -de <code>eepsite/docroot/</code> map (of plaats standaard JSP/Servlet <code>.war</code> -bestanden onder <code>eepsite/webapps</code>, of standaard CGI scripts onder <code>eepsite/cgi-bin</code>) -en ze zullen verschijnen. Na een <a href="/i2ptunnel/">eepsite tunnel</a> opgestart te hebben die er naar wijst, -zal je eepsite zichtbaar zijn voor anderen. -Gedetailleerde instructies voor het starten van je eepsite staan op -<a href="http://127.0.0.1:7658/">je tijdelijke eepsite-pagina</a>. -</p> +<li class="tidylist"><b>Ready to Roll!</b><br> I2P komt met een ingebouwde, ready-to-go web server voor het hosten van je eigen anonieme website (eepsite) op het I2P netwerk: een <a href="http://jetty.mortbay.org/" target="_blank">Jetty</a> server die luistert op <a href="http://127.0.0.1:7658/" target="_blank">http://127.0.0.1:7658/</a>. Om je eigen inhoud te hosten plaats je simpelweg alle bestanden in de <code>eepsite/docroot/</code> directory (of plaats elke standaard JSP/Servlet .war bestanden onder <code>eepsite/webapps</code>, + of standaard CGI scripts onder <code>eepsite/cgi-bin</code>) en ze zullen zichtbaar zijn. + Je kan ook een alternatief webserver platform voor I2P gebruiken om de ingebouwde server te vervangen of te draaien op een andere tunnel.</li> +<li class="tidylist"><b>Start je Tunnel</b><br> + Na het starten van de vooraf ingestelde <a href="/i2ptunnel/" target="_blank">I2P Webserver Tunnel</a>, + zal je eepsite zichtbaar zijn (maar niet vindbaar) voor anderen. Gedetaïlleerde instructies voor het starten van je eepsite, het registreren van een.i2p domein en promotie van je website aan anderen zijn toegankelijk via je eigen I2P webserver op <a href="http://127.0.0.1:7658/help/" target="_blank">http://127.0.0.1:7658/help/</a>.</li></ul> -<h2><a name="trouble">Problemen</a></h2> +<a name="eepsites"></a> + <h3>I2P-Hosted Sites of Interest</h3> + <ul class="links"> + <li class="tidylist"><b>Invisible Internet Project (I2P) Officiële Website</b><br><a href="http://www.i2p2.i2p/" target="_blank">www.i2p2.i2p</a> en + de mirror <a href="http://i2p-projekt.i2p/" target="_blank">i2p-projekt.i2p</a>: Veilige en + anonieme verbindingen naar <a href="http://www.i2p2.de/" target="_blank">www.i2p2.de</a>. Er is ook een officiële mirror actief op <a href="http://geti2p.net/" target="_blank">geti2p.net</a>. Als je meer wilt weten over hoe I2P werkt of hoe je mee kan doen is dit de website waar je terecht kan!</li> + <li class="tidylist"><b>I2P Community Forums</b><br><a href="http://forum.i2p/" target="_blank">forum.i2p</a>: Een veilige + en anonieme verbinding naar <a href="http://forum.i2p2.de/" target="_blank">forum.i2p2.de</a>, een online forum waar ontwikkelaars en gebruikers problemen bespreken en ideëen uitwisselen gerelateerd aan I2P en geassocieerde onderwerpen, en <a href="http://zzz.i2p/" target="_blank">zzz's developer forums</a> voor zowel ontwikkelaars als eindgebruikers.</li> + <li class="tidylist"><b>I2P Anonieme Pastebin</b><br><a href="http://paste.i2p2.i2p/" target="_blank">paste.i2p2.i2p</a>: Veilige en + anonieme paste dienst die het anoniem delen van tekst en tekst-based code over I2P.</li> + <li class="tidylist"><b>Echelon's I2P Resources</b><br><a href="http://echelon.i2p/" target="_blank">echelon.i2p</a>: I2P software + archief met broncode (waar toegestaan), informatie over I2P, inclusief een <a href="http://echelon.i2p/I2Pguide/index.html" target="_blank">beginner's guide</a> en pre-release ontwikkelaars versies van I2P voor de avonturiers om te proberen.</li> + <li class="tidylist"><b>Ugha's Wiki</b><br><a href="http://ugha.i2p/" target="_blank">ugha.i2p</a>: Een open wiki die iedereen kan bewerken met veel informatie over I2P, help voor beginners en meer links voor het I2P netwerk en meer.</li> + <li class="tidylist"><b>I2P-to-Freenet Proxy</b><br><a href="http://fproxy.tino.i2p/" target="_blank">fproxy.tino.i2p</a>: + Neem een kijkje in de wereld van het <a href="http://freenetproject.org/" target="_blank">Freenet</a> netwerk met Tino's I2P-to-Freenet proxy.</li> + <li class="tidylist"><b>The Planet (on I2P)</b><br><a href="http://planet.i2p/" target="_blank">planet.i2p</a>: Een RSS aggregator site die nieuwswaardigheden en evenementen rondom I2P verzamelt en publiceerd in één plek. Een goede site om te bezoeken om de community aan het werk te zien!</li> + <li class="tidylist"><b>Eepsite Search Engine</b><br><a href="http://eepsites.i2p/" target="_blank">eepsites.i2p</a>: Een + anonieme zoek machine.</li> + <li class="tidylist"><b>I2P Network Health</b><br><a href="http://stats.i2p/cgi-bin/dashboard.cgi" target="_blank">stats.i2p</a>: Bekijk verschillende aspecten van het netwerk en de prestaties met deze I2P netwerk monitor site, gedraaid door zzz.</li> + <li class="tidylist"><b>Discover I2P</b><br>Er zijn nog vele andere eepsites, volg eenvoudig de links van diegene die je ziet en sla je favorieten op en bezoek ze regelmatig!<br></li> + </ul> -<p>Wees geduldig - I2P kan wat langzaam zijn bij het opstarten, omdat het nog andere gebruikers zoekt. -Als, na 30 minuten, je Active: (Actieve) verbonden/recent verbonden aantallen lager zijn dan 10 verbonden gebruikers, -zou je best poort 8887 op je firewall openen voor een betere verbinding. -Als je in het geheel geen eepsites kan zien (zelfs <a href="http://www.i2p2.i2p/">www.i2p2.i2p</a> niet), -controleer dan nog eens of de proxy van je browser op 127.0.0.1 poort 4444 staat. -Je zou best ook de informatie controleren op de -<a href="http://www.i2p2.i2p/">I2P website</a>, of plaats een bericht op het -<a href="http://forum.i2p/">I2P discussie forum</a>, of kom langs bij - <a href="irc://127.0.0.1:6668/i2p-help">#i2p-help</a>, <a href="irc://127.0.0.1:6668/i2p-nl">#i2p-nl</a>, <a href="irc://127.0.0.1:6668/i2p">#i2p</a> of <a href="irc://127.0.0.1:6668/i2p-chat">#i2p-chat</a> - op IRC bij de kanalen <a href="irc://irc.freenode.net/#i2p">irc.freenode.net</a>, irc.postman.i2p of irc.freshcoffee.i2p (ze linken allemaal door naar elkaar).</p><hr /> -</div> +<h2>Problemen oplossen & Verdere hulp</h2><a name="trouble"></a> + <ul class="links"> + <li class="tidylist"><b>Wees geduldig!</b><br>I2P is mogelijk langzaam met het integreren in het netwerk als je deze de eerste keer start, de router probeert nu meerdere peers te vinden. Hoe langer de I2P router actief is, hoe beter de prestaties zullen worden, probeer dus de router zo lang mogelijk aan te laten, 24 uur per dag indien mogelijk! Als, na 30 minuten, je <i>Actieve: [connected/recent]</i> teller nogsteeds minder dan 10 peers heeft, of het totaal nummer van <i>Geintegreerde</i> peers minder is dan 5, zijn er verschillende dingen die je kan controleren op problemen: + </li> + + <li class="tidylist"><b>Controleer je configuratie & Bandbreedte toewijzing</b><br>I2P functioneert het beste als je nauwkeurig de snelheid van je netwerk in het <a href="/config">bandbreedte configuratie gedeelte</a>. Standaard is I2P ingesteld op redelijk conservatieve waarden die veelal niet representatief zijn voor de meeste verbindingen, dus neem de tijd om deze instellingen juist aan te passen waar nodig. Hoe meer bandbreedte je toewijst, <i>specifiek</i> upstream bandbreedte, hoe meer je voordeel zult behalen van het netwerk. + </li> + + <li class="tidylist"><b>Firewalls, Modems & Routers</b><br>Waar mogelijk, controleer dat I2P/Java toegestaan is wederzijds poort toegang van het Internet heeft door het correct instellen van de modem/router/firewall. +Als je achter een verbiedende firewall zit maar wel onbeperkt uitgaande toegang, kan I2P alsnog functioneren; je kan inbound toegang uit zetten en vertrouwen op <a href="http://www.i2p2.i2p/udp.html" target="_blank">SSU IP Address Detection</a> (<a href="https://secure.wikimedia.org/wikipedia/en/wiki/Hole_punching" target="_blank">firewall hole punching</a>) om verbinding te maken naar het netwerk, je netwerk status in het zijpaneel zal nu aangeven "Netwerk: Firewalled". Voor optimale prestaties, zorg er voor dat I2P's <a href="/config">extere poort</a> zichtbaar is vanaf het Internet (zie hier onder voor meer informatie).</li> + + <li class="tidylist"><b>Controleer je proxy instellingen</b><br>Als + je helemaal geen eepsites kan zien (zelfs niet <a href="http://www.i2p2.i2p/" target="_blank">www.i2p2.i2p</a>), + zorg er dan voor dat je browser's proxy is ingesteld op http proxy (<i>niet</i> https, <i>niet</i> socks) via <code>127.0.0.1 poort 4444</code>. Als je hulp nodig hebt is er een <a href="http://www.i2p2.i2p/htproxyports.html" target="_blank">handleiding</a> voor het configureren van je browser voor gebruik met I2P, ook <a href="http://www.i2p2.de/htproxyports.html" target="_blank">beschikbaar</a> op het normale Internet. </li> + + <li class="tidylist"><b>Controleer je Logs</b><br><a href="/logs">Logs</a> kunnen je helpen met problemen oplossen. Je kan mogelijk fragmenten in een <a href="http://forum.i2p/viewforum.php?f=10" target="_blank">forum</a> posten voor hulp, of misschien <a href="http://paste.i2p2.i2p/" target="_blank">plakken</a> en als referentie link laten zien op IRC voor hulp.</li> + <li class="tidylist"><b>Verifieer dat Java up-to-date is</b><br>Zorg er voor dat Java up-to-date is [versie 1.6 aanbevolen en vereist voor sommige functies]. Als je geen Java geinstalleerd hebt wil je waarschijnlijk een implementatie van de JRE (<a href="https://secure.wikimedia.org/wikipedia/en/wiki/JRE" target="_blank">Java Runtime Engine</a>); als je een ontwikkelaar bent is de <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Java_SDK" target="_blank">SDK</a> mogelijk ook interessant, en misschien <a href="http://ant.apache.org/" target="_blank">Apache Ant</a> die we gebruiken om de I2P Java binaries te compileren. + </li> + + <li class="tidylist"><b>Problemen met draaien op verouderde hardware</b><br>[Linux/Unix/Solaris] Als je de router niet kan starten met <code>i2p/i2prouter start</code> probeer het <code>runplain.sh</code> script in de zelfde directory. Root rechten zijn normaliter niet vereist voor het draaien van I2P. Als je de <a href="http://www.i2p2.i2p/jbigi.html" target="_blank">jBigi library</a> moet compileren (welke in zeldzame gevallen nodig is), raadpleeg de bijhorende documentatie, bezoek het forum of kom eens langs op ons <a href="irc://127.0.0.1:6668/i2p-dev">IRC developer kanaal</a>. + + <li class="tidylist"><b>Inschakelen Universal Plug and Play (UPnP)</b><br>Mogelijk ondersteunt je modem of router <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Universal_Plug_and_Play" target="_blank">Universal Plug & Play</a> (UPnP), welke automatische port-forwarding verzorgt. Zorg er voor dat UPnP ondersteuning voor I2P is aangezet op de <a href="/config">configuratie pagina</a>, probeer daarna ook UPnP op je modem/router in te schakelen en eventueel ook op de computer. Herstart nu de <a href="/">I2P router</a>. Als dit succesvol lukt zal I2P de status "Network: OK" weergeven in het zijpaneel als de eerste verbindings tests gelukt zijn. + </li> + <li class="tidylist"><b>Port Forwarding</b><br>Open <a href="/config">I2P's poort</a> op je modem, router en/of firewall(s) voor betere connectiviteit (bij voorkeur zowel UDP als TCP). Meer informatie over portforwarding kan gevonden worden op <a href="http://portforward.com/" target="_blank">portforward.com</a>, in toevoeging tot ons forum en IRC kanalen hier onder vermeld. Merk op dat I2P geen ondersteuning bied voor Internet toegang via http en socks proxy [patches welkom!]. + </li> + <li class="tidylist"><b>Online support</b><br>Mogelijk wil je ook + de informatie bekijken op de <a href="http://www.i2p2.i2p/" target="_blank">I2P website</a>, + berichten plaatsen op het <a href="http://forum.i2p2.i2p/" target="_blank">I2P discussion forum</a>, + of langs komen in + <a href="irc://127.0.0.1:6668/i2p-help">#i2p-help</a>, <a href="irc://127.0.0.1:6668/i2p">#i2p</a> or <a href="irc://127.0.0.1:6668/i2p-chat">#i2p-chat</a> op I2P's Internet IRC netwerk (<code>irc.postman.i2p</code> or <code>irc.freshcoffee.i2p</code>). Deze kanalen zijn tevens beschikbaar buiten I2P's anonieme versleutelde netwerk via <a href="irc://irc.freenode.net/i2p">Freenode IRC</a>.</li> + +<li class="tidylist"><b>Bugs melden</b><br>Als je een bug wil melden, maak een ticket aan op <a href="http://trac.i2p2.i2p/" target="_blank">trac.i2p2.i2p</a>. Voor ontwikkelaar-gerelateerde discussies, bezoek <a href="http://zzz.i2p/" target="_blank">zzz's developer forums</a> of bezoek het <a href="irc://127.0.0.1:6668/i2p-dev">developer kanaal</a> op I2P's IRC netwerk. Ontwikkelaars kunnen de broncode doorbladeren op <a href="http://stats.i2p/cgi-bin/viewmtn/" target="_blank">zzz's mtn repository viewer</a>, <a href="http://i2host.i2p/cgi-bin/view/branch/changes/i2p.i2p" target="_blank">Sponge's instance</a>, of via <a href="http://trac.i2p2.i2p/browser" target="_blank">trac.i2p2.i2p</a>. We gebruiken hoofdzakelijk <a href="http://www.i2p2.i2p/monotone.html" target="_blank">monotone</a> om de broncode bij te beheren.</li> + +<li class="tidylist"><b>Raak betrokken!</b><br>I2P word ontwikkeld en onderhouden door hoofdzakelijk ongefinancierde en vrijwillige community leden. We accepteren graag <a href="http://www.i2p2.i2p/donate.html" target="_blank">donaties</a>, welke zullen besteed aan essentiele hosting en administratie kosten. We hebben <a href="http://www.i2p2.i2p/bounties.html" target="_blank">contante beloningen</a> voor aspecten van I2P voor ontwikkelaars welke graag mee willen ontwikkelen, we zijn altijd opzoek naar meer <a href="http://www.i2p2.i2p/newdevelopers.html" target="_blank">Java coders</a>, <a href="http://www.i2p2.i2p/newtranslators.html" target="_blank">vertalers</a>, promoters en gebruikers om I2P te helpen groeien. Hoe groter het I2P netwerk, hoe meer iedereen van de voordelen profiteert, simpelweg al je vrienden vertellen over I2P en ze helpen het te installeren is al een grote hulp. Voor meer informatie over hoe je betrokken kan raken, bezoek de <a href="http://www.i2p2.i2p/getinvolved.html" target="_blank">vrijwilligers pagina</a> op de website.</li> +</ul><div class="topness"><a href="#top">[Naar Boven]</a></div> +<div class="footnote"><hr>Document geupdate: December 2010.</div> From cf1cf9e7385f43267c9e060e9a56b3d36a2a294a Mon Sep 17 00:00:00 2001 From: mathiasdm <mathiasdm@mail.i2p> Date: Sat, 22 Jan 2011 14:28:53 +0000 Subject: [PATCH 129/463] New trayicon image (thanks, dr|z3d). --- apps/desktopgui/resources/images/logo.png | Bin 0 -> 34366 bytes .../src/net/i2p/desktopgui/TrayManager.java | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 apps/desktopgui/resources/images/logo.png diff --git a/apps/desktopgui/resources/images/logo.png b/apps/desktopgui/resources/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ad89a98643d2fd0a323a9beadd1a70f05de9d159 GIT binary patch literal 34366 zcmZU3cQl;Q^Y^oBt=@YldJw%uSwfWPB}MNwN(9mEB8f<}5G^`E^j;FeDnWt}CAwWD zL|=We*6aJ8^S<Z%JHO|gd+zhcJagwWcjnGBb0^N&P@963l@tH~3SAvdQvd+nyn+B? z=*?vP{Il!LMDk3>!XE%Ad;c>)1HPY~0e~CO)l@eR&e^fCh-V)N!B>tdzHl3z{Tm@B z{GfwxzDQG-k%5Pioe#9a{@VL*w@z{_Qk-N*8@A5l$H~zLErO^gbE{EvQ|Trnbwst_ z^30|STcnFhrtrUA^9*v^4}0PIwes*99(Wco`fEf*Cp5C|$)bwQ)I<2xncc%h5%irB z0;0UT`ypFF<h>E&GJh=)hoAR-74uphLh<Q^ABe^W_*5`gv_kx6?LW>G%CCHoD);X( z+gngFzh>Ywvq-OG7u+Rt@Fj6z_#^`taM`@X&UYCZ*tB<|ylb=_yV$75vDmbMl7LRv zxji$e7Y7FSu((Z;jE&8o{E+kHpDiyfc|-(n@(5*&iyObtwiBwhgV^|deR9&s4z+(u zvs(!;vwXp^4E@BHuYS67{``l9UG~e91dGX?v@5SiNuf<5&L8=x50i&DxTB13dwYL- zRPGfX;j_1xaaL&%b_eJm$Y(eEdC{`#oJZ$a40np4ee}rZtSLMxvhYn+OjJ}%CS`%r zvZ$}O_f@5L#x?d&b!+-*14ozuAcNV38<sR0J^tC~=yz~kU~V~IIdJw_J4oz{598rE ziB8Guwe|H2c(G$Rel@99eCK;(kPSdiWvA*nKMVI;JTCkBH~PtwHp;Z0>prj+ZI!PZ zgDn%uT-gZy&?k)Vvc*Ge&)>c3F>(t!%4)w2^!MlC!=^`6_RszM7k0AIAtj69)=8lO zcGT5(*p-7R#bR=-t*pWdje}RIg0?N%Zvk3bdDxuQHT<s^&OQ!!LG~Xgg9g!zh>BmI zTX&|4_u?EMeJ%_-VVT__W>>&+2QxIk+&kR=HQaHMuXGj9!2~!tjdpx6JhQQ}yH*qx z?H~%GlmX3lDmzOTCmT|!3rP2T*>&!g@s^+{dw6iS>6?L#bWuX|ieX4{u-4UAOZnA1 zw86J#(@#TCT3lP^F9vW%=IK>KXG59FLK$)ePps8lT8Xo>hjMCbM`KKbPQ7>_@rilS zg@wFNP;)`0rMA~;N)>f2_}mJieE3R}%gOcN3w!q#4DZaG<=)qtfKX<oa4-~_)Qv=% z94D9t4s`NA4MY1{)>H~C2rp8hA1CCceR}?dcxcG1u1SXE-MiK&5&?SU=9Gz?-`)gX z`2T&rd3b!xCf{Bos-+~=Qe12lDVD~0@p^wW`&HIc8?j9jz***+J3c8l7QetlOejdf z&Gjd~c<zO<h6+YrY}&^~1rwVVI0TQNTWoERB9NAzzR^9`?X>E|Y<p$_cGYm21@o@f zman+9d&|{KcWa!(CiddBwDUuGvN<kd(x&pe562S{ht5tCdfyi(IjK<DKaF><(gj`; z=nR-X(2o@T{l|_W^NDOsV==l`8l!><GCbqJ62j73AapbesXyGG<eIAvk46y7``X4d zH~(67;^iHX%+-u)I3BsTJObNli)LQ@&Af4BbZu4Yi=JlMDCeEvNE`V}+56k+v3+px zt?|>sQa2r5WJGN=KFyF7<84fZGZ<>NvY^5_xGWx^Bwi+(_&sMOeR=+h4f8u;+CH#( z%%t)87e9r7e>|eChel>*zTx%7J(63YIRgXvSL%0DBf?uSw=d*&_br|+Mk>f23{@RG z)Ssu*Ek|mMg}HN{FM1K}MRj?6c_FeL1*`Jfz#2s(TWoAs$f{olyZAS9Ausp4$gQll zz2%dZBo#uBX$gt0-JT!LHF`6}w^nA~yRk`YJvY;gva;*eUHg1$0l8DZ;C~CgY68;z z)3?x<v@H*^Z`{1#&;H>^Cnq*L{b_3hC${(Ji}Y)mGLPBhaCn334+Cn+N(3_eABIpW zg5YUEpxy1XThUx;wL1Aij3zzE{&!+zQ^o^e?)<I`uG!9oDHaI)%Sd$x{Zv=*CRs9< zQY^U)uNmqr0un*<Y7lyPVnb#BUy5rVf|I5^?hvCVRo%BE5d+f^_Fyn3eKW$gitd8O zI`>|+Op?9-R`H=7Tz4MR!b)ST4Ym(BF86i2gm%eT1rw^bk3Y&fI3Rnrhx3hIUBl)y zsq%wWpN8AjG9M#RpD4U#i;3_Yg*H%lhm>h3r&R~3=){UF{MNvaI=Imu@D%&VNK5_J z%Ovfr4dcbmclXe_FS5s50A`MFhf`iJ*0#yWU|RWIfom!HcxkF|#>9NA3|FjWmub0L zeOrHLWPmRfE@6J`k#r~;MKh;?8Hlrm3mS0Na8sM8%E^IhvZKC#pBIy-7k&t$dnb~1 zAxjStFI0NgKD6#7IJdT1`nuM)s_W?;v51+&$hV=Y0ek)u3IX@DPk5`lNd7(_uiA|2 z(q)_T)S|*E-MfU~=TsF8KZ+s7Sh+vuUlT7yUMhJL_8a&E`+5chZ5tq;=J4h=F*195 zbm7?t%i&)m-xd#T=f?aGR+zXmlzKKgUhnHQvHoe<&Al<J|Iasw1RFQVFR(q+up=aw z{DZt_Y|J4uyZ!g`)Lc`3dT_+mKSpac5j2;TY-I^BxRD?7+i%2w!mPGQMuQla!HK7J zZkQ74+6bw$uwG=G-T!aSG}z*gA>RvL`XD&IK+4Tw%<I&mVvElCT^>W`G(#sUh&{ET z0{hk72WtC=u+#H^yO%p&%dzZr?pn^Lc5T=Yoignct-Q=GI}wFYwD0)qmXE&)t`o;> zi1GhO-egr*PYrtJW!t^1z9qb-{aecYWWBQQ(D`Z}4t<8UZdA&)1Y%;CY{eL1&!(rd z_YaG?QRhcp6jxERMpq&kLxJ+L3yRp)zw?Cf-6=a~OsiEV$LobrwC{1%BX8<Js>+PJ z+XNP1vUfvuEnmAg($m%%njQU0?^}h>g*ywoD96_zQF31^3xR^95QW4xYa#2WvxALp zaE8~~zcBTGa7rYRY4)E;Gw9~PU7fcqM}{xiaR*G5AE(X4nsVJ_nfCNBk86F;UTlwk znd{dIrwfeSE~0AmKa!AFidpaa&c(pr;2p}abf0Go=cG<grS=$|X*$a$1X-#IGO__l z$Q+kD&F&1MhDW;ulxt^>d7M@^mS+yiqKQ27;ciH-kvZmnt6hQeph`NcCL4?`1Re;k zM4JvuM{wq&ALdP}7UuyBXFOO2SWCKFoD%DfVRfaorWi_d8f|Ae85KUqQ;8BDOAgEd z_00*~o_~~m@Og2MLGz>)c+`5IdYcqsy;rz@{(O1t@c9ux>_TDSoUDtmqg_1y)E~KT z7>=KTFf<oX5fv?xd}h`6DXg7-Ki(Wr8)e78M|If8mRh0vKvnMz-zXNY!9S|xWnnhw zkEzsT^mPiPe7e+hWkXeO^Mm=;kH!~5l=$R9j=CNCKV=$0^uF^8IZ)wjF{)4@8L6h* zh$kqVPwu*aN5C;%tW;J^Di<7QS2X*T*V_TtC)gFAz#RAITwd-`3n5uM0eoSnHstT) z@;<(@dC|{OGe$UYcj#@s)HNgojdG<4SUkPk6pJ<@)n~9Uh$gt#d?Iwr??HaT^38oS z<RJZJc-*H?>%}^UCQT}Z`-YguWfopb-y<jZDhK++rJ?HpCrz#AI{kq@#J@I_ORdtR zmI$BxujE#!FL%zgOB3K)+C?=IJj`}5IViQ{Pj7$6A<vggko5g!?8+Z!GYlPv;&Y1_ zSg?%u;U*`}uTh3QjTv*Ezcxe=EJk$K1*6>T{hUl_IpO~B<AZqePYjIY%g%r36xqQg zJ>BJ$=5F4;YGDw(`}4PLrQ;n=7y=7VQo{CVoRAuvvOv7jefmieC5lN12}*wqFfw@@ z#i{KUo!|F2c+AFL3E;dvTG}aaQ(pvVk+sozqa^=s7L5(zl9PA`n~^;kTbS*sdedS1 z-6{Id$Fb=wjg<S(+;xQ+NMqNm-<e5c=xFYE?8C&!XlGx*j?eO6HaGYG`5L)_<kD2X zW>CI5f;?RjJl>5Q7#Yzwh%mw$bfU8#Q1l3LT}8;;uj+el*RW#P&9xxz8I`1_-FQvC zzM46~1b8^rm&?3)IxSiLi98j6MiPEeO$q@Slrg0Iyv1ISOfVI<RNa+cphDP18eE#B zv1C#D(rJL69hSI+;yxTQwRe)jbZdS7eoI(~tDKw3uuj%k{V8&wsf`bP>W!FBjV9D= zQyO`LD_durTqMT#Wt5sf-}6iCFeOSR5fWuMd?%23tF_FeO?fN?e9oV&{VAf4J#W<U z_MhR(VEux`%UM#~L8P;k1};=GNe&zyy2a04+%HZ=(!VtbuGotKrf==$)d8Pmt{bfL zyh$UA;wJLrkhQH?A3m->AS~Uwu#qzhL1%R8;Id?>1-RDCi3IC>$oAnDkMWcy4_24> z@+Uy0xVx-NIy!Km+5q)&i2FNcVWvysO-z!D^_+LNLvndatdSW0k*1^lrCcy}&kSAk zr@?D2w?rWeiiyn-detc$m7VzSn`oTrM5TSt)6FJCxGgfqjW8Tjh@kQ%W~8NQz3)V} zwMPhN##GV(y}^k+rhko}@^%qp_<#>APY9GBnj4%%dGN_%2@ff(*PcR;dS_BYnk;>J zi{CkDS27~ruIJ*b=`eJ^IYC3Lf7Q9^;LkAZqM|Z*|Cr-}fL9o;4`0v2f-fGMaIMI5 zsN!Z%W@j@RkMsO^e^RhV>1E_m@li#?D+jq?RgY#UuneD{)P2_^&hLxi6`IWfu#}uu zAgmZ}(VP{lWiR~ln@JQk=G8Bi4uW<{&bu8hh1F3~w%PX~3uvcqt2-8t1o;A)?%5}G z+x^XI38Q2;#$fnK2;9GxS~sP$$64NU;Ec}Khv#aFK4JI@SYEP)>pucmUl`xvLHz^^ zvRfKeLOYHq)e5<zy(=D8a{p)zBgAF$!Y4f-5uC^MyoyBNF8*dfty6fb#$-a3g%~!D z4~PdNi6K!!Z0d;~q`n^~&ouwIdDV>k5(|Lb_`Nvkmnac67z1f7`iU%FHI`cLH0)n2 zwohcac@X@czY9H5xsTEL|JLFve-osM)9s6*6tN7>G?<Oq(X-!w?@=%kgV+SyM$!>0 zP7RPjutd?}!&Mv7-J{ggvsW$P+v7ksA%a9e>WX_w5mAB~KxNcLvSu3Jo_?^=;*LU! zTWs4YBw1d^zifJkHo8=hY&s2M&wqtTpvy-1W+C5)a{yHj3{g}~u&Az2N3>B~+ajxq z(@~oT1LRE*U@78pLjkv>H3MH?tDNZPb^w?2y1v@29>t>kg5hbTAs^%k;123OVX5c@ zxJ9_@0CM`w6t$##<^^Le7^~oL@*_~ke#Cdln6c+YilyDCU)q5!M`hMaeSRaFdNE%X zJTmjI{Z?7cU*(-MlSVlKdaeH~`2h0XtNzebHLwZ%T77AkDfpl9y%DaDCb<{56C^A? z^&DJEAFX;HuPVS)xU=Hx44QGKcs70~>IFf{@bZB@hRu=~tzS!=>m_Q^(;&c^Jt*^* zKe_H4&~|<;*zh}-dPW<Q>Iy$3^}LRul_JKOlb+w4^<~D-1ga3mfKDQa`Ibek`P``6 zu3h0vWv3C}dq1?6W~sl>xCxNwkU=|6S*tmz(Fuc1)u$!uNoNc=sb^LP7Y@p*21r4q zNOBDq`?kM}ryhb3Yz0brU+L)mSG&;hH+tHSZh19?<osQDp*WuSZF@56KKP8bW##UA zCAA0sZ^_>aeO==SyfN(GKFz1`3oEwGfV`OKku#{*a_^4#YIpva1^pZ|tLkO-`MLav zE1loUu)o3&ty{ZBc83mH0Sbus`wRqdPNEG*0Ix4<<dmm%&Ce^D!TCwT$iXl@O7-+a za!CW+`#y#66~_|_FUe<BYJP4B+)T>C0o>1kfZ9zu!Fw`NPua#)u{b}BU4&&%cZ{m@ zgb;ASckCkJ@;>N;)Rb~==}VkOw^~oP!Fl*joBAzv2M@h&*MeeXojMtX)c|9>M5J1c z&s)6xE5xRU{dUyl?9W$ovF>owBcgK>$O&X!NYsV(C_YxvR%5B2T4&oo4!2BCOqA=? z^ORIfWOH!PlRG17s+^&XJirSQA>bh*vu{sLB?np;B*7gdZOMG(A34{k1h=HtK;0>n zW&{@AxQiR3Ob`iO1=215$@Rl~Dn;i;I=^oySTJ*b)NzL|?ifNPS~_nBK;A>0Uyk6Z zcOsoZZ4fN*PtFRWO0dwkK<-FD-3H=$f9l4>EpaW<6D#Ez#+KVgOBsKE&Q3@!TR)GT zk5XSDk>7*U$U{!xluBmO{U*TvQ#FybBgxE<H0{AMM{}v?X-UhyqssvHSDg8g?Vvi2 z>?$DtF<9RWYX8V&^#i>ZzL5-Va;poaNrretN&bRRe_{=|HR3Yyxu1$tBLhA4*d*qG zhIsY&;d#ydGkTnQSM(i$VLUJK4BgBUJxB$RC9v7bQMVakxOnFbs=IIhr{nj7Ia|+a zaTC(FZ>gXc_}4Mhzn_~PM^RM=W};{pjXLNU`ybo?-6)(zdA)8L$bar(V+DF!h45np zC&&}MZx=BVkqw8~`$-{_&!?JCew0!z@1K*X48HAJvf87?Eo=T+e<A?DZ$t4-e7i}O zoZW_&`H1}nY7EkqqLvWB;{Jl>LC9WScTJWvCVPj}_*{y!@zVZ@C_s!W-2XJ|*rVIg z88!Vlre&*5EwDk*ovOPQEc%Ky-tzKavE`AQ@lzV?rSUtL3mlSSj1?8A)6P5U&VZmb zv?qm-YLG=GyFs3C5Kn^CMx`yDeHc=;1Pdv9r&d$60L1Ry^X}#Xup;z(ZSvr&lex}5 z$VOfaY+=oeP}PntF6#<}brGNjJgPTKikmz7?mQSELvU3=$2urh0lqb7Q(|Tpy>^Pf zYJ-j}KR}wP`9@G=&)n^*i*0}@S$MjxW<={jX~cImKc$PgmKIxz9J*Nhh%47rspIJ{ z(#L}R_>bD-GK*#J#8i)DRU?HxY2m*rv&GM%Nd+26Dfx4HSB+N(x{U<7-kFMyD3XHY zPE_jnJR-#aa$2x#B@jw7HpU3xf8x7(Na9ofn09YP@l@)ewc7M-#W$4^1IK?fODvS_ zN4xD3j?L}{KIo}0PPw|$f7Gx(dKw~1E+s^4ddC97Nd~YHBAnj0t1%)bBbd5x121bb zZ9&GLzenijZN$XV%?Vq$g9?yhy46>@?k{VLiW1)0-sFDaI>?^r=p<Fr3r?n-%YyUN zQR0itdz^WM-apIC8E}wrsq=${4Qm3slvC|O;ri>f>q>57=4{VU%ElH+1&o_LOYyxg z3AzK;#FtGAZ;R;D<sUoP6wT-SiP8wBo-q2r`R8-BcTG{>WvLF2@4=bE8>!h|144u; zecL{q@*W5%%Je<$gzcV}(brsti9I6Sk~P1NEr(vam-|vzpv#o$&M%20QBFMQ3N_*} zQ|@)vK}+DD3o@8`%$`ZDff{*9FfyuVzjIB8-K_usR@gfZAYYVL`6haGYS(>cf-IOd za-}Gny$w3Cxof0;1JmJw2NMFBKk{g%%gF8a98Me4-oh1yl8N{R=5}_>?`i=c*#{p) z-&FzhnN{DT3wZct#468tb##b>L)i{y8^Nw_pev)oARee*!$Ec3SEY6ee8oK->=hj~ z7Q1#CR&`);R9tX;&h8KHvT{A@s<<k#rHp@ijX5yYQ;4Yo)<CFO##G0`<>V0R5A_b; zn&Ly5{8C9yDXAA;A25IOYh&3kaYIwZ{U`X0y}Os5ww&>5i>@8?I8OeND*T+Lwqg9Z zms_K^tRm^5)J2M~HeW?*CTC91b>b0i{`hY^azn5Yl@JB%oy(7oWRSV`5C;rhH@DSn zxdBJ)Ms4v$0U=_|9cCE5ERC6UG@klq#77!Dg%E&=y;??GxNof2SHBu$cw+(5+K!sj z#b_6fj|KJwY!*3I8wo_-Hdu#&Y@gz(ar8S*yZh!dXKo<O_0BhoDt_G-{-%*D{j;Sv zgPFX~Id6+pN<HPY`xa^BNrL_7iY?w`-0~?b+rxYCK)Cd`#Q9!xsS&HH=@9?s(qADW zaaVg&=5t{C@Y_$;hUcG$t8%2B@_ZIH<9&91kKp3>Hn3m(inn(3$<9`%7jB+EOY<$> z^XZA^(IQyECWC=pwNr#i`r9tRgDh@T7V0D2!Z2oNU@$CinyuddOQW{)W6yT&(<R~6 z(pAe*uC=DqFGs|~?`*5C3?z5rK+gtm!(#HAq7AvS09`zfUgRIJ>3jUn{)hMz*)6(0 zdsF42w;$?2$%m`P$dh^$Nw4z1-FxzzJXkv84SIdU#L?vgfu-paCtt}V0aWhmwY;)M z!k@Xn?oWbMbItlOw~^n=s3~^gduVj=mn5a2)9)S9iLW09?Ho8wr6nDL2XU%N``x1F zj+-dc6L>ZYxI~o-Gzd+01+TS9Cy=@LG5pE|N&JhW34ZT*43a8KCvc?Ax*$gz+pB30 z!;oI1tLJR>j2Iz4I3(OLXCrSAy;&wLcQ|W~Vl=vpn?rRcdZB%Th;g6AWM6w?hXN8K zAAMK3)DHH_)@**s=LqEV>OtmdqVr#qIA4{O_wX38xhm)fJUfkpyf}+yv==w+E-uoX zAAWS{1jjG99^M)}wzY~f>IJca?UfQ+2ywg+7!}zZfdlD`YgTj@rX%=b(gS7q1{9pf zGGywI_rl0`CdRf{(DQoi-J0Mv$(HkHKQ*?|{NB|t7rV$8Tt!pSp9qZ^=6COtBRV2l zyT)}=`ngU+8^0yLDIW9rX2{lbm~QhsxxXLJw_Ce)oTCHJH`;DCU)(ri$2sHZreNjv zVfI?;$RJe-@{j-6bu-w%@Pt7rBYFZ^6~HhS7LJ@3YeIaMfc`MCK78cd{NZlW{`(8~ zUj{Fw4~~7n+)Uy8XV72(Cr7O3iQtqS66Hn7jJxyWfu7y_Q(i@Z@Au7=^_k0))T~^| z|IHFi0+uSVqi2|s43O>hm(jA4f2o2Gb1T*#)p=ctOx$8ZO{kt7@}6+&kRg{%v?^d8 zgr9|3u-aY#d)!^S(`*{v0>4fvqp(v1INZ^qF0Ep+%q1fZ(M8bkF_{_pP_P$q&WWx2 zOqHN@70x{7lOGdu^>7C$>zqR-T_uF9UgzfOjp<}7x>ff9q#U#Tc;ZORxv~m>_R`Y} zd(6`ilS_-kZERNoJgp{r!$ZSz*YSwZ+k9F%U6(Uj?3A8Qqj0tS-T{YBTV#ghevRSd zw+<rdo@TcG0uPDc$<BvVQTTE<dYrf7_%SD_)4(aBGjVtF!=ybX>B(DhjZb39ix9S# z_>Dr45z|U=#=@)E9I1b;Ke!;<zqJJBn8XSu3d=P>R|f-_qx+lihc=<!zw&Y;`zDN# z;!w3mmsViBXl}fsNlPS)2fEK*hoIy&?++skYeB=}<8mW!4WuBsl*aQ8EO96CzQk-L z<Fp%d^|EdXqg0HUe@^tE00b_45c$l{ws3x)=}3Esaj|k|T#v8vqR*|Tk%Bva_3S64 z1L!RGgvT%uSO0nMu4Dh#FDpx5?C{u8?q@TNbKsa`7zjzYQGDNiK={1(TSHNIubENQ zuZ?%|oCXt;bnZVwDrMK|BV*PtJr-&`uWxHw0`tbEjzTHHj|yc?nVhPUJo!473WP-{ zYpo@{eRa7Fs)vhC&r)q(PCmDsng+8BG&WL3*>Qw_v{g&mmA$pA#(!PqmR9YS{%=Qp zXoz;DMZmJ%5aFvm9j9v?`aBR0bh}Zn_W|o0XSMvrCbf#<6Tg1FTB!Rf#O`PKevK+c zUrpazZK_Bzge=<1x3>f9{xNC7m?Cm&5+Blc3J`{~eZsk}IeM|`{@m+n*h9w;(+$H% zvYKvVW7dz?Qj-a)N|3z1-x%4>rJ#{s7=MvySZ#XhW>pi93!T&ZjqDhc{*#rv$;C9! zPen2!)DMYx*BjD4{|tXPuUyF)8u#@?Zn8P!6YS4~yi12TC5-R9_iIYpo7-BWCC%IY z5RBrO{+gvmZEAHvp+4fzae(VLy^x<Q2;S-4T*5Efk5jwtgM6Ir$AK!&ViOXmL<uiZ zn4Cnx;Byp^mHu>X@2dr+&c_X3p(oqmE^~wU7z(jghj;HL12ccI;HXz9a(-_l>16~) z!xZY(RPzlf<tYM(Wb?xbxCvl1;;=`THs_M?@~!ub$d8C~I_8NuX0_WUuRq(;!wcHv z?9*b!%R=g*&kgxuC(mqVH)g+zn}u0ul%CI^wKrrXM>?X(pHV}R<lTIo(fPmFJ|>N4 z^{^qOcA0$H?`?zEC!Q(&XuvNBBMmpK&9Pvp#7SkJ_^sE?=288AjOGN%D5)-#gc0m> z$QCiTo%)P%hU1a2#Apw_*N^%fI;sRGc2<RriQ6gg2HZp$A(sAoEc^4}5_wp|%U{vW z@bIa*w|(h!P7+@~Dd>a~boH@vYpHLPF`axfrK-7e?u{Gms}L9*x24$lemk;aPOWH8 z{i8wEN$snDSri5%#!L>xrd%Y_rRPuG8#6)1#0Tdxx1bVSlk_ho=v8AienH^xKR;;D zx&=AW@vl~6jy7{edw#$deza75VhtjQ{G4i*Y_@oh?qasqqTp_~_^^K%TVJuL3AbE; z4ZO3{4k2z9aUyMSD^GV>mfoT>578XWH(Ao1_u6z?%)9NL^1$t;@luYDEdZZu>@?xs z9%5%7IG;w8IdgYgs*#v8p0VXarYj^<uZPd6psD#LhaCpS1GX}6{YuF9_t7+|@D;g` zEq?zXI=>;%ytySUBn~VUeCnd8q4Q_#eH^WeRDoKMr<dNLKL}<*7tQnR3Y~8VDK%%h zx%%Pof64Qv{ui+Ihv!G;WSma^fckw}648%BbUHaTtdn=e=N|Y7Ow~IX-Rg(ckjI{Y zK|Eo{UnIJ?%D(=14I<Ih&5E8_wXXbsy#VhLTRfjV-Qjo?(UIMC#8uzt{N5p{=z3jV z|FVDqNp<`0k+LG7A=!Nt`1WC|9H|<Si_UV`%kTHkJ%4@1AN>?HC_!@l+!o?(6;g%X zEgR;Jv$HqQr^`{X%OfFu;Ui*YmF&)d;gWiE=PZYzA1C=2WE2i8&iHp|T^uxr3L6x9 z<a$_EsFRV1gkIf)BBK)-X@-lmii_|6{hpK|QB7*bDN_mle)*^H>zz=a<pra&C)rQ= z94wR8<R2814yRyBFT@uJJs3Vd3UVP|olZZzEY~;`|EdUGh~B74h^L_+%-D1%^9Ubw z*_JQe7+Hsn<KC8C`+2@6YfMObwwkr_kweSPw2<-+yIB8faGrf!=A*8Y=zMqjtb5MC z4cCO6e~6ITxY_;6XX(I+9_*9%oK&r}R<Yq$xyBQ&3{r&*p6&&uy5^3R@2rA`KYG{b ztiBo!Yb7MN7Z4LW=O->xw$zOME1ALcg>t8?OVwlj5XsXZzdA>&Z4ofowf#P-^? z+idbS`S4&L>Ht)}(*ZoA&x=|i=a^yamxYWFkjWGC`%EHYEae~^UBs)PH@{EO{OtwW z%g2Uv14oTBk=xvrMY>;c{{(8&0vauFb%*A;psLTOLAzFn>UYF6;Zim~m7cSfh8pB% z4LvS68h1!0RDTXR&&GeNofh!8N<sbmM;u&otM>a~PXB(ZGhl9aB^&5$MP|=hIu)hy zR^;eMhdZc`oHCJ{v{tUnaNGFu#77&Xu(|r)KVKmILS~Y!gmy3n-hM*NM$pPHHFg9g zcbYa3QLw%rVYRp9Np64trgC5LiD_M=V0CQK@YZ>JFbAxZ&*inTl5m@%Ex^YruSW33 zomp~My5)dOpOUpwxpuNdQC`UvfCP}<{Xr9^#fX%C&p-S%5w(%>1;4ZtkupG5uyN2B z%c!oil`1U|9@(lt_@)^FyX`VcK63k9o3+UwLOTHG1F2Z>GFL|t{F7GveP|cX8Fa^z zL1);Wp8q1^(@Bl~kaXf9u@wpK4$PEUbG}|%2BFy-WJSFHlJ}fi;Yx;V;;rW2L>coL z<6=T8UIC;f;uQlCDcbS_Wm-ieJytNkwUy~!pfoy`u|3Ir_vM6pCR7W(?UDnIBw?0n zc%{Z$MizZ9B2$>cBTfQ|?~cAV&3Ar(du+d{a!Vj87kG1GM2w?vnMWpl1nwUcqM9iQ z^e^V;uGK$evZ&e08w)_*$z9~07yK=^HYz8?7153}dTKoU5;A}1t^jR+_R47j`G>f^ zW8S(yF6_=8`Np$9ffPPBh=z;iBY85B&W$yW+ed{AQ+SO2`-(G8;z45T4tA!|%K-LI zJrJ36l>3K<fSPwC7>OT4x79%5AEk5aZX2J`A^l(+`-{?6-{a+NE7w|k>aIBdC93eU zY)E5;otZ$KCC{YXb%@0siTl_qSnq6@l&Y1zM8#*|rFfA}C=#cC?c7(J*t)H-8lMB3 z1-(a*F3>>H4(;bXMbHcYNhTn?2BLIn!bu7UrqK>awOw#!O4ap%8$U%Fj>15A0K)t) z**<fC?nA=;({u+_kr?=4&C_W$^_uq6XWWUJSs;*9TAydg?T=~{@u|EJo_|EW&<vx| zt=0EM(1}F#tIi$v$;YLdo9opIO?TJg^&{DduqQe%-ViM2Y6oqCps)uKRj`4B;*;|# z!cVN|#>6iQ)W#EA3)Y8aSfy0{Zu6v0shFsBe#}{Ahg(+oyCeM_$`1X)zhAS6*d~^c z0a=;c5Adol>I9<e?sqFthpQ}oDdX`eeWKz&9HpOrd`H6^EY08|5h0qN)MS%so9ZUm zL#`v;eX&TGmG&7@Jcr~$862E(?2k?CQ_qkGKXKC^@%h=Ur1;Nmj=C19nNve+$<p@e zlYJWe!`n$g0R(L$>gix(+WE8Gi-x$tWR~cdc~-j@JwV&KWLG1x3g=;N9-6h~J4^Cz z`|DfhaWs4sZ&&mxf$SAGb+V|LO>ZF)!VDW`O$G^s*{#YTqXb<Q6*n>9rR4ELy*8Sz z)gs1nBAg}z3$g*-nnU{}=EatZn#X((Dxypq%zJ;|z}dx?sj`2s&Er_#bTzy=&Bt|( z4kP~@bB4*Gg-v@L+c!`o|FvsQ%)ZOO(v(SC+lDnIX;65n9{Qr5H^Pr2xYrQO@_lPR z&|`qpt4pBM$cT~1gnCqY-A+#xv+&H`?2SbY>xGcQXHZwHX)3c}ZN_1u`iFRy<Ije{ zhL_OOOXD$MEiF;^aKkF|srjur-c`a5t@?}lgp|@%WNwF(kvLr|I-t)Fx8{)-6Qb5@ zaK@dZJ=q8KgofQBM+>E8!flvnuQ^`QQ2Vzzfg2J}g;1^x%*aD@29=|BeGmL?(0=fH ze1s*9&hIeU=e1QcsrT<Ld@fJCzi14OKKvR*m={ykzfBzzWi;OTqX70`GxPb@T}Mb! z$k=*eDdB>fK$?+|SmgX1KioPxpbyo#kDe{lU70Yo-;o!ye4D*K6hpUkEUl@${v~V& zLqEoAU_(rNHwJ>0S(g`qMdv?^0Kr?|X+QWT<ECb#Jl<b;RU=WFq?%KNAC)2$4ZmhB zwfuoRCG2GJG^ETb(O_8kZKyq1rR)i6xb&5FGw$^gYQHe<<Fw6%QZH1wng3ot@$N7p zN9%OMnWIo@`T3P{&&25ZP4vRdCr%$oAs$ZR>y;E#?ZDGCNF&~vwgh2!L1Eml?HZM} zLV9av#dMw9j2MB%;_Y*@t6~vlgN@UWM?4hccKkObq<8virXORvhF-jpAjgWf3W$(p zp7lHh!Oa=VKM#s>?cBxUjv%(-zj?7LzH>Z!er7f~bc7hl;1yVCSiX8qKgDEbf%iEZ zqi?5XZUQ~7_ya{eB$9PMC@I;as1J4z`Yb@R%S=I8f2~7=^#_xkLU5bB+%=4s6CH}= zx}_i}$6f%7d_7%zkMm20no+lsOAucLZ($wbw{BH(VMimu_vfKj)oyw({9V_1g4kqZ zdD(_0wl4A>gt&q;H^*KDIQN2*dGGJt+4&)zG$C5lV5wO^OI|>UsXU$zyHBQrw&^%j z=}5UdTdF6w!-tV49Yt>{f?-Bfl!{&6l%9IA=W+G^NvubGgG`lI!ZFv>13$I<iEk2H zoJ}rC+bfryqZyd(7s;4EP`tZ7n?Z5sNlR?yV_Fi5{z{Cg4Lig*{=`Uf?|UfB^Ff=0 zr`;@zf|-_Ah|StxL9++~IUEmx8Zs#C)>TrX5I->v8e>;8^k+GCrXF>@n|W-MNQXP% zx5M#{fIDLMuf)P(&gLCIKWzUQ8{J;6>!ONy%TRY;OC4ur6$_Ga^CjngRsURewhhj# z`@%W>*%~265=)h!__+mBFV1tdoq^LzOF#@EU>T5e<;wU`PRF6hHyh$+G7r6M9&Hy- z#jdj|2WYhXYF#9Ts=g1zeOxJ2>#TdcaTLO8GJw4gO_stYVS?Y3u+w0tsN0gxB3F9C zrKThQ=+#;rvgvqZHAUm(matQ`pw8<n&DQ*J)nT-6#beGlsgxzB#H_(yTm9S)c1VSV zRtW^nzF!8WM$HSoU3UBG6$yL&<Ul|&<^XLx33mkhcBa)0J->6sRWetrF;Z7gRvPwZ z#YhWnOW$soqIXPx`t|b7bdBi1-}0}TYPwNMqM=C?gkCA!XRa|4-v(B%%|Bf#V5wv{ zEP9lKkaER26E}S-FcW?#`hkk)1Inx02Xa=nS52^PMwNszBha92M8kX&*e*9ls_YVH z!VZ(9x1{G`q5xqxzg%$TghTH<xk#dAIcj7C`p9Wrflv5}pb)!#s+6v9qZ&3`;dh(K zQw8O7a`eh8h;3+j+eK3P3%4w{TJ?{VO~O3_6bv6}<;PY?`RZGMmHzB{-lPTI`Is{0 zCD_)_%zPOD3X=qLLT_%-^TR(P6WH!!xE>#`t&}|Ln$2CamWIDX!(Q!2DlV&B5)ZW# zQ7ua-(*7_SUn*TE9%TGNG+$kpj;ip)<JeE+rw+Oj&Uhpc#mqSF;i$-K*Y`g=Z83Cd zuE3Bk-a?)=C_R~LAK_MVEmc3O`IcwftJ8_9{4h(O&Jw384H0;s!oDMU=WM4jBr*&C zZU9FCRgK9{hyuF!DG)E9zk-PJmVp3KG!?&~;wr>LI{eJ;+p;3=bYk>n4sI{Y>rj!| zxb0coGHMdDEIdmZF!8gG+-hl$Y_B6C@DA;}E_bl@-K8=fWOpI^=G@6sl8&p>V%DR9 zjQ(ANp9=mC1cx@LKInx&%gT59y*(J>iiWZ$$b8ogswSLTuk;GzO2OSsEayZH1TYtz z9V~Q`$sv3`9dZd_J%)`od=o42tK!X(H((uslPEYY<_)Cyx3Xt5hC;c$@9j5FfZH~j zSIYTId>M(N`)4g`M+)S*we)H=`y{1=xmz)MZ~G<ab9Zf-Cp>=u4{)s<)PUhNTktA$ zlGZgP=|r^5qwCF^1}Kdx=~v_%n<A%R`dFSL=ABkPccER(e0&R0lKj<RKwSOj>lLp) z|4V}GLw~Phr7e<wy1Qko3E3pL!^i4oDJ5(^_b#}^vAt6V2{vD@bUeGFc%wJCkV~hX zJ5vJ_LB=2O^vKjqHTDJ(DvFZc*_qsFWt<lyvI(K#LOe_y4qW4liD19)LF+!w!M^pa z7;`Ug3Oj-Acm>p)f@&l8ffbR0lzh2;bZ{iA-k2kf<!|L>Km<to{lZP!9}yvor7+*U z_6Fhn&9Ai~_$NgN;#UN^7x_4unEi0UsEs^cz^&nY*f{6q-H5lS{esyC7G%jlo)m*n z3qeSpm^A0+EnYU&<Wwqyqu<J~@=F`9Dqb)w501Zo<FLZ7dsB(<|Mq<rIFpgN^Q{hN zy*7yb<^3UBrfo#Up`rX908(zTs{=jZupR>%{;B%!^SdUGo@p3gof$D=<I*t@_Ojb( zDi)!D!1pA<K11>c@4mfJE888{xfn`R$vdOs+lF(t=J&)^;#mhM*8&;(0X5t?(cNb4 zVPxs$%m~v&SSDo|0)FoTCWVO=A>7rKrUvZb9O%78NGCqf^jtEqVZrL=czHXSjrrj4 zz#mPYA@!X6XF!&(T*G~>3K03!@|&FS$vGo5{7i-Y4DQ&h`~@xF&mtW)AGFuA7h`jN zG>XALKETG)5pYLk$ZZ!qiDvJd*QK|clc@*Y|6;#tz<E~)OH{#d+*B3*iz}&B0(Hqf zhaAqRV8gvTsu={*L2&G|gV^`Q%z$bioXfsOeEG!e6W(cmxca)uo5|ZcP89JFp20xT zX#e!wn<sq+d{II228u@C#pA6hBBj<_f97jqV!QOEK%o5rE;_nr7z$_b<2w`7+%cRL z^#<brYY`~9k$SPW7jP~;5CxL1rQ_t)kQo%PIM5r8sMnyNeMR<tK@5gxZMcCLFST#q z<bxTI9|}W#jbP$jfK!w54Q*Hjcf=0V-kr^iF%O>ah)Fd&K^e7zobOnUt@iYAaY7NF zk~%CejS|=7Jw@&Qd7|_CbC3L3Pb<Q(tv32b%gt_eCG#C-Mz^#?#r-Z_@GxQJbe2Z{ zue8!t`%Kx0HXb@m61NUcA}AuIo9lUIw#2n*sji3bXm9>CGkR-^-uAp9rg3A?Y3%6E zJz-BXDM-O=x?>YR**3ohFqm<AI@Ow=&f9fuRex;7cHo~I>zMr|W&fEqnks1FYXs3A zN*cp-$^C#}EiX8nCdt{H|A+55sski^xD`D1>z*^)*nJo^GZ2D}AT?V*H-g?6-X!pd z5Pnd~J>^AbSf&A{%6ItsdistN)wh>iXp+U<j4a7{0)b{JC-9*S^$vMBLP=(wXmDe4 zqXH+rwD~(4_LEKb+HuiiIoXY1vE<!Me*WpRzq$?(iUgE+;kVw1BK(jsf*GJ7{5li$ zqc*?ea&JkNz`0L?3=Pxuyyhdpu5#23WC4T6i|xTU;t8{0JiXkw9Aq07BvUpUA@dhv z(!_=1O}OK;!sRpad_UsY6RzJ}1+}KceeYtF1(c}b(RVrHOj_9`qvGWwcnEyh_<Ud# zv%`rKykjw%Tyrj$dVpd+1N$VGJjQ6c0Q+_#vAUomaNg<OkL#ziHQPAFSr_*W`d7Q9 zVxLMraVDBv3N=%nf=<sk7TWjG-30co)YgT(20vbHCvjm1xFjA4gl#AujPXLBF}lMQ zl#Ti%1}&p1E+%JZ+BWzz2Wpa9uy+a{)DYsPLN|X_f*upWt;d36A87#&*_)t-7$xHK z`8sB`kc|=91ci+pZZ1Ji+;=6Xb&`rj$P}{Cja%36K?#(F=HF^DJ*N_vN)4I|J`<mo z68o_xt6#$I4T-_ER_d`kf7fqME#w^1PE<n9P&ZcYm(~E^ihrb`tm9b57hCL6k=~G* zH=0ZQzWJpxXMu+jb>+Ux&)<#r2t2a?I-wn_x$H1>33?;Xcct5_q(c6$9k>C_G4KXV zTW<)Ls<~*Cqn5-s$BDh{%bEKb>1E9b6sd@mk%XB2y$RvV$$B{@8qUbSpINaR4~xFm z`+ae{lj@e$k=n#g@I(Z=>NXS8KvEf4&ng`N$Y1(S<hNqR51SrgjPTFCh;dtsw0jI5 zXC<SEFh+k0Y_~7{V&HxjQ!L2(D3rVDp~B-{X;)R>^%91kusfLf5|)b4a<RI8QsrOF zk+1ZUSaA;zryl+}h|d4aN+8rty-jpoC0dzSU#fER$=}WQQC({k{zE847w6q9w4kM* z9pXTAfDj+j1cHm*41<8@-9}A4oxrMv99o>Q1$2#b({FDAU3-R9PDlKR0QEO|-DuT| z0DnH3`ND$$KXrKL@mX4s`V0czQAdH@fH}>TP+%VqwTCZ0b_CckNlgFE<8kHXIJrFm z{-8$=oqrwgks*h+6WiYkw0jHkLc(lkptz%a$=z`%uJUhn*<Kn85{g@W<&A`0vrOFa zMs`^)U2NIL{cqC7D$@VO)%P1(@b-5=?q-+&TiQQVkwvfm7x8{5(x|C{cg%VYVRr-S z_6^{#KR<ptkwj2n)8x>#_t-GCl~tQfoX|Q@*Nu1&-3jo4X|mZ{ZZ{A`ypeXVZh$<t zI4ZaO9|X;rTTcIj;P2sN?~O>0=MY__H+X6qerB}ZC7AiIMJpctrzl1cd85S2F(_{P zcIA!cCH{vP6@N*l>Ldq?A=gz>w;NugL@<~2PI2uw60C#>a^W;Ze8>;o`A2theQ?7n zAVIQA8zQ)5QqyewWoeqc3#|EOdq%>fZUFc6a}SW=>o_tut{GMNM{m8NS88R%DUsnZ z^00$%uG0=3Bma!68ZT7{uj3bE{NKV(R|z7E4$09py7(uKx*Kd6_*IwJmTxeJ&&#Ob zPOcIyvw!!YShv;$uNuo5$_1ZSr$JvivO$I6PgU~JXZ(lyLv}l6fAd?tmZs*5*a?Cm zDP5l{LOapLsQV{y)2~WIP6e&uq;y<O;KyGz^35?}=bBEa!Ap<b=FfKw^Bh<+CXz;X z_epo#-f)UzjC`lJ{u=z2$++`$O8K3KB!PnK4{>z7QVmmc7k9U^mp3Tq?q7#6Hf~*D zP7HwuuBE^V3eTSfzZr;GX<7O6C5<1AqQ8)C>8!y~CK2P3S7o7*<QMwC%y2~W31)8< zS$_htPyD>(6?!J8j;tv#ir0d#S!BQ>;i2s+s_6VO!ohYYrd5Hb1oCV#rBvhkD*CaR zwL@p|t>2{rYv^u5`iL7aK#WJ2ZFi6cr{RQOEQvf;Rz9IeekbbztXEiYubxZU+q(tt zoUt!_A$oQMMJ8lZhDP)x6F7n58kf6^C?jaQ_ltW2&`0}b#Q1l?%CQU!-CZTAE+MPj zlaws@xq(%Jj%Q4@yBdAuJ=AaKhJOv%;SZo)v5cid!7oTA6qN;&jpehUzMkzo_*cw5 zHp*QD<6gzeXQB!ACX0`Ln5o+7vLXEtu)Pj}bLkHlPFs9R>_-04*wW#cX8DvmHAd2b zFr~@;U{q>A-~P=2Isg2oG%%{1tJbx@JV!yq6^?cYnl4uy`g=x7S9kZZ`68zz_8s!< zr4vL&uBS0r6N(&H{mttE^6AhQbaCkeFf-jEgAxnU!I5uluKhcLM}MGf-aEYZ_jox# zfSZWAhTt!iV^B<=A}Vh2x`G$1xqFLfq(Q)rr<%c^fv0xp=Fun8%=>zc#{Re)-|hx( zlHcVSFK5hLC8zB@Owb&QOt!5VRQS)=C=NvfO){Ymu@SPphKi0*KtfGGf;nD-e{A-} zFnNs)LGYzFmA1Be#2asDp+>$wCX9;>2gaVWH}fWWueVA+I#8iZ0OnH=`{mXD(&!v$ z>5^DTonF3=fz1D!*k^okU>4lBOdlSf5Qdr)mC$zrxB8$W$h-F~zQYNV9zVGtkU0@T zGeMDW>H5gkL``MLx$_h!{lV7=mN(k?Z8V*7WDlHcnz&+)Xv^!Jnw}!KnhZCdB^`X| z2}NBd#+sE$yEnfAHP!L9eB`@&#WI%6?I6INJ0~nJ0F~&W%yD3KB-*25zuqf^j`j1X z*Xqu_jM2-W4c^!#SG^i8zndNJK`^@_uL44kvH($6L&V2JGA#p6*~nUCS(mJI3n<tH zm~>tGJ0iXXJ6X|3<|oj$P+;Y3_g56tmu<fvwSQiSOqOVr(1BoJLI<XTWVq4QE<1tj zlnOlG`Q{7+{b7q5!K?=E4wReF97i!Dfj&8jzNac)8JwJU{i_c<PAT(H*%cJZtUr9s zvp`jJILKGuaFrNwC+(%Vp2;5t2^?P%$O{s3zs%m!N-jJepo-4T$x^E#3<ilyBjWjB zQXuD{7+bK)gKABdI49S`U0?oZG%VfXa9#ZvRi~nH7+zufBr#i8dJ^x4ktR@x8K`y8 z?pvlM;OhQ`F6-O4eHABZOl9bDcl4>RtL*@}+NUnThj4TjPg^Gf*3By;QIfeKlYVk% zsZsDFUDS2=710En%TFcI(!dxywJQo`T7_2X9)&Fj^hCXlJ@8x~V_BqKq%U}%0>`(! zIpc=W_@z&&u6D|SyNnIqExyN=MlJQ!r||)~y=0dqBM!XI6%LEp$m>mtLZX&f9eSw7 zS=5O}N!mW)>FC@YiCmQs9)Oc9bK&t%ty26dwk!8uWvo6VORY7_QIUj?qJaxgj*V%l zegTGEu|#%shEua_fc5>N$tWcKJaW;G-^Pc9d_@#QQq=OK9?v{t;g|>GtEvlpJ#QHx z$b<WUw-=&PpzwVfeu#2QZtn{MeG&@LXPe~hyDhC~S*gyB*Kqh~Z!T&{8?&#)VC@ob z#c!9^@D?p-AIX%&#EpRKO}%h{P*V^_(@21*4yd^&QerDkQ=w`pUDX3MOA|={yPYow zC^_N97oMNzi=Q@*lNT(7;QfB=FH=RnLBn74rNG08%wn4mG)+p+tEX7w7{`W#na7aD z%;1B_i6P~L>nQ%2H?oKiEWj-AhU7SuII=;Iy)@YOE!ZGF?l=&B+zY|)4CKX9$gwla zKO6CUv-)xC-MlE#^)zPd5fJ%$_iwBI;cB2h1Q*W&P>@*HfiipTN|Q!(ws?_}Gz9hn zYOHD>8(QplbC>razF#lb?(9T5dcu|aZC>2<y1D^+4J2)-A-k&O5R_B|Ys{}fMI<tl zP-AC6os2up&Ky24o}c1D4UKH%Q6A}%4i0muRm_tU`3`vIZx9K6zCv9kBH&itU5yC^ zWlj78hEMw{;O#2+pc0OoMj8kRKg&~q#vOu-n*+2mjS1AyXI5ErRHl-gcgL1vmV!xS zler26FlHZhF<+p@_FzE>E<9=yKTVJ0NW=FN{~O$bUG-0zw*zG~R7By&qU(gBSM}|Q z)MyRJ-4>4WYtDI*!ULErYr?l2^7g$Q*voIfRgsm!L0m(j5_%~r4=_w|YFHb>Yf8OH zs<MY$Hzp@7O>MwUP7r=$8k&uOGqza9SWK-SpU6Vt0Tihy<f<q820c9Lluz~Gw96KA z1_H~kc-(d-Q@i!V9YckOZc4n@ljRQfz$e0{SfQ);Bu(1j6?Pm;(sj&%A)OR34!8?R zFc)1Usr@@Kb7lWlW5^?58?~66MWCM{?f{RJeI<`-lHyfD@|s?jK<|6>SKumb`689T zFkSpFYAp^zRZ7rH8gfkno%>g3PWq|&y&4D_DiG~tbc1?KtZtF4ahQDHvo|4J>?$v> zc7X3C`V>9Wl2?;tyh1aEoU+(=8+O8<ufTW?YQcPOYK;O4Ld#GYjMZC@Pe$BR@Ieh= zKwra^TK{D9o8Teq@3T)V(JIQe`S#$zmf02MAu*yFa}xf@)`hiUeRP~OOZawnUP8o; z%IWsGv8_QmY|Ir<do)+Wv2PJXPxyB*J&T&u-sH;n3L{p)18m?75PYysD4n5T^<a!b z`8){ur>2i^CH6rXqSp;VU@b(5D3xbXtB1QuxuISaNmW;~9-~M%k6QF-T{Say<^?Yp z9){EaOs=)Tk=c}@9bHm@97I5wAesD)UjcN?{p~=(>DtvEC;L}k&G<&6AFnn3Kq48s zv{?u;R6FE8K4dgF04Wnej^jbTXp~90Z+WrsFa*oax2gdY=_kN>UqDkF2u7~TavZDG zFO2#l35rxYqBopX6s@0JH|$%;jy@nSV8v=^ryJ@!4f?{#ZaP2I_LHZ$O7N#I`q8MR z68;63|JMtk4n>St#cV+Ea#3Bfn&{N-XD_+sHuvBCOl2al)#?TGQ|wYeC|3%;{9uZd zehI!V5c^rmb$70k6unS~X5<Uy6g!mAcxJ$Yky(V;dwkB_Tj$a#c&h--sSik_VPHNU znP1N5b^=d_B6k0N?1Py8%9b_dbUc4qAQ64l4GLgW=vmZV36YSDvFl@{`|0z@Bm1WD z1y^c_|M(zC8vDb94?YZ;qai4`w5$T@Sgf)l{?+Am!_4DQ_UOwv4~=cv52#FNNyh)- z>aOFOjK4>LFX%4mQV<kDI-~|tBBeBv(hW-I2B=6#D_x?1AfX5-wGjeR14%((bi?Qk z#&+lT_q+H0?&UvVuje@*_8HH1&ikC_@SKbE7qnm@R!<t1m;r(7FdcSQ6dn0v6AjOO z!Wu8eX<!ed6*EqB(9KW4JeR5LI1<;QijeWn2SyL1j-Wcay;!a;iHT<~`_8J)+`OgT z`7zQ(#45z9QUE9FCz}aokG!kVAdJIJ?#_7Z&Gy4sVb_8zf}ZE0+a$!K5h~~j5#CKJ zjHbgU?*a^50KSTtT&BY)2Wx;A)om|eRyNJ6_NVmW3Ry58@ptBD9DqaedR;WzAuffj zygn^O<7jZvjwJm=Xnq*YrWefta^5}`uYyWj5Zs_4z@S}Occ*B`k~BY=23sE8u}#k+ z8#**(?fi3w@F=mYp@?zXLI#`cn%YNct)D9u^vo`fNkVj^E__gaPCC9a@t-d;*Ck~A zwU)lzSZl9BE1RJ7_xzp}*=$#LkJgJvgI5(M`i|M`Ptb?LG9TGZ35QP+4^3}pq&_4J z7THEbnG{62N78$5a!FxyBr%V{>|^O42+7X~p;4IIGT(kbjWuE-Bk*$}(ux{i&gaj@ zMGE;>^4I#Qh9U~OG!0LtSHkNY*+n(R2dJhuy&&;XBfTd)6aiO-Hg|5t!ZTB^*rX#b zBB~tt);6{uQ)VVI$&Leh+;5G)>?+ykZCI7BBBs&Oafct1C;#YWD;KoF_&%)t8H*Ri z6{fh|fxJ1#K0x`=k>dJE+;<I~@FLsIk{~OBpIKLWo?k+%L>weN7Ze%Ichj!bC>rdX zjYbcR)8)co;?H=?4XN*He4L0@()R5@h6AA{h+=y1(TW=K8g95WnQ$kV#<lR1#5RrD z$7F+f!|)@1vxMSb_oBNam)l~(in;^4ky|2tH?eC6Mll8lzdTj-tVz+AAWVMxto^&q zIoTVZ{2Hav<YcG`d;W=+Qw#+^Px#?pxgHa1vyJy3jhZ12f_hB{LYKlKpPlYhOzdwe zL#;)x#EQ-Y%J?2e8DC`sprwi_+^_mW6;`cCL|P|V>bh_bkTN;~hW&t|!wbcv8(pTK z^soKmV>GzjtF*2Yavv})_5gdMyF<9f!koUbU{=CiXVy*0(li)>g(*B2dn_j>bMbJK zF2(1mBfpRe_HSLeaLdOPo$E(&A$Hzt2Wn&6a2kx$4K>;8`Zt+YwqV6ayZZ4Q#?5y= zF1WGQm@kI&Nlax9hs>96_A`W>>LSg<GV!Z(#c}Dmv6h!yH2ATHC}g#kK1_uoUh%C0 zi_o|fu@z(X>q5y(`<LwF93=B2XU{ls<>`4TcePRS=L_Wk8L#m4v(=Mv(?<9g5N0KD zY`aqi6l%=@iWo$FS-Nh2&uMG<^Lb^`KuqjsT*Y<3@AA!AhJq+Zl)P1Jot@EH6PZc! zs+HWXd+MZ?GM&q+3}x?W?Be#5MezE_+a!@Fd|Tz!?oixN$)|-V1JdZSkG&n*&U<yA zj?>bUaOAH))yqHartW@>>?$v+Xj%Q9z(eRF&5xBPdO-R*D!k=YU-5>zn1RR@GqA&g z%ppb9YJb-xbL##znPxeVa<LnuMw;T9O5S$pQ!68clqoAqQT|Y92JmZooVfn!*rLJF zw9BeNqq4P?J56s9U!83IDOp9|w*9_}MVag#t$Vg3nz~Sl9Ge&I3i5Cu`!q5h|4Fs3 z`e<7~j>7oQMe+oq?$ll8H0NQ|>!&|u#H;r8tK89dULD-<PrpF!Q#lssO|qs%oYMw~ zL*y`%ie{y!MmG#fwp`kf{YOjvVf-(Up9-sDx<bnVLmO(+{12&WJA&l$XGrcV$B>cm zazGaG+Sritwr=mL_)oP@{Sa2!AG+L%Q5?d-eJ<z<M2Vja3nrm*+m{xVotVJpu+LXg zO=aSAKX89D?>klTz4j{3_SGB+9%0R(=1vrwc8k9XqD00cKX7138wB6#>dyl=$u6`> z@HPclhVakkRdk6aR1*2wshzw8){yzUIsL)pZ05d=Cd94U!Ca>-Txm-6@B3)BH&RMU zUlWnH!Tw~52FeQ|9TS0z&nHixbV$VtekZf$*_B`0@>XZLUAf)u34mO^mux0IdeH6( zGEVa##V)cMoQvswqAwD=P2yqHKpL!KxTjNg*7wcDjMU>8@Li(MPxT_`jsajvNtkh* zaxf8$@v$|(_wmz$pY_TDOj`UJ4)8?mm$Mg^`E<=Kfe(l*-=9)fmiZM0E~%GO+rCj! zvDVc_=E@QBX|`!6<5|;mSh$2Mi_)n=KeP^b5p!~{;5n)lCZV^G->OCXtw2*o*K0t} za(IJ!k~D|+pziL&<FeubVcWo6QBfbBCj(zinQ$vvthn3P{NF80O`U2T9kr`!ue58y z3<`9ku526MZZA|L*&orV^_z5jo-X<^6?|OUw|<&{XXUf7aWNKc2rtqq9;zz(tb36P zsm9nqPS2PBlw5e+BdZt0u+2A`Z^_1a5^zCr&>Q*Ikbuwkqt{avsqL;Kmz7dm7vI#_ z-45z&sZ<180&#+79-Xw0%aekaH4i)l?md}?s~V5}(zThZQ8jLMZ2$VTsXr)YF><Ho z*;jwN*IO1-ufECrKu5mbmVEQ7TG=h=QBNwee3jO~syct#G_jaBO0gdCKKfzDR>-u` zBs(Gll{)D$+ZGp7^yi^+w$9;~#kTjUQq!u%H+$arR+F7751upohuI2t`8zxb@bJl4 z{Br!gp?<CWIKs9gp96jRB%$iA7Fnd@P?mOrtQ|UNm?M_C;`}4ux9}nb<GL67a&R2O z;DN$7K*auo9SK^TdGUVF{LZw&fHdsmO?XlY-Pu`S4gS`XH}cQJ1nsSQcN8k)?ZM!* z{!T*+pwJVxJ}*=*<!UvF)}2k>T*d%H+o{iIt+f|RsU*8h?R~nt9r{om$*ZX@1&$Mj zn{37@m75`cx$&Q=@XHYgUi*im^BFeyR#l6JUwKawIn*tgcBzs}m7bkneBuUI`V7&d zQ5~W}gEEowy3?h12d=A;NeI1vH!V6&f_tK>>LxRRekx$iy(*K(;2-{7eh)j=INJ$X zGt4Nr0&wf>eC#ov(Yqy{xRU)txn8HnStW<D?37&_F5OC3TEW*VpB?ppC+z-0d!-_o zY7$Bb5OLGG$Qm-vt;L@zKu-UDqwjRCuAS^(Qmv8{r%wGnf?m+3xwdQN<9F~qJ{rN~ zY5y!w=fw}^)&M=III804rn99fy$ao{E{fNZe_J;K<MgBAVs%4QGT;~*+_M)!B|gKJ z%RBoj-0j&n&ILiyDJ#VTk^!flK*r;km=(2BiJ`8Gsg5Lel78N}tDgrPmC@(``=qJ~ z^8QY@%L`h5&Eqe!7eSAQq{$!IP!${-Qs}=<iI7!=OgO5V$${=J)~t@i(?71+r|iEF zydnp6;SujK<y4xEpxbecwWY9Wg&0%0j~!y9`_?C@7fwK$AZf;`ag{d{sAZJ~Y*${* zm1TyWjjGmwmzMNf98GBA{DH!AzgQh7k_4^OnxtpOK{e;b=+x)}wUnniG`b<xv5hIp znSqe13|(8jC>N5f@W{IvEp$Jv5eHeF-*Hxl4Nkod!`5|VkM<2jBw;Rsa9!!Gen-^h zasY^<e?%n;$OC4Gc>o6sNC?$mNYQ5CBr#Zy6XitqAw<Q7lZtkNHW^dI&(5VRd3z;H zA9Z(d+aCMow=i;WaaYi}*b8}l&EgA|#e{FL7ohO3LiO*<gyZZx4f|?i3mt*%%&5im zV6{G_!-x^Dw?Pl^YG0pL3{IoCMn#|d)d38F-aPuSZXx$=5A0VX*d1I7M>kKU3HUaF zOm?68(Yo)a8Mk6!+sVzo*7LKuoR+U)I?X!N0h}$^iqF&%scL71hT3{R$eA%()$aT& zk5P9TN(J^fH8+BHy_`$LYp*TNuF=V7);w0iL><PKZKg+&MkjRzyP+s?DwK1>dM_e| z8H7|k)YiX5$QFLzGrtKYsKqRd2WH(6Ks$cf*3JWPTy2KFhDKPP0fSa^v!^>Z_<`!T zaja%PC{rwe1N$m>7x9C!p`e-fz1uhX1R;`~U<H*5>e8^~aw#8J6I*M?jjqJTTSl^b z)Q{e23h*l-+FL1g=C@AWb!%b8j%Vi)McJekGclPH<Q{V*3oKdpV;Z>p64>5;>fpzc zUy+?WG7jFFc{{P@)15}i&%Ay8dyB23J|#Dg;|7-43vY8pth&SvHltYSe<jC@<F(25 zNhvsCy*oyn9+vD`ACz%?t{Q*XCtB+rDu&`$!*0tS(XyP_e$fClrNb84K_o(>#L82E zeHXso7fnw0u(MFNk+ohAMmN{k_YTC2`6(bVF~_c9#WR2q=V#M}zD^jrZmar=MTP-& z1>{AA-7d1KVx6pf6$NC?P785;@~QlI1|G(S>LTsCJQ*{${bo&nfUS_+q<-2qalJzQ z-DU41**MVwX3ze}xj4>C=PJJ!8O5e}RUo_qaZv96K?elcWBI!`;Qt|hYut#rsI;FJ z)>nHrce8l#MhLidB@;sp=RBD1%ixoR@rsc=4BR<jJ$V(u)Sc=^>Au&IsdDB0aRJlt zIWd<yM%79=cf#Tq^aY29&RW6s@B9n(bTEBpUs2D(l{8{KvV;Dcd@<no(Z_bN$!o>9 zlF~dR;1ELX=P--F%=L_DK6P`*yy$YKK$A0K_QF3?Mw&1AY`{H&@&*B(h3p9*grCiF z$v@ibq#IVk8$UF$eKSq*O8mz2sV$1M+p+Z0Kx&rz`urR_gA3f@J+ppfTIu-P(y%fO zeH~h|E5=}NGKeQo@G600cV&i9mMXASJniQFpdS6v0tjEZmVTY?x&-@G&~7qvsZqPD zQ;C@hl=0!~PY&}V|9axKAVr&^nVH$cZCiE(#~PNOs+V7@FY>E`>q0YdB=|VZ^7FGo z*t`s|>0;$jKwJ*?cDBqA{2o{6n5Bv=IcG%Mep9<O@uw@YSq;YXirm<oduuwS`!)?M z?^E>?wNXG<&=^gR_OpsEF7au)hEMNqa#8DE+DKNqg5VcsWZ8FxzOoiiFIKdO7*)AA zl!sx1b<_;TVmaTu-~jmTt$pqKW;Mgi{}r?H1-ae9eno*JuYAURLqI_pQ6>reO(M~L zod4j0FMk#i?UDB+i4gs&PcKw6p=i|jXODI*?aa=eM)TO)pn5A2l&~9_Bfx-f>QMN? za3a4(xPh)(n^+>{1dmD*N@F05XudpG!1E7(GV+h@w!e4sZ3LoOM-9~sEhx4@68P#t zJ!+tGl&Tw_4ojZ)N(bpgpf~TYc))ugH(>P%;`)OI#xji0OZlSH;Ofx}4g`jbWww#h zI({Z08e2`$K~R}rS2~bZh(5g?-{UA;n4-8fy00q6eRuQKHQl_mr4AQ9IBHWvKW?9g zW;`;uv|1kqGekiUBa!}^$!Z*cawAAk+Z_fyf~J?U&{Zlu?u(e3x}N97C1&4VL&$CL zo#Y;`s%A3puX3JM53QwEN(}c8Hb0*?iDMD^6|~`>6)}|;MqF`HV6^%g#9s@Y*?I6F z9(Z8rmbErl7X6El-oYdJimtpaE*a}$<zMNyD|YL8tC(|+2UTso_e_z)G4{)3G0bNh zpB_u#=c5WOqy=EqayyT{U3^#z=THOU?o!q8{Pludv5?NbWU&jCbOoqBXXgEq&HHA_ zBNcA0G$!Gg+so2Vb#*u7_zidDh36?-oc)b$LMf~`b><8GVd#z_2#z&)bXn2yyDPia z`Y83PaJwnV_AtOX8u=(+$p0Lzx|>QD)W=(w9~7EfE8uUuy5K7C8<gntP8#-<<!FxV z(-%gxgd#6Sf+loMuj7;WStSBuNY^*ZJF<NE!)EUsI}1a7TTw8Fdo%CLgg%g<=%wLz zr|Im2A$+Ew(x5z6wX=AQMxagiN+Xq@EncO1?1CNfVl^Aucau{xwwRC+8z+Q5883;E z;MyfCa1l5iC0;v}Vp#o-a<}TQ4}udJUQR~D0PCSK7hGwL@amOlM>2AvauF_Hq~}$@ zV39Aw`g0aLzn?&5P~uIw_q2W>9|`%m_}87P1#is<uUL=1W~pG0CRs1113Rml#c^*Q zSL!c+ACggfMHj_~K;95@C83JGxb#Eg@VaF1I7@+0laCjfE!vMVl0LvS*RM0g?{%)^ z#;UpE8ZL(hM_oC*KZ}=~-_!V>(04A<7WCuXCS|G{P#z1tVM6kk1i$RY5x4(KSof5# zlr{hBtdVt4I$W*Q>3UCt^830M$Dl&mv@Kz~f_J2FJZectq{B(be?ss1+u{@=rU|_Y zdInImLZ!}mW;|QCI#iiyZ=v=#GZV3{&pdZzdw*{HJ{KTGcBG~dZWmpbx{hbQ=HbcA zk1z>ShMBplq2OT|oqjAi0CkK-%d^{9@?<shwVzI*z%LSs2tbL1Grx!@UFV#HE65cm zy+e>CB^)u-(&IEwrC~2oe3{O9F@Vd=Vj=XNUqt8`2de#|-+Hv|XvV%oEI%}@v%b^% z#U)DggR@>@0GWez^q~ae%c`&!<PUHYH#JNWeW>?Ki4t#hAYr&;c6l6mm)+QJ@dtJ5 zdB{(UHWT)yh0RefouVp9(Z(mWLdskFPd+_~vnab>nOX%RURttad?aw~QNM2z6iDOx zUgyH%r_s|UsEJKBJv2k-wA>|)5(#-?{@gy__SO1f2+32Ao{G@D?u^ENJ8G>a8<>@W zJIdA-;`cg&;sbWaLrg;VWHT2yVi%u@cA7(0{O7q_AqJMz65x{bpRA}-4RvaN8$&oB zJHii|k09ssG^mJ$4_#cW0O3InRdY3SAxp$64^|dKLEmcEw7KwDfcMnS5wJ?>j;aXA z#DB4xo5F5Xo7k*g(r=%vykty^yHfIGFSu|NX2fM`>Z7LBsQr~ADV;;?eWhSFNBJj4 zS(H7I<I9vYuf6^v;T6ALft>fm^)pP%PlwVb`T!5(Agc^QCGY|ws*gNM&=E>QOn0m= z4Y-g%^VtE<muj8hF){`L0woxl%J7O9P37UpFFXi#z$$grYs%eyA@rFN-Tq?pr;bcI zyni1td=$Q&0%wj^Q6^A&fI{)#s_-g}z@7lB&x4Bj32&wJv)^#UNCLKhPL$~$jjJY1 z%OEG%lzyR#3pn^M*xe^f;_H?VlQ{__xVx!=z8xS|Ez9Kiv^p+!KB|++v<Dl_X4^(& zmzDQ-hz(^bG$m4)vbL(J#K3?ST6qLs6=4LWB4$V9#G!vWncdnXfcZf84@{2t7REZ~ zOi|x?)Xe#Kca^d*bhY;KX0zoNAEt!4a3v@>#N2=4%dgiu;32QjNY+#fo0;J9(iOt} zTTfj01M4eUnratqVsw*AjyhnHdIU_83LQ#bL@GuFcO{LBy4L^nf!yY;BYifl!&5B0 zoRq{Kz@;8$n#CP~`DyQU?+G6!!Q2g?7Y7OaJ5zs+#?Nu4HEg`Q#yTZrGi?1ftlHui zU~|T2#>4XP{wLle2`6q3ia+SW*01#�ggQ-$FTw;~+cz6b)h_(TJQtfsK&76QP7C z%AN<`Y1N^_Z(xttME6TbFZrDo4R)8C)l3PWkh0+g2tO8GT3M3cvE0Vv9$wvp3{Ax8 zsbbN7USC7W9gbdfkfwGuLw}Tx5*3FFx-aD7y<D0CMd4h4LrO%5bm-0=$w(2YLj2am z?OAtCR?4wgMJ#@4+>7pZ1QdYCsdQyXDAZNFix#`TPl%t>5$Ct8&~sWpddQC_AvP+2 zOH?XDWYSeiC`-@3rl;nRm)o|7czPw<M{svS3}X_E1O9@5lCnr<{)n?btjp!sEH(K& zg`S_3I`GmjjfrmA{`~x18C*$=`^n_|5UJG!yyDtAO|gkg-~b3iHrkUOM<zawQX9n0 z1K^KE$10RJ7+7CyNxf1!I2bRoDz|gl`gg(4jSR7_fL5%3YW^7*>C;5~w912f_LNZo zz*DWED%W4EO{YQn$Vkj{Ag58n3*~U+%~}|UHmXM4I1PDh<#Jq;QQ^HnOxu^c$P_4U zh0c8@<`Rh037~>lveH`qLpBHKdj!Lf)3Q3;2~}*CE3%CiL4LkylL||v#x)$(3{VXI zKCHZwG;;#%`mkMzMmd=g5!CzADt6jiHsU|oZwM^L_N9!iP~lzvIj93B%+9Uq+KoxV zU!q%?5ro@{DA9?P(kgd3@R|{&PtaSlk8OP%xXEp^=k~Bn0RATNhj~QZv+Xi@+V+)* zo~nB~h=d0T?fs@lL_qICh`$QUuAa{8iuL>7?8j{2@`?z^J&5*)uuPOq_Ob_LxXI&M z^E%^y(qFu^?+h@fY~w%v~UA8JaXo`XRr+qlpcNNb~Z^S??1#8dv4I;t{WAj4_O z{v$vC4S*ho!NpPb1<kMK1=xrr=-z+eP*qkl5UPLY|9KcuTa9P@JLCU2(zrV%F)Zk{ zSs2vT#q72p7;j~oP83xCEtbp%h=K5$IS`j<QA&%MHZy;FL|lO8&3{q;mvSQhfoL&< zkN*F|e08bWryz<k!~f7Iku@TM>JWwBAYvv+#s4`_-IJ-Ke*qQzhe!Q889dx-P>Q&= zfd3oNwhN`%KS#CkA9eMg^-m5`nZ6-LSv>w90`)MA7@m0bgSCHA{g3sZeii!kw*%mN zbT5?-7u|~;>T>%>)~dqfQFTS<tFU5sq6%WnfUHus0^U}~dCMtU9T9EW`aCg=g_XNr z&x!^jz`Wv^wS&wO@r8}D_Rd~;k~KJH`OI;}I^}KYT=RkII;zfZWt$e0{VU=KVPu*B zWbpU&TKIuVjp5US(vRDH{%#O@q7i?Wv<P)mXU5H6Qh*=5Sa#LV_FETB2z+H#(`FVt zcx4NK{@IvnjM+SlDXx?OEAak;P~!OKuh=!%r|I|!VoE@zVI~^(Lwt!{Bj_nf17u-^ z9DnGQ6fJ(7+_JBffGWQ0%nFh3aLcvL9bBz}^E{M<t$+wOP~(k4yhv2tc<4f>z(>}Z zD7p)bAN@EZ{;!6RKWsXD0TVM=?8*s{jJ29YtdQcZh7cMVfC31;|KSY;^Gs-k5%}92 zU|5Kb#@|_j+ado{W%mI57Ygt{zl#7Xr)W1Q9^I(fdPYKE;rDY=EK3-f!z}n*%~6a4 zj(L|30pl75S1vpMIL?!Pz*OBCwWx3>AFLQdb9X6qP;IeGqkH@YS&MH_R@N4MODYMD zg21u#QbQU3vTrVj?B&QE)VXSb^+t4Cr}$n7Dc9~xHb7C-NcS15THeF=7WxwRoM}`u zaU2U7Pb+whIUVw!_TiTU=!+v0eL}oukKH6=`e<<-p@sk`)3^yHx&oc!`F@0zE6d<< ze}M$pQ%CW}@rxZy{G461bj^Uo^fVncJEG+#lz2r)oTEk0MuiXC_DC@&Vymyu!>xw1 z=y^={vi+9ObNpb09*;9g#UV!Y3^NysC$&4c_6-=(ArV8|5Gv)U?Bj~!GxTX4(B{W- z=_HfxqI;-HqMRnm=%igo0819gP4~FIRJ*<%?0-fH%eH5IgQ{sxyKciZP4VsveE|zP zb-wit+#Uc_m5eE8LpkL?6V6O2uiF(M0|0U0_H(B4yG77M4%NQnr9j$-ze=B*c|?#P zQLSs8MjIB47;(oz-=*{pE#}luQZZ!fdS=x8LJm$5TwAI2@y8+8*OOJE9%K-!2Ztep zW9Pak>9*jw9Fj#b{39SPHLekw!C0Vfc6zyZj2@Dvh}?Z`&4a8`l>|Bh-k7qh<qg#H z3xOfh02feJi>-5s!bpohkYhuZ9*!ZUt2z5?$y2V7DEgUDh4lnM8oQG)ms%Aox|1LZ zj$VKzH9FHbfGkqcG5;_P7Cp|MHGrYg<x%cPo%WjvsGcF8ssqZ3jJz_d$Uw=HsR0O7 zu~#>QGA>APtkS@HemO!Y7e%9-ui{w+x550{5`i2-jsVKoMGbq7&ZN*b*j5y-%GMDa zYKVeE391v)y)_wio>rMC=+;fxKW{VcMuM@nCb4lQG2lFiAleNVqPikw9C&1Q<J2B@ z@D%3shd0<+WMlL7E0UrEc<2~Wnxn^bo^d_);&aQNB#EAQj>^v&$y`0_0#Kky7MeT( zv<9Dn$+W=N#BcG}Q}2=DoU<IAvN9v!ullHoG(f#EMvCS*)SGW-60oj+Y5<0kr!H!z z`K>r)Ar{Ti&0k*w)!uo5%kfH4Sr!__Fnc1D3P@)i6-En(@)gM+Dr+(3INDv{;hoBS z^Ec6uQO;V$|60}0=al^r98hYwE_~*XwgIczA2Izo9$>Va9!>NRAg_xeLsJIecE-dh zw*=wPgOW$>wq=D^_A)WM%eveeyFa440l5G>7i~P|!rb(<E}IDr=JqjX#^@RlSYL1Z zO*udGnFLVu^w4ld|E6=$6j^`d1Lzi|0j4FqH%))4X_AYO4pn~BCy$<8y74MZnfT)7 z1K)bOml}V&{n!7t0G&qWS9NzVN`hC6Cp?h*=m=MkkFq?m3rFC-%Asmjbqg%{O7}vz z;K7yOca}ljlJrnlGH=ZuFG{JG6_3{l%bmV<8l^6M-_4F{%vpihRD6H;p#6RH!J{sG z+si(a_do`;6}9`F*ZJyK6%oS}{WSam$~5dHFC4{64oc>Z6-d-Zn{C*&Ww@bp7Ix1p zqsbunguiUtEhBQ(lsF4@K}byT=Sz}EZ+V0qGdg0DL<;E7DH-!UB5f^jGmcfw7(xzb z7J9xJq_DKQaNrOQ9$yfB6&6WcDm}Q80>4Lro1=+#2IVxFf=d>aX&ek3NZyFTAUpwd zM~1zp!~sGiae_}z;YJAIPmmizX;fe}!0zIF-0qS_=$n0@)N<|7)2dbL^3UjeK>{Cf zZN&cq=<$h#PduOwBJYby<(UM{ib(=8$kOB<T&k0$X@7Kt@IB3U#WJXUgUOYr7_!Oz z$=L*fJ2xPNHmBjGK1eV#o_%t5nY|NA8oNqtlzLa>w{_18V298n6L^O*l!bk9w3<A5 z?@Na!AC{*->8O23D0rqBgb}hMykuK{^vA8_p_1r`H3V#lS_M1lWUMZ7gCSl(4h}&4 zXFN5ST@viR6jmh%tO$k)Zby-Xw<ta|1^1@`9sK<2r_vlZbkJ^rMpW^w^qmKLWejPl z=pf~el)kG1$}FBb4jy{U7H)1P!9MIJjBs)rq$*{S<*qb9(L-^IQ>`IaGL06oen%?{ z8_Eip^MMV0HQI&<W#IZ1@@R!kUO$e%iH5`UQ4WjUTyWm$0z)c{z<Vrln&LqvD?%Tj z{`awLM-3DAoEQzzK_3iA$M=wsd1?v@jhfQlXy#G)`I7pai8*vWX{kO~z!Tf{=7|rC zI`WdX;>Oih&X-O<VT(&r9I;q_IQyDCMl$Al9K19SAPH<(O7hW;2Y8aRyS&HKGdqGp z?Pnj&0n0xC+vB1h(9v<=3iuu*9iv5x2;A>)|1~DN8(qCN=kwG`3k|^vBIG-ACHtMw z#fmSVAZ~vpr2xB!2sS<-VlVl;P5?U+v>HrwJmJAK+w^MtUW{l`oQJ?!LEx^YrhN3; z9lHI6WAsn971pm+2S2=vn9iBmb@$}W77<3tsI2K7Lw3L%NDBA`cyID+My2IL!K*(M z?7GmF_*abH5dZYU(frbfzwhKMJke3gLRuG-)gzjrdE3xysccrm=Ths)n-D437z0Nq z!)!l^B^V{sBgeBA413WC^S+-jP{58?Sej`{g;kW^Pi)WG=h)}F-!S*nkFTR#BCzlN zvX(yF)+Da(3G17mgiUc5<z8XLcn&l|2LZj1iGetAsm0U6ROM0WEW!+ZWNHz-SO^6e z{nt*w_?-OxMa8O837w|y4V1jLVNtAH6sGVX?U;pwz6Rg7C1$xCJ@F3pIiD_i97KVe zi5A5UGt4|1Wj1~e0la2ca|ZK^m3(rFW~w1AE2Rzw2k^Ee_9<c7@`Hv;Ooy%6z?L_1 z$YXNWvBR@QWN;s|OWh-8j1`!jHVa7elcG`sCNu7#c1kXBgPh+#7XwO@eAIW@E1}(e zS0)0CTcA{(uV#(MdNcu6l~lV`K{6~7c`j`A@JX%l0g;CUzo^0PKMe@uBHC!BFRN_m zaecME324T$%syWOzHc11kfWyEtA<3lCZu-X;@lA~ca_9w9W_uNrg@V~`Gl^2i>qsY zcQ}N2e(*!TC?l{plP%{#SjN8Gx|=`=EwF$FxTz=&AeB-AVI_6=DQFPi0NctvxX{Xy zSKXQ);lSb#a9XY*Ka`6o##g9;@=mkHsho8oFpCVDhPP9}QJ{UyuA2K1<N}i<i6}oe zFb|=OtYn)&Q_UPfkytK71FN9cy;#v1A_KeA9$F1CMRvwzPC$R7hSDyX76`pv*$~xV zMw<MDfjgl6ni>bJ{M%v}yk>*P<SK02D5e<m$y=ZM(}zqGh>J(@tiF0zkkgx(&V#r< zej_$Tc5iBC%<t?+0T(dtm%CBCAK%W!uiW`C6_LJ;&01u~=pG$=14!KX8}LYPnUAK8 zfTnBT-;bv?|1f_P0erCp3Q;g(B1f%+9Xwi#svh&CDRGuaefBwnl%RXI2?jQ0|F~-6 z#LZF#gCVrwJdDz?_pIOHpdxXafsBd3^*LtEVI&69|1r9ljS;&^;SY45o$9nZ;T^0y zdZOtvFhCpt8nbcws|Bv*VLhTmoOtZ>7MBIWL_O0z;l5G2_600&tNMGIojS#hs^7}p zxq&q5-q{7h<fYH&!8`V6=nJGpx~pvSoi|%|V>!?GB|soWX^<lwBgTiUWJ|aP-|*UQ zdY6P)*nK}JF-O@p#6rU?$?`jZ{7JkUdUj*w3F44OJ)4+>_=(O;Kf7jpsr~_KB6i_Z zbS#ge4`?h-F?fqhu)k4B>IJZT#d#^kBawDtWL!K&63B9*(l*<*XkhqN$k{KvbaF?s zHTEW6Xa$pPpYbKiy6>C@@56I2*BC5_&8NaA$~t}*c9fABP*jXG3t6Ijh>tchXADl^ zo__iFRdECzYPh*4slH!^4~R*qR}~!_{?hjWev^we=iFZJSlo$6UfbcoXNRP6={042 z_}1D34Os2uuOz46r(aqu!jLyTh>bl}v5PwIpm~X>j&~lDjT-kAl}p74#o3i#xevi* zFlFImqa`0d@qA3-wZ<}H9t@_4cYmwNOtC&n>OGz?xp9@i_|1BG)hPhCyer^z<!ZvN zb{A_=$>RZDy*DFaq!#Ym*Wd?G$!?^rp*E7;#!glbcDUJoa2e}sU5>p8FIx$hMmJ_k zh`QHML<=~9hAWk&MS77QGmGjn@zs<hW%qxc+r+$^VJo4+IGx(trNDx<c|x6^rP5I5 zFfwdj-GU^JBRx^6JJ}-jTsEnqZWP1HF?idK>rwgAP6sA@X5gR4$SMs(X$hdBF#pj( zWXIzAg#{SS_%^e=DQ|S+?oaHAqh89o$Ah4-i(l`Tz79mx8Zy2fQAZ!RjmA6-tJBHf zPExbdDf_XRyKdG0OKbcE13NPha`TJK<hbj#b5cv~Jz=V<T@Tv<uR9lc{2BmIi|7fX z03X-o#IijbsR7`5ee?5A^fnc*h_g9Tg*_v}^(WQTH3kMP+FF*wPdCTI!jI8<Yko9% zmWQd>!L%V>Or-9!hHE2XKO{fClH{9k71!wKY55nHlM5rb{<boxxn|dC^rlv?#PGP^ zwTJwl1tij}J+-EfNOf|~6TbR9w$C@4VRJA;Q!|!0hnwc8G1crlz2T?U=WmqMcq521 z2Mdz8IvX#V!{o9kl_l4B%*&2E;bU9lUqw<s*43^v%i1GyMA(nR@EnVtRyQQ9B^aOH zuX?i?R$zR^HEfv`foySqX!UIXxqdjDpZc*QzKdKQFtvS+JchC-DN%p>xFO0}fy7Gm zTiW(j6EU42f)Y<5C@Iz&Uc)8udayen<j?Iaq%k!kIDG@Mz#VdKcM^U6(3$WT#2`NL zfcemYyt+0Q^WHhmWQPaE{zsoudm=_znMgNEdfAyJwAJr0yR{>6JA<RiUn}X3I>F!) z4@I()ADD}akMMMrxgw;xwv7WIL3NS+vD@RA)0NU5uW147o8A1)Zw*2&WSoCB*7t|) z>>+QUY;>aUZwF%yCnR!4ZdWUd-C=a8Emj*wm<TzTL<pT0g2rpg1mf<|ljg(ph8iAu z)7@os^*f!NEwY%EgcZ-mY#dz&{N)b+4lLcAgVQA{Jt-I}y~T6cE`6|4Lr$$1l<m?< zU**Ymr-VBE<UsesS)Dr2LCSwFf<&7EDqRfCo|J6NQ`Fyv>)L_eOOkw@5Wf51s`1oK z9_!7flD(7uN=v&i_qX>vYT9dRY!{r@^UUcNdv^=x-RKcaLth;-OU4TXQdt;g<gk+S zg$3M!K{I*>pO0PbxDFlu$p3B^8BfGC+fGZ`J+g%@>xR*CL1&-BaC{~s&hMRuNR}hV z<FEIr6eJ!QUT$XcMPIR0!w(yCPc1u!ab1@@QhVQIkCEL^{X`>v=!^)k6+YUxlEa?{ ztvLRP7X1T%*8Z+IzOs+uofc4DFq~dZ`JSVwNr52oZXw;CBmM=h6@~ks!-i1EIk$%k z%jEWcZuuA97Q3d>JCEBPu_Kn@UfM<00Y^f*QqUJloV0?{i}l;=TFYmt_DKR*=X8u^ zykyerBH37mQvM|4p)B0Y!M4#S0eUq*{-nUKpD7gWvZTqn8c$sy*j>yIR`Y_np~2_N zUBf}<&UZa3I6Sp>!M%J6hKHv?k8s@8$j=*YEAr+Q>}3n7>#NR%>FkI|Kh&7JW%Vp{ z^#$<x-)NT?&ueR2+LEV15w-E)9v^Y)SR0o4KU#|#XN>IE_C+sWC>}BBB51)pKb8hO zm9xnY9VA?-5Q@!!WUqX%{X2kL3rkLs%I^(V)rp-=cd^FGciGzxcTT0)UZO{O*}FJz z8psL!=_;|D<^CyuS8q%$*pUKKlxZH(()+jK^pYHl4fJ^`sUu|8O>&tI^8S!f>~tOj zi~dj|uZ@~60kPMM(OyI4@@iy+^S+BlieRgPR<Gh1n({kti*==AqFQqMMs<s)KDO*g z6b(o@+=e>ern;#*(UL5~!!3HZ!I8FVWBypn(CCSJNA%*>!RA4b$q*oP5vCa%pVC`v zt&(DHp#{?Rm~{2?wfkWA+q-E)^>EW&9#ZTKxF%A){&ZGFclo-)Bw#g1=V0uS9r3-$ zHZOTH;^o>*IL*dga(GncRo8sdwsGBRb6aaG(}zr$;o}HO2bKmSxkJPvXP-U$3n%SI z!nx&7uXpc;#ZlnSaOwDk{EkG=Kb)f3*|Eyw@yR#uHaT^$WY=jWm-zM)>kH*qa;|E~ z+S1{S9$bP-bo_qoU*9wt&bffFMLd4~Q79)-a1+}pgA7CVfTS%wyYdKn+eCeS7gx1T zWo=nQ@3|RxUDNBBD$JR6PRt#OSMxfzux}_rL-wzAY9~xBpI>&7uty3!W%^U8Dh7LL zDfGLTBTWpvZ;gILoCQ|eV>3eHZu0T54^xmXn)&hcu>2nE28EA72Pv%n(A_pmFNCcK ziA-Wole}Jy?4IP)(+Hm%@{>@u$+}c^Y*EQJ;O2d0`}|gN)1$E4<~?<lf9VT+X0Iox z{YsDc5}CMsr?kz4Zv9ts37L?ZEU(B+JQc18&#Da=ph>3e$HrlQYJZ$gcQdymFNX5M zjP!hRfhYYlLY+#NEy@--FPvN-k<*uaiJFn<nIb6Ba&kI?PRNbfsA!(=T`WJ>Q;qu7 zCi3jT`wXf+J`14H6G@*L^}bqO$`3-oZ3hr9XvU{`R`n;a|Gr8xmOY^4`uL3)+gMAz z>2#!j{U}3#O6MVVIP4xBT^DZ{WvryGNM-g|K{2s5c(y~ONX8MrYbbe-Zq9&4ExLkp zq_q=kE=iHM%D0LjCxd*f#qaCrU|owy`yH7#6+8KguKu_o)GB1pNt*W4o%qjKUJJe? zg=M@3I^U53(nTO2$MVptv!B?eO=P?A2B{Yt4Iz%Pjb3+@Wh%_rT{Vlb{8w1;om)OW zs*-VcUlc}?UE@=!5h3#gLyHQO;pFPa5<>n?LBV1e{o`;NHg~{?i=WI_QS8lyljrXY zrvK2<?K{SA-*32GYwIzq8RTF3?CG}uAMM7FG-mEYR@-m37QI{{qjahy7rZs(528BQ zZ)v0pZGSd7-|`%^acYG3&B4;IOFc#n2DPw$17d|HIOSQ}M~QQt_-9*)IF0hsfL}mc z?Nih(r8AjS(X4D_t{7vp)yvmv=G5<SRCrZCru&qb{^ZRExsQ$T!5>b4gbkKXSuVYG zn<^=9D_&W&4`zyq@A4b#`$%s%_<WeYnCsU|cU9AJAF3xWA4EuO6?t)FF-f9-K8cqE zD8X$Ht(Y~vq-L>U?`RpCk5x%%cfLaO+W4+Q-8PnY9T}tOc}d<G(l}iIu}q(kwtBos zvV@%2CN>CwR6uY~aNvRgSAA;B#*)NJZd}=eD5S#|XKI9Sz21$NmDQ;1#grOcFHOq; zjpk{H1T<-M1q>gv_Df*(53PhbF;KCmwt)KgOSvPcOux|gvv=s{KSSr04)&dYcv|12 zJ_g;q7yr$uL^*X^-Qgfu#f#KAHS~O*s;<phDQmD=tvpq?^<*~Q#rME@;0+?=1ypHb zQK$CSr}&%I%z9B%w@j;1bn&PI*XLs5_B&65TGrNPe+$0tS&CHsIlqH!zNM(6aCY#q z!q9f!r`Z}x{F0--u?0O`rVbaV+B)uKHMt2VcOrQgQ>Eh_?}%LMzzo1VqKO^9B;9uO zGJ-c3T})ocy=8kSFT5NYE`B@t*x-nIlbQSZ*w~tmlT^GS3+9c~i!Je>0u+4%P^K{$ zUm!}quBC3+_M>3`By;nJoP6^W^sLGBU|UUB=FisAtqwrd5k1o%-XV7C;DtD_e*9`S z%2MD@#R?D|bYXA_YP+<1IbAzJXLjr<z>t1@L${)|MI9W~vg}y+H*VzRduj5Q3iy?u z8|td+@z>HP++Jn$tHOvAe}9iEK>4~t36I8=p7a{Ch)n%ayz`(_kNk4_kZT{=rpK;E zSoHk+{V=JyIO>dEDyIzn7f!H>He8|k4I0v@x7_}wH?EomJG1pZIY6b$?dk{q_%!(F zf^RqAZ}gvU0!uSdrs~UnZReo*Zs@bI_dMCq3W-TKktoq6Fh-0L^Y*Dz%RP$=zUEc& zSrX#(=J-1nh5IKvLEUteD?Z6nZtL8u97API)L|x0oT~M#b;mfF;R-s{CY2l-S<NFp zZYt*Gl@1*761a*v?yVDP3tkJZ%m~>%AgOIWoINjiz&)Fh6jRp?@TI6b9#<tf{D$I5 zxO112$wN@sRbeO>K*6kFTE-{U$4$&;J>(r%(^s-e?23@%6#MM@KEgMR?0bLY-Y?UL z_<6wNDto<*Ug-whD|&k3oSX%*Eahx$NW-5ZXFx#bK`0}2(AQ96#l(9u^>A0uaJpf< zA(-!e;%}%@#)&{0!vZ*M)RyIkyuD!!J>7Gr=jbH!_2+T+;-E;;tCx&}L5@s(EOxh| zzvz(S(ZLZBUscXi@oFn)6;G{d8$<mko^jtv3%>OD&`<Kd{c6ZiVt-+91z%cud{q=n zcrX!de7=RfB<7)k__6DxprHEZZ^uZ^PCp+VvclB%z^2HyI*|&}{cotk-+!F1RC#<% z7^Goy8}-=B(7d|rO$h<!w~H{pty_v2S=hF&YGfGFH9(jRc7?}-_yE6Y8VFp(y8YZa zezCBS8tUceclH8tx^u8f!>{G5!PEcU;NCAkeE^k4j1fANQ`|;dfp1?GMicZf6UX#J z-ef1L3(?FT&Dt*@NA(a);#MTlXu-Y0w~58GV-h3@WIg-}x~axTY+EX(4dS+e=r!?( zg{C`?%RRY*ofWSsl#~><OcL*5=IEpT(Q?6e>Rd-^O@4RBw3rj061a=pR(*(XkCJ@2 zzx4=pj7;~4ezY`sr%~f=8#Nv;S8l>Efyc-N>;H;%DLN+$Wct<j{#<{KOXBRvX{-1R zE!aVkx#XnQ{`u?|OwkK1Ie-Ycf^wVex$g#N4*)N&xN$FTyrM3;sWIr{KqWHNY29Fz z5%V`-@$s)tR!u7p(<giM(8e-J&{tJV1ib?q{dDQ{LsVRG$1pPW`73^>tB#^^Nx=M8 zj{Wb_D(sgFag8q$B%$=F^3>ui&^@hh`zbb`r`hZQ1xg#C5Ew3H=;dBV``~<#PA^0M zW1R|0tir^WM#Ir~XfaK)La>UdQ*rWv)^g@5^t*UBEdB#23R^Qr7mZtS;en=5;~vjF zW~)%}bC!@#)dfH8@CC#s-4Yg_i>94W=y!@@Bc>QFu^#T~#suQD>Ty9rOc8u7`vjLC zi8S}(YHSt5TlZ>TE*^E{OIvr3eRoBl9~MVV0c!0DKaqBkhpCsk8BMMR<iAZ(dvkn< zwL$y!#o;N|;1XR~Cq~Q)Q9aZ9UoJ#p{6p9};-M9<f4f>sQmQ^`Tm*$0|Ba?zyw+zT zQO@lxeK*fXQVgNSSA7NGW2)@k771h`8V90hnI!ZP1mobzHYb1FC}DO{hh{G=;;&N; zb&kbyeQggBIDPETXz_^P6BYA@FnoY|P;;dqWx@r65zctXp=WN(6sCnKkB_81=Em3w z;^-4{!zQY8#dD)+kMcRwusQAzTlZ%qj)|1^G8Sd%Ee%*XCb*)L%m^XMqB)LLCq*?= z9*rw$U(QDU-b4^Hv>tlK@6LYs9h{xLg~t{y|L_fIg53B6DvG|~iZtw1d*aJ3o&4Na zSp8`HaHKGz|I7Yyp=p^kfBy4+^uSuL`SCLM`K<J5$1SYJcC6)<&tH3Gwj=^^rjE@H z>-4d6%;GHxAxBVgWbC4E{4!Z$PlX}kRa@!)iBgt_S^$SDvQs@rh~*Ake<z`;m;yoH zGi#({jI{!fF7}Yr+G?N)KYRejZ&O-_%m3ald?QEQ__KbUs(?cSkd7%Q?V(e#wa}M) z>0Z^Ydu4gryyF-C?6F<d?@Ynp(0qa+VIF?2dI=c1@fJ^z#2*vJ4hn#QiW>_`Q5Rjs zyZh0SJ9fL8@&4N<F1!94n%hFOQ#9XEiF{oMC;=b!x}v;a<_}`={pfcaE@}<HYwlq0 zMDgT<q;0t6mDYSV7K#-DMSlgh{nB6{PbJ4x{9WTo?fm7SqXEiXl__`gs7-nuzAZO& zx7)UGvH5mKq#*=`N2~SWbe;~R!i=UDB9NU(JE)ByA#~xvUd2eS66l^R=)NTz!zDVu zAqC4Ac$#Ox#nUN>@ySCTrD^Qd?U-C*4Hz`7tv6yey3&qAQumkS^Hh?vBl;^PFD%r& zjM+Qk=q^5$w&1<&ij|v)mB95OGt2@#{t3QyQ3+vaK7YD%w%6)^Q1pYNPyE&fv8zaA zlx`$<q!$y({FVW3FAsimix-r0J#8f7M=yWE-*iZ<2N|3QrG7O@wS<m!hrpA3LbT*4 zmv|xr`*>%+moaLwHUWw?du6;S9HfD}&t{mX?HyUp50o%#bpYRyAYS{vh}yExo3jme z@(eHCt^HpIlfROnd41dNA-DK0hZ}n_s=ZiUj0~PLyJvzaM505BW#Dto&^ML^D(7|L z=+rOop+Ee8y1Q)*RL{-1b!eGHH&jl~=>#2vb_*1da4wHHjd(28Ad=W*pC{8c=9Nac z-sqw8272hJa=asNkM~t)mS|oKy~V${e76W*CPHvu{*lUzNk|+@62!#wCBBS~&{G>x z+t)y^9prY>zcdjKJqe0PXZ5G}Q3ZWXspF3B&8M@2+78&I7(UGB(0ao6CfsimS$?OM ze>I3iHF>A?(FEvuD&&?Y@Ff3ln#YqZ!=EDJpIb#Q{>-Y<v$||<qVGo6VXNy+uL$HA zqmIL%QgW566AN)~AKM?Nzl0&W`i;ffJz;p14m7jV=w|Y(C~n9*>p=xdd``KZeASs5 z?usQ%+hNG6oFG&IRNo`J>o#&CbP}cOzh}@Pr&jtxEAY4Cb6hj=e&K{6Y2HRfSVd75 zPo%dWFv2!}YUJD4b1?^g>ImNjZLuu@tG^BW--oDz>heNtUAFGgR_I;{BGozLS%a@g zb2h!LWCGM)X*#CKx6_Dw`X3Z(k>JUG;D3kbdQ&v}UQxm4oe}M7-gk8<lI>vqr|ynS z2fu{j=kTz_D>uKtp<ceE?hnyx*@Ro-AE)Qz!}R0aRWVL^^K+Y*qjH``4q%_S4L@hD z+8i>W<Q(od6zC#&LUW?w=n5TP0eKQBL!$s)=>ADP<7+fptJ0EQ(Hpn-sScofK2KhG zb4j=*!lJguP`GiJRl;<e^;;{W0f%w?j^J<X5crJ@n3^LfEy4NEONAE`R5I}Wy)(LM zJQ1Xa9qdOB)xwYa?>VxzL$4VTlDbY0lQ)pi<J{v7WYp1^4zy@!<<>VLR6GQ?qu~8L z%_7g0($zrV9Xa8HOn$MSl_Di?bWoP;9iu;9J0CJ<U4t4ut}Q)&x1O!#i<z5?z4seW z9tY0C!|nWuX2p4{Y{Ma0%K$@IY(4MY(9wy9w1=NgVkb{H+75dOygx|Bc@N$0TQ0w@ zinAZMvu(4o%KAa;TtC7!H@qhAT!A<^XeeSzm$=An_wmCoYPK?PQKlB+%Ux~#=;rEq zd&I%p@2M8}D>n%(NNx*YbF=b%x~XZzb#88BgH?Ya=Ah%UqO@MH&;c|U11(sO34d&L zoYQq6f^m92_C=)I=AEHuKF|4i?foRRUH`vOy3|kmjk>&0zPGP0b$sDh$aGs=#W-Fu z$OKkamQO#ocZ@7jI$sUpQ_g`uiE$*$knYNr{%Q!z0eoDlw`ay=mrC(mo&#|~*=Ezn z14R0>NI@zkV?6uB0<Wa-Jz>V0JN%a}I~*Q|#H@XTBW*yDR~O=V-*=sH#~b!Gn6&dn zg0TO_ejnEFNlrZ+Qpthqo7Xk+)T#aFwAKa{mr#DblqV`bE>&Ui^botyVs<<kfuavj zIR300&`i1=c(*O=Y<CTsy9^qUrpQoyzA>WXf3`awiu6#1)3>%>a+d~1dmsJNVMLaM z|7s|N`8jUXc|eM5U(ooTx`Gc&ih4mY%aKBlg9Dc16{M&2XBXjz(XCNS^x`(5>udA# zUIB$smG^r{GFFv$_w+;yWqkZgVz*YZ{_inGFwBL-cZV6pj=1^O%aJZIxN{+`dIY9! z1wwF-9$`Ac9Yb1Vxp{3bmXm&7x6k-M$|fGo_hc_1Y)M8oG%&EZnS+@)vnrg3*mlHs zoMVeg_BE`H002^iuBN)F@Fga*liu+cVL$e5^!<^bessJi^h{iAz*=PA1HO3KIdzu1 z^rr!NcPQV*8FxvUV&c0VaXsU48jiHz@;i_q_0Ma;KW9=#clDp0{dCwvx~C(fvT*R* zlz7&AxX9NJa7r$o(oiplo7_~pa-43yE00jc2d8vT7aXr&Ph}#IjZUr9tXsWNT@m!P z`t2Yj3Ed+?vB^OqH;c3qrpGD2><FUcK%}gmI9dyM5%%}VZ}#G(7E`;yoaY2H9QIi* zCvh^UCOLU?^pv~uv%{mcjpzrw(4-B%^nf70rybzUz`HR&OKzNM%K&qDEd#;$oBt>q z@z~Tj=gqQ4*$+o^O?EWVS!eXTk(QoSMz15Y?s4zJUkgK@G?{<o05Co;Bb1HbJAaeJ zRt)v=I~bt>uz5(#IQf*!tI~ViAK6H;s2Vjb^_E-CuBXi+LcHq#+O1btWDv^x85eI} zX~HEwE%I@9&9@$ul-mY3sHFs?c$}Q0iwPYMhead-@7vqC2qqN)hsDo)t;@*8=*V;! zAJWmOIypJC)_fV<S`>_NEsIN5TgiRPzLHh;Kh8h`(TxPD>P9B63Pi~F2N&@kerZ1E zc!;OB1mDsj!|(FJzF(TZzZR)hha*>bjtvp~ZiPjxd(6fN7lmGHYO34r=IOIsd5f`Y zk|}?q)1T>o@83?b3R0=_URZ>nGkf)5e#R$uv+Y_N#CFxp;ay&(^CA1+N`|aR(aR9Y ztN6hQe=T9O9)Z(*8S-rZ>2g$K3A$#=N+Ie(uM%WSm8?cTg!EUC<~;kZehc-$+*AGH z-*a2F6XtS^k0!QsxiW2LejC>5E6H}7*=48wliG6r6nc>KqZOksAc=V<S^-aj5b|Ai zthz<g^q@Rz|0^K_-u(K1>)c_-`|2B<H=AdW5xj^h(N(q$Ok)N_G<={TLO6<wB;k;# zIqPB&W%E8N@YnUcb(Hn{1%3&UFL9}54NMb-dkSgN;NLzk*5~JZ=4t6XMew=C%XzCm zmtA~O?amN;@V{0rATDc_n*&|?W8``NqjT9)-c!ia>fvLk@wT>}gzfF8SUa%V6&S+I z(~}IajpVQYxsM+FQ}50Z?<4TrWe@%S9s>Ukbi0c}ch4fH^Zfk}u)x287k;)<#i7=9 zpif@_82m%zihtF6+Lvtkcu0-L4z$}BG@WPWkkfQtuz*gg6suC+Nd|wNWj#LN_Y*&S zbSg&eUVj(*y@$M4-{PtBd6crY;r;M`!NUIpB$DCERQEz~q)Y!cR`%a>uG{pUVkE8F zksJ;aP9sw|g=t%k&22U&QiISoNAqa|{_3;=f7yG<a!<ohTJ%N$9}bW5w2XQ`jYR6R zgU`Q-+Vy{4OQBYForMKD|2353|0QYze=K%^IopZXK*R)OEViNFU8<8QtxjTlT53PE z3e-@kKlnfKiL{m1(mOCdBD(Om0Iptl?vj_l>aa<hv`Gt7;+^Z@G5r*OlV{)BsInta zH9C3&VC%n<^PO+uOSMBd)eUWELq$q7cE7(5F#7iqCw~)vEM9`U0<CEXFpbWiL4Jd3 zO!99yH@qlAgQfPC+R%o6$0*e;yGJ(=^#2j2{~BrvFusV6kpUPzvjx!o+sFw1wsZau zX?I0&BHCyL8~S}BXVM;N^rtBC|2zEgKR^|?+FEMyNa^hJ0F6JvYWxl7vRCNcy(fd= zh8b+=cafZi=;rCXcd(!TLretx**o&Cy+$X7&Qr9JzXH(wr%*Har*U|2iF^sXCx*CT z2pf7FDF7bNZy@OZ5%%l<2Y*nSzm?B1(FtMz<8<L^RF7UulIGWtA$&K>{A=JwPk|qH zP+i)=za<{B25n1T-*k+xshkZx9`yf@lK6%!1O5+TK}WWkz5sc^CM@G)M#jHa{{8z0 mx<nmx$KGuQ$kmjC4gdhIb_~n`1KfiE0000<MNUMnLSTZIOjc<C literal 0 HcmV?d00001 diff --git a/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java b/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java index 01a5d611f..17b472d8a 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java @@ -62,6 +62,7 @@ public abstract class TrayManager { if(SystemTray.isSupported()) { tray = SystemTray.getSystemTray(); trayIcon = new TrayIcon(getTrayImage(), "I2P", getMainMenu()); + trayIcon.setImageAutoSize(true); //Resize image to fit the system tray try { tray.add(trayIcon); } catch (AWTException e) { @@ -85,7 +86,7 @@ public abstract class TrayManager { * @return image used for the tray icon */ private Image getTrayImage() { - URL url = getClass().getResource("/desktopgui/resources/images/logo.jpg"); + URL url = getClass().getResource("/desktopgui/resources/images/logo.png"); Image image = Toolkit.getDefaultToolkit().getImage(url); return image; } From bf99b04e0ae3f9c9f30680f2be4fbb1a50f2a6f2 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Mon, 24 Jan 2011 13:20:06 +0000 Subject: [PATCH 130/463] cleanups after review, ticket 390 --- .../i2p/router/web/PluginUpdateHandler.java | 1 + .../i2p/client/DestReplyMessageHandler.java | 10 +- .../src/net/i2p/data/SimpleDataStructure.java | 2 +- .../resources/themes/console/dark/console.css | 6 +- .../themes/console/light/console.css | 2304 ++++++++--------- .../themes/console/light/default.css | 844 +++--- .../themes/console/midnight/console.css | 6 +- 7 files changed, 1583 insertions(+), 1590 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/PluginUpdateHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/PluginUpdateHandler.java index 59d729ae7..879f0ee3d 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/PluginUpdateHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/PluginUpdateHandler.java @@ -144,6 +144,7 @@ public class PluginUpdateHandler extends UpdateHandler { } buf.append(": "); buf.append(_("{0}B transferred", DataHelper.formatSize2(currentWrite + alreadyTransferred))); + buf.append("</b>"); updateStatus(buf.toString()); } diff --git a/core/java/src/net/i2p/client/DestReplyMessageHandler.java b/core/java/src/net/i2p/client/DestReplyMessageHandler.java index 8d5527d59..2207a56c5 100644 --- a/core/java/src/net/i2p/client/DestReplyMessageHandler.java +++ b/core/java/src/net/i2p/client/DestReplyMessageHandler.java @@ -26,11 +26,13 @@ class DestReplyMessageHandler extends HandlerImpl { _log.debug("Handle message " + message); DestReplyMessage msg = (DestReplyMessage) message; Destination d = msg.getDestination(); - if (d != null) + if (d != null) { session.destReceived(d); - Hash h = msg.getHash(); - if (h != null) - session.destLookupFailed(h); + } else { + Hash h = msg.getHash(); + if (h != null) + session.destLookupFailed(h); + } // else let it time out } } diff --git a/core/java/src/net/i2p/data/SimpleDataStructure.java b/core/java/src/net/i2p/data/SimpleDataStructure.java index 0017e567c..01ca5443f 100644 --- a/core/java/src/net/i2p/data/SimpleDataStructure.java +++ b/core/java/src/net/i2p/data/SimpleDataStructure.java @@ -75,7 +75,7 @@ public abstract class SimpleDataStructure extends DataStructureImpl { /** * Sets the data. - * @param data of correct length, or null + * @param in the stream to read * @throws RuntimeException if data already set. */ public void readBytes(InputStream in) throws DataFormatException, IOException { diff --git a/installer/resources/themes/console/dark/console.css b/installer/resources/themes/console/dark/console.css index 527cfceb0..02d97d4b4 100644 --- a/installer/resources/themes/console/dark/console.css +++ b/installer/resources/themes/console/dark/console.css @@ -865,7 +865,7 @@ input:active { color: #EE9; } -input[type=text] { +input[type=text], input[type=password] { background: #000; color: #EE9; margin: 5px 10px; @@ -881,7 +881,7 @@ input[type=text] { box-shadow: inset 1px 1px 1px 0px #000; } -input[type=text]:active, input[type=text]:hover { +input[type=text]:active, input[type=text]:hover, input[type=password]:active, input[type=password]:hover { background: #000; } @@ -1080,4 +1080,4 @@ div.footnote hr{ margin-top: -5px; margin-bottom: -5px; margin-right: 5px; -} \ No newline at end of file +} diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index f3d991a8e..3f49809f1 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -1,1156 +1,1148 @@ -/* I2P Theme: Light */ -/* Description: Light blue highlights. */ -/* Author: dr|z3d */ - -body { - margin: 10px 0px -10px 10px; - text-align: center; - background: #ffe url('images/snowcamo.png'); - color: #000; - font: 10pt/130% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - background: #99f url('images/magic.png') center bottom; -} - -.hide { - display: none; -} - -img { - border: none; -} - -pre { - width: 98%; - overflow: auto; - text-align: left; - font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; - color: #333; - margin: 10px; -} - -div.logo { - float: left; - padding: 10px; - text-align: center; - font-color: #fff; - margin: 0 10px; - border: 1px solid #447; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - background: #ffe; - width: 185px; - -moz-box-shadow: inset 0px 0px 1px 1px #bbf; -} - -div.toolbar { - margin: 0; - padding: 10px; - font-weight: bold; - background: #ffe; - border: 1px solid #447; - display: none !important; -} - -div.toolbar a:link { - border: 1px outset #ddddc0; - padding: 0px 5px 1px 5px; - line-height: 250%; - background: #bbf; - text-decoration: none; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - display: none !important; -} - -div.toolbar a:visited { - background: #ffe; -} - -div.toolbar a:hover{ - border: 1px solid #eeffef; - background: #003; - color: #f60; -} - -a:active{ - color: #900; -} - -div.routersummaryouter { - float: left; - width: 200px; - margin: 0 0 10px 0px; - padding: 0; - border: 0; - clear: left;/* fixes a bug in Opera */ - text-align: center !important; - display: block; -} - -div.routersummary { - width: 180px; - padding: 8px 8px 10px 8px; - text-align: center !important; - border: 1px solid #447; - color: #000; - font-size: 8pt; - clear: left;/* fixes a bug in Opera */ - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - background: #ffe url('images/magic.png') center bottom; - -moz-box-shadow: inset 0px 0px 1px 1px #bbf; - -khtml-box-shadow: inset 0px 0px 1px 1px #bbf; - box-shadow: inset 0px 0px 1px 1px #bbf; -} - -div.routersummary input[type=text] { - text-align: right !important; -} - -div.routersummary hr { - color: #99f; - background: #99f; - height: 1px; - border-bottom: 1px solid #99f; - margin: 8px -7px 8px -7px; - -moz-box-shadow: inset 0px 1px 1px 1px #fff; - -khtml-box-shadow: inset 0px 1px 0px #fff; - box-shadow: inset 0px 1px 1px 1px #fff; -} - -div routersummary hr:last-child { -} - -div.routersummary h3 { - border: 0; - font-size: 9.5pt; - letter-spacing: 0.04em; - margin: -4px -3px; - padding: 2px 0; - background: #ffe; - text-transform: uppercase; - background: #ffe url('images/header.png') center center repeat-x; - border: 1px solid #99f !important; - -moz-border-radius: 3px; - -khtml-border-radius: 3px; - border-radius: 3px; - -moz-box-shadow: 0px 1px 5px #bbf; - text-shadow: 0px 1px 1px #77f; - -moz-box-shadow: outset 0px 0px 2px 1px #bbf; - -khtml-box-shadow: outset 0px 0px 2px 1px #bbf; - box-shadow: outset 0px 0px 2px 1px #bbf; -} - -div.routersummary h3 a { - text-decoration: none; -} - -div.routersummary h3:hover { - background: #ffa url('images/header.png') center center repeat-x !important; - text-shadow: 0 0 0; - -moz-box-shadow: inset 0px 0px 2px 1px #ffa; - -khtml-box-shadow: inset 0px 0px 2px 1px #ffa; - box-shadow: inset 0px 0px 2px 1px #ffa; -} - -div.routersummary h4 { - border: 0px solid #fff; - border-bottom: 0 !important; - font-size: 8.5pt; - letter-spacing: 0.02em; - margin: -6px -6px -7px !important; - padding: 3px 3px 5px 3px; - background: #ddf url(images/magic.png); - text-transform: capitalize; - text-decoration: none !important; - color: #2b2; - line-height: 105%; - -moz-box-shadow: inset 0px 0px 1px 30px #dfd; - -khtml-box-shadow: 0px 0px 1px 1px #dfd; - box-shadow: 0px 0px 1px 1px #fdf; -} - -div.routersummary table { - border: 0; - text-align: center !important; - margin: -7px -5px -6px -5px; - width: 190px !important; - overflow: hidden; - font-size: 8pt; - padding: 0px -10px; - background-image: none !important; - background-color: transparent !important; -} - -div.routersummary tr { - background-image: none !important; - background-color: transparent !important; - border: 0 !important; -} - -div.routersummary td:first-child { - max-width: 90px; - overflow: hidden; -} - -div.routersummary a:hover { - color: #f60; -} - -div.routersummary td { - padding: 1px 3px; - background-image: none !important; - border: 0 !important; -} - -div.tunnels td:first-child { - width: 16px; - text-align: left; - padding-right: 1px; -} - -div.tunnels td:last-child { - text-align: right; - padding-right: 1px; -} - -div.tunnels img, div.tunnels img:hover { - opacity: 1 !important; -} - -div.routersummary img:first-child { - margin-bottom: -2px !important; - opacity: 0.7; -} - -div.routersummary img:hover:first-child { - margin-bottom: -2px !important; - opacity: 1; -} - -div.tunnels { - margin-top: 6px !important; - margin-left: -2px !important; - margin-bottom: 3px !important; - padding-top: 3px !important; -} - -div.tunnels table { - margin: -7px 0 -5px -4px !important; -} - -div.tunnels td, div.tunnels img:first-child { - margin: 0 !important; - text-transform: capitalize; -} - -.tunnels tr { - padding: 4px 0 !important; -} - -div.routersummary form { - margin: -6px 0 -5px 0; -} - -div.routersummary form:last-child { - margin: 6px 0 0 0 !important; - padding: 0; -} - -div.routersummary p { - padding: 0; -} - -div.refresh { - margin-top: -6px !important; - margin-bottom: 0px !important; - padding: 2px 0 0px 0 !important; -} - -/* proxy error messages */ - -div.warning { - margin: 20px 20px 30px 240px; - padding: 5px 25px 20px 75px; - background: #fff; - border: 1px solid #447; - text-align: left; - color: inherit; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - text-align: justify; - background-image:url("../images/itoopie_sm.png"); - background-position:10px center; - background-repeat:no-repeat; - -moz-box-shadow: inset 0px 0px 1px 0px #d00; - word-wrap: break-word; - min-width: 400px; -} - -/* console error messages */ - -div.sorry { - margin: 5px 10px 10px 207px; - padding: 20px 20px 20px 75px; - background: #ffe; - border: 1px solid #447; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - text-align: justify; - background-image: url("images/errortriangle.png"); - background-position: 15px center; - background-repeat: no-repeat; - -moz-box-shadow: inset 0px 0px 0px 1px #d00; - word-wrap: break-word; - font-weight: bold; - color: #531; -} - -div.sorry hr { - color: #531; - background: #531; - height: 1px; - border: 1px solid #531; - margin: 10px 0 15px 0; -} - -div.main { - margin: 10px 10px 20px 207px; - padding: 0 15px 15px 15px; - background: #ffe; - text-align: left; - color: #001; - width: auto; - min-width: 500px; - border: 1px solid #447; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: inset 0px 0px 1px 1px #bbf; - -khtml-box-shadow: inset 0px 0px 1px 1px #bbf; - box-shadow: inset 0px 0px 1px 1px #bbf; - background: #ffe url('images/magic.png') center bottom;} - -div.main hr, hr { - color: #113; - background: #113; - height: 1px; - border: 0px solid #113; - margin: 10px 0; -} - -hr:last-child { - margin-top: 20px !important; -} - -div.main textarea { - background: #ffe; - color: #001; - font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; -} - -div.news { - margin: 0px 10px 5px 207px; - padding: 7px 20px 7px 20px; - border: 1px solid #447; - color: #224; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - text-align: right !important; - font-size: 7.5pt; - line-height: 140%; - -moz-box-shadow: inset 0px 0px 1px 1px #bbf; - -khtml-box-shadow: inset 0px 0px 1px 1px #bbf; - box-shadow: inset 0px 0px 1px 1px #bbf; - background: #ffe url('images/magic.png') center bottom; - min-width: 490px; -} - -div.news p { - font-size: 9pt; - text-align: justify !important; - line-height: 120%; - margin-top: -7px; - padding: 0 15px; -} - -div.news hr{ - color: #225; - background: #225; - height: 1px; - border: 0px dotted #225; - margin: 10px 0 5px; - opacity: 0.6; -} - -div.news li { - text-align: justify; - list-style: none; - margin: 5px 0 16px 0 !important; - vertical-align: bottom; - border: 1px solid #113; - border-left: 5px solid #113; - padding: 5px 5px; - border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - -khtml-border-radius: 0 4px 4px 0; - font-size: 10pt; - opacity: 1; - background: #ffe url('images/header.png') center center repeat-x; - -moz-box-shadow: 0 1px 1px 1px rgba(176, 176, 216, 0.4); - -moz-box-shadow: 0 1px 1px 1px rgba(176, 176, 216, 0.4); - font-weight: bold; - text-transform: capitalize; -} - -div.news li:first-child { - margin-top: 10px !important; -} - -div.news h3 { - background: none !important; - text-align: left; - border: none !important; - padding-left: 0; - padding-top: 0px; - border-bottom: 1px dotted #225 !important; - -moz-box-shadow: none; - -khtml-box-shadow: none; - box-shadow: none; - font-size: 10pt !important; - letter-spacing: 0.05em; - text-transform: capitalize !important; - text-shadow: 0px 0px 0px #77f; -} - -div.news i { - font-style: normal; -} - -div.news h4 { - border-bottom: 0px; - padding: 0; - margin: 0 0 -10px 0; - font-size: 11pt; -} - -div.confignav { - padding: 15px 10px !important; - margin: 15px 0 15px 0; - background: url('images/header.png') center center repeat-x; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - border: 1px solid #115; - font-size: 9.5pt !important; - font-weight: bold !important; - line-height: 160% !important; - -moz-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); - -khtml-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); - box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); - opacity: 1; - min-width: 400px; -} - -div.configure { - min-width: 400px; - margin-bottom: 0px; -} - -div.configure h3, div.graphspanel h3 { - border: 1px solid #115; - border-left: 5px solid #115; - padding: 5px; - margin: 15px 0 15px 0; - border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - -khtml-border-radius: 0 4px 4px 0; - background: #ffe; - text-align: left; -} - -div.graphspanel { - text-align: center !important; - margin: 15px 0px -15px; -} - -div.graphspanel img { - border: 1px solid #447; - padding: 2px; - margin: 6px; - text-align: center !important; - background: #001; - -moz-box-shadow: inset 0px 0px 1px 1px #99f; - opacity: 0.8; -} - -div.graphspanel img:hover { - border: 1px solid #447; - padding: 2px; - margin: 6px; - text-align: center !important; - background: #001; - -moz-box-shadow: inset 0px 0px 2px 1px #f60; - opacity: 1; -} - -div.graphspanel form { - text-align: left; -} - -div.messages { - padding: 10px; - margin: 10px 0 15px 0; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - border: 1px solid #447; - background: #fff url('images/magic.png'); - font-weight: bold; - -moz-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); - -khtml-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); - box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); -} - -div.messages span.error { - color: #d00000; -} - -div.messages span.notice { - font-style: italic; -} - -div.messages li { - text-align: justify !important; - font-weight: bold; - list-style: url(images/warning.png) !important; - margin: 0 10px 0 35px !important; - padding: 5px 10px !important; - border: 0px !important; -} - -table { - border-collapse: collapse; - width: 100%; - border: 1px solid #447; - margin: 1px -15px 5px 0px; - cell-padding: 1px; - font-size: 7pt; - background: #b4c8ff url('images/tabletitlelight.png') repeat-x; - font: 7pt/130% "Lucida Sans Unicode", Verdana, "Bitstream Vera Sans", Tahoma, Helvetica, sans-serif; -} - -table hr { - padding: 0px 0; - color: #99f; - background: #99f; - border: 0px solid #99f; - margin: 0px 0px; - height: 1px; - display: none; -} - -th { - padding: 6px 2px; - color: #000; - background: #ffe url('images/header.png') center center repeat-x; - text-align: center; - font-size: 9pt; - line-height: 110%; - border-bottom: 1px solid #447 !important; - border-top: 1px solid #447 !important; -} - -tr { - vertical-align: middle !important; - align: center; -} - -tr:nth-child(even) { - background: #eef url(images/magic.png); -} - -tr:nth-child(odd) { - background: #fff url(images/magic.png); -} - -td { - padding: 5px 3px; - color: #000; - vertical-align: middle; - border-top: 1px inset #447; - border-bottom: 1px outset #99f; -} - -tt { - font: bold 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; - color: #008000; - padding: 1px 5px; -} - -div.main li { - text-align: left; - list-style: square; - margin: 2px 5px 0px 20px; - padding: 1px 10px 1px 10px; - line-height: 150%; - word-wrap: break-word; -} - -div.main li { - text-align: left; - list-style: square; - margin: 2px 20px 0px 40px; - padding: 1px 10px 1px 10px; - line-height: 150%; - word-wrap: break-word; -} - -div.main li b { - color: #514 !important; - color: #003 !important; - letter-spacing: 0.01em; - font-size: 9.5pt; - line-height: 170%; -} - -div.main li:first-child { - margin-top: 10px !important; -} -.tidylist { - text-align: justify !important; -} - -.tidylist li:first-child { - margin-top: -10px !important; -} - -.tidylist:last-child { - padding-bottom: 5px; -} - -.tidylist code { - text-align: left; - font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; - color: #910; - padding: 2px 3px; - font-weight: bold; -} - -ol { - - margin: 1px 0 0 5px; - padding: 1px 0 0 20px; -} - -ul { - display: inline; - margin: 0; - padding: 0; -} - -code { - text-align: left; - font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; -} - - -code { - text-align: left; - font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; - color: #390; - font-weight: bold; -} - -a:link{ - color: #359; - text-decoration: none; - font-weight: bold; - word-wrap: break-word; -} - -a:visited{ - color: #218; - text-decoration: none; - font-weight: bold; -} - -a:hover{ - color: #f60; - text-decoration: underline; - font-weight: bold; -} - -a:active{ - color: #f93; - text-decoration: underline; - font-weight: bold; -} - -.links li { - list-style: url(images/link.png) !important; - padding-bottom: -2px; - text-align: justify; - line-height: 120% !important; - padding-right: -100px !important; -} - -.links li:first-child { - padding-top: 0 !important; -} - -.links li:last-child { - padding-bottom: -15px !important; -} - -.links ul { - margin-top: -5px !important; -} - -p { - text-align: justify; - line-height: 160%; -} - -h1 { - text-align: left; - color: #115; - padding: 10px 15px; - margin: 0 10px 10px 207px; - font: normal bold 16pt/120% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - letter-spacing: 0.15em; - text-transform: uppercase; - text-shadow: 0px 1px 1px #77f; - -moz-box-shadow: inset 0px 0px 1px 1px #bbf; - -khtml-box-shadow: inset 0px 0px 1px 1px #bbf; - box-shadow: inset 0px 0px 1px 1px #bbf; - white-space: normal; - background: #ffe url('images/magic.png') center center repeat; - border: 1px solid #447; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - min-width: 500px; -} - -h2 { - font-size: 13pt; - color: #115; - letter-spacing: 0.07em; - background: url('images/header.png') center center repeat-x; - text-shadow: 0px 1px 1px #99f; - padding: 10px; - wordwrap: none; - border: 1px solid #115; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - margin: 15px 0px 15px 0 !important; - -moz-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); - -khtml-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); - box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); - word-wrap: break-word; - text-transform: uppercase; - opacity: 1; -} - -h2 a, h3 a { - text-transform: capitalize; - letter-spacing: 0.03em; -} - -h2 a:hover, h3 a:hover { - text-shadow: none; -} - -.routersummary h3 a{ - text-transform: uppercase; -} - -h2 a:hover { - text-shadow: 0px 0px 1px rgba(255, 255, 72, 0.9); - border-bottom: 1px #ff6600; - padding-bottom: 5px; -} - -h2 img { - opacity: 0.9 !important; -} - -h3 { - border: 1px solid #115; - border-left: 5px solid #115; - padding: 5px 5px 5px 8px; - margin: 12px 0 15px 0; - border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - -khtml-border-radius: 0 4px 4px 0; - background: url('images/header.png') center center repeat-x !important; - text-transform: uppercase; - text-shadow: 0px 1px 1px #99f; - font-size: 11pt; - color: #115; - -moz-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); - -khtml-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); - box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); - opacity: 1; - letter-spacing: 0.07em; -} - -h4 { - border-bottom: 1px; - border-bottom-style: solid; - border-bottom-color: #447; - padding: 0 0 10px 0; - margin: 5px 0 10px 0; - font-size: 11pt; -} - -button, button:visited{ - font: bold 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - border: 1px outset #66a; - padding: 1px 3px; - background: #ffe !important; - text-decoration: none; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - font-size: 8pt; - font-weight: bold; - margin: 0 1px; - text-align: center; - min-width: 80px; - -moz-box-shadow: inset 0px 0px 2px 1px #fff; - -khtml-box-shadow: inset 0px 2px 8px 0px #fff; - box-shadow: inset 0px 2px 8px 0px #fff; - color: #316; -} - -button:hover{ - border: 1px solid #f60; - background: #f60 !important; - color: #fff; - -moz-box-shadow: inset 0px 0px 0px 1px #fff; - -khtml-box-shadow: inset 0px 0px 0px 1px #fff; - box-shadow: inset 0px 0px 0px 1px #fff; -} - -button:active{ - border: 1px solid #f60; - background: #202 !important; - color: #f60; - -moz-box-shadow: inset 0px 0px 0px 1px #f60; - box-shadow: inset 0px 0px 0px 1px #f60; - -khtml-box-shadow: inset 0px 0px 0px 1px #f60; -} - -.underline { - border-bottom: 1px solid #000022; - padding: 5px 0px 5px 0px; - margin: 0px 0px 10px 0px; -} - -.langbox { - margin: 20px 10px 4px 5px; - padding: 8px 5px; - color: #001; - font-size: 7pt; - width: 260px; - text-align: right; - float: right; - vertical-align: middle; - opacity: 1 !important; -} - -.langbox img { - opacity: 0.8 !important; -} - -.langbox img:hover { - opacity: 1 !important; -} - -input { - background: #ffe; - color: #316; - margin: 5px 10px 5px 10px; - padding: 4px 2px; - font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - border: 1px solid #447; - text-decoration: none; - min-width: 110px; -} - -input, input:visited { - border: 1px outset #999; - background: #ffe; - color: #316; - margin: 5px; - font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - padding: 1px 2px; - text-decoration: none; - min-width: 110px; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - -moz-box-shadow: inset 0px 2px 8px 0px #fff; - color: #813 - opacity: 1; -} - - -input:hover { - background: #f60; - color: #fff; - border: 1px solid #f60; - opacity: 1.0; - -moz-box-shadow: inset 0px 0px 0px 1px #fff; - -} - -input:active { - background: #002; - color: #f60; - border: 1px solid #f60; - opacity: 1.0; - -moz-box-shadow: inset 0px 0px 0px 1px #f60; - -khtml-box-shadow: inset 0px 0px 0px 1px #f60; - box-shadow: inset 0px 0px 0px 1px #f60; -} - -input[type=text] { - background: #ffe; - color: #001; - margin: 5px 10px 5px 10px; - padding: 4px 2px; - font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - border: 1px solid #447; - text-decoration: none; -} - -submit { - background: #f00; - color: #ffe; - margin: 10px 2px 10px 0; - padding: 2px; - font-family: "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - font-weight: bold; - border: 1px solid #447; - text-decoration: none; -} - -input checkbox { - border: 0 !important; -} - -select { - background: #ffe; - color: #003; - margin: 5px 10px 5px 10px; - padding: 4px; - border: 1px solid #447; - min-width: 110px; - font: 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - text-align: left !important; -} - -select:active { - -moz-box-shadow: inset 0px 0px 0px 1px #f60; - -khtml-box-shadow: inset 0px 0px 0px 1px #f60; - box-shadow: inset 0px 0px 0px 1px #f60; -} - -textarea { - padding: 5px; - margin: 5px 15px 5px 10px; - background: #ffe; - color: #003; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; - min-height: 100px; - min-width: 97%; - border: 1px solid #447; -} - -textarea:active { - -moz-box-shadow: inset 0px 0px 0px 1px #f60; - -khtml-box-shadow: inset 0px 0px 0px 1px #f60; - box-shadow: inset 0px 0px 0px 1px #f60; -} - -form {} - -.proxyfooter { - margin: 0 20px 10px 240px; - padding: 20px 25px 20px 75px; - font-color: #f00; - font-size: 7pt; - text-align: right !important; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border: 1px solid #447; - display: none; -} - -.statusnotes { - font-style: normal; - font-size: 8pt; - font-color: #225 !important; - text-align: center; - border: 1px solid #447 !important; - border-top: 0 !important; - margin: -5px 0 5px 0; - padding: 7px; - background: url("images/header.png") repeat scroll center center #eef; - text-shadow: 0 1px #99f; - letter-spacing: 0em !important; - text-transform: capitalize; -} - -div.joblog { - overflow: auto; - border: 0; - margin-top: 5px; - } - -div.joblog i { - color: #050; - font-weight: bold; -} - - div.joblog ul { - word-wrap: break-word !important; - text-align: justify; - line-height: 100% !important; - margin-top: -5px !important; -} - - div.joblog li { - word-wrap: break-word !important; - text-align: justify !important; - line-height: 115% !important; - padding: 0; - font-size: 9pt !important; -} - -div.joblog li:last-child { - margin-bottom: -5px; -} - -div.joblog li:first-child { - margin-top: 10px !important; -} - -div.joblog form:first-child { - margin-top: 10px; -} - -div.joblog table { - margin-top: 15px; -} - -div.joblog p { - line-height: 130%; -} - -div.joblog hr { - margin: 15px 0; -} - -div.joblog h3 { - margin-bottom: 5px; -} - -.smallhead { - font-size: 7pt -} - -.mediumtags { - font-size: 8pt; - font-style: italic; - font-weight: bold; -} - -.optbox { - min-width: 16px !important; - max-width: 16px !important; - width: 16px !important; - min-height: 16px; - max-height: 16px; - height: 16px; - opacity: 1.0; - border: 0; - margin: 5px 5px 5px 10px; - padding: 2px; -} - -.optbox:hover { - min-width: 16px !important; - max-width: 16px !important; - width: 16px !important; - min-height: 16px; - max-height: 16px; - height: 16px; - opacity: 1.0; - border: 0; - margin: 5px 5px 5px 10px; - padding: 2px; -} - -.cells { - border-left: 1px outset #bbf; - border-top: 1px inset #99f !important; - border-bottom: 1px inset #99f !important; -} - -.tablefooter { - background: #b4c8ff url('images/tabletitlelight.png') repeat-x; -} - -.tablefooter tr, .tablefooter td { - background: #ffe url('images/header.png') center center repeat-x; - border-top: 1px solid #447; - border-bottom: 1px solid #447 !important; - padding: 8px 2px !important; - font-size: 7pt; - line-height: 110%; -} - -.formaction { - text-align: right; -} - -div.footnote { - text-align: right; - color: #447; - font-size: 7pt; - margin-bottom: -5px !important; -} - -div.footnote hr{ - margin: 20px 0 5px 0 !important; - color: #447; - background: #447; - height: 1px; - border: 0px solid #447; -} - -.topness { - font-size: 7.5pt; - text-align: right; - margin-top: 0px; - margin-bottom: -18px; - margin-right: 5px; -} \ No newline at end of file +/* I2P Theme: Light */ +/* Description: Light blue highlights. */ +/* Author: dr|z3d */ + +body { + margin: 10px 0px -10px 10px; + text-align: center; + background: #ffe url('images/snowcamo.png'); + color: #000; + font: 10pt/130% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + background: #99f url('images/magic.png') center bottom; +} + +.hide { + display: none; +} + +img { + border: none; +} + +pre { + width: 98%; + overflow: auto; + text-align: left; + font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; + color: #333; + margin: 10px; +} + +div.logo { + float: left; + padding: 10px; + text-align: center; + font-color: #fff; + margin: 0 10px; + border: 1px solid #447; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + background: #ffe; + width: 185px; + -moz-box-shadow: inset 0px 0px 1px 1px #bbf; +} + +div.toolbar { + margin: 0; + padding: 10px; + font-weight: bold; + background: #ffe; + border: 1px solid #447; + display: none !important; +} + +div.toolbar a:link { + border: 1px outset #ddddc0; + padding: 0px 5px 1px 5px; + line-height: 250%; + background: #bbf; + text-decoration: none; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + display: none !important; +} + +div.toolbar a:visited { + background: #ffe; +} + +div.toolbar a:hover{ + border: 1px solid #eeffef; + background: #003; + color: #f60; +} + +a:active{ + color: #900; +} + +div.routersummaryouter { + float: left; + width: 200px; + margin: 0 0 10px 0px; + padding: 0; + border: 0; + clear: left;/* fixes a bug in Opera */ + text-align: center !important; + display: block; +} + +div.routersummary { + width: 180px; + padding: 8px 8px 10px 8px; + text-align: center !important; + border: 1px solid #447; + color: #000; + font-size: 8pt; + clear: left;/* fixes a bug in Opera */ + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + background: #ffe url('images/magic.png') center bottom; + -moz-box-shadow: inset 0px 0px 1px 1px #bbf; + -khtml-box-shadow: inset 0px 0px 1px 1px #bbf; + box-shadow: inset 0px 0px 1px 1px #bbf; +} + +div.routersummary input[type=text] { + text-align: right !important; +} + +div.routersummary hr { + color: #99f; + background: #99f; + height: 1px; + border-bottom: 1px solid #99f; + margin: 8px -7px 8px -7px; + -moz-box-shadow: inset 0px 1px 1px 1px #fff; + -khtml-box-shadow: inset 0px 1px 0px #fff; + box-shadow: inset 0px 1px 1px 1px #fff; +} + +div routersummary hr:last-child { +} + +div.routersummary h3 { + border: 0; + font-size: 9.5pt; + letter-spacing: 0.04em; + margin: -4px -3px; + padding: 2px 0; + background: #ffe; + text-transform: uppercase; + background: #ffe url('images/header.png') center center repeat-x; + border: 1px solid #99f !important; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + border-radius: 3px; + -moz-box-shadow: 0px 1px 5px #bbf; + -moz-box-shadow: outset 0px 0px 2px 1px #bbf; + -khtml-box-shadow: outset 0px 0px 2px 1px #bbf; + box-shadow: outset 0px 0px 2px 1px #bbf; +} + +div.routersummary h3 a { + text-decoration: none; +} + +div.routersummary h3:hover { + background: #ffa url('images/header.png') center center repeat-x !important; + text-shadow: 0 0 0; + -moz-box-shadow: inset 0px 0px 2px 1px #ffa; + -khtml-box-shadow: inset 0px 0px 2px 1px #ffa; + box-shadow: inset 0px 0px 2px 1px #ffa; +} + +div.routersummary h4 { + border: 0px solid #fff; + border-bottom: 0 !important; + font-size: 8.5pt; + letter-spacing: 0.02em; + margin: -6px -6px -7px !important; + padding: 3px 3px 5px 3px; + background: #ddf url(images/magic.png); + text-transform: capitalize; + text-decoration: none !important; + color: #2b2; + line-height: 105%; + -moz-box-shadow: inset 0px 0px 1px 30px #dfd; + -khtml-box-shadow: 0px 0px 1px 1px #dfd; + box-shadow: 0px 0px 1px 1px #fdf; +} + +div.routersummary table { + border: 0; + text-align: center !important; + margin: -7px -5px -6px -5px; + width: 190px !important; + overflow: hidden; + font-size: 8pt; + padding: 0px -10px; + background-image: none !important; + background-color: transparent !important; +} + +div.routersummary tr { + background-image: none !important; + background-color: transparent !important; + border: 0 !important; +} + +div.routersummary td:first-child { + max-width: 90px; + overflow: hidden; +} + +div.routersummary a:hover { + color: #f60; +} + +div.routersummary td { + padding: 1px 3px; + background-image: none !important; + border: 0 !important; +} + +div.tunnels td:first-child { + width: 16px; + text-align: left; + padding-right: 1px; +} + +div.tunnels td:last-child { + text-align: right; + padding-right: 1px; +} + +div.tunnels img, div.tunnels img:hover { + opacity: 1 !important; +} + +div.routersummary img:first-child { + margin-bottom: -2px !important; + opacity: 0.7; +} + +div.routersummary img:hover:first-child { + margin-bottom: -2px !important; + opacity: 1; +} + +div.tunnels { + margin-top: 6px !important; + margin-left: -2px !important; + margin-bottom: 3px !important; + padding-top: 3px !important; +} + +div.tunnels table { + margin: -7px 0 -5px -4px !important; +} + +div.tunnels td, div.tunnels img:first-child { + margin: 0 !important; + text-transform: capitalize; +} + +.tunnels tr { + padding: 4px 0 !important; +} + +div.routersummary form { + margin: -6px 0 -5px 0; +} + +div.routersummary form:last-child { + margin: 6px 0 0 0 !important; + padding: 0; +} + +div.routersummary p { + padding: 0; +} + +div.refresh { + margin-top: -6px !important; + margin-bottom: 0px !important; + padding: 2px 0 0px 0 !important; +} + +/* proxy error messages */ + +div.warning { + margin: 20px 20px 30px 240px; + padding: 5px 25px 20px 75px; + background: #fff; + border: 1px solid #447; + text-align: left; + color: inherit; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + text-align: justify; + background-image:url("../images/itoopie_sm.png"); + background-position:10px center; + background-repeat:no-repeat; + -moz-box-shadow: inset 0px 0px 1px 0px #d00; + word-wrap: break-word; + min-width: 400px; +} + +/* console error messages */ + +div.sorry { + margin: 5px 10px 10px 207px; + padding: 20px 20px 20px 75px; + background: #ffe; + border: 1px solid #447; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + text-align: justify; + background-image: url("images/errortriangle.png"); + background-position: 15px center; + background-repeat: no-repeat; + -moz-box-shadow: inset 0px 0px 0px 1px #d00; + word-wrap: break-word; + font-weight: bold; + color: #531; +} + +div.sorry hr { + color: #531; + background: #531; + height: 1px; + border: 1px solid #531; + margin: 10px 0 15px 0; +} + +div.main { + margin: 10px 10px 20px 207px; + padding: 0 15px 15px 15px; + background: #ffe; + text-align: left; + color: #001; + width: auto; + min-width: 500px; + border: 1px solid #447; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: inset 0px 0px 1px 1px #bbf; + -khtml-box-shadow: inset 0px 0px 1px 1px #bbf; + box-shadow: inset 0px 0px 1px 1px #bbf; + background: #ffe url('images/magic.png') center bottom;} + +div.main hr, hr { + color: #113; + background: #113; + height: 1px; + border: 0px solid #113; + margin: 10px 0; +} + +hr:last-child { + margin-top: 20px !important; +} + +div.main textarea { + background: #ffe; + color: #001; + font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; +} + +div.news { + margin: 0px 10px 5px 207px; + padding: 7px 20px 7px 20px; + border: 1px solid #447; + color: #224; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + text-align: right !important; + font-size: 7.5pt; + line-height: 140%; + -moz-box-shadow: inset 0px 0px 1px 1px #bbf; + -khtml-box-shadow: inset 0px 0px 1px 1px #bbf; + box-shadow: inset 0px 0px 1px 1px #bbf; + background: #ffe url('images/magic.png') center bottom; + min-width: 490px; +} + +div.news p { + font-size: 9pt; + text-align: justify !important; + line-height: 120%; + margin-top: -7px; + padding: 0 15px; +} + +div.news hr{ + color: #225; + background: #225; + height: 1px; + border: 0px dotted #225; + margin: 10px 0 5px; + opacity: 0.6; +} + +div.news li { + text-align: justify; + list-style: none; + margin: 5px 0 16px 0 !important; + vertical-align: bottom; + border: 1px solid #113; + border-left: 5px solid #113; + padding: 5px 5px; + border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + -khtml-border-radius: 0 4px 4px 0; + font-size: 10pt; + opacity: 1; + background: #ffe url('images/header.png') center center repeat-x; + -moz-box-shadow: 0 1px 1px 1px rgba(176, 176, 216, 0.4); + -moz-box-shadow: 0 1px 1px 1px rgba(176, 176, 216, 0.4); + font-weight: bold; + text-transform: capitalize; +} + +div.news li:first-child { + margin-top: 10px !important; +} + +div.news h3 { + background: none !important; + text-align: left; + border: none !important; + padding-left: 0; + padding-top: 0px; + border-bottom: 1px dotted #225 !important; + -moz-box-shadow: none; + -khtml-box-shadow: none; + box-shadow: none; + font-size: 10pt !important; + letter-spacing: 0.05em; + text-transform: capitalize !important; + text-shadow: 0px 0px 0px #77f; +} + +div.news i { + font-style: normal; +} + +div.news h4 { + border-bottom: 0px; + padding: 0; + margin: 0 0 -10px 0; + font-size: 11pt; +} + +div.confignav { + padding: 15px 10px !important; + margin: 15px 0 15px 0; + background: url('images/header.png') center center repeat-x; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + border: 1px solid #115; + font-size: 9.5pt !important; + font-weight: bold !important; + line-height: 160% !important; + -moz-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + -khtml-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + opacity: 1; + min-width: 400px; +} + +div.configure { + min-width: 400px; + margin-bottom: 0px; +} + +div.configure h3, div.graphspanel h3 { + border: 1px solid #115; + border-left: 5px solid #115; + padding: 5px; + margin: 15px 0 15px 0; + border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + -khtml-border-radius: 0 4px 4px 0; + background: #ffe; + text-align: left; +} + +div.graphspanel { + text-align: center !important; + margin: 15px 0px -15px; +} + +div.graphspanel img { + border: 1px solid #447; + padding: 2px; + margin: 6px; + text-align: center !important; + background: #001; + -moz-box-shadow: inset 0px 0px 1px 1px #99f; + opacity: 0.8; +} + +div.graphspanel img:hover { + border: 1px solid #447; + padding: 2px; + margin: 6px; + text-align: center !important; + background: #001; + -moz-box-shadow: inset 0px 0px 2px 1px #f60; + opacity: 1; +} + +div.graphspanel form { + text-align: left; +} + +div.messages { + padding: 10px; + margin: 10px 0 15px 0; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + border: 1px solid #447; + background: #fff url('images/magic.png'); + font-weight: bold; + -moz-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + -khtml-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); +} + +div.messages span.error { + color: #d00000; +} + +div.messages span.notice { + font-style: italic; +} + +div.messages li { + text-align: justify !important; + font-weight: bold; + list-style: url(images/warning.png) !important; + margin: 0 10px 0 35px !important; + padding: 5px 10px !important; + border: 0px !important; +} + +table { + border-collapse: collapse; + width: 100%; + border: 1px solid #447; + margin: 1px -15px 5px 0px; + cell-padding: 1px; + font-size: 7pt; + background: #b4c8ff url('images/tabletitlelight.png') repeat-x; + font: 7pt/130% "Lucida Sans Unicode", Verdana, "Bitstream Vera Sans", Tahoma, Helvetica, sans-serif; +} + +table hr { + padding: 0px 0; + color: #99f; + background: #99f; + border: 0px solid #99f; + margin: 0px 0px; + height: 1px; + display: none; +} + +th { + padding: 6px 2px; + color: #000; + background: #ffe url('images/header.png') center center repeat-x; + text-align: center; + font-size: 9pt; + line-height: 110%; + border-bottom: 1px solid #447 !important; + border-top: 1px solid #447 !important; +} + +tr { + vertical-align: middle !important; + align: center; +} + +tr:nth-child(even) { + background: #eef url(images/magic.png); +} + +tr:nth-child(odd) { + background: #fff url(images/magic.png); +} + +td { + padding: 5px 3px; + color: #000; + vertical-align: middle; + border-top: 1px inset #447; + border-bottom: 1px outset #99f; +} + +tt { + font: bold 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; + color: #008000; + padding: 1px 5px; +} + +div.main li { + text-align: left; + list-style: square; + margin: 2px 5px 0px 20px; + padding: 1px 10px 1px 10px; + line-height: 150%; + word-wrap: break-word; +} + +div.main li { + text-align: left; + list-style: square; + margin: 2px 20px 0px 40px; + padding: 1px 10px 1px 10px; + line-height: 150%; + word-wrap: break-word; +} + +div.main li b { + color: #514 !important; + color: #003 !important; + letter-spacing: 0.01em; + font-size: 9.5pt; + line-height: 170%; +} + +div.main li:first-child { + margin-top: 10px !important; +} +.tidylist { + text-align: justify !important; +} + +.tidylist li:first-child { + margin-top: -10px !important; +} + +.tidylist:last-child { + padding-bottom: 5px; +} + +.tidylist code { + text-align: left; + font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; + color: #910; + padding: 2px 3px; + font-weight: bold; +} + +ol { + + margin: 1px 0 0 5px; + padding: 1px 0 0 20px; +} + +ul { + display: inline; + margin: 0; + padding: 0; +} + +code { + text-align: left; + font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; +} + + +code { + text-align: left; + font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; + color: #390; + font-weight: bold; +} + +a:link{ + color: #359; + text-decoration: none; + font-weight: bold; + word-wrap: break-word; +} + +a:visited{ + color: #218; + text-decoration: none; + font-weight: bold; +} + +a:hover{ + color: #f60; + text-decoration: underline; + font-weight: bold; +} + +a:active{ + color: #f93; + text-decoration: underline; + font-weight: bold; +} + +.links li { + list-style: url(images/link.png) !important; + padding-bottom: -2px; + text-align: justify; + line-height: 120% !important; + padding-right: -100px !important; +} + +.links li:first-child { + padding-top: 0 !important; +} + +.links li:last-child { + padding-bottom: -15px !important; +} + +.links ul { + margin-top: -5px !important; +} + +p { + text-align: justify; + line-height: 160%; +} + +h1 { + text-align: left; + color: #115; + padding: 10px 15px; + margin: 0 10px 10px 207px; + font: normal bold 16pt/120% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + letter-spacing: 0.15em; + text-transform: uppercase; + -moz-box-shadow: inset 0px 0px 1px 1px #bbf; + -khtml-box-shadow: inset 0px 0px 1px 1px #bbf; + box-shadow: inset 0px 0px 1px 1px #bbf; + white-space: normal; + background: #ffe url('images/magic.png') center center repeat; + border: 1px solid #447; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + min-width: 500px; +} + +h2 { + font-size: 13pt; + color: #115; + letter-spacing: 0.07em; + background: url('images/header.png') center center repeat-x; + padding: 10px; + wordwrap: none; + border: 1px solid #115; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + margin: 15px 0px 15px 0 !important; + -moz-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + -khtml-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + word-wrap: break-word; + opacity: 1; +} + +h2 a, h3 a { + text-transform: capitalize; + letter-spacing: 0.03em; +} + +h2 a:hover, h3 a:hover { + text-shadow: none; +} + +.routersummary h3 a{ + text-transform: uppercase; +} + +h2 a:hover { + text-shadow: 0px 0px 1px rgba(255, 255, 72, 0.9); + border-bottom: 1px #ff6600; + padding-bottom: 5px; +} + +h2 img { + opacity: 0.9 !important; +} + +h3 { + border: 1px solid #115; + border-left: 5px solid #115; + padding: 5px 5px 5px 8px; + margin: 12px 0 15px 0; + border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + -khtml-border-radius: 0 4px 4px 0; + background: url('images/header.png') center center repeat-x !important; + font-size: 11pt; + color: #115; + -moz-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + -khtml-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + opacity: 1; + letter-spacing: 0.07em; +} + +h4 { + border-bottom: 1px; + border-bottom-style: solid; + border-bottom-color: #447; + padding: 0 0 10px 0; + margin: 5px 0 10px 0; + font-size: 11pt; +} + +button, button:visited{ + font: bold 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + border: 1px outset #66a; + padding: 1px 3px; + background: #ffe !important; + text-decoration: none; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + font-size: 8pt; + font-weight: bold; + margin: 0 1px; + text-align: center; + min-width: 80px; + -moz-box-shadow: inset 0px 0px 2px 1px #fff; + -khtml-box-shadow: inset 0px 2px 8px 0px #fff; + box-shadow: inset 0px 2px 8px 0px #fff; + color: #316; +} + +button:hover{ + border: 1px solid #f60; + background: #f60 !important; + color: #fff; + -moz-box-shadow: inset 0px 0px 0px 1px #fff; + -khtml-box-shadow: inset 0px 0px 0px 1px #fff; + box-shadow: inset 0px 0px 0px 1px #fff; +} + +button:active{ + border: 1px solid #f60; + background: #202 !important; + color: #f60; + -moz-box-shadow: inset 0px 0px 0px 1px #f60; + box-shadow: inset 0px 0px 0px 1px #f60; + -khtml-box-shadow: inset 0px 0px 0px 1px #f60; +} + +.underline { + border-bottom: 1px solid #000022; + padding: 5px 0px 5px 0px; + margin: 0px 0px 10px 0px; +} + +.langbox { + margin: 20px 10px 4px 5px; + padding: 8px 5px; + color: #001; + font-size: 7pt; + width: 260px; + text-align: right; + float: right; + vertical-align: middle; + opacity: 1 !important; +} + +.langbox img { + opacity: 0.8 !important; +} + +.langbox img:hover { + opacity: 1 !important; +} + +input { + background: #ffe; + color: #316; + margin: 5px 10px 5px 10px; + padding: 4px 2px; + font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + border: 1px solid #447; + text-decoration: none; + min-width: 110px; +} + +input, input:visited { + border: 1px outset #999; + background: #ffe; + color: #316; + margin: 5px; + font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + padding: 1px 2px; + text-decoration: none; + min-width: 110px; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -moz-box-shadow: inset 0px 2px 8px 0px #fff; + color: #813 + opacity: 1; +} + + +input:hover { + background: #f60; + color: #fff; + border: 1px solid #f60; + opacity: 1.0; + -moz-box-shadow: inset 0px 0px 0px 1px #fff; + +} + +input:active { + background: #002; + color: #f60; + border: 1px solid #f60; + opacity: 1.0; + -moz-box-shadow: inset 0px 0px 0px 1px #f60; + -khtml-box-shadow: inset 0px 0px 0px 1px #f60; + box-shadow: inset 0px 0px 0px 1px #f60; +} + +input[type=text], input[type=password] { + background: #ffe; + color: #001; + margin: 5px 10px 5px 10px; + padding: 4px 2px; + font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + border: 1px solid #447; + text-decoration: none; +} + +submit { + background: #f00; + color: #ffe; + margin: 10px 2px 10px 0; + padding: 2px; + font-family: "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + font-weight: bold; + border: 1px solid #447; + text-decoration: none; +} + +input checkbox { + border: 0 !important; +} + +select { + background: #ffe; + color: #003; + margin: 5px 10px 5px 10px; + padding: 4px; + border: 1px solid #447; + min-width: 110px; + font: 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + text-align: left !important; +} + +select:active { + -moz-box-shadow: inset 0px 0px 0px 1px #f60; + -khtml-box-shadow: inset 0px 0px 0px 1px #f60; + box-shadow: inset 0px 0px 0px 1px #f60; +} + +textarea { + padding: 5px; + margin: 5px 15px 5px 10px; + background: #ffe; + color: #003; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; + min-height: 100px; + min-width: 97%; + border: 1px solid #447; +} + +textarea:active { + -moz-box-shadow: inset 0px 0px 0px 1px #f60; + -khtml-box-shadow: inset 0px 0px 0px 1px #f60; + box-shadow: inset 0px 0px 0px 1px #f60; +} + +form {} + +.proxyfooter { + margin: 0 20px 10px 240px; + padding: 20px 25px 20px 75px; + font-color: #f00; + font-size: 7pt; + text-align: right !important; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border: 1px solid #447; + display: none; +} + +.statusnotes { + font-style: normal; + font-size: 8pt; + font-color: #225 !important; + text-align: center; + border: 1px solid #447 !important; + border-top: 0 !important; + margin: -5px 0 5px 0; + padding: 7px; + background: url("images/header.png") repeat scroll center center #eef; + letter-spacing: 0em !important; +} + +div.joblog { + overflow: auto; + border: 0; + margin-top: 5px; + } + +div.joblog i { + color: #050; + font-weight: bold; +} + + div.joblog ul { + word-wrap: break-word !important; + text-align: justify; + line-height: 100% !important; + margin-top: -5px !important; +} + + div.joblog li { + word-wrap: break-word !important; + text-align: justify !important; + line-height: 115% !important; + padding: 0; + font-size: 9pt !important; +} + +div.joblog li:last-child { + margin-bottom: -5px; +} + +div.joblog li:first-child { + margin-top: 10px !important; +} + +div.joblog form:first-child { + margin-top: 10px; +} + +div.joblog table { + margin-top: 15px; +} + +div.joblog p { + line-height: 130%; +} + +div.joblog hr { + margin: 15px 0; +} + +div.joblog h3 { + margin-bottom: 5px; +} + +.smallhead { + font-size: 7pt +} + +.mediumtags { + font-size: 8pt; + font-style: italic; + font-weight: bold; +} + +.optbox { + min-width: 16px !important; + max-width: 16px !important; + width: 16px !important; + min-height: 16px; + max-height: 16px; + height: 16px; + opacity: 1.0; + border: 0; + margin: 5px 5px 5px 10px; + padding: 2px; +} + +.optbox:hover { + min-width: 16px !important; + max-width: 16px !important; + width: 16px !important; + min-height: 16px; + max-height: 16px; + height: 16px; + opacity: 1.0; + border: 0; + margin: 5px 5px 5px 10px; + padding: 2px; +} + +.cells { + border-left: 1px outset #bbf; + border-top: 1px inset #99f !important; + border-bottom: 1px inset #99f !important; +} + +.tablefooter { + background: #b4c8ff url('images/tabletitlelight.png') repeat-x; +} + +.tablefooter tr, .tablefooter td { + background: #ffe url('images/header.png') center center repeat-x; + border-top: 1px solid #447; + border-bottom: 1px solid #447 !important; + padding: 8px 2px !important; + font-size: 7pt; + line-height: 110%; +} + +.formaction { + text-align: right; +} + +div.footnote { + text-align: right; + color: #447; + font-size: 7pt; + margin-bottom: -5px !important; +} + +div.footnote hr{ + margin: 20px 0 5px 0 !important; + color: #447; + background: #447; + height: 1px; + border: 0px solid #447; +} + +.topness { + font-size: 7.5pt; + text-align: right; + margin-top: 0px; + margin-bottom: -18px; + margin-right: 5px; +} diff --git a/installer/resources/themes/console/light/default.css b/installer/resources/themes/console/light/default.css index 331205555..0c1250863 100644 --- a/installer/resources/themes/console/light/default.css +++ b/installer/resources/themes/console/light/default.css @@ -1,423 +1,421 @@ -/* I2P Tunnel Manager Theme: Light */ -/* Description: Light blue highlights. */ -/* Author: dr|z3d */ - -body { - margin: 0px; - padding: 0px; - text-align: center; - font-family: "Lucida Sans Unicode", Verdana, Helvetica, sans-serif; - background: #eef url('images/snowcamo.png'); - color: #001; - font-size: 10pt; -/* we've avoided Tantek Hacks so far, - ** but we can't avoid using the non-w3c method of - ** box rendering. (and therefore one of mozilla's - ** proprietry -moz properties (which hopefully they'll - ** drop soon). - */ - -moz-box-sizing: border-box; - box-sizing: border-box; - background: #99f url(images/magic.png); -} - -div { - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -label { - margin: 0px 4px; - padding: 1px 10px 2px 0px; - float: left; - width: 120px; - height: 24px; - font-weight: normal; - text-align: right; - font-size: 8pt; - font-style: italic; - -moz-box-sizing: border-box; - box-sizing: border-box; - line-height: 120%; - color: #101; -} - -h4 { - font-size: 11pt; - font-weight: bold !important; - color: #115; - text-align: left; - border: 1px solid #115; - margin: 5px 0 15px 0; - padding: 5px 10px; - background: url(images/header.png) repeat-x center center; - text-transform: uppercase; - letter-spacing: 0.07em; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - text-shadow: 0px 1px 1px #77f; - -moz-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); - -khtml-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); - box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); -} - -a { - text-decoration: none; -} - -form { - margin: 0px; -} - -textarea, input, select, button, a { - -moz-box-sizing: border-box; - box-sizing: border-box; - font-size: 8.5pt; - float: left; - vertical-align: middle; -} - -button { - float: none; - text-decoration: none; -} - -textarea { - color: #003; - background: #fff; - border: 1px solid #447; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; -} - -textarea:active { - -moz-box-shadow: inset 0px 0px 0px 1px #f60; - -khtml-box-shadow: inset 0px 0px 0px 1px #f60; - box-shadow: inset 0px 0px 0px 1px #f60; -} - -br { - clear: left; -} - -div.statusNotRunning { - float: left; - width: 68px; - height: 24px; - overflow: hidden; - color: #d00; - background: url('images/console_status_stopped.png') 0 0 no-repeat; - padding-top: 24px; - margin-top: 4px; -} - -div.statusRunning { - float: left; - width: 68px; - height: 24px; - overflow: hidden; - color: #0b0; - background: url('images/console_status_running.png') 0 0 no-repeat; - padding-top: 24px; - margin-top: 4px; -} - -div.statusStarting { - float: left; - width: 68px; - height: 24px; - overflow: hidden; - color: #339933; - background: url('images/console_status_starting.png') 0 0 no-repeat; - padding-top: 24px; - margin-top: 4px; -} - -hr { - display: none; -} - -.separator, .subdivider { - clear: both; - height: 1px; - margin: 10px 0px 10px 0px; - border-bottom: 1px dotted #447; -/* - display: none; -*/ -} - -.subdivider { - border-bottom: 1px dotted #447; - padding: 5px 0; -} - -.freetext { - width: 150px; - height: 24px; - border: 1px solid #447; - padding: 2px; - margin: 4px 0 2px 0px; - font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; - font-weight: bold; - background: #fff; - color: #003; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; -/* - -moz-box-shadow: inset 0px -1px 1px 0px #fff; -*/ -} - -.freetext:active { - -moz-box-shadow: inset 0px 0px 0px 1px #f60; - -khtml-box-shadow: inset 0px 0px 0px 1px #f60; - box-shadow: inset 0px 0px 0px 1px #f60; -} - -.control, control:link, control:visited { - margin: 4px 0 0 4px !important; - padding: 2px; - overflow: hidden; - min-width: 60px; - font-weight: bold; - background: #ffe; - color: #001; - border: 1px outset #66a; - text-align: center; - white-space: nowrap; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - margin-top: 8px; - text-decoration: none; -} - -/* -.control:active { - border: 1px inset; - background-color: #003; - color: #f60; - text-decoration: none; -} -*/ - -.control:hover, control:visited:hover { - background-color: #f60; - color: #fff !important; - text-decoration: none; - border: 1px solid #f60 !important; - background: #f60 !important; - color: #fff; - -moz-box-shadow: inset 0px 0px 0px 1px #fff !important; - -khtml-box-shadow: inset 0px 0px 0px 1px #fff !important; - box-shadow: inset 0px 0px 0px 1px #fff !important; -} - -.control:link, control:visited { - margin: 4px 0 0 4px !important; - padding: 2px; - overflow: hidden; - min-width: 60px; - font-weight: bold; - color: #001; - border: 1px outset #66a; - text-align: center; - white-space: nowrap; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - margin-top: 8px; - background: #ffe url(images/header.png) center center repeat:x !important; - text-decoration: none; -} - -.panel { - width: 800px; - margin: 16px auto 16px auto; - overflow: hidden; - text-align: left !important; - font-size: 7pt; - background-color: #fff; - background: url(images/magic.png); - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - border: 1px solid #002; - padding: 10px 20px; - -moz-box-shadow: inset 0px 0px 1px 1px #bbf; - -khtml-box-shadow: inset 0px 0px 1px 1px #bbf; - box-shadow: inset 0px 0px 1px 1px #bbf; - background: none repeat scroll 0 0 #EEEEFF; - background: #fff url(images/magic.png); - border: 1px solid #444477; - color: #000011; -} - -.panel .footer { - float: right; - padding: 4px; -} - -.toolbox { - float: right; -} - -.rowItem { - width: 750px; - float: left; - margin: 2px 0; -} - -.comment { - font-weight: bold; - display: block; - padding: 2px 10px 0 20px; - text-align: left; -} - -.text { - height: 24px; - width: 150px; - padding: 0 0 0 2px; - float: left; - margin: 0; - font-size: 8.5pt !important; - font-weight: bold; -} - -.accessKey { - text-decoration: underline; -} - -#globalOperationsPanel { - background-color: #fff; - border: 1px solid #003; - padding: 5px 20px 11px 10px; - -moz-box-shadow: inset 0px 0px 0px 1px #f00; - -moz-box-shadow: inset 0px 0px 1px 0px #f60; - background: #fff url(images/magic.png); - border: 1px solid #444477; - color: #613; -} - -#globalOperationsPanel .control { - min-width: 120px; - font-family: "Lucida Sans Unicode", Verdana, Tahoma, Helvetica, sans-serif; - font-weight: bold; -} - -#globalOperationsPanel .control:link { - min-width: 120px; -} - - -globalOperationsPanel .control:link { - min-width: 120px; - margin: 4px 0 0 4px !important; - padding: 2px; - overflow: hidden; - font-weight: bold; - background-color: #bbbbff; - color: black; - border: 1px outset #ddddc0; - text-align: center; - white-space: nowrap; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - margin-top: 8px; - background: #ffe url(images/header.png) 0 0 repeat: x !important; -} - - -globalOperationsPanel .control:visited { - min-width: 120px; - margin: 4px 0 0 4px !important; - padding: 2px; - overflow: hidden; - font-weight: bold; - background-color: #ffe; - color: black; - border: 1px outset #ddddc0; - text-align: center; - white-space: nowrap; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - margin-top: 8px; - background: url(images/header.png) 0 0 repeat: x !important; -} - -globalOperationsPanel .control:hover { - min-width: 120px; - margin: 4px 0 0 4px !important; - padding: 2px; - overflow: hidden; - font-weight: bold; - background-color: #003; - color: #f60; - border: 1px outset #fff; - text-align: center; - white-space: nowrap; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - margin-top: 8px; - background: url(images/header_on.png) 0 0 repeat: x !important; -} -.header { - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; -} - -select { - background-color: #fff; - color: #003; - margin: 4px; - font-family: "Lucida Sans Unicode", Verdana, Tahoma, Helvetica, sans-serif; - font-weight: bold; - border: 1px solid #447; - padding: 3px 3px 3px 0; - min-width: 270px; - font-size: 8pt; - max-height: 24px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; -} - -select:active { - -moz-box-shadow: inset 0px 0px 0px 1px #f60; - -khtml-box-shadow: inset 0px 0px 0px 1px #f60; - box-shadow: inset 0px 0px 0px 1px #f60; -} - -a:link{ - color: #359; - text-decoration: none; - font-weight: bold; - word-wrap: break-word; -} - -a:visited{ - color: #218; - text-decoration: none; - font-weight: bold; -} - -a:hover{ - color: #f60; - text-decoration: underline; - font-weight: bold; -} - -a:active{ - color: #f93; - text-decoration: underline; - font-weight: bold; -} +/* I2P Tunnel Manager Theme: Light */ +/* Description: Light blue highlights. */ +/* Author: dr|z3d */ + +body { + margin: 0px; + padding: 0px; + text-align: center; + font-family: "Lucida Sans Unicode", Verdana, Helvetica, sans-serif; + background: #eef url('images/snowcamo.png'); + color: #001; + font-size: 10pt; +/* we've avoided Tantek Hacks so far, + ** but we can't avoid using the non-w3c method of + ** box rendering. (and therefore one of mozilla's + ** proprietry -moz properties (which hopefully they'll + ** drop soon). + */ + -moz-box-sizing: border-box; + box-sizing: border-box; + background: #99f url(images/magic.png); +} + +div { + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +label { + margin: 0px 4px; + padding: 1px 10px 2px 0px; + float: left; + width: 120px; + height: 24px; + font-weight: normal; + text-align: right; + font-size: 8pt; + font-style: italic; + -moz-box-sizing: border-box; + box-sizing: border-box; + line-height: 120%; + color: #101; +} + +h4 { + font-size: 11pt; + font-weight: bold !important; + color: #115; + text-align: left; + border: 1px solid #115; + margin: 5px 0 15px 0; + padding: 5px 10px; + background: url(images/header.png) repeat-x center center; + letter-spacing: 0.07em; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + -khtml-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); +} + +a { + text-decoration: none; +} + +form { + margin: 0px; +} + +textarea, input, select, button, a { + -moz-box-sizing: border-box; + box-sizing: border-box; + font-size: 8.5pt; + float: left; + vertical-align: middle; +} + +button { + float: none; + text-decoration: none; +} + +textarea { + color: #003; + background: #fff; + border: 1px solid #447; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; +} + +textarea:active { + -moz-box-shadow: inset 0px 0px 0px 1px #f60; + -khtml-box-shadow: inset 0px 0px 0px 1px #f60; + box-shadow: inset 0px 0px 0px 1px #f60; +} + +br { + clear: left; +} + +div.statusNotRunning { + float: left; + width: 68px; + height: 24px; + overflow: hidden; + color: #d00; + background: url('images/console_status_stopped.png') 0 0 no-repeat; + padding-top: 24px; + margin-top: 4px; +} + +div.statusRunning { + float: left; + width: 68px; + height: 24px; + overflow: hidden; + color: #0b0; + background: url('images/console_status_running.png') 0 0 no-repeat; + padding-top: 24px; + margin-top: 4px; +} + +div.statusStarting { + float: left; + width: 68px; + height: 24px; + overflow: hidden; + color: #339933; + background: url('images/console_status_starting.png') 0 0 no-repeat; + padding-top: 24px; + margin-top: 4px; +} + +hr { + display: none; +} + +.separator, .subdivider { + clear: both; + height: 1px; + margin: 10px 0px 10px 0px; + border-bottom: 1px dotted #447; +/* + display: none; +*/ +} + +.subdivider { + border-bottom: 1px dotted #447; + padding: 5px 0; +} + +.freetext { + width: 150px; + height: 24px; + border: 1px solid #447; + padding: 2px; + margin: 4px 0 2px 0px; + font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; + font-weight: bold; + background: #fff; + color: #003; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; +/* + -moz-box-shadow: inset 0px -1px 1px 0px #fff; +*/ +} + +.freetext:active { + -moz-box-shadow: inset 0px 0px 0px 1px #f60; + -khtml-box-shadow: inset 0px 0px 0px 1px #f60; + box-shadow: inset 0px 0px 0px 1px #f60; +} + +.control, control:link, control:visited { + margin: 4px 0 0 4px !important; + padding: 2px; + overflow: hidden; + min-width: 60px; + font-weight: bold; + background: #ffe; + color: #001; + border: 1px outset #66a; + text-align: center; + white-space: nowrap; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + margin-top: 8px; + text-decoration: none; +} + +/* +.control:active { + border: 1px inset; + background-color: #003; + color: #f60; + text-decoration: none; +} +*/ + +.control:hover, control:visited:hover { + background-color: #f60; + color: #fff !important; + text-decoration: none; + border: 1px solid #f60 !important; + background: #f60 !important; + color: #fff; + -moz-box-shadow: inset 0px 0px 0px 1px #fff !important; + -khtml-box-shadow: inset 0px 0px 0px 1px #fff !important; + box-shadow: inset 0px 0px 0px 1px #fff !important; +} + +.control:link, control:visited { + margin: 4px 0 0 4px !important; + padding: 2px; + overflow: hidden; + min-width: 60px; + font-weight: bold; + color: #001; + border: 1px outset #66a; + text-align: center; + white-space: nowrap; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + margin-top: 8px; + background: #ffe url(images/header.png) center center repeat:x !important; + text-decoration: none; +} + +.panel { + width: 800px; + margin: 16px auto 16px auto; + overflow: hidden; + text-align: left !important; + font-size: 7pt; + background-color: #fff; + background: url(images/magic.png); + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + border: 1px solid #002; + padding: 10px 20px; + -moz-box-shadow: inset 0px 0px 1px 1px #bbf; + -khtml-box-shadow: inset 0px 0px 1px 1px #bbf; + box-shadow: inset 0px 0px 1px 1px #bbf; + background: none repeat scroll 0 0 #EEEEFF; + background: #fff url(images/magic.png); + border: 1px solid #444477; + color: #000011; +} + +.panel .footer { + float: right; + padding: 4px; +} + +.toolbox { + float: right; +} + +.rowItem { + width: 750px; + float: left; + margin: 2px 0; +} + +.comment { + font-weight: bold; + display: block; + padding: 2px 10px 0 20px; + text-align: left; +} + +.text { + height: 24px; + width: 150px; + padding: 0 0 0 2px; + float: left; + margin: 0; + font-size: 8.5pt !important; + font-weight: bold; +} + +.accessKey { + text-decoration: underline; +} + +#globalOperationsPanel { + background-color: #fff; + border: 1px solid #003; + padding: 5px 20px 11px 10px; + -moz-box-shadow: inset 0px 0px 0px 1px #f00; + -moz-box-shadow: inset 0px 0px 1px 0px #f60; + background: #fff url(images/magic.png); + border: 1px solid #444477; + color: #613; +} + +#globalOperationsPanel .control { + min-width: 120px; + font-family: "Lucida Sans Unicode", Verdana, Tahoma, Helvetica, sans-serif; + font-weight: bold; +} + +#globalOperationsPanel .control:link { + min-width: 120px; +} + + +globalOperationsPanel .control:link { + min-width: 120px; + margin: 4px 0 0 4px !important; + padding: 2px; + overflow: hidden; + font-weight: bold; + background-color: #bbbbff; + color: black; + border: 1px outset #ddddc0; + text-align: center; + white-space: nowrap; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + margin-top: 8px; + background: #ffe url(images/header.png) 0 0 repeat: x !important; +} + + +globalOperationsPanel .control:visited { + min-width: 120px; + margin: 4px 0 0 4px !important; + padding: 2px; + overflow: hidden; + font-weight: bold; + background-color: #ffe; + color: black; + border: 1px outset #ddddc0; + text-align: center; + white-space: nowrap; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + margin-top: 8px; + background: url(images/header.png) 0 0 repeat: x !important; +} + +globalOperationsPanel .control:hover { + min-width: 120px; + margin: 4px 0 0 4px !important; + padding: 2px; + overflow: hidden; + font-weight: bold; + background-color: #003; + color: #f60; + border: 1px outset #fff; + text-align: center; + white-space: nowrap; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + margin-top: 8px; + background: url(images/header_on.png) 0 0 repeat: x !important; +} +.header { + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; +} + +select { + background-color: #fff; + color: #003; + margin: 4px; + font-family: "Lucida Sans Unicode", Verdana, Tahoma, Helvetica, sans-serif; + font-weight: bold; + border: 1px solid #447; + padding: 3px 3px 3px 0; + min-width: 270px; + font-size: 8pt; + max-height: 24px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; +} + +select:active { + -moz-box-shadow: inset 0px 0px 0px 1px #f60; + -khtml-box-shadow: inset 0px 0px 0px 1px #f60; + box-shadow: inset 0px 0px 0px 1px #f60; +} + +a:link{ + color: #359; + text-decoration: none; + font-weight: bold; + word-wrap: break-word; +} + +a:visited{ + color: #218; + text-decoration: none; + font-weight: bold; +} + +a:hover{ + color: #f60; + text-decoration: underline; + font-weight: bold; +} + +a:active{ + color: #f93; + text-decoration: underline; + font-weight: bold; +} diff --git a/installer/resources/themes/console/midnight/console.css b/installer/resources/themes/console/midnight/console.css index c3d5e4e97..69919e3db 100644 --- a/installer/resources/themes/console/midnight/console.css +++ b/installer/resources/themes/console/midnight/console.css @@ -744,7 +744,7 @@ input { vertical-align: middle; } -input[type=text] { +input[type=text], input[type=password] { margin: 3px 5px 3px 5px; vertical-align: middle; } @@ -754,7 +754,7 @@ select { vertical-align: middle; } -input[type=text], select { +input[type=text], input[type=password] select { background: #001; color: #eef; border: 1px solid #99f; @@ -953,4 +953,4 @@ div.footnote hr{ margin-top: -5px; margin-bottom: -10px; margin-right: 5px; -} \ No newline at end of file +} From 656670919d2b8620ef39376e3384b66972129c27 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Mon, 24 Jan 2011 14:55:34 +0000 Subject: [PATCH 131/463] 0.8.3 --- core/java/src/net/i2p/CoreVersion.java | 2 +- history.txt | 2 ++ installer/install.xml | 2 +- installer/resources/news.xml | 25 ++++++++++++------- .../src/net/i2p/router/RouterVersion.java | 4 +-- 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/core/java/src/net/i2p/CoreVersion.java b/core/java/src/net/i2p/CoreVersion.java index 860747c76..1d05325c7 100644 --- a/core/java/src/net/i2p/CoreVersion.java +++ b/core/java/src/net/i2p/CoreVersion.java @@ -16,7 +16,7 @@ package net.i2p; public class CoreVersion { /** deprecated */ public final static String ID = "Monotone"; - public final static String VERSION = "0.8.2"; + public final static String VERSION = "0.8.3"; public static void main(String args[]) { System.out.println("I2P Core version: " + VERSION); diff --git a/history.txt b/history.txt index e7ed2db0d..b7f9b2d0c 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,5 @@ +* 2011-01-24 0.8.3 released + 2011-01-16 zzz * Console: Allow editing of console args * UDP: Prevent rare startup NPE diff --git a/installer/install.xml b/installer/install.xml index 5b685f0a3..e48aa9164 100644 --- a/installer/install.xml +++ b/installer/install.xml @@ -4,7 +4,7 @@ <info> <appname>i2p</appname> - <appversion>0.8.2</appversion> + <appversion>0.8.3</appversion> <authors> <author name="I2P" email="http://forum.i2p2.de/"/> </authors> diff --git a/installer/resources/news.xml b/installer/resources/news.xml index e542e7a24..b33b74b3d 100644 --- a/installer/resources/news.xml +++ b/installer/resources/news.xml @@ -1,17 +1,24 @@ <!-- -<i2p.news date="$Date: 2010-12-22 00:00:00 $"> -<i2p.release version="0.8.2" date="2010/12/22" minVersion="0.6" /> +<i2p.news date="$Date: 2011-01-24 00:00:00 $"> +<i2p.release version="0.8.3" date="2011/01/24" minVersion="0.6" /> --> <div lang="en"> -<h3>2010-12-22: <b>0.8.2 <a href="http://www.i2p2.i2p/release-0.8.2.html">Released</a></b></h3> +<h3>2011-01-24: <b>0.8.3 <a href="http://www.i2p2.i2p/release-0.8.3.html">Released</a></b></h3> <p> -The 0.8.2 release includes extensive bug fixes and theme updates in the router and in i2psnark. -There are also optimizations to reduce memory usage in i2psnark. -The HTTP and SOCKS proxies now support local and remote authorization. -As usual, upgrading is recommended. +The 0.8.3 release contains several performance improvements, including reduction of threads and +memory usage, and faster I2CP (client-router) communication. </p><p> -I2P will be at 27C3 in Berlin the week of the December 27th. -Look for the I2P people there and ask for I2P stickers! +There is also new SSL router console support +(<a href="http://zzz.i2p/topics/800">instructions here</a>), +a new <a href="/configreseed">reseed configuration page</a> including HTTP proxy support for those behind restrictive firewalls, +a new <a href="/configclients#i2cp">I2CP configuration section</a> including I2CP-over-SSL support for remote clients, +a new <a href="/i2ptunnel/edit?tunnel=3">server connection limits and blacklist configuration section</a> for enhanced DoS protection, +and a new +<a href="/i2ptunnel/edit?tunnel=0">HTTP proxy jump server configuration section</a> so you may easily add alternative jump servers. +Statistics are now limited by default to reduce memory usage; the full set of statistics may be re-enabled on the +<a href="/configstats">stats configuration page</a>. +There are also bug fixes, of course, so +as usual, upgrading is recommended. </p><p> Please help grow the network. Say hello to the volunteers on the <a href="irc://127.0.0.1:6668/i2p-help">#i2p-help IRC channel</a>. diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index cef568607..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 = 12; + 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 fbac928313d373f9ce563c84cccb68de54a16f9c Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Mon, 24 Jan 2011 20:24:40 +0000 Subject: [PATCH 132/463] Console: revert light theme regressions. --- installer/resources/themes/console/light/console.css | 4 ++++ installer/resources/themes/console/light/default.css | 2 ++ 2 files changed, 6 insertions(+) diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 3f49809f1..70f3bca5b 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -754,6 +754,8 @@ h2 { box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); word-wrap: break-word; opacity: 1; + text-transform: uppercase; + text-shadow: 0px 1px 1px #99f; } h2 a, h3 a { @@ -795,6 +797,8 @@ h3 { box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); opacity: 1; letter-spacing: 0.07em; + text-transform: uppercase; + text-shadow: 0px 1px 1px #99f; } h4 { diff --git a/installer/resources/themes/console/light/default.css b/installer/resources/themes/console/light/default.css index 0c1250863..0834f2dce 100644 --- a/installer/resources/themes/console/light/default.css +++ b/installer/resources/themes/console/light/default.css @@ -58,6 +58,8 @@ h4 { -moz-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); -khtml-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); + text-shadow: 0px 1px 1px #77f; + text-transform: uppercase; } a { From fa15710455296ec4a2e288dc6d5b6bd7b8e9f7b3 Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Tue, 25 Jan 2011 02:51:36 +0000 Subject: [PATCH 133/463] Console: light theme: restore truant dropshadow to h1 class. --- installer/resources/themes/console/light/console.css | 1 + 1 file changed, 1 insertion(+) diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 70f3bca5b..8ce1ab4ca 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -735,6 +735,7 @@ h1 { -moz-border-radius: 4px; -khtml-border-radius: 4px; min-width: 500px; + text-shadow: 0px 1px 1px #99f; } h2 { From 232ba5612a0d574de878a18fe217effcb7c75e95 Mon Sep 17 00:00:00 2001 From: mathiasdm <mathiasdm@mail.i2p> Date: Tue, 25 Jan 2011 07:08:54 +0000 Subject: [PATCH 134/463] Whitespace cleanup, while we're not yet merged into trunk yet. --- .../i2p/desktopgui/ExternalTrayManager.java | 56 ++++----- .../i2p/desktopgui/InternalTrayManager.java | 24 ++-- .../src/net/i2p/desktopgui/Main.java | 36 +++--- .../src/net/i2p/desktopgui/TrayManager.java | 28 ++--- .../desktopgui/i18n/DesktopguiTranslator.java | 24 ++-- .../i2p/desktopgui/router/RouterManager.java | 112 +++++++++--------- .../i2p/desktopgui/util/BrowseException.java | 30 ++--- .../net/i2p/desktopgui/util/I2PDesktop.java | 20 ++-- 8 files changed, 165 insertions(+), 165 deletions(-) diff --git a/apps/desktopgui/src/net/i2p/desktopgui/ExternalTrayManager.java b/apps/desktopgui/src/net/i2p/desktopgui/ExternalTrayManager.java index 702807ba2..6fea46fef 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/ExternalTrayManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/ExternalTrayManager.java @@ -13,40 +13,40 @@ import net.i2p.util.Log; public class ExternalTrayManager extends TrayManager { - private final static Log log = new Log(ExternalTrayManager.class); + private final static Log log = new Log(ExternalTrayManager.class); - protected ExternalTrayManager() {} + protected ExternalTrayManager() {} - @Override - public PopupMenu getMainMenu() { - PopupMenu popup = new PopupMenu(); + @Override + public PopupMenu getMainMenu() { + PopupMenu popup = new PopupMenu(); MenuItem startItem = new MenuItem(_("Start I2P")); startItem.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent arg0) { - new SwingWorker<Object, Object>() { + @Override + public void actionPerformed(ActionEvent arg0) { + new SwingWorker<Object, Object>() { - @Override - protected Object doInBackground() throws Exception { - RouterManager.start(); - return null; - } - - @Override - protected void done() { - trayIcon.displayMessage(_("Starting"), _("I2P is starting!"), TrayIcon.MessageType.INFO); - //Hide the tray icon. - //We cannot stop the desktopgui program entirely, - //since that risks killing the I2P process as well. - tray.remove(trayIcon); - } - - }.execute(); - } - + @Override + protected Object doInBackground() throws Exception { + RouterManager.start(); + return null; + } + + @Override + protected void done() { + trayIcon.displayMessage(_("Starting"), _("I2P is starting!"), TrayIcon.MessageType.INFO); + //Hide the tray icon. + //We cannot stop the desktopgui program entirely, + //since that risks killing the I2P process as well. + tray.remove(trayIcon); + } + + }.execute(); + } + }); popup.add(startItem); - return popup; - } + return popup; + } } diff --git a/apps/desktopgui/src/net/i2p/desktopgui/InternalTrayManager.java b/apps/desktopgui/src/net/i2p/desktopgui/InternalTrayManager.java index efa7e31a1..46cb3deef 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/InternalTrayManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/InternalTrayManager.java @@ -16,13 +16,13 @@ public class InternalTrayManager extends TrayManager { private final static Log log = new Log(InternalTrayManager.class); - protected InternalTrayManager() {} + protected InternalTrayManager() {} - @Override - public PopupMenu getMainMenu() { - PopupMenu popup = new PopupMenu(); - - MenuItem browserLauncher = new MenuItem(_("Launch I2P Browser")); + @Override + public PopupMenu getMainMenu() { + PopupMenu popup = new PopupMenu(); + + MenuItem browserLauncher = new MenuItem(_("Launch I2P Browser")); browserLauncher.addActionListener(new ActionListener() { @Override @@ -36,11 +36,11 @@ public class InternalTrayManager extends TrayManager { @Override protected void done() { - try { - I2PDesktop.browse("http://localhost:7657"); - } catch (BrowseException e1) { - log.log(Log.WARN, "Failed to open browser!", e1); - } + try { + I2PDesktop.browse("http://localhost:7657"); + } catch (BrowseException e1) { + log.log(Log.WARN, "Failed to open browser!", e1); + } } }.execute(); @@ -89,5 +89,5 @@ public class InternalTrayManager extends TrayManager { popup.add(stopItem); return popup; - } + } } diff --git a/apps/desktopgui/src/net/i2p/desktopgui/Main.java b/apps/desktopgui/src/net/i2p/desktopgui/Main.java index 0783936ac..56abf9e2c 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/Main.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/Main.java @@ -19,15 +19,15 @@ import net.i2p.util.I2PProperties.I2PPropertyCallback; * The main class of the application. */ public class Main { - + ///Manages the lifetime of the tray icon. private TrayManager trayManager = null; private final static Log log = new Log(Main.class); - /** - * Start the tray icon code (loads tray icon in the tray area). - * @throws Exception - */ + /** + * Start the tray icon code (loads tray icon in the tray area). + * @throws Exception + */ public void startUp() throws Exception { trayManager = TrayManager.getInstance(); trayManager.startManager(); @@ -35,26 +35,26 @@ public class Main { if(RouterManager.inI2P()) { RouterManager.getRouterContext().addPropertyCallback(new I2PPropertyCallback() { - @Override - public void propertyChanged(String arg0, String arg1) { - if(arg0.equals(Translate.PROP_LANG)) { - trayManager.languageChanged(); - } - } - + @Override + public void propertyChanged(String arg0, String arg1) { + if(arg0.equals(Translate.PROP_LANG)) { + trayManager.languageChanged(); + } + } + }); } } public static void main(String[] args) { - beginStartup(args); + beginStartup(args); } /** * Main method launching the application. */ public static void beginStartup(String[] args) { - System.setProperty("java.awt.headless", "false"); + System.setProperty("java.awt.headless", "false"); try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException ex) { @@ -62,9 +62,9 @@ public class Main { } catch (InstantiationException ex) { log.log(Log.ERROR, null, ex); } catch (IllegalAccessException ex) { - log.log(Log.ERROR, null, ex); + log.log(Log.ERROR, null, ex); } catch (UnsupportedLookAndFeelException ex) { - log.log(Log.ERROR, null, ex); + log.log(Log.ERROR, null, ex); } ConfigurationManager.getInstance().loadArguments(args); @@ -78,10 +78,10 @@ public class Main { @Override public void run() { try { - main.startUp(); + main.startUp(); } catch(Exception e) { - log.error("Failed while running desktopgui!", e); + log.error("Failed while running desktopgui!", e); } } diff --git a/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java b/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java index 01a5d611f..f76b131af 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java @@ -30,8 +30,8 @@ import net.i2p.util.Log; */ public abstract class TrayManager { - private static TrayManager instance = null; - ///The tray area, or null if unsupported + private static TrayManager instance = null; + ///The tray area, or null if unsupported protected SystemTray tray = null; ///Our tray icon, or null if unsupported protected TrayIcon trayIcon = null; @@ -43,16 +43,16 @@ public abstract class TrayManager { protected TrayManager() {} protected static TrayManager getInstance() { - if(instance == null) { - boolean inI2P = RouterManager.inI2P(); - if(inI2P) { - instance = new InternalTrayManager(); - } - else { - instance = new ExternalTrayManager(); - } - } - return instance; + if(instance == null) { + boolean inI2P = RouterManager.inI2P(); + if(inI2P) { + instance = new InternalTrayManager(); + } + else { + instance = new ExternalTrayManager(); + } + } + return instance; } /** @@ -65,13 +65,13 @@ public abstract class TrayManager { try { tray.add(trayIcon); } catch (AWTException e) { - log.log(Log.WARN, "Problem creating system tray icon!", e); + log.log(Log.WARN, "Problem creating system tray icon!", e); } } } protected void languageChanged() { - trayIcon.setPopupMenu(getMainMenu()); + trayIcon.setPopupMenu(getMainMenu()); } /** diff --git a/apps/desktopgui/src/net/i2p/desktopgui/i18n/DesktopguiTranslator.java b/apps/desktopgui/src/net/i2p/desktopgui/i18n/DesktopguiTranslator.java index 3568ba6e0..e95cbc01f 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/i18n/DesktopguiTranslator.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/i18n/DesktopguiTranslator.java @@ -4,23 +4,23 @@ import net.i2p.I2PAppContext; import net.i2p.util.Translate; public class DesktopguiTranslator { - + private static final String BUNDLE_NAME = "net.i2p.desktopgui.messages"; - + private static I2PAppContext ctx; - - private static I2PAppContext getRouterContext() { - if(ctx == null) { - ctx = I2PAppContext.getCurrentContext(); - } - return ctx; - } - + + private static I2PAppContext getRouterContext() { + if(ctx == null) { + ctx = I2PAppContext.getCurrentContext(); + } + return ctx; + } + public static String _(String s) { - return Translate.getString(s, getRouterContext(), BUNDLE_NAME); + return Translate.getString(s, getRouterContext(), BUNDLE_NAME); } public static String _(String s, Object o) { - return Translate.getString(s, o, getRouterContext(), BUNDLE_NAME); + return Translate.getString(s, o, getRouterContext(), BUNDLE_NAME); } } diff --git a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java index 09c5558a6..63f6ad588 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java @@ -38,61 +38,61 @@ public class RouterManager { try { return getRouterContext().router(); } catch (Exception e) { - log.error("Failed to get router. Why did we request it if no RouterContext is available?", e); - return null; - } - } - - /** - * Start an I2P router instance. - * This method has limited knowledge - * (there is no I2P instance running to collect information from). - * - * It determines the I2P location using the I2PAppContext. - */ - public static void start() { - try { - //TODO: set/get PID - String separator = System.getProperty("file.separator"); - String location = getAppContext().getBaseDir().getAbsolutePath(); - - Runtime.getRuntime().exec(location + separator + "i2psvc " + location + separator + "wrapper.config"); - } catch (IOException e) { - log.log(Log.WARN, "Failed to start I2P", e); - } - } - - /** - * Restart the running I2P instance. - */ - public static void restart() { - if(inI2P()) { - getRouter().restart(); - } - } - - /** - * Stop the running I2P instance. - */ - public static void shutDown() { - if(inI2P()) { - Thread t = new Thread(new Runnable() { - - @Override - public void run() { - WrapperManager.signalStopped(Router.EXIT_HARD); - } - - }); - t.start(); - getRouter().shutdown(Router.EXIT_HARD); - } + log.error("Failed to get router. Why did we request it if no RouterContext is available?", e); + return null; + } + } + + /** + * Start an I2P router instance. + * This method has limited knowledge + * (there is no I2P instance running to collect information from). + * + * It determines the I2P location using the I2PAppContext. + */ + public static void start() { + try { + //TODO: set/get PID + String separator = System.getProperty("file.separator"); + String location = getAppContext().getBaseDir().getAbsolutePath(); + + Runtime.getRuntime().exec(location + separator + "i2psvc " + location + separator + "wrapper.config"); + } catch (IOException e) { + log.log(Log.WARN, "Failed to start I2P", e); + } + } + + /** + * Restart the running I2P instance. + */ + public static void restart() { + if(inI2P()) { + getRouter().restart(); + } + } + + /** + * Stop the running I2P instance. + */ + public static void shutDown() { + if(inI2P()) { + Thread t = new Thread(new Runnable() { + + @Override + public void run() { + WrapperManager.signalStopped(Router.EXIT_HARD); + } + + }); + t.start(); + getRouter().shutdown(Router.EXIT_HARD); + } + } + + /** + * Check if we are running inside I2P. + */ + public static boolean inI2P() { + return context.isRouterContext(); } - - /** - * Check if we are running inside I2P. - */ - public static boolean inI2P() { - return context.isRouterContext(); - } } diff --git a/apps/desktopgui/src/net/i2p/desktopgui/util/BrowseException.java b/apps/desktopgui/src/net/i2p/desktopgui/util/BrowseException.java index ec120a416..a5e4f4350 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/util/BrowseException.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/util/BrowseException.java @@ -5,19 +5,19 @@ public class BrowseException extends Exception { private static final long serialVersionUID = 1L; public BrowseException() { - super(); - } - - public BrowseException(String s) { - super(s); - } - - public BrowseException(String s, Throwable t) { - super(s, t); - } - - public BrowseException(Throwable t) { - super(t); - } - + super(); + } + + public BrowseException(String s) { + super(s); + } + + public BrowseException(String s, Throwable t) { + super(s, t); + } + + public BrowseException(Throwable t) { + super(t); + } + } \ No newline at end of file diff --git a/apps/desktopgui/src/net/i2p/desktopgui/util/I2PDesktop.java b/apps/desktopgui/src/net/i2p/desktopgui/util/I2PDesktop.java index 3a35d5c31..ad6e14cb3 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/util/I2PDesktop.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/util/I2PDesktop.java @@ -11,11 +11,11 @@ import net.i2p.desktopgui.router.RouterManager; import net.i2p.util.Log; public class I2PDesktop { - - private final static Log log = new Log(I2PDesktop.class); - - public static void browse(String url) throws BrowseException { - if(Desktop.isDesktopSupported()) { + + private final static Log log = new Log(I2PDesktop.class); + + public static void browse(String url) throws BrowseException { + if(Desktop.isDesktopSupported()) { Desktop desktop = Desktop.getDesktop(); if(desktop.isSupported(Action.BROWSE)) { try { @@ -25,11 +25,11 @@ public class I2PDesktop { } } else { - throw new BrowseException(); + throw new BrowseException(); } } - else { - throw new BrowseException(); - } - } + else { + throw new BrowseException(); + } + } } \ No newline at end of file From 89e0e6638d369e64880e3c7e5a16d8097fd40efe Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Tue, 25 Jan 2011 17:05:14 +0000 Subject: [PATCH 135/463] I2PTunnel: Update h2ik proxy details. --- 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 ecb45b206..0fbed0a76 100644 --- a/installer/resources/i2ptunnel.config +++ b/installer/resources/i2ptunnel.config @@ -124,7 +124,7 @@ tunnel.6.type=connectclient tunnel.6.sharedClient=true tunnel.6.interface=127.0.0.1 tunnel.6.listenPort=4445 -tunnel.6.proxyList=outproxy.h2ik.i2p +tunnel.6.proxyList=outproxy2.h2ik.i2p tunnel.6.i2cpHost=127.0.0.1 tunnel.6.i2cpPort=7654 tunnel.6.option.inbound.nickname=shared clients From 71dcbec10e56e40263b9d236515e40b439a54867 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Mon, 31 Jan 2011 13:38:11 +0000 Subject: [PATCH 136/463] disapproval of revisions 'a74d2ef75dd2d96cca222c96b5f51154a536ac25'..'dbe319d674d6a6a53491762262978f53caaaa58a' --- installer/resources/i2ptunnel.config | 2 +- installer/resources/themes/console/light/console.css | 5 ----- installer/resources/themes/console/light/default.css | 2 -- 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/installer/resources/i2ptunnel.config b/installer/resources/i2ptunnel.config index 0fbed0a76..ecb45b206 100644 --- a/installer/resources/i2ptunnel.config +++ b/installer/resources/i2ptunnel.config @@ -124,7 +124,7 @@ tunnel.6.type=connectclient tunnel.6.sharedClient=true tunnel.6.interface=127.0.0.1 tunnel.6.listenPort=4445 -tunnel.6.proxyList=outproxy2.h2ik.i2p +tunnel.6.proxyList=outproxy.h2ik.i2p tunnel.6.i2cpHost=127.0.0.1 tunnel.6.i2cpPort=7654 tunnel.6.option.inbound.nickname=shared clients diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 8ce1ab4ca..3f49809f1 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -735,7 +735,6 @@ h1 { -moz-border-radius: 4px; -khtml-border-radius: 4px; min-width: 500px; - text-shadow: 0px 1px 1px #99f; } h2 { @@ -755,8 +754,6 @@ h2 { box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); word-wrap: break-word; opacity: 1; - text-transform: uppercase; - text-shadow: 0px 1px 1px #99f; } h2 a, h3 a { @@ -798,8 +795,6 @@ h3 { box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); opacity: 1; letter-spacing: 0.07em; - text-transform: uppercase; - text-shadow: 0px 1px 1px #99f; } h4 { diff --git a/installer/resources/themes/console/light/default.css b/installer/resources/themes/console/light/default.css index 0834f2dce..0c1250863 100644 --- a/installer/resources/themes/console/light/default.css +++ b/installer/resources/themes/console/light/default.css @@ -58,8 +58,6 @@ h4 { -moz-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); -khtml-box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); box-shadow: 0 2px 1px 1px rgba(176, 176, 216, 0.4); - text-shadow: 0px 1px 1px #77f; - text-transform: uppercase; } a { From 97f93c64e660519aaa78ef9baa32b67c06259bc0 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Mon, 31 Jan 2011 15:44:00 +0000 Subject: [PATCH 137/463] Fix context properties initialization; history for test4 prop, -1 --- core/java/src/net/i2p/I2PAppContext.java | 4 +- history.txt | 37 +++++++++++++++++++ .../src/net/i2p/router/RouterVersion.java | 2 +- 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/core/java/src/net/i2p/I2PAppContext.java b/core/java/src/net/i2p/I2PAppContext.java index d58210901..5cfc37ac5 100644 --- a/core/java/src/net/i2p/I2PAppContext.java +++ b/core/java/src/net/i2p/I2PAppContext.java @@ -171,7 +171,9 @@ public class I2PAppContext { _globalAppContext = this; } } - _overrideProps = new I2PProperties(envProps); + _overrideProps = new I2PProperties(); + if (envProps != null) + _overrideProps.putAll(envProps); _statManager = null; _sessionKeyManager = null; _namingService = null; diff --git a/history.txt b/history.txt index b7f9b2d0c..10b56aef2 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,40 @@ +2011-01-31 zzz + * Console: Put all socket handlers in same thread pool, + set min/max threads and idle timeout + * Context: Fix properties init + * DataStructures: + - Cleanups + * DecayingBloomFilter, DecayingHashSet: Cleanups and speedups + * Findbugs: Lots of cleanups + * I2CP: + - Add experimental bandwidth limiter + - Add I2PSession API method to update tunnel and bandwidth + configuration on an existing session + - Filter more system properties before passing them to the router + - Start work on passing per-message flags to the router via I2CP + * I2PAppContext: New getProperties() method + * i2ptunnel: + - Use context properties as defaults + * NetDB, DatabaseStoreMessage: + - Convert everything from DataStructure to the + new DatabaseEntry superclass + - Optimizations made possible by DatabaseEntry + - Don't rescan netDb directory unless changed + * OCMOSJ: + - Don't send expired messages + - Clean up stat init + * PeerManager: Make calculators static, take out of router context + * Router: + - Add new RandomIterator, use in UDP, peer selector, + profile organizer + - Add a stat to monitor peer selector run time + * RouterContext: Clean up clock overrides + * Streaming: + - Add new real sockets for easier porting of apps. + See http://zzz.i2p/topics/792 for info. Untested. + - Case cleanups + - Javadoc + * 2011-01-24 0.8.3 released 2011-01-16 zzz diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index a411b0099..87e5bffca 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 = 0; + public final static long BUILD = 1; /** for example "-test" */ public final static String EXTRA = ""; From be92253330229868f39a977ab2a8d70c45d261fe Mon Sep 17 00:00:00 2001 From: cervantes <cervantes@mail.i2p> Date: Mon, 31 Jan 2011 20:01:17 +0000 Subject: [PATCH 138/463] Added public ssl cert for forum.i2p2.de so we can use it as a secure netdb resource (http://forum.i2p2.de/netdb/) --- .../resources/certificates/forum.i2p2.de.crt | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 installer/resources/certificates/forum.i2p2.de.crt diff --git a/installer/resources/certificates/forum.i2p2.de.crt b/installer/resources/certificates/forum.i2p2.de.crt new file mode 100644 index 000000000..e28b1cc59 --- /dev/null +++ b/installer/resources/certificates/forum.i2p2.de.crt @@ -0,0 +1,30 @@ +-----BEGIN CERTIFICATE----- +MIIFLDCCAxQCCQDLNmFBp0hvZzANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJV +SzEPMA0GA1UECBMGTG9uZG9uMQwwCgYDVQQKEwNJMlAxEjAQBgNVBAsTCVRoZSBG +b3J1bTEWMBQGA1UEAxMNZm9ydW0uaTJwMi5kZTAeFw0xMDEyMTkxNTAzNTJaFw0y +MDEyMTYxNTAzNTJaMFgxCzAJBgNVBAYTAlVLMQ8wDQYDVQQIEwZMb25kb24xDDAK +BgNVBAoTA0kyUDESMBAGA1UECxMJVGhlIEZvcnVtMRYwFAYDVQQDEw1mb3J1bS5p +MnAyLmRlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4y3yMKKnJZ6I +Q/f6e+e6LgsGGMWvpa8+EqQKMR4UH3n+8olwTdUqMx3XnyXhmeSYA8idpF+7Izdj +y/z/2UXZWJM5eEl3OER7Uv64CStr8Q1Xdq7Zg+4nomnWrCDv7pDVgwUlIplctFDk +uPijXdfgs8xHERR20DmgBGMIW9U+gkyCfcqis9OOcsV8xgFMqAqaGRyPnHW4WGR6 +93IVFavox8nWDy0KhY4TL3DDV1uEeaQqF9F97k1nQxSepH1yR23qB3Nta7E3OsHZ +7uwU/cBcNxGag1HsfXufPub0pay9jc8anXT3Ip5OFYpTaUjpYVRBq9m1VW+BUJiV +ir06wRiPLx5/rAVtsWquuyEn4Ou9kXnil3Lenq8IHfv3yEHq7EMQm7AgK8brSVRb +PyUXGOpgC/jfDydXDh4Dc0jJ2O6czk1U5BZcIxAHJ+x3t/vE4ks2tPLlJUoQ/lMt +3fn2u9jWY/eZMOe/V1lkEbGc4Vi6qrJoI6VIESwsgFmV7R9g4C1e3cAmbRMINV5r +0SAJ2pwzO+rSgVTnYd3Hq3GzvC1MmJd8tme3WVZVggLQbOaeLnzAKmX9ktfA4VUl +kGUIixnL0K96u5iAoH9bwwbirWRHnfmY1HnmQXidSmDj9clSrsrD64VYwv6ACy5b +wkb/XPtXzx/b9Pr6Co79141eqT9ArtECAwEAATANBgkqhkiG9w0BAQUFAAOCAgEA +1oaksgeb8eqVH17+lkIr1cs43jA1rMJ2ogYdLxodrwtGzniv7pGpv/MNMFQ6rN9a +dGwJKm1mo/uOpsPBIcSSScZA4ER7RWMXbuR+vIGpmjO6RMr0sjRLoc7VoK9NBP02 +AcudKm9/6dQ2X46oByUCqaTk0INQkWWOOX4M8GXqXFuEle1aZF6KC2wytxdzspyA +BpE+7xbV68DAdE3FbZuowjHcWlebaDp1JBFj1H1WwLGC0gyIwIevxPft6eW0Z5m2 +p3B4EDG6ZChurBjng9bcMBJNqRFWo0Zo2FfdyLkFRYOtGzhWUgjLJqkEJsLC3Gpx +83y2fXQ0qdxY6yNuwoZSXEX0vLQPJbVvB3Apcmjc2Q0xg+CkONP6S+D6eziRcqyh +LaRLWKNELUB7ikWj1IpDmAb/dZ/zaL51rqCqwN4glebAg2HWqzFm/MNT7YfTKI4+ +/QC7812Tcge8j+/368dmbfcQqOMB+nQha1YpNw5i+cUgKW4HJMwuoSGEaDQ9NLg6 +JH110OAwLL5tCwbgRlC+Cr1zTtwHkq1NRk3eIjAlz6HKsSos0IBxW8m0TLvrsHKE +/3B9w2hv+20k24ND1hiCYv4ShghpAeaaJEs0Rb1Km/jgH9jeHSRUBzpZYAhkKIzr +PlrC0DfYlSLTdTJ3MTx9gXyK8RqSh16M+tTvoQ0zEl8= +-----END CERTIFICATE----- From 0ccbe818ce0d859741a4c1ea24e10990761df787 Mon Sep 17 00:00:00 2001 From: cervantes <cervantes@mail.i2p> Date: Mon, 31 Jan 2011 20:06:43 +0000 Subject: [PATCH 139/463] Added https://forum.i2p2.de/netdb/ to the list of ssl reseeder urls --- router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java index 8e874e979..a19b1645c 100644 --- a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java +++ b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java @@ -48,7 +48,7 @@ public class Reseeder { /** @since 0.8.2 */ public static final String DEFAULT_SSL_SEED_URL = "https://a.netdb.i2p2.de/,https://c.netdb.i2p2.de/," + - "https://www.i2pbote.net/netDb/," + + "https://forum.i2p2.de/netdb/,https://www.i2pbote.net/netDb/," + "https://r31453.ovh.net/static_media/files/netDb/"; private static final String PROP_INPROGRESS = "net.i2p.router.web.ReseedHandler.reseedInProgress"; From 4dc686736bce7e870681474a34279066429b55dc Mon Sep 17 00:00:00 2001 From: cervantes <cervantes@mail.i2p> Date: Tue, 1 Feb 2011 00:30:34 +0000 Subject: [PATCH 140/463] Removed http reseed destination b.netdb.i2p2.de and replaced it with forum.i2p2.de/netdb/ --- router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java index a19b1645c..53fbc716a 100644 --- a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java +++ b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java @@ -42,8 +42,8 @@ public class Reseeder { private static final long MAX_RESEED_RESPONSE_SIZE = 1024 * 1024; public static final String DEFAULT_SEED_URL = - "http://a.netdb.i2p2.de/,http://b.netdb.i2p2.de/,http://c.netdb.i2p2.de/," + - "http://reseed.i2p-projekt.de/,http://www.i2pbote.net/netDb/,http://r31453.ovh.net/static_media/files/netDb/"; + "http://a.netdb.i2p2.de/,http://c.netdb.i2p2.de/," + + "http://reseed.i2p-projekt.de/,http://forum.i2p2.de/netdb/,http://www.i2pbote.net/netDb/,http://r31453.ovh.net/static_media/files/netDb/"; /** @since 0.8.2 */ public static final String DEFAULT_SSL_SEED_URL = From ddc895358923b3387254711a7cd284d249595d23 Mon Sep 17 00:00:00 2001 From: sponge <sponge@mail.i2p> Date: Wed, 2 Feb 2011 17:06:34 +0000 Subject: [PATCH 141/463] Revise lookup code --- apps/BOB/src/net/i2p/BOB/DoCMDS.java | 18 +++++++++++------- apps/BOB/src/net/i2p/BOB/TCPtoI2P.java | 11 ++++++----- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/apps/BOB/src/net/i2p/BOB/DoCMDS.java b/apps/BOB/src/net/i2p/BOB/DoCMDS.java index 9894530d8..81c29cc03 100644 --- a/apps/BOB/src/net/i2p/BOB/DoCMDS.java +++ b/apps/BOB/src/net/i2p/BOB/DoCMDS.java @@ -32,11 +32,12 @@ import java.net.Socket; import java.util.Properties; import java.util.StringTokenizer; import java.util.concurrent.atomic.AtomicBoolean; +import net.i2p.I2PAppContext; import net.i2p.I2PException; import net.i2p.client.I2PClientFactory; -import net.i2p.data.DataFormatException; +//import net.i2p.data.DataFormatException; import net.i2p.data.Destination; -import net.i2p.i2ptunnel.I2PTunnel; +//import net.i2p.i2ptunnel.I2PTunnel; import net.i2p.util.Log; // needed only for debugging. // import java.util.logging.Level; @@ -52,7 +53,7 @@ public class DoCMDS implements Runnable { // FIX ME // I need a better way to do versioning, but this will do for now. - public static final String BMAJ = "00", BMIN = "00", BREV = "0E", BEXT = ""; + public static final String BMAJ = "00", BMIN = "00", BREV = "0F", BEXT = ""; public static final String BOBversion = BMAJ + "." + BMIN + "." + BREV + BEXT; private Socket server; private Properties props; @@ -456,11 +457,14 @@ public class DoCMDS implements Runnable { String reply = null; if (Arg.endsWith(".i2p")) { try { - try { - dest = I2PTunnel.destFromName(Arg); - } catch (DataFormatException ex) { + //try { + //dest = I2PTunnel.destFromName(Arg); + //} catch (DataFormatException ex) { + //} + dest = I2PAppContext.getGlobalContext().namingService().lookup(Arg); + if(dest != null) { + reply = dest.toBase64(); } - reply = dest.toBase64(); } catch (NullPointerException npe) { // Could not find the destination!? } diff --git a/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java b/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java index a537d942f..0e00f1c50 100644 --- a/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java +++ b/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java @@ -36,7 +36,8 @@ import net.i2p.client.streaming.I2PSocket; import net.i2p.client.streaming.I2PSocketManager; import net.i2p.data.DataFormatException; import net.i2p.data.Destination; -import net.i2p.i2ptunnel.I2PTunnel; +//import net.i2p.i2ptunnel.I2PTunnel; +import net.i2p.I2PAppContext; /** * @@ -146,11 +147,11 @@ public class TCPtoI2P implements Runnable { input = line.toLowerCase(); Destination dest = null; if (input.endsWith(".i2p")) { - try { - dest = I2PTunnel.destFromName(input); + //dest = I2PTunnel.destFromName(input); + dest = I2PAppContext.getGlobalContext().namingService().lookup(input); + if (dest != null) { line = dest.toBase64(); - } catch (NullPointerException npe) { - // Could not find the destination!? + } else { Emsg("Can't find destination: " + input, out); return; } From 051fdb2f2a8dedbb2c76b3a13af982d2af0b6e1d Mon Sep 17 00:00:00 2001 From: sponge <sponge@mail.i2p> Date: Wed, 2 Feb 2011 17:08:25 +0000 Subject: [PATCH 142/463] history.txt --- history.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/history.txt b/history.txt index 10b56aef2..95cba927c 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,6 @@ +2011-02-02 sponge + * BOB: Revise lookup code, bump BOB version + 2011-01-31 zzz * Console: Put all socket handlers in same thread pool, set min/max threads and idle timeout From 004d7874c4a575a1efe0876a3189f7b593d03317 Mon Sep 17 00:00:00 2001 From: mathiasdm <mathiasdm@mail.i2p> Date: Wed, 2 Feb 2011 22:52:41 +0000 Subject: [PATCH 143/463] Core tests build fix. --- core/java/test/net/i2p/crypto/SHA256Test.java | 73 ++++--------------- 1 file changed, 13 insertions(+), 60 deletions(-) diff --git a/core/java/test/net/i2p/crypto/SHA256Test.java b/core/java/test/net/i2p/crypto/SHA256Test.java index 9778887db..4e6d1a032 100644 --- a/core/java/test/net/i2p/crypto/SHA256Test.java +++ b/core/java/test/net/i2p/crypto/SHA256Test.java @@ -32,66 +32,19 @@ public class SHA256Test extends TestCase{ SHA256Generator.getInstance().calculateHash(message); } } - - public void testCopyConstructor(){ - SHA256Digest orig = new SHA256Digest(); - byte[] message = "update this!".getBytes(); - orig.update(message, 0, message.length); - - SHA256Digest copy = new SHA256Digest(orig); - - byte[] origData = new byte[32]; - orig.doFinal(origData, 0); - byte[] copyData = new byte[32]; - copy.doFinal(copyData, 0); - - assertTrue(DataHelper.eq(origData, copyData)); - - } - - public void testCheckName(){ - SHA256Digest digest = new SHA256Digest(); - assertEquals("SHA-256", digest.getAlgorithmName()); - } - - public void testManualUpdate(){ - byte[] data = "deathnotronic".getBytes(); - - SHA256Digest one = new SHA256Digest(); - for(int i = 0; i < data.length; i++){ - one.update(data[i]); + + /** + * Check if the behaviour remains the same. + */ + public void testMultipleEquality(){ + byte[] data = "blahblah".getBytes(); + + Hash firstHash = SHA256Generator.getInstance().calculateHash(data); + + for(int i=0; i<5; i++){ + Hash h = SHA256Generator.getInstance().calculateHash(data); + assertEquals(firstHash, h); } - - SHA256Digest two = new SHA256Digest(); - two.update(data[0]); - two.update(data, 1, data.length-1); - - byte[] oneData = new byte[32]; - one.doFinal(oneData, 0); - byte[] twoData = new byte[32]; - two.doFinal(twoData, 0); - - assertTrue(DataHelper.eq(oneData, twoData)); - } - - public void test14Words(){ - byte message[] = new byte[56]; - _context.random().nextBytes(message); - SHA256Digest orig = new SHA256Digest(); - orig.update(message, 0, message.length); - orig.doFinal(new byte[32], 0); - } - - public void testSHA(){ - I2PAppContext ctx = I2PAppContext.getGlobalContext(); - byte orig[] = new byte[4096]; - ctx.random().nextBytes(orig); - Hash old = ctx.sha().calculateHash(orig); - SHA256Digest d = new SHA256Digest(); - d.update(orig, 0, orig.length); - byte out[] = new byte[Hash.HASH_LENGTH]; - d.doFinal(out, 0); - assertTrue(DataHelper.eq(out, old.getData())); } -} \ No newline at end of file +} From 85d5a8542e40413ff6592ce091a0959456571f91 Mon Sep 17 00:00:00 2001 From: dev <dev@welterde.de> Date: Thu, 3 Feb 2011 06:57:35 +0000 Subject: [PATCH 144/463] replaced clover with opensource alternative --- core/java/build.xml | 42 +++++++++++++++++++----------------------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/core/java/build.xml b/core/java/build.xml index 2ae9d655f..701be6bc5 100644 --- a/core/java/build.xml +++ b/core/java/build.xml @@ -43,13 +43,24 @@ <mkdir dir="./build/javadoc" /> <javadoc sourcepath="./src:./test" destdir="./build/javadoc" packagenames="*" use="true" splitindex="true" windowtitle="I2P SDK" /> </target> - <target name="test" depends="clean, compileTest"> + <target name="prepareTest" depends="compileTest" if="with.cobertura"> + <taskdef classpath="${with.cobertura}" resource="tasks.properties" onerror="report" /> + <mkdir dir="./build/obj_test" /> + <cobertura-instrument todir="./build/obj_test"> + <fileset dir="./build/obj"> + <include name="**/*.class"/> + </fileset> + </cobertura-instrument> + </target> + <target name="test" depends="clean, compileTest, prepareTest"> <junit printsummary="on" fork="yes"> + <sysproperty key="net.sourceforge.cobertura.datafile" file="./cobertura.ser" /> <classpath> <pathelement path="${classpath}" /> + <pathelement location="./build/obj_test" /> <pathelement location="./build/obj" /> <pathelement location="../../installer/lib/jbigi/jbigi.jar" /> - <pathelement path="${ant.home}/lib/clover.jar"/> + <pathelement location="${with.cobertura}" /> </classpath> <batchtest> <fileset dir="./test/"> @@ -79,6 +90,11 @@ </fileset> </delete> </target> + <target name="cobertura" depends="test" if="with.cobertura"> + <mkdir dir="../../reports/core/cobertura" /> + <cobertura-report format="xml" srcdir="./src" destdir="../../reports/core/cobertura" /> + <delete file="./cobertura.ser" /> + </target> <target name="junit.report"> <junitreport todir="../../reports/core/junit"> <fileset dir="../../reports/core/junit"> @@ -87,28 +103,8 @@ <report format="frames" todir="../../reports/core/html/junit"/> </junitreport> </target> - <target name="clover.report"> - <taskdef resource="clovertasks"/> - <mkdir dir="../../reports/" /> - <mkdir dir="../../reports/core" /> - <mkdir dir="../../reports/core/clover" /> - <clover-setup initString="../../reports/core/clover/coverage.db"/> - <clover-report> - <current outfile="../../reports/core/html/clover"> - <format type="html"/> - </current> - </clover-report> - </target> - <target name="test.report" depends="junit.report, clover.report"/> - <target name="useclover"> - <taskdef resource="clovertasks"/> - <mkdir dir="../../reports/" /> - <mkdir dir="../../reports/core/" /> - <mkdir dir="../../reports/core/clover" /> - <clover-setup initString="../../reports/core/clover/coverage.db"/> - </target> + <target name="test.report" depends="junit.report"/> <target name="fulltest" depends="test, junit.report" /> - <target name="fullclovertest" depends="useclover, test, test.report" /> <target name="clean"> <delete dir="./build" /> </target> From daac11d2d12f291589e26518e6599d1b8f174830 Mon Sep 17 00:00:00 2001 From: dev <dev@welterde.de> Date: Thu, 3 Feb 2011 13:53:58 +0000 Subject: [PATCH 145/463] simplify code(and deduplicate) --- core/java/src/net/i2p/client/datagram/I2PDatagramMaker.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/java/src/net/i2p/client/datagram/I2PDatagramMaker.java b/core/java/src/net/i2p/client/datagram/I2PDatagramMaker.java index 0b3baf5b4..e66b7f756 100644 --- a/core/java/src/net/i2p/client/datagram/I2PDatagramMaker.java +++ b/core/java/src/net/i2p/client/datagram/I2PDatagramMaker.java @@ -45,8 +45,8 @@ public final class I2PDatagramMaker { * @param session I2PSession used to send I2PDatagrams through */ public I2PDatagramMaker(I2PSession session) { - sxPrivKey = session.getPrivateKey(); - sxDestBytes = session.getMyDestination().toByteArray(); + this(); + this.setI2PDatagramMaker(session); } /** * Construct a new I2PDatagramMaker that is null. From 9257cbb0e7e7167cebba2a9136b693705c74eb6c Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 3 Feb 2011 15:44:56 +0000 Subject: [PATCH 146/463] * Console: Add DTG to classpath for old installs --- apps/routerconsole/java/build.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/routerconsole/java/build.xml b/apps/routerconsole/java/build.xml index e1904d3fb..6e7d765aa 100644 --- a/apps/routerconsole/java/build.xml +++ b/apps/routerconsole/java/build.xml @@ -65,7 +65,8 @@ <jar destfile="./build/routerconsole.jar" basedir="./build/obj" includes="**/*.class"> <manifest> <!-- top level installer will rename to jrobin.jar --> - <attribute name="Class-Path" value="i2p.jar router.jar jrobin.jar" /> + <!-- DTG added in 0.8.4, not in the classpath for very old installs, before we changed wrapper.config to specify * --> + <attribute name="Class-Path" value="i2p.jar router.jar jrobin.jar desktopgui.jar" /> </manifest> </jar> <delete dir="./tmpextract" /> From db934215994bfe62a78b65d6aed854902162e025 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 3 Feb 2011 15:45:26 +0000 Subject: [PATCH 147/463] * I2PTunnel: Fix NPE --- apps/i2ptunnel/jsp/index.jsp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/i2ptunnel/jsp/index.jsp b/apps/i2ptunnel/jsp/index.jsp index dcacee195..a5e07c532 100644 --- a/apps/i2ptunnel/jsp/index.jsp +++ b/apps/i2ptunnel/jsp/index.jsp @@ -236,7 +236,7 @@ <% /* should only happen for streamr client */ String cHost= indexBean.getClientInterface(curClient); - if ("".equals(cHost)) { + if (cHost == null || "".equals(cHost)) { out.write("<font color=\"red\">"); out.write(intl._("Host not set")); out.write("</font>"); From ee6730fdaa287d03fc911e7d41d863f394cc1ccb Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 3 Feb 2011 15:46:24 +0000 Subject: [PATCH 148/463] * RandomSource: Fix seeding from /dev/urandom --- core/java/src/net/i2p/util/RandomSource.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/core/java/src/net/i2p/util/RandomSource.java b/core/java/src/net/i2p/util/RandomSource.java index c7c87239c..fe0429152 100644 --- a/core/java/src/net/i2p/util/RandomSource.java +++ b/core/java/src/net/i2p/util/RandomSource.java @@ -146,14 +146,18 @@ public class RandomSource extends SecureRandom implements EntropyHarvester { public final boolean initSeed(byte buf[]) { // why urandom? because /dev/random blocks, and there are arguments // suggesting such blockages are largely meaningless - boolean ok = seedFromFile("/dev/urandom", buf); + boolean ok = seedFromFile(new File("/dev/urandom"), buf); // we merge (XOR) in the data from /dev/urandom with our own seedfile - ok = seedFromFile("prngseed.rnd", buf) || ok; + File localFile = new File(_context.getConfigDir(), SEEDFILE); + ok = seedFromFile(localFile, buf) || ok; return ok; } - private static final boolean seedFromFile(String filename, byte buf[]) { - File f = new File(I2PAppContext.getGlobalContext().getConfigDir(), filename); + /** + * @param f absolute path + * @return success + */ + private static final boolean seedFromFile(File f, byte buf[]) { if (f.exists()) { FileInputStream fis = null; try { From 041e194471aeddd23f65d4bf48c7854eea7f1afa Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 3 Feb 2011 15:47:47 +0000 Subject: [PATCH 149/463] * Reseed: Limit time spent downloading from a single source --- history.txt | 6 ++++++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- .../net/i2p/router/networkdb/reseed/Reseeder.java | 14 +++++++++++--- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/history.txt b/history.txt index 95cba927c..72adcd0d7 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,9 @@ +2011-02-03 zzz + * Console: Add DTG to classpath for old installs + * I2PTunnel: Fix NPE + * RandomSource: Fix seeding from /dev/urandom + * Reseed: Limit time spent downloading from a single source + 2011-02-02 sponge * BOB: Revise lookup code, bump BOB version diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 87e5bffca..282c18b42 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 = 1; + public final static long BUILD = 2; /** for example "-test" */ public final static String EXTRA = ""; diff --git a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java index 53fbc716a..4c4c2ce91 100644 --- a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java +++ b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java @@ -35,12 +35,18 @@ import net.i2p.util.Translate; */ public class Reseeder { private static ReseedRunner _reseedRunner; - private RouterContext _context; - private Log _log; + private final RouterContext _context; + private final Log _log; // Reject unreasonably big files, because we download into a ByteArrayOutputStream. private static final long MAX_RESEED_RESPONSE_SIZE = 1024 * 1024; + /** limit to spend on a single host, to avoid getting stuck on one that is seriously overloaded */ + private static final int MAX_TIME_PER_HOST = 7 * 60 * 1000; + /** + * NOTE - URLs in both the standard and SSL groups should use the same hostname and path, + * so the reseed process will not download from both. + */ public static final String DEFAULT_SEED_URL = "http://a.netdb.i2p2.de/,http://c.netdb.i2p2.de/," + "http://reseed.i2p-projekt.de/,http://forum.i2p2.de/netdb/,http://www.i2pbote.net/netDb/,http://r31453.ovh.net/static_media/files/netDb/"; @@ -229,6 +235,7 @@ public class Reseeder { **/ private int reseedOne(String seedURL, boolean echoStatus) { try { + final long timeLimit = _context.clock().now() + MAX_TIME_PER_HOST; System.setProperty(PROP_STATUS, _("Reseeding: fetching seed URL.")); System.err.println("Reseeding from " + seedURL); URL dir = new URL(seedURL); @@ -267,7 +274,8 @@ public class Reseeder { int fetched = 0; int errors = 0; // 200 max from one URL - for (Iterator<String> iter = urlList.iterator(); iter.hasNext() && fetched < 200; ) { + for (Iterator<String> iter = urlList.iterator(); + iter.hasNext() && fetched < 200 && _context.clock().now() < timeLimit; ) { try { System.setProperty(PROP_STATUS, _("Reseeding: fetching router info from seed URL ({0} successful, {1} errors).", fetched, errors)); From b8ab14b7d34e446de1a7f3df8282e2be462ba093 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 3 Feb 2011 17:36:22 +0000 Subject: [PATCH 150/463] * Build: - Remove dup flag files (ticket #316) - Remove BOB dependency on i2ptunnel --- build.xml | 8 +++++--- history.txt | 3 +++ installer/resources/eepsite.help/help/lib/cn.png | Bin 472 -> 0 bytes installer/resources/eepsite.help/help/lib/de.png | Bin 545 -> 0 bytes installer/resources/eepsite.help/help/lib/es.png | Bin 469 -> 0 bytes installer/resources/eepsite.help/help/lib/fr.png | Bin 545 -> 0 bytes installer/resources/eepsite.help/help/lib/ir.png | Bin 512 -> 0 bytes installer/resources/eepsite.help/help/lib/it.png | Bin 420 -> 0 bytes installer/resources/eepsite.help/help/lib/jp.png | Bin 420 -> 0 bytes installer/resources/eepsite.help/help/lib/nl.png | Bin 453 -> 0 bytes installer/resources/eepsite.help/help/lib/ru.png | Bin 420 -> 0 bytes installer/resources/eepsite.help/help/lib/se.png | Bin 542 -> 0 bytes installer/resources/eepsite.help/help/lib/us.png | Bin 609 -> 0 bytes 13 files changed, 8 insertions(+), 3 deletions(-) delete mode 100644 installer/resources/eepsite.help/help/lib/cn.png delete mode 100644 installer/resources/eepsite.help/help/lib/de.png delete mode 100644 installer/resources/eepsite.help/help/lib/es.png delete mode 100644 installer/resources/eepsite.help/help/lib/fr.png delete mode 100644 installer/resources/eepsite.help/help/lib/ir.png delete mode 100644 installer/resources/eepsite.help/help/lib/it.png delete mode 100644 installer/resources/eepsite.help/help/lib/jp.png delete mode 100644 installer/resources/eepsite.help/help/lib/nl.png delete mode 100644 installer/resources/eepsite.help/help/lib/ru.png delete mode 100644 installer/resources/eepsite.help/help/lib/se.png delete mode 100644 installer/resources/eepsite.help/help/lib/us.png diff --git a/build.xml b/build.xml index 842ae7239..20616d1c2 100644 --- a/build.xml +++ b/build.xml @@ -68,8 +68,7 @@ so the build will go faster. --> - <!-- TODO remove I2PTunnel dependency in BOB --> - <target name="buildBOB" depends="buildStreaming, buildI2PTunnel" > + <target name="buildBOB" depends="buildStreaming" > <ant dir="apps/BOB/" target="jar" /> </target> @@ -484,7 +483,10 @@ <mkdir dir="pkg-temp/eepsite/docroot/help" /> <mkdir dir="pkg-temp/eepsite/docroot/help/lib" /> <copy todir="pkg-temp/eepsite/docroot/" > - <fileset dir="installer/resources/eepsite.help/" includes="robots.txt index.html help/pagetemplate.html help/index*.html **/*.png **/*.css" /> + <fileset dir="installer/resources/eepsite.help/" /> + </copy> + <copy todir="pkg-temp/eepsite/docroot/help/lib/" > + <fileset dir="installer/resources/icons/flags/" includes="cn.png de.png es.png fr.png ir.png it.png jp.png nl.png ru.png se.png us.png" /> </copy> <copy file="installer/resources/themes/console/images/favicon.ico" tofile="pkg-temp/eepsite/docroot/favicon.ico" /> <copy file="installer/resources/jetty.xml" tofile="pkg-temp/eepsite/jetty.xml" /> diff --git a/history.txt b/history.txt index 72adcd0d7..3ab747505 100644 --- a/history.txt +++ b/history.txt @@ -1,4 +1,7 @@ 2011-02-03 zzz + * Build: + - Remove dup flag files (ticket #316) + - Remove BOB dependency on i2ptunnel * Console: Add DTG to classpath for old installs * I2PTunnel: Fix NPE * RandomSource: Fix seeding from /dev/urandom diff --git a/installer/resources/eepsite.help/help/lib/cn.png b/installer/resources/eepsite.help/help/lib/cn.png deleted file mode 100644 index 89144146219e6fbec7eaa89e1bf4b073d299569e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)<h;3K|Lk000e1NJLTq000mG000XJ0ssI2`GA^k00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzYDq*vRCwBA zyw1Sz4~&=?KtRBi;ni*s10whbEcgeB4G=&qK$b*(HE%4#=N12075}lD{uOxo_w$B7 z48Q*T|MTbn@8AExB!qo!(<Xob0%_ol`_C-)lsE40+p53+zWru1`OB*Q`^(1PAa%ch z<gb6fegWAmva&!+00Ic)kS}Zg|NH#+>$bmtfBa_T{rmsVufH!rO2O)W0!b+P{TrwO zAb?mv&i(NBb<rP&|9?15|FEe1{(j{5_rpNd2($l#RsRQT00<zElm7ku3vuiBlYbaE ze}CQpR`mNf#8d{D@jwMY4FCZI((wN;$bSsKfBpUT=hHfn!4UWSgPRS}07MK7009Kn z01*O)1Cj&KRRc`~+W-(iAPqnk#EJjF&VZ_bxf^U2Fj)Wo|N9rH79fCFK#}tM53{5s zP>u;G`sX*)cv$d*%>MiL-(QdhpkjakVmyu%k;sfcNRj;yhJaxT5MTg0u5&QfH8#Bf O0000<MNUMnLSTX%SKDF$ diff --git a/installer/resources/eepsite.help/help/lib/de.png b/installer/resources/eepsite.help/help/lib/de.png deleted file mode 100644 index ac4a977362738ca7daa20784717f10f9617136b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 545 zcmV++0^a?JP)<h;3K|Lk000e1NJLTq000mG000XJ0ssI2`GA^k00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzvq?ljRCwBA z^zm_K`1_sV-#-RsmS2DV{rdgq|G(c14F4E#0Du5u`ThHQadA12^$!gG{{8d!FNFL9 z1;2m)`3t6g|6aFlH9!EdFflO!Ri8L{2_yj){sja-K@bjp{P+RH{sB%vl>h<6BFn%a z@b8~2SoNP@zd$;E{sbbRuHQd?{QCI=sNwhbA3*&Qe}GP900=;09NYi^f<O@Dffdn= z{Wswq2xv6fOjc*mGA*Lr`%B&mEaDA%u^c0|iW~vN^8fd*|9}570M-5a{U4~}*ROw2 z4Pezk^!+<TKS(7513&<=05QYgKL~??j2}OMs-fC|s(=0b3semh|NHwd0|P(+vHZ4T zU{L%2pZVYazyJRI2BN<Z#(z-o0!fCyzyAZte?ZcN@yB5XfB<6ougCCT=HGuopehjh z4<vyWf<pKYB$$C>U@pUdVa9*13;+Sd!tjgXKhXQEMobL97(p6<<R6CrzyE{SK=RN3 z|3DpoK(_q)!}OH_Ab?nYyk*!kZ_+=YHfDyO-$60_pO1m*2g5&LKrl1>{RLvMGBN!7 j!N9=G@a-1^K!5=NcXWu!7_DDe00000NkvXXu0mjfeQx^H diff --git a/installer/resources/eepsite.help/help/lib/es.png b/installer/resources/eepsite.help/help/lib/es.png deleted file mode 100644 index c2de2d7111e3cb59cf6511dd2ab045e824bdb43e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 469 zcmV;`0V@89P)<h;3K|Lk000e1NJLTq000mG000XJ0ssI2`GA^k00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzXGugsRCwBA z{Lg>@|4`Xj5kLT%<k$cJ5QG63s9*CHx4F?4b#Td&^)lkpl1oN5XoLe37*!4QcV`{} z1lGXt|NoPxK&2qnzkfqWDEb8?fBpaU3&>`al?B=W5I`&pe;NKW0^Ri&h`xRJ_x;0v zUa?=y?0^3M|NZ~}FE9c#{{3cP{Qd6}13&;Vf!z&M{pZWqKYu4MFm$tgedF}w=P#IQ z7-9gT-$11R0mKA$(qEu4%ok$*y!^wMRm*x;`R7|k6yu?K{s8?55I{^|9{?Tjhec2I zv+6&FhFWG_BbNVc|Ns94tNRJp!0`V!Py;{!F#$2enB#XZaohg-5%Tlk#oa&nzQW9g zl0Y{D4gK?n0U&@Fe=;yIr=|V7caH%YEYL84k`Tt9-wc2LGODP&y?7BIfLMT@X8Qey zK~fSFpuiXa$^k<V#QwtoA%O@S;y?sc3=lw!Ur{3xPaH!4K!5=N30g<Izl*iB00000 LNkvXXu0mjfXaCA; diff --git a/installer/resources/eepsite.help/help/lib/fr.png b/installer/resources/eepsite.help/help/lib/fr.png deleted file mode 100644 index 8332c4ec23c853944c29b02d7b32a88033f48a71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 545 zcmV++0^a?JP)<h;3K|Lk000e1NJLTq000mG000XJ0ssI2`GA^k00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzvq?ljRCwBA zES`Fq0S5m4`IqO%_xJDLpFe*B$v=PoFfuYKxfuTY!tm!O!yljm1_potVgafPw37mo z|Ns5}_wT=?B=7(K|3TdUK<+;v$=cHQ|IhD#zkdDy{rhc26F>lgG%);U`26kn-@hOg zU%!6+4+cOs(0HIde9xZz`}Onxub&LUB0x(30+2WcIRJn#2ut|?gWYu1Cf+!-K%B8# zdf?1WA}#uZ8oj7u>$I1i0Al&`=O0k%-@icgAIJnM0xA6maSq6BK-ECw|NZ*S`0Lj% z1_pot6puj;05Ax`F!=umqj7^frO?t|3^&I1kxUq9yECc+jQpY84SWH_0#pxl$?v~F z@*hy-KN0|X07U)z`4{NpU%#2aHUI<=%a31wK(7Du52Oc(|3O^?R1IN+RRjI-n*kVB z3=9AP#PZ|EACPLGJ%9cJNh|>9B%spYzZw7h1%?tp0I_@ndg9MNE>313@6R75NcceF zkr51-#U+7;F#`Sf7i0rK0I_`g_NQ&Z<sUzOef#m}%a32uoRUDN{s!{@0^RcK$B!R+ jljj4~L82K500ImE?yY-fn+$bC00000NkvXXu0mjf0<ihi diff --git a/installer/resources/eepsite.help/help/lib/ir.png b/installer/resources/eepsite.help/help/lib/ir.png deleted file mode 100644 index c5fd136aee534ecb59914e336cad18d18ead2a4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 512 zcmV+b0{{JqP)<h;3K|Lk000e1NJLTq000mG000XJ0ssI2`GA^k00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzl1W5CRCwBA zWSGdn@Ph#g{xLB8fsx4Q7mQ?K00<x!hA#}&uGJvLK)~?t@4vr){{8*?|IeR)5cK=^ z-#>r;gUH{1e{Y(x2_S%2fSMQ?7@vH7`tSc=xS~J*|Ni>>`_JFszyAFKs{8d9NdA)L zm1AIH00;mv0M7pew_3Ln1`-ek5ajjb8VVZW^Whu|9pCfc910uY_2L}~8{YEX9t$4Z z@!Kj9D)d(L0*LYN-@lBEj6f&-|Nox>4F7-s`Ty{t|Ns8~x3>Pz!S){pfXY67`UDU_ zOc38f#US*GW&hv2{?Eqpf6;>f$N=n5fB<4bR}BO)G5?=F{eR-b|HMQT_5c3^H2?$< zb1geNgNn-kGiMln{`!CM;{TsNL8PAke-;*?JV+Z*<irVv@821&T=}wV2S5NZ{$yZa z&dmIG?;gXiU%=1<Avgnx%>eYOvhv$==KunT1sF?AKYlWZiGf7_{AKv_o8k9wMiBcC z1B3*kzkfmK*Ds)AfB<6r3XWMgVnF4hNdW;sfB^vU;z%SnI0)(h0000<MNUMnLSTaI Chw@bb diff --git a/installer/resources/eepsite.help/help/lib/it.png b/installer/resources/eepsite.help/help/lib/it.png deleted file mode 100644 index 89692f74f051cd43503744c3dab65c8ba773b7e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 420 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrIztFq(O~IEGZ*N=lh=;=qSyMwWku z27eMOW_|f0uQeek^e_9g7KH|eq{JVG0^UaP2Jy4}|L^JL_3uCblfVD@mnS9t`~UCn z|MT(+KT|KOfz%~1cG~~^_2vEk{SFNQ?Cjg~|NsBWy<%2im{<n01H(p!wT!cPLjJOM z{QKt?&dcI(HG!9Be?7A)1B<|kKl^#=|1+%p!|wFokZ}^*f+V1Mj8!5T-++ew|D(Eu zQRDmp1_1{J-ui=S|9^ewUcuha=C)xn15*d*iih9--{1eQDdhjZ-`u;|Hhgpl|DTw^ zz@e~VvV&K>vp^YdeS=hk-Cyo6U`Hgs{l4FR(w#{P`G0<L_c^h-xw)}f1Ozc@vMMhC znKyCal*Wg`8hwr*|299&xf;3P>;a3G2@YSmzI~fu(Z<lgz|5c*R^AeLsAxVgm>E1> L{an^LB{Ts58L6#6 diff --git a/installer/resources/eepsite.help/help/lib/jp.png b/installer/resources/eepsite.help/help/lib/jp.png deleted file mode 100644 index 325fbad3ffd3075a4a84d8d898ad26ef7d3e0d56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 420 zcmV;V0bBlwP)<h;3K|Lk000e1NJLTq000mG000XJ0ssI2`GA^k00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzHc3Q5RCwBA z{QC7P0}}Z6?;nIjX28LpfBygihy^Ih#l;0A|Ns9F(F3Oc|A$jZ;Khp<00G1TQ}iFf z*thTh;UoWl|N3uc_TS43u9}gN5oifO0I{H}Uc2`H!iE3;{Q3Xu_y5C(|37{5KRE@W z0pdb{0Ahl>9whYk?f=!Q|Ns8||JN@lTD;`{<HvAI{`~m^5I{^2&%xdJ|Kmrf(%)e6 z%a{KTAO43~0aOeSKrBEE<Ns$675&e|1Xc>R1ZWk|EGa3dAO8ObDh3E3Cb;oH_5X#1 z|NHy@|M?558b}5Q|Cf`4hZv9q2p|@?lb|{i68>{>{ol0<q}tBze@qPA$3Ot|13&;V zzJ2?akB<*73S~gt$;kNsKSBnG@7}!&5I`Us-o1MVi%1Z}1t69H1Q-A&lWd>lx`{mi O0000<MNUMnLSTa2cE7*? diff --git a/installer/resources/eepsite.help/help/lib/nl.png b/installer/resources/eepsite.help/help/lib/nl.png deleted file mode 100644 index fe44791e32b790949b0317ab3c258864b9024ebe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 453 zcmV;$0XqJPP)<h;3K|Lk000e1NJLTq000mG000XJ0ssI2`GA^k00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzS4l)cRCwBA z{Lg>@|4`Xj5kLTv<lqPZ2nGURg05Ad3pJ?CFLybN&wjSO?Bk+LPZ}wt5e`<M1OzJL zyVpDd2&{qO&;KXSfl3+v{`>#?55wQzKoX38|NjLffBpXj6#2y{D-E;(Ab?mHL=FGT z$TP6>fK>na1GWK({(upf0nrSU5*Gz(00<z)j~_qs^74Y5^#4Bt7~%qqjEoN+JOBtF zmVf{LK~#e@FyK}Wlx1Z6^XCsh0I~doE5dI+&<3!H00G3vpx9qtYyar=*WZ8s{rUUv z*Pp+?|Ni?8B>%w4e}91F-@gjtJbOE500a;V!?RECzy5mt@dro_q~YJM-#~SLe}OeX zNT7y4|NilCvNABd0|+1%hF>6clER!2lYo}|1|zVkK=SXOfB*mf{rC6ZKVbL)odgg- vjKFAPVE6?_e~=h|kVO7~qZmRm0R$KTYszPUy89K;00000NkvXXu0mjfB$dbi diff --git a/installer/resources/eepsite.help/help/lib/ru.png b/installer/resources/eepsite.help/help/lib/ru.png deleted file mode 100644 index 47da4214fd9edb383687c1d4f84fe8b42a51ceb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 420 zcmV;V0bBlwP)<h;3K|Lk000e1NJLTq000mG000XJ0ssI2`GA^k00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzHc3Q5RCwBA z{QC7j0|NZ}_YXorSpU$#pMMMh0mK57=Hdb=`u`uOlM&2-@PKUQ|Noi(BY_t$z5oOe z3&dowY6RmyHo(Zp2($zsfEYbJ|7T?UfBzojjK6>X|NRSO0LlM<{-BURBqYRGSojej zfLOL~|EH_V_~;P>Nc1<u??3;4{|2F7ztBl}d5{wT0tn=!KYtj2e7FXPG(_DmAmbNQ z<j)_Vul@l95J&^WQlK1216(PF4L}6c01!Ydn;DojfA@U<_3R%=)1QC8|NQ&)8$|y8 z4Q2fL^B2he^OyUN^k#-d00G3}1`NDExBmUUhuv@p18DW1zl?uX#2FX>0*D0|Jxss< zFi1)Q<$$6LU}rIc*dU*QNFV}+9T))>0|XG`SD?F)5CbX~O$rDA0t^5@iDe$xIAIn5 O0000<MNUMnLSTaIlB^^E diff --git a/installer/resources/eepsite.help/help/lib/se.png b/installer/resources/eepsite.help/help/lib/se.png deleted file mode 100644 index 1994653dac1fc1c6ee3c9fcb35c8af97f16eefc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 542 zcmV+(0^$9MP)<h;3K|Lk000e1NJLTq000mG000XJ0ssI2`GA^k00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzut`KgRCwBA zWN>a|fPuet^$h<QfQY%Ql;PJuhF`xJe*Izi@e9HD{R<#~Sb*xPb3K9NzkmN3mA^6k z`}?2aZ*Ga-pTGbA{QU<+zyJOPk^ex9O}Uc+0*D1{^#3RCzy1C9pW)}D|Nnn8{QrCZ z_2=I}MSuPR75)12_ZN`;`>(7pHv_{jfB<3vn*8q{15ov!pR5qo|Ns4BVf^v!57RHO zo?l?}`yWs<(7C?=0*LYNK?X*pGKOD3v;Q#s|MUOfZxH$qCjb2cBQWFtZ$@_cPkRpn z1P}|u9|n-AAQdnT|9?TXAyk7H4FCQBl>h_~&`AvcLF)bhMS(&{8jwh^2qVzve;5D) zh>=0RIIAq+{+o}$pxEl(3%2T)`P!1-fBt~{@Pp~sA7J?W`}60ovKZgl)=2;X#KQ37 z&mWM7{{H^+4`$e}UqIEMAo>Rk|KALM|1kdh!vsX^3=B^I0*D0|DL|!?{M^6*VPKPH z00z{*-?BnHps)wJ`QKllIe-8D1EGJQNCgNWMh3}bctpOPvlbWzK!=K^+cJPc;};D5 g19O2S13-WQ0NlBGh$rR(5C8xG07*qoM6N<$f_QiWUjP6A diff --git a/installer/resources/eepsite.help/help/lib/us.png b/installer/resources/eepsite.help/help/lib/us.png deleted file mode 100644 index 10f451fe85c41c6c9a06d543a57114ae2f87ecc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 609 zcmV-n0-pVeP)<h;3K|Lk000e1NJLTq000mG000XJ0ssI2`GA^k00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz^GQTORCwBA zOin+-00;m6G5q_(!0?NK;Xja^CBNtYx36zrzX0<8fe}y+AOOR1ZUO)Z1VGUKD=-j5 zV;e9~EK2V8xn<G~KHPiiGJR5}scIU=OtG5?dqju`4q&&IzW`zcYOs&ASbpf=-+v51 z^y|<6zyCpuAAkOzWvFI&_krQlM}{w-8NPjEjPks3<_JIl0d3e1G#F@-eci9GU%y&a z{(S%by?*fzmXaTzK7IP|;lsOk@7}z5^Y?G`moJ}Ao;(N;Kr9UZn1POWZ)W`W@4ssc z%b(v24lSHl8GioxdYUV43eaGNFJJ!u`0?-8FV3W{KUdEI1Q0`V@(!T8ZL5BM{P@wV z<mc<xubB&<K7Ra|!G9~n>{qW|y?pud`Sa)3|NY&vWd%S0u>b>P!2!lUe;6EF*#G_c zFVXVt@6Q{uX@40W{p0iY2Aa+A^Cu7i8KT+YH}2j52q4BskM2rJ$^k9;2Xxc_|Np=M z&VaLlA*IO5FlECMfB<5VUNC{tBZO(|zW*;@GJN;|bTJ71`0*d;`d`2P!x=ymOA`2> z+y@9C##^^8%gd{MW@Y91_2d742B2~OQNf=-zkmD?Vqkdk_wPTUNeuu2#KPTG{_;O4 v7C%8E5*DLB7#Kb?Fnj}}-(W6879hX?8lYRg`Y`<~00000NkvXXu0mjfD6Jtx From c979d65ee6acb4b96250c58598ba9f4b317b8c7d Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 3 Feb 2011 19:27:49 +0000 Subject: [PATCH 151/463] - Add UTF-8 test script - Fix non-UTF-8 comment in Jetty source File --- .../mortbay/http/handler/ResourceHandler.java | 2 +- tests/scripts/checkutf8.sh | 57 +++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100755 tests/scripts/checkutf8.sh diff --git a/apps/jetty/java/src/org/mortbay/http/handler/ResourceHandler.java b/apps/jetty/java/src/org/mortbay/http/handler/ResourceHandler.java index 5515df226..d1a57159b 100644 --- a/apps/jetty/java/src/org/mortbay/http/handler/ResourceHandler.java +++ b/apps/jetty/java/src/org/mortbay/http/handler/ResourceHandler.java @@ -47,7 +47,7 @@ import org.mortbay.util.URI; * HTTP/1.1 ranges are supported. * * @version $Id: ResourceHandler.java,v 1.66 2005/08/24 08:18:17 gregwilkins Exp $ - * @author Nuno Preguia + * @author Nuno Pregui?a (sorry, wasn't UTF-8) * @author Greg Wilkins */ public class ResourceHandler extends AbstractHttpHandler diff --git a/tests/scripts/checkutf8.sh b/tests/scripts/checkutf8.sh new file mode 100755 index 000000000..8efce06bf --- /dev/null +++ b/tests/scripts/checkutf8.sh @@ -0,0 +1,57 @@ +# +# Check for UTF-8 problems in all files where they might appear +# Also check all Java source files +# Returns nonzero on failure +# +# zzz 2010-12 +# public domain +# + +cd `dirname $0`/../.. + +# apps/routerconsole/jsp/ should only have UTF8 in help_xx.jsp + +DIRS="\ + apps/routerconsole/locale \ + apps/i2ptunnel/locale \ + apps/i2psnark/locale \ + apps/susidns/locale \ + apps/desktopgui/locale \ + installer/resources/eepsite.help/help \ + installer/resources/initialNews \ + installer/resources/proxy \ + installer/resources/readme \ + apps/routerconsole/jsp \ + apps/i2ptunnel/jsp \ + apps/susidns/src/jsp" + +for i in `find $DIRS -maxdepth 1 -type f` +do + echo "Checking $i ..." + iconv -f UTF8 -t UTF8 $i -o /dev/null + if [ $? -ne 0 ] + then + echo "********* FAILED CHECK FOR $i *************" + FAIL=1 + fi +done + +echo "Checking all Java files ..." +for i in `find . -name \*.java -type f` +do + #echo "Checking $i ..." + iconv -f UTF8 -t UTF8 $i -o /dev/null + if [ $? -ne 0 ] + then + echo "********* FAILED CHECK FOR $i *************" + FAIL=1 + fi +done + +if [ "$FAIL" != "" ] +then + echo "******** At least one file failed check *********" +else + echo "All files passed" +fi +exit $FAIL From 121c8172688a003776d5c8b75ebe6076750dd2ec Mon Sep 17 00:00:00 2001 From: mathiasdm <mathiasdm@mail.i2p> Date: Fri, 4 Feb 2011 17:09:13 +0000 Subject: [PATCH 152/463] Fix for headless. --- .../src/net/i2p/desktopgui/Main.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/apps/desktopgui/src/net/i2p/desktopgui/Main.java b/apps/desktopgui/src/net/i2p/desktopgui/Main.java index 56abf9e2c..03aa216b6 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/Main.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/Main.java @@ -7,6 +7,7 @@ package net.i2p.desktopgui; import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; +import java.awt.GraphicsEnvironment; import net.i2p.I2PAppContext; import net.i2p.desktopgui.router.RouterManager; @@ -54,7 +55,21 @@ public class Main { * Main method launching the application. */ public static void beginStartup(String[] args) { - System.setProperty("java.awt.headless", "false"); + boolean wasHeadless = Boolean.valueOf(System.getProperty("java.awt.headless")).booleanValue(); + if(wasHeadless) { + System.setProperty("java.awt.headless", "false"); + } + boolean headless_check = true; + try { + // X permissions error is a java.lang.InternalError (a Throwable) + GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); + headless_check = ge.isHeadlessInstance(); + } catch (Throwable t) {} + if (wasHeadless) + System.setProperty("java.awt.headless", "true"); + if (headless_check) { + return; + } try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException ex) { @@ -87,6 +102,7 @@ public class Main { } }); + } /** From 6b852afe15efa2c01892d2a0a1f2e77fa7bd2070 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sat, 5 Feb 2011 18:56:06 +0000 Subject: [PATCH 153/463] new ignore file; drop build dir --- .mtn-ignore | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 .mtn-ignore diff --git a/.mtn-ignore b/.mtn-ignore new file mode 100644 index 000000000..b0fd2e40a --- /dev/null +++ b/.mtn-ignore @@ -0,0 +1,24 @@ +# Just to try and prevent some noob disasters. +# Use mtn add --no-respect-ignore foo.jar to ignore this ignore list +_jsp\.java$ +\.bz2$ +\.class$ +\.diff$ +\.exe$ +\.fba$ +\.gz$ +\.jar$ +\.out$ +\.patch$ +\.sig$ +\.sud$ +\.su2$ +\.tar$ +\.war$ +\.zip$ +^\. +^build/ +^pkg-temp/ +~$ +/build/ +/classes/ From e398c036a8fe5430d1bbb0f6303e9cdc44fb84a3 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sat, 5 Feb 2011 18:59:06 +0000 Subject: [PATCH 154/463] outproxy2 --- installer/resources/hosts.txt | 3 ++- installer/resources/i2ptunnel.config | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/installer/resources/hosts.txt b/installer/resources/hosts.txt index 3af233776..27f06ee62 100644 --- a/installer/resources/hosts.txt +++ b/installer/resources/hosts.txt @@ -323,4 +323,5 @@ outproxy.h2ik.i2p=Wa-LfCQjQBcJVItWynp6NWNnjbCDNAD9HJl2v6koEq3B3nGfID7Xxbyq17h9mY trac.i2p2.i2p=24SmhWiRDm-GzpV5Gq2sXhuvPpa1OihY7rkxQO4aHy5qKjr6zmEnZ3xQXdkFJJ0Z1lKy73XRmgCyys02G25Hl3cuxlZ2fNbp6KhOzlRKpOIAWFdSWZNF4Fp7sos0x-a-9fxOWnwwQ9MFcRYwixE~iCZf4JG~-Pd-MHgAuDhIX0P3~GmfUvo~9xPjof1ZsnaOV1zC0XUkHxZA5D6V0Bse~Ptfb66lPNcgBxIEntCStBAy~rTjaA3SdAufG29IRWDscpFq1-D4XPaXHnlXu7n7WdpFEM8WWd3ebUMqnq8XvLL1eqoWYzKCe3aaavC3W6~pJp8cxKl2IKrhvSFatHZ0chRg3B4~ja1Cxmw1psisplSkJqMnF921E6pury0i6GH52XAVoj4iiDY~EAvqDhzG-ThwlzTs~2JKzslwxOrD2ejd-dcKdi4i9xvi2JQ4Ib2Mw2ktaQhuAw3Y9EkqAs7oriQQN8N8dwIoYkJLfvh7ousm0iKJJvMt3s55PccM46SoAAAA i2plugins.i2p=7oQz2gHOxFXxXTI6uGMk1Giv9UmviBhbubWKDjDqW1Rxvmm55tvC1znaAAZoV0X6YPd9aubYwsvfXAYatPHY1eehlELe3XdrgzqWvj566j62gv8atxhJQHjbaWqF-ZvntYRefVRFJ49sPi~MmAv5EBoSUKGuVu~8Bw-nKlCEhL7PLRdzA98515U5cFC6-srI2poZiWJ35rfbIqbEOLbECC4HbTedXv2PbRyukCiGrU-wPx4GnfSSaMeYMTAtHOf0IiYEKPSExjWkovgWbnCQaBzP4M-fAKIkSIMuOF8T4wmGaGESLCgiHukDoiiXmsTRm3cNeotm-BXncF~tft8sL4OB9cV-SeOtgkgIsaoO1JpQ1ACdtgOzlIB6H032jpuMQ5U9u1OQbTS8CtdRIlBv7Zcd6621MI2KGXLldHpcMs5hecbqctit~it5lB-wSkG6lllT2ZXBn8Yxeu8xo6kdrZ4bkolBYPEH1RPxiCj9GEchhUSPi75dkgb-vgoMnSMgAAAA i2pbote.i2p=~taSfBfeiMM5fW~qwUGZr4kAXmSoentWVjlQhTCKWhVj04KV34tLguNQEpHb1cA2eIwlkTpY0TPYUVKt866jLgQEteuIImmNuStVgm6DWh4baPqI22oSNC7O-4EW6PJy1tT9nr1NXu5p4w2jY4P4Css76xthaf6Z5YUOWAIwnMlptyac-qFHmjmU3CFqvKQgBnA4NB0ts7Y2~TcvciANllfsjfsMgFdg--FYpKiwC8bSsTHKJ3~oGb6osMqql~Vzr6kvIzfLnvabbuW8wjG2JvATBuJ3IY-BN59KdT84nc00SuMgmt1ywVvHOl0~n8Cjr1hASYiJ2FTxEQRbQ9WRaxbnk5BO~yeiedCsjw7ImsSES3GzcU5zVVx9p3bgx7P~X0h52VripL6bovj9YJznN3qw0eRCJGjY-du8azFNV6~6ZZ6ss14RNC~HKIzlhR7F5kF~4H2wfC1EdNlmm1cI0iYRdEdwSSVX47LngHyK-ZQbVZOGeEeCU8J8Vhk~8WdLAAAA -planet.i2p=W0omtMApOdlTkgJoct08QnzDkeb~xc60df5Cx3k3qqOFmyEkRB65NdpSdvldI5STmXmXlZe68f8Hu1dfBMmKvfpBFMpP-mRVYuHbEa4N1dRkp3AOswZFO51lSC~MVPMZKGHAv0cfv5WFaJ9nfuaR7iYYWJF11xotoPTMbJdB-I3XPC8rxHI-73ATlOD4cU9oZ6BYcBE0dun9zw4IHBcRpnFRx~s-TkevNfPnBqujB-NNgA8a5s~QUj0h3FwwUWsNB8f1Uwy~DwoQh7pMp6dsZ3umEyBn2HaXZasSmbzB30qkQRs9vrAtIFdIzCQ~8gI2cHdHEPgExUQX~xlM8QZEgnLXSfS93asWPdpitv~KT7bO-35BgTBdCozHTCcvys6bYJ24UnkFVBE0D2L0t98neelWkJSaEU0QzxdRphoCZY8OABQIaS4qw6PEFD1Un1vxNCh~TDFWcYBZ3Rqsc~ISW0wF7oOS6-DPT3q5O8cGLc8iAEdRchrU9XyAHAKVlEZxAAAA \ No newline at end of file +planet.i2p=W0omtMApOdlTkgJoct08QnzDkeb~xc60df5Cx3k3qqOFmyEkRB65NdpSdvldI5STmXmXlZe68f8Hu1dfBMmKvfpBFMpP-mRVYuHbEa4N1dRkp3AOswZFO51lSC~MVPMZKGHAv0cfv5WFaJ9nfuaR7iYYWJF11xotoPTMbJdB-I3XPC8rxHI-73ATlOD4cU9oZ6BYcBE0dun9zw4IHBcRpnFRx~s-TkevNfPnBqujB-NNgA8a5s~QUj0h3FwwUWsNB8f1Uwy~DwoQh7pMp6dsZ3umEyBn2HaXZasSmbzB30qkQRs9vrAtIFdIzCQ~8gI2cHdHEPgExUQX~xlM8QZEgnLXSfS93asWPdpitv~KT7bO-35BgTBdCozHTCcvys6bYJ24UnkFVBE0D2L0t98neelWkJSaEU0QzxdRphoCZY8OABQIaS4qw6PEFD1Un1vxNCh~TDFWcYBZ3Rqsc~ISW0wF7oOS6-DPT3q5O8cGLc8iAEdRchrU9XyAHAKVlEZxAAAA +outproxy2.h2ik.i2p=zjXqVu1pnPpsR0DnqiIlAidy8GSLznEupTrb~vUg-NELU3~Gmbqc-soJlYu69VyQdZxVGNZ1PsgacjJwxtd8otZ~lgqsJV2aDJdzDIClEj9hYM4hV4ClHdZQnEOEHj1fc5TK7n31o3jr94kz6ZtdG9eL7F~YIE7EcADJ7ECg-wz05~xj8NK4gH67mMSCHgX92RTQRTGFtxxrPkVRLD8GE069wGmRpV9xt3wZqn12ijdo1HjNMbqxZfSbulscm0M2~qy4fwzF1OYWSg5-~NY02iNygwKYhG2CdgDyFALVGvHfJ-wzZ~pKj62-c8HVg1qHE6B1bKKO5GID03JoRAlEeZFkrqqmUQyQvzxhlUJlcnaBOaCoIm9L8999cHQj7-JHJTTvJ2TltvSbj1TcyoIFEdSyW22TJGRMoopezPoCERhemy79cb~SvsK46m4J7hBDjQl7Rgzp-uC5aSMEN3PU2g1w5A3DWxodUy2Zzg~moJaKbeS8Vf~mLVEt63djlFMxAAAA diff --git a/installer/resources/i2ptunnel.config b/installer/resources/i2ptunnel.config index ecb45b206..0fbed0a76 100644 --- a/installer/resources/i2ptunnel.config +++ b/installer/resources/i2ptunnel.config @@ -124,7 +124,7 @@ tunnel.6.type=connectclient tunnel.6.sharedClient=true tunnel.6.interface=127.0.0.1 tunnel.6.listenPort=4445 -tunnel.6.proxyList=outproxy.h2ik.i2p +tunnel.6.proxyList=outproxy2.h2ik.i2p tunnel.6.i2cpHost=127.0.0.1 tunnel.6.i2cpPort=7654 tunnel.6.option.inbound.nickname=shared clients From 6a54aa7e4e1d2dc287147bb904523c997d2ccb29 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sat, 5 Feb 2011 22:42:07 +0000 Subject: [PATCH 155/463] cleanups --- .../java/src/org/klomp/snark/ExtensionHandler.java | 3 ++- .../java/src/org/klomp/snark/I2PSnarkUtil.java | 2 +- apps/i2psnark/java/src/org/klomp/snark/Peer.java | 11 ++++++++--- .../java/src/org/klomp/snark/SnarkManager.java | 4 +--- apps/i2psnark/java/src/org/klomp/snark/dht/DHT.java | 1 - 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java b/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java index 44490c37b..b3770070f 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java +++ b/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java @@ -30,7 +30,8 @@ abstract class ExtensionHandler { public static final int ID_METADATA = 1; public static final String TYPE_METADATA = "ut_metadata"; public static final int ID_PEX = 2; - public static final String TYPE_PEX = "ut_pex"; + /** not ut_pex since the compact format is different */ + public static final String TYPE_PEX = "i2p_pex"; /** Pieces * SHA1 Hash length, + 25% extra for file names, benconding overhead, etc */ private static final int MAX_METADATA_SIZE = Storage.MAX_PIECES * 20 * 5 / 4; private static final int PARALLEL_REQUESTS = 3; diff --git a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java index a3ecb1777..13bda2e55 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java +++ b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java @@ -72,7 +72,7 @@ public class I2PSnarkUtil { public static final int DEFAULT_MAX_UP_BW = 8; //KBps public static final int MAX_CONNECTIONS = 16; // per torrent private static final String PROP_MAX_BW = "i2cp.outboundBytesPerSecond"; - private static final boolean ENABLE_DHT = true; + //private static final boolean ENABLE_DHT = true; public I2PSnarkUtil(I2PAppContext ctx) { _context = ctx; diff --git a/apps/i2psnark/java/src/org/klomp/snark/Peer.java b/apps/i2psnark/java/src/org/klomp/snark/Peer.java index 5110ae9a5..548914812 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Peer.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Peer.java @@ -79,6 +79,8 @@ public class Peer implements Comparable static final long OPTION_EXTENSION = 0x0000000000100000l; static final long OPTION_FAST = 0x0000000000000004l; static final long OPTION_DHT = 0x0000000000000001l; + /** we use a different bit since the compact format is different */ + static final long OPTION_I2P_DHT = 0x0000000040000000l; static final long OPTION_AZMP = 0x1000000000000000l; private long options; @@ -269,7 +271,7 @@ public class Peer implements Comparable out.sendExtension(0, ExtensionHandler.getHandshake(metasize)); } - if ((options & OPTION_DHT) != 0 && util.getDHT() != null) { + if ((options & OPTION_I2P_DHT) != 0 && util.getDHT() != null) { if (_log.shouldLog(Log.DEBUG)) _log.debug("Peer supports DHT, sending PORT message"); int port = util.getDHT().getPort(); @@ -327,8 +329,11 @@ public class Peer implements Comparable dout.write(19); dout.write("BitTorrent protocol".getBytes("UTF-8")); // Handshake write - options - // FIXME not if DHT disabled - dout.writeLong(OPTION_EXTENSION | OPTION_DHT); + long myOptions = OPTION_EXTENSION; + // FIXME get util here somehow + //if (util.getDHT() != null) + // myOptions |= OPTION_I2P_DHT; + dout.writeLong(myOptions); // Handshake write - metainfo hash dout.write(infohash); // Handshake write - peer id diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index 026363f6f..3f9f90edf 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -750,8 +750,7 @@ public class SnarkManager implements Snark.CompleteListener { * Must be a filesystem-safe name. * @since 0.8.4 */ - private void locked_writeMetaInfo(MetaInfo metainfo, String filename) throws IOException { - // prevent interference by DirMonitor + private static void locked_writeMetaInfo(MetaInfo metainfo, String filename) throws IOException { File file = new File(filename); if (file.exists()) throw new IOException("Cannot overwrite an existing .torrent file: " + file.getPath()); @@ -1313,7 +1312,6 @@ public class SnarkManager implements Snark.CompleteListener { if ( (snark != null) && (!snark.isStopped()) ) snark.stopTorrent(); } -//save magnets } } } diff --git a/apps/i2psnark/java/src/org/klomp/snark/dht/DHT.java b/apps/i2psnark/java/src/org/klomp/snark/dht/DHT.java index 29e0fa20b..a074890b9 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/dht/DHT.java +++ b/apps/i2psnark/java/src/org/klomp/snark/dht/DHT.java @@ -1,7 +1,6 @@ package org.klomp.snark.dht; /* - * Copyright 2010 zzz (zzz@mail.i2p) * GPLv2 */ From c38d72d17854f2c230581d632ade87d807de537c Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sat, 5 Feb 2011 23:21:56 +0000 Subject: [PATCH 156/463] * i2ptunnel: - IRCClient: Use tunnel log instance - Server: Full queue log tweak --- .../net/i2p/i2ptunnel/I2PTunnelIRCClient.java | 16 +++++------ .../net/i2p/i2ptunnel/I2PTunnelServer.java | 7 +++-- .../i2ptunnel/socks/I2PSOCKSIRCTunnel.java | 6 ++-- history.txt | 28 +++++++++++++++++++ .../src/net/i2p/router/RouterVersion.java | 2 +- 5 files changed, 45 insertions(+), 14 deletions(-) diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCClient.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCClient.java index d5b3dda65..6bfbdedd1 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCClient.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCClient.java @@ -89,9 +89,9 @@ public class I2PTunnelIRCClient extends I2PTunnelClientBase implements Runnable i2ps = createI2PSocket(clientDest); i2ps.setReadTimeout(readTimeout); StringBuffer expectedPong = new StringBuffer(); - Thread in = new I2PAppThread(new IrcInboundFilter(s,i2ps, expectedPong), "IRC Client " + __clientId + " in", true); + Thread in = new I2PAppThread(new IrcInboundFilter(s,i2ps, expectedPong, _log), "IRC Client " + __clientId + " in", true); in.start(); - Thread out = new I2PAppThread(new IrcOutboundFilter(s,i2ps, expectedPong), "IRC Client " + __clientId + " out", true); + Thread out = new I2PAppThread(new IrcOutboundFilter(s,i2ps, expectedPong, _log), "IRC Client " + __clientId + " out", true); out.start(); } catch (Exception ex) { if (_log.shouldLog(Log.ERROR)) @@ -128,13 +128,13 @@ public class I2PTunnelIRCClient extends I2PTunnelClientBase implements Runnable private Socket local; private I2PSocket remote; private StringBuffer expectedPong; - // shadows _log in super() - private final Log _log = new Log(I2PTunnelIRCClient.class); + private final Log _log; - public IrcInboundFilter(Socket _local, I2PSocket _remote, StringBuffer pong) { + public IrcInboundFilter(Socket _local, I2PSocket _remote, StringBuffer pong, Log log) { local=_local; remote=_remote; expectedPong=pong; + _log = log; } public void run() { @@ -207,13 +207,13 @@ public class I2PTunnelIRCClient extends I2PTunnelClientBase implements Runnable private Socket local; private I2PSocket remote; private StringBuffer expectedPong; - // shadows _log in super() - private final Log _log = new Log(I2PTunnelIRCClient.class); + private final Log _log; - public IrcOutboundFilter(Socket _local, I2PSocket _remote, StringBuffer pong) { + public IrcOutboundFilter(Socket _local, I2PSocket _remote, StringBuffer pong, Log log) { local=_local; remote=_remote; expectedPong=pong; + _log = log; } public void run() { diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java index 5427130bc..31f5f1783 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java @@ -302,9 +302,10 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable { try { i2ps.close(); } catch (IOException ioe) {} - if (open && _log.shouldLog(Log.ERROR)) - _log.error("ServerHandler queue full for " + remoteHost + ':' + remotePort + - "; increase " + PROP_HANDLER_COUNT + '?', ree); + if (open) + _log.logAlways(Log.WARN, "ServerHandler queue full, dropping incoming connection to " + + remoteHost + ':' + remotePort + + "; increase server max threads or " + PROP_HANDLER_COUNT); } } else { // use only for standard servers that can't get slowlorissed! Not for http or irc diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/I2PSOCKSIRCTunnel.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/I2PSOCKSIRCTunnel.java index 84e66cf72..a19763678 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/I2PSOCKSIRCTunnel.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/I2PSOCKSIRCTunnel.java @@ -50,9 +50,11 @@ public class I2PSOCKSIRCTunnel extends I2PSOCKSTunnel { Socket clientSock = serv.getClientSocket(); I2PSocket destSock = serv.getDestinationI2PSocket(this); StringBuffer expectedPong = new StringBuffer(); - Thread in = new I2PAppThread(new I2PTunnelIRCClient.IrcInboundFilter(clientSock, destSock, expectedPong), "SOCKS IRC Client " + (++__clientId) + " in", true); + Thread in = new I2PAppThread(new I2PTunnelIRCClient.IrcInboundFilter(clientSock, destSock, expectedPong, _log), + "SOCKS IRC Client " + (++__clientId) + " in", true); in.start(); - Thread out = new I2PAppThread(new I2PTunnelIRCClient.IrcOutboundFilter(clientSock, destSock, expectedPong), "SOCKS IRC Client " + __clientId + " out", true); + Thread out = new I2PAppThread(new I2PTunnelIRCClient.IrcOutboundFilter(clientSock, destSock, expectedPong, _log), + "SOCKS IRC Client " + __clientId + " out", true); out.start(); } catch (SOCKSException e) { _log.error("Error from SOCKS connection", e); diff --git a/history.txt b/history.txt index 3ab747505..b501b483c 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,31 @@ +2011-02-05 zzz + * .mtn-ignore: New, to make it harder to check in stuff you shouldn't + * BOB: Drop checked-in build dir + * i2psnark: + - Big refactor to support torrents where only the infohash is known + (i.e., added by magnet links) + - Big refactor to use accessors instead of public fields + - Add support for metadata transfer (BEP 9) via the + extension protocol (BEP 10) + - Add support for adding torrents via standard magnet links (BEP 9) + and "maggot" links (http://sponge.i2p/files/maggotspec.txt) + - Add support for peer exchange (i2p_pex) + - Add stubs for future DHT support (BEP 5) + - Add more information on torrent details page; + add details page for single-file torrents + - Make filename filtering consistent (ticket #368) + - Fix add-torrent locking (ticket #371) + - Fix opentracker configuration + - Add several connect-to-self checks + - Add support for using new I2CP bandwidth limiter + - Add support for using new in-session I2CP naming lookups + - Don't expire outbound Piece messages, since we now defer loading the + data from disk + * i2ptunnel: + - Change connect proxy default to outproxy2.h2ik.i2p + - IRCClient: Use tunnel log instance + - Server: Full queue log tweak + 2011-02-03 zzz * Build: - Remove dup flag files (ticket #316) diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 282c18b42..0725033fa 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 = 2; + public final static long BUILD = 3; /** for example "-test" */ public final static String EXTRA = ""; From f9d43a8a5fcd84a5ddd84b9861edadc750c76641 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 6 Feb 2011 14:22:32 +0000 Subject: [PATCH 157/463] * i2psnark: Fix maggot links, and magnet links with trailing parameters (thx user) --- .../java/src/org/klomp/snark/web/I2PSnarkServlet.java | 4 ++-- history.txt | 3 +++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 9bbfec8fe..c504c7d75 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -1409,13 +1409,13 @@ public class I2PSnarkServlet extends Default { ihash = url.substring(MAGNET.length()).trim(); int amp = ihash.indexOf('&'); if (amp >= 0) - ihash = url.substring(0, amp); + ihash = ihash.substring(0, amp); name = "Magnet " + ihash; } else if (url.startsWith(MAGGOT)) { ihash = url.substring(MAGGOT.length()).trim(); int col = ihash.indexOf(':'); if (col >= 0) - ihash = url.substring(0, col); + ihash = ihash.substring(0, col); name = "Maggot " + ihash; } else { return; diff --git a/history.txt b/history.txt index b501b483c..4a050aee4 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,6 @@ +2011-02-06 zzz + * i2psnark: Fix maggot links, and magnet links with trailing parameters (thx user) + 2011-02-05 zzz * .mtn-ignore: New, to make it harder to check in stuff you shouldn't * BOB: Drop checked-in build dir diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 0725033fa..f6e6df3a5 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 = 3; + public final static long BUILD = 4; /** for example "-test" */ public final static String EXTRA = ""; From 9bf90c54e100a477b024dd74a5468aee92afe690 Mon Sep 17 00:00:00 2001 From: dev <dev@welterde.de> Date: Sun, 6 Feb 2011 15:21:55 +0000 Subject: [PATCH 158/463] removed broken duplicated test --- core/java/test/net/i2p/crypto/SHA1Test.java | 192 -------------------- 1 file changed, 192 deletions(-) delete mode 100644 core/java/test/net/i2p/crypto/SHA1Test.java diff --git a/core/java/test/net/i2p/crypto/SHA1Test.java b/core/java/test/net/i2p/crypto/SHA1Test.java deleted file mode 100644 index 2c532c5cd..000000000 --- a/core/java/test/net/i2p/crypto/SHA1Test.java +++ /dev/null @@ -1,192 +0,0 @@ -package net.i2p.crypto; -/* @(#)SHA1Test.java 1.10 2004-04-24 - * This file was freely contributed to the LimeWire project and is covered - * by its existing GPL licence, but it may be used individually as a public - * domain implementation of a published algorithm (see below for references). - * It was also freely contributed to the Bitzi public domain sources. - * @author Philippe Verdy - */ - -/* Sun may wish to change the following package name, if integrating this - * class in the Sun JCE Security Provider for Java 1.5 (code-named Tiger). - */ -//package com.bitzi.util; - -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; - -public class SHA1Test { - - private static final SHA1 hash = new SHA1(); - - public static void main(String args[]) { -// http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf - System.out.println("****************************************"); - System.out.println("* Basic FIPS PUB 180-1 test vectors... *"); - System.out.println("****************************************"); - tst(1, 1, - "abc", - "A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D"); - tst(1, 2, - "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", - "84983E44 1C3BD26e BAAE4AA1 F95129E5 E54670F1"); - tst(1, 3, /* one million bytes */ - 1000000, "a", - "34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F"); - System.out.println(); - -// http://csrc.ncsl.nist.gov/cryptval/shs/SHAVS.pdf - System.out.println("********************************************************"); - System.out.println("* SHSV Examples of the selected short messages test... *"); - System.out.println("********************************************************"); - tst(2, 2, new byte[] {/* 8 bits, i.e. 1 byte */ - (byte)0x5e}, - "5e6f80a3 4a9798ca fc6a5db9 6cc57ba4 c4db59c2"); - tst(2, 4, new byte[] {/* 128 bits, i.e. 16 bytes */ - (byte)0x9a,(byte)0x7d,(byte)0xfd,(byte)0xf1,(byte)0xec,(byte)0xea,(byte)0xd0,(byte)0x6e, - (byte)0xd6,(byte)0x46,(byte)0xaa,(byte)0x55,(byte)0xfe,(byte)0x75,(byte)0x71,(byte)0x46}, - "82abff66 05dbe1c1 7def12a3 94fa22a8 2b544a35"); - System.out.println(); - - System.out.println("*******************************************************"); - System.out.println("* SHSV Examples of the selected long messages test... *"); - System.out.println("*******************************************************"); - tst(3, 2, new byte[] {/* 1304 bits, i.e. 163 bytes */ - (byte)0xf7,(byte)0x8f,(byte)0x92,(byte)0x14,(byte)0x1b,(byte)0xcd,(byte)0x17,(byte)0x0a, - (byte)0xe8,(byte)0x9b,(byte)0x4f,(byte)0xba,(byte)0x15,(byte)0xa1,(byte)0xd5,(byte)0x9f, - (byte)0x3f,(byte)0xd8,(byte)0x4d,(byte)0x22,(byte)0x3c,(byte)0x92,(byte)0x51,(byte)0xbd, - (byte)0xac,(byte)0xbb,(byte)0xae,(byte)0x61,(byte)0xd0,(byte)0x5e,(byte)0xd1,(byte)0x15, - (byte)0xa0,(byte)0x6a,(byte)0x7c,(byte)0xe1,(byte)0x17,(byte)0xb7,(byte)0xbe,(byte)0xea, - (byte)0xd2,(byte)0x44,(byte)0x21,(byte)0xde,(byte)0xd9,(byte)0xc3,(byte)0x25,(byte)0x92, - (byte)0xbd,(byte)0x57,(byte)0xed,(byte)0xea,(byte)0xe3,(byte)0x9c,(byte)0x39,(byte)0xfa, - (byte)0x1f,(byte)0xe8,(byte)0x94,(byte)0x6a,(byte)0x84,(byte)0xd0,(byte)0xcf,(byte)0x1f, - (byte)0x7b,(byte)0xee,(byte)0xad,(byte)0x17,(byte)0x13,(byte)0xe2,(byte)0xe0,(byte)0x95, - (byte)0x98,(byte)0x97,(byte)0x34,(byte)0x7f,(byte)0x67,(byte)0xc8,(byte)0x0b,(byte)0x04, - (byte)0x00,(byte)0xc2,(byte)0x09,(byte)0x81,(byte)0x5d,(byte)0x6b,(byte)0x10,(byte)0xa6, - (byte)0x83,(byte)0x83,(byte)0x6f,(byte)0xd5,(byte)0x56,(byte)0x2a,(byte)0x56,(byte)0xca, - (byte)0xb1,(byte)0xa2,(byte)0x8e,(byte)0x81,(byte)0xb6,(byte)0x57,(byte)0x66,(byte)0x54, - (byte)0x63,(byte)0x1c,(byte)0xf1,(byte)0x65,(byte)0x66,(byte)0xb8,(byte)0x6e,(byte)0x3b, - (byte)0x33,(byte)0xa1,(byte)0x08,(byte)0xb0,(byte)0x53,(byte)0x07,(byte)0xc0,(byte)0x0a, - (byte)0xff,(byte)0x14,(byte)0xa7,(byte)0x68,(byte)0xed,(byte)0x73,(byte)0x50,(byte)0x60, - (byte)0x6a,(byte)0x0f,(byte)0x85,(byte)0xe6,(byte)0xa9,(byte)0x1d,(byte)0x39,(byte)0x6f, - (byte)0x5b,(byte)0x5c,(byte)0xbe,(byte)0x57,(byte)0x7f,(byte)0x9b,(byte)0x38,(byte)0x80, - (byte)0x7c,(byte)0x7d,(byte)0x52,(byte)0x3d,(byte)0x6d,(byte)0x79,(byte)0x2f,(byte)0x6e, - (byte)0xbc,(byte)0x24,(byte)0xa4,(byte)0xec,(byte)0xf2,(byte)0xb3,(byte)0xa4,(byte)0x27, - (byte)0xcd,(byte)0xbb,(byte)0xfb}, - "cb0082c8 f197d260 991ba6a4 60e76e20 2bad27b3"); - System.out.println(); - -// See also http://csrc.ncsl.nist.gov/cryptval/shs/sha1-vectors.zip - - { - final int RETRIES = 10; - final int ITERATIONS = 2000; - final int BLOCKSIZE = 65536; - byte[] input = new byte[BLOCKSIZE]; - for (int i = BLOCKSIZE; --i >= 0; ) - input[i] = (byte)i; - long best = 0; - for (int i = 0; i < 1000; i++) // training for stable measure - System.currentTimeMillis(); - - for (int retry = 0; retry < RETRIES; retry++) { - long t0 = System.currentTimeMillis(); - for (int i = ITERATIONS; --i >= 0; ); - long t1 = System.currentTimeMillis(); - for (int i = ITERATIONS; --i >= 0; ) - hash.engineUpdate(input, 0, BLOCKSIZE); - long t2 = System.currentTimeMillis(); - long time = (t2 - t1) - (t1 - t0); - if (retry == 0 || time < best) - best = time; - } - hash.engineReset(); - double rate = 1000.0 * ITERATIONS * BLOCKSIZE / best; - System.out.println("Our rate = " + - (float)(rate * 8) + " bits/s = " + - (float)(rate / (1024 * 1024)) + " Megabytes/s"); - // Java 1.5 beta-b32c, on Athlon XP 1800+: - // with java -client: 48.21 Megabytes/s. - // with java -server: 68.23 Megabytes/s. - - try { - MessageDigest md = MessageDigest.getInstance("SHA"); - for (int retry = 0; retry < RETRIES; retry++) { - long t0 = System.currentTimeMillis(); - for (int i = ITERATIONS; --i >= 0; ); - long t1 = System.currentTimeMillis(); - for (int i = ITERATIONS; --i >= 0; ) - md.update(input, 0, BLOCKSIZE); - long t2 = System.currentTimeMillis(); - long time = (t2 - t1) - (t1 - t0); - if (retry == 0 || time < best) - best = time; - } - md.reset(); - rate = 1000.0 * ITERATIONS * BLOCKSIZE / best; - System.out.println("JCE rate = " + - (float)(rate * 8) + " bits/s = " + - (float)(rate / (1024 * 1024)) + " Megabytes/s"); - } catch (NoSuchAlgorithmException nsae) { - System.out.println("No SHA algorithm in local JCE Security Providers"); - } - // Java 1.5 beta-b32c, on Athlon XP 1800+: - // with java -client: 23.20 Megabytes/s. - // with java -server: 45.72 Megabytes/s. - } - } - - private static final boolean tst(final int set, final int vector, - final String source, - final String expect) { - byte[] input = new byte[source.length()]; - for (int i = 0; i < input.length; i++) - input[i] = (byte)source.charAt(i); - return tst(set, vector, input, expect); - } - - private static final boolean tst(final int set, final int vector, - final byte[] input, - final String expect) { - System.out.print("Set " + set + ", vector# " + vector + ": "); - hash.engineUpdate(input, 0, input.length); - return tstResult(expect); - } - - private static final boolean tst(final int set, final int vector, - final int times, final String source, - final String expect) { - byte[] input = new byte[source.length()]; - for (int i = 0; i < input.length; i++) - input[i] = (byte)source.charAt(i); - System.out.print("Set " + set + ", vector# " + vector + ": "); - for (int i = 0; i < times; i++) - hash.engineUpdate(input, 0, input.length); - return tstResult(expect); - } - - private static final boolean tstResult(String expect) { - final String result = toHex(hash.engineDigest()); - expect = expect.toUpperCase(); - if (!expect.equals(result)) { - System.out.println("**************** WRONG ***************"); - System.out.println(" expect: " + expect); - System.out.println(" result: " + result); - return false; - } - System.out.println("OK"); - return true; - } - - private static final String toHex(final byte[] bytes) { - StringBuilder buf = new StringBuilder(bytes.length * 2); - for (int i = 0; i < bytes.length; i++) { - if ((i & 3) == 0 && i != 0) - buf.append(' '); - buf.append(HEX.charAt((bytes[i] >> 4) & 0xF)) - .append(HEX.charAt( bytes[i] & 0xF)); - } - return buf.toString(); - } - private static final String HEX = "0123456789ABCDEF"; -} From 6c8cacfaa21709c8fdbb1231595820a9e8935fbc Mon Sep 17 00:00:00 2001 From: dev <dev@welterde.de> Date: Sun, 6 Feb 2011 17:09:52 +0000 Subject: [PATCH 159/463] updated some core tests to cope with the recent datastructure changes --- core/java/test/net/i2p/data/PrivateKeyTest.java | 4 +++- core/java/test/net/i2p/data/PublicKeyTest.java | 4 +++- core/java/test/net/i2p/data/SigningPrivateKeyTest.java | 4 +++- core/java/test/net/i2p/data/SigningPublicKeyTest.java | 5 ++++- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/core/java/test/net/i2p/data/PrivateKeyTest.java b/core/java/test/net/i2p/data/PrivateKeyTest.java index cb3c3124d..9d25fb449 100644 --- a/core/java/test/net/i2p/data/PrivateKeyTest.java +++ b/core/java/test/net/i2p/data/PrivateKeyTest.java @@ -66,13 +66,15 @@ public class PrivateKeyTest extends StructureTest { byte data[] = new byte[56]; for (int i = 0; i < data.length; i++) data[i] = (byte)(i); - privateKey.setData(data); boolean error = false; try{ + privateKey.setData(data); privateKey.writeBytes(new ByteArrayOutputStream()); }catch(DataFormatException dfe){ error = true; + }catch(IllegalArgumentException exc) { + error = true; } assertTrue(error); } diff --git a/core/java/test/net/i2p/data/PublicKeyTest.java b/core/java/test/net/i2p/data/PublicKeyTest.java index 8ca6282cc..8fed332bd 100644 --- a/core/java/test/net/i2p/data/PublicKeyTest.java +++ b/core/java/test/net/i2p/data/PublicKeyTest.java @@ -66,13 +66,15 @@ public class PublicKeyTest extends StructureTest { byte data[] = new byte[56]; for (int i = 0; i < data.length; i++) data[i] = (byte)(i); - publicKey.setData(data); boolean error = false; try{ + publicKey.setData(data); publicKey.writeBytes(new ByteArrayOutputStream()); }catch(DataFormatException dfe){ error = true; + }catch(IllegalArgumentException exc) { + error = true; } assertTrue(error); } diff --git a/core/java/test/net/i2p/data/SigningPrivateKeyTest.java b/core/java/test/net/i2p/data/SigningPrivateKeyTest.java index bafc3bdac..baa038812 100644 --- a/core/java/test/net/i2p/data/SigningPrivateKeyTest.java +++ b/core/java/test/net/i2p/data/SigningPrivateKeyTest.java @@ -66,13 +66,15 @@ public class SigningPrivateKeyTest extends StructureTest { byte data[] = new byte[56]; for (int i = 0; i < data.length; i++) data[i] = (byte)(i); - signingPrivateKey.setData(data); boolean error = false; try{ + signingPrivateKey.setData(data); signingPrivateKey.writeBytes(new ByteArrayOutputStream()); }catch(DataFormatException dfe){ error = true; + }catch(IllegalArgumentException exc) { + error = true; } assertTrue(error); } diff --git a/core/java/test/net/i2p/data/SigningPublicKeyTest.java b/core/java/test/net/i2p/data/SigningPublicKeyTest.java index f976e53da..b97099e6e 100644 --- a/core/java/test/net/i2p/data/SigningPublicKeyTest.java +++ b/core/java/test/net/i2p/data/SigningPublicKeyTest.java @@ -66,14 +66,17 @@ public class SigningPublicKeyTest extends StructureTest { byte data[] = new byte[56]; for (int i = 0; i < data.length; i++) data[i] = (byte)(i); - publicKey.setData(data); boolean error = false; try{ + publicKey.setData(data); publicKey.writeBytes(new ByteArrayOutputStream()); }catch(DataFormatException dfe){ error = true; + }catch(IllegalArgumentException exc) { + error = true; } + assertTrue(error); } From dcacfb281ace683f08fa385abbaddb7128a9cd86 Mon Sep 17 00:00:00 2001 From: dev <dev@welterde.de> Date: Mon, 7 Feb 2011 18:14:10 +0000 Subject: [PATCH 160/463] increase maxmemory when running junit tests, directly write reports to reports directory instead of moving them later --- core/java/build.xml | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/core/java/build.xml b/core/java/build.xml index 701be6bc5..86e0039ac 100644 --- a/core/java/build.xml +++ b/core/java/build.xml @@ -53,7 +53,15 @@ </cobertura-instrument> </target> <target name="test" depends="clean, compileTest, prepareTest"> - <junit printsummary="on" fork="yes"> + <delete> + <fileset dir="../../reports/core/junit"> + <include name="TEST-*.xml"/> + </fileset> + </delete> + <mkdir dir="../../reports/" /> + <mkdir dir="../../reports/core/" /> + <mkdir dir="../../reports/core/junit/" /> + <junit printsummary="on" fork="yes" maxmemory="384m"> <sysproperty key="net.sourceforge.cobertura.datafile" file="./cobertura.ser" /> <classpath> <pathelement path="${classpath}" /> @@ -62,7 +70,7 @@ <pathelement location="../../installer/lib/jbigi/jbigi.jar" /> <pathelement location="${with.cobertura}" /> </classpath> - <batchtest> + <batchtest todir="../../reports/core/junit/"> <fileset dir="./test/"> <include name="**/*Test.java" /> <exclude name="**/ElGamalAESEngineTest.java" /> @@ -71,24 +79,6 @@ </batchtest> <formatter type="xml"/> </junit> - <mkdir dir="../../reports/" /> - <mkdir dir="../../reports/core/" /> - <mkdir dir="../../reports/core/junit/" /> - <delete> - <fileset dir="../../reports/core/junit"> - <include name="TEST-*.xml"/> - </fileset> - </delete> - <copy todir="../../reports/core/junit"> - <fileset dir="."> - <include name="TEST-*.xml"/> - </fileset> - </copy> - <delete> - <fileset dir="."> - <include name="TEST-*.xml"/> - </fileset> - </delete> </target> <target name="cobertura" depends="test" if="with.cobertura"> <mkdir dir="../../reports/core/cobertura" /> From 33c5e14f909f22ca3772c8111ef26c928ec55dde Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Mon, 7 Feb 2011 19:07:40 +0000 Subject: [PATCH 161/463] fix SessionEncryptionTest --- .../net/i2p/crypto/SessionEncryptionTest.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/core/java/test/net/i2p/crypto/SessionEncryptionTest.java b/core/java/test/net/i2p/crypto/SessionEncryptionTest.java index c6ec05326..0641db6ab 100644 --- a/core/java/test/net/i2p/crypto/SessionEncryptionTest.java +++ b/core/java/test/net/i2p/crypto/SessionEncryptionTest.java @@ -102,7 +102,8 @@ public class SessionEncryptionTest extends TestCase{ - _context.sessionKeyManager().tagsDelivered(pubKey, curKey, firstTags); + TagSetHandle tsh = _context.sessionKeyManager().tagsDelivered(pubKey, curKey, firstTags); + _context.sessionKeyManager().tagsAcked(pubKey, curKey, tsh); curKey = _context.sessionKeyManager().getCurrentKey(pubKey); SessionTag curTag = _context.sessionKeyManager().consumeNextAvailableTag(pubKey, curKey); @@ -130,7 +131,8 @@ public class SessionEncryptionTest extends TestCase{ - _context.sessionKeyManager().tagsDelivered(pubKey, curKey, secondTags); + tsh = _context.sessionKeyManager().tagsDelivered(pubKey, curKey, secondTags); + _context.sessionKeyManager().tagsAcked(pubKey, curKey, tsh); curKey = _context.sessionKeyManager().getCurrentKey(pubKey); curTag = _context.sessionKeyManager().consumeNextAvailableTag(pubKey, curKey); @@ -199,7 +201,8 @@ public class SessionEncryptionTest extends TestCase{ - _context.sessionKeyManager().tagsDelivered(pubKey, curKey, firstTags); + TagSetHandle tsh = _context.sessionKeyManager().tagsDelivered(pubKey, curKey, firstTags); + _context.sessionKeyManager().tagsAcked(pubKey, curKey, tsh); curKey = _context.sessionKeyManager().getCurrentKey(pubKey); SessionTag curTag = _context.sessionKeyManager().consumeNextAvailableTag(pubKey, curKey); @@ -226,7 +229,8 @@ public class SessionEncryptionTest extends TestCase{ - _context.sessionKeyManager().tagsDelivered(pubKey, nextKey, secondTags); // note nextKey not curKey + tsh = _context.sessionKeyManager().tagsDelivered(pubKey, nextKey, secondTags); // note nextKey not curKey + _context.sessionKeyManager().tagsAcked(pubKey, nextKey, tsh); curKey = _context.sessionKeyManager().getCurrentKey(pubKey); curTag = _context.sessionKeyManager().consumeNextAvailableTag(pubKey, curKey); @@ -288,9 +292,11 @@ public class SessionEncryptionTest extends TestCase{ if ( (tags != null) && (tags.size() > 0) ) { if (nextKey == null) { - _context.sessionKeyManager().tagsDelivered(pubKey, curKey, tags); + TagSetHandle tsh = _context.sessionKeyManager().tagsDelivered(pubKey, curKey, tags); + _context.sessionKeyManager().tagsAcked(pubKey, curKey, tsh); } else { - _context.sessionKeyManager().tagsDelivered(pubKey, nextKey, tags); + TagSetHandle tsh = _context.sessionKeyManager().tagsDelivered(pubKey, nextKey, tags); + _context.sessionKeyManager().tagsAcked(pubKey, nextKey, tsh); } } } From 86e663b2b48caf9af9b7d1b861c6e7afb3ca865d Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Mon, 7 Feb 2011 19:08:56 +0000 Subject: [PATCH 162/463] * i2ptunnel: Generate error message when i2ptunnel.config save fails (ticket #404) --- .../i2p/i2ptunnel/TunnelControllerGroup.java | 32 ++++--------------- .../src/net/i2p/i2ptunnel/web/IndexBean.java | 27 ++++++++++------ 2 files changed, 24 insertions(+), 35 deletions(-) diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelControllerGroup.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelControllerGroup.java index d021131ed..f1e9f7108 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelControllerGroup.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelControllerGroup.java @@ -1,18 +1,15 @@ package net.i2p.i2ptunnel; import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; -import java.util.TreeMap; import net.i2p.I2PAppContext; import net.i2p.client.I2PSession; @@ -20,7 +17,7 @@ import net.i2p.client.I2PSessionException; import net.i2p.data.DataHelper; import net.i2p.util.I2PAppThread; import net.i2p.util.Log; -import net.i2p.util.SecureFileOutputStream; +import net.i2p.util.OrderedProperties; /** * Coordinate a set of tunnels within the JVM, loading and storing their config @@ -223,14 +220,15 @@ public class TunnelControllerGroup { * file * */ - public void saveConfig() { + public void saveConfig() throws IOException { saveConfig(_configFile); } + /** * Save the configuration of all known tunnels to the given file * */ - public void saveConfig(String configFile) { + public void saveConfig(String configFile) throws IOException { _configFile = configFile; File cfgFile = new File(configFile); if (!cfgFile.isAbsolute()) @@ -239,32 +237,14 @@ public class TunnelControllerGroup { if ( (parent != null) && (!parent.exists()) ) parent.mkdirs(); - - TreeMap map = new TreeMap(); + Properties map = new OrderedProperties(); for (int i = 0; i < _controllers.size(); i++) { TunnelController controller = _controllers.get(i); Properties cur = controller.getConfig("tunnel." + i + "."); map.putAll(cur); } - StringBuilder buf = new StringBuilder(1024); - for (Iterator iter = map.keySet().iterator(); iter.hasNext(); ) { - String key = (String)iter.next(); - String val = (String)map.get(key); - buf.append(key).append('=').append(val).append('\n'); - } - - FileOutputStream fos = null; - try { - fos = new SecureFileOutputStream(cfgFile); - fos.write(buf.toString().getBytes("UTF-8")); - if (_log.shouldLog(Log.INFO)) - _log.info("Config written to " + cfgFile.getPath()); - } catch (IOException ioe) { - _log.error("Error writing out the config"); - } finally { - if (fos != null) try { fos.close(); } catch (IOException ioe) {} - } + DataHelper.storeProps(map, cfgFile); } /** 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 978707889..eb36a64bc 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java @@ -8,7 +8,7 @@ package net.i2p.i2ptunnel.web; * */ -import java.util.concurrent.ConcurrentHashMap; +import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; @@ -17,6 +17,7 @@ import java.util.Map; import java.util.Properties; import java.util.Set; import java.util.StringTokenizer; +import java.util.concurrent.ConcurrentHashMap; import net.i2p.I2PAppContext; import net.i2p.data.Base32; @@ -299,14 +300,22 @@ public class IndexBean { } } - List msgs = doSave(); - msgs.add(0, "Changes saved"); + List<String> msgs = doSave(); return getMessages(msgs); } - private List doSave() { - _group.saveConfig(); - return _group.clearAllMessages(); + + private List<String> doSave() { + List<String> rv = _group.clearAllMessages(); + try { + _group.saveConfig(); + rv.add(0, _("Configuration changes saved")); + } catch (IOException ioe) { + _log.error("Failed to save config file", ioe); + rv.add(0, _("Failed to save configuration") + ": " + ioe.toString()); + } + return rv; } + private String deleteTunnel() { if (!_removeConfirmed) return "Please confirm removal"; @@ -1095,16 +1104,16 @@ public class IndexBean { return null; } - private static String getMessages(List msgs) { + private static String getMessages(List<String> msgs) { StringBuilder buf = new StringBuilder(128); getMessages(msgs, buf); return buf.toString(); } - private static void getMessages(List msgs, StringBuilder buf) { + private static void getMessages(List<String> msgs, StringBuilder buf) { if (msgs == null) return; for (int i = 0; i < msgs.size(); i++) { - buf.append((String)msgs.get(i)).append("\n"); + buf.append(msgs.get(i)).append("\n"); } } From 6c1f5dd5a97fd31f2b8f950d1307056df3b36bda Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Mon, 7 Feb 2011 19:27:55 +0000 Subject: [PATCH 163/463] * i2psnark: - Check for dup magnet torrent when adding torrent file - Add exotrack.i2p (ticket #403) - Disable spellcheck in textarea --- .../java/src/org/klomp/snark/SnarkManager.java | 17 +++++++++++++++-- .../org/klomp/snark/web/I2PSnarkServlet.java | 5 +++-- history.txt | 8 ++++++++ installer/resources/hosts.txt | 1 + .../java/src/net/i2p/router/RouterVersion.java | 2 +- 5 files changed, 28 insertions(+), 5 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index 3f9f90edf..d59055688 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -525,13 +525,13 @@ public class SnarkManager implements Snark.CompleteListener { * Caller must verify this torrent is not already added. * @throws RuntimeException via Snark.fatal() */ - public void addTorrent(String filename) { addTorrent(filename, false); } + private void addTorrent(String filename) { addTorrent(filename, false); } /** * Caller must verify this torrent is not already added. * @throws RuntimeException via Snark.fatal() */ - public void addTorrent(String filename, boolean dontAutoStart) { + private void addTorrent(String filename, boolean dontAutoStart) { if ((!dontAutoStart) && !_util.connected()) { addMessage(_("Connecting to I2P")); boolean ok = _util.connect(); @@ -578,6 +578,15 @@ public class SnarkManager implements Snark.CompleteListener { fis = null; } catch (IOException e) {} + // This test may be a duplicate, but not if we were called + // from the DirMonitor, which only checks for dup torrent file names. + Snark snark = getTorrentByInfoHash(info.getInfoHash()); + if (snark != null) { + // TODO - if the existing one is a magnet, delete it and add the metainfo instead? + addMessage(_("Torrent with this info hash is already running: {0}", snark.getBaseName())); + return; + } + if (!TrackerClient.isValidAnnounce(info.getAnnounce())) { if (_util.shouldUseOpenTrackers() && _util.getOpenTrackers() != null) { addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); @@ -1180,6 +1189,9 @@ public class SnarkManager implements Snark.CompleteListener { } } + /** + * caller must synchronize on _snarks + */ private void monitorTorrents(File dir) { String fileNames[] = dir.list(TorrentFilenameFilter.instance()); List<String> foundNames = new ArrayList(0); @@ -1261,6 +1273,7 @@ public class SnarkManager implements Snark.CompleteListener { "Postman", "http://tracker2.postman.i2p/announce.php=http://tracker2.postman.i2p/" ,"Welterde", "http://tracker.welterde.i2p/a=http://tracker.welterde.i2p/stats?mode=top5" // , "CRSTRACK", "http://b4G9sCdtfvccMAXh~SaZrPqVQNyGQbhbYMbw6supq2XGzbjU4NcOmjFI0vxQ8w1L05twmkOvg5QERcX6Mi8NQrWnR0stLExu2LucUXg1aYjnggxIR8TIOGygZVIMV3STKH4UQXD--wz0BUrqaLxPhrm2Eh9Hwc8TdB6Na4ShQUq5Xm8D4elzNUVdpM~RtChEyJWuQvoGAHY3ppX-EJJLkiSr1t77neS4Lc-KofMVmgI9a2tSSpNAagBiNI6Ak9L1T0F9uxeDfEG9bBSQPNMOSUbAoEcNxtt7xOW~cNOAyMyGydwPMnrQ5kIYPY8Pd3XudEko970vE0D6gO19yoBMJpKx6Dh50DGgybLQ9CpRaynh2zPULTHxm8rneOGRcQo8D3mE7FQ92m54~SvfjXjD2TwAVGI~ae~n9HDxt8uxOecAAvjjJ3TD4XM63Q9TmB38RmGNzNLDBQMEmJFpqQU8YeuhnS54IVdUoVQFqui5SfDeLXlSkh4vYoMU66pvBfWbAAAA.i2p/tracker/announce.php=http://crstrack.i2p/tracker/" + ,"Exotrack", "http://blbgywsjubw3d2zih2giokakhe3o2cko7jtte4risb3hohbcoyva.b32.i2p/announce.php=http://exotrack.i2p/" }; /** comma delimited list of name=announceURL=baseURL for the trackers to be displayed */ diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index c504c7d75..b8f986fc3 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -1381,7 +1381,7 @@ public class I2PSnarkServlet extends Default { } out.write("<tr><td>"); out.write(_("I2CP options")); - out.write(": <td><textarea name=\"i2cpOpts\" cols=\"60\" rows=\"1\" wrap=\"off\" >" + out.write(": <td><textarea name=\"i2cpOpts\" cols=\"60\" rows=\"1\" wrap=\"off\" spellcheck=\"false\" >" + opts.toString() + "</textarea><br>\n"); out.write("<tr><td> <td><input type=\"submit\" value=\""); @@ -1833,7 +1833,8 @@ public class I2PSnarkServlet extends Default { icon = "html"; else if (mime.equals("text/plain") || plc.endsWith(".nfo")) icon = "page"; - else if (mime.equals("application/java-archive") || plc.endsWith(".war")) + else if (mime.equals("application/java-archive") || plc.endsWith(".war") || + plc.endsWith(".deb")) icon = "package"; else if (plc.endsWith(".xpi2p")) icon = "plugin"; diff --git a/history.txt b/history.txt index 4a050aee4..19395eac1 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,11 @@ +2011-02-07 zzz + * i2psnark: + - Check for dup magnet torrent when adding torrent file + - Add exotrack.i2p (ticket #403) + - Disable spellcheck in textarea + * i2ptunnel: Generate error message when i2ptunnel.config save fails + (ticket #404) + 2011-02-06 zzz * i2psnark: Fix maggot links, and magnet links with trailing parameters (thx user) diff --git a/installer/resources/hosts.txt b/installer/resources/hosts.txt index 27f06ee62..2f104a901 100644 --- a/installer/resources/hosts.txt +++ b/installer/resources/hosts.txt @@ -325,3 +325,4 @@ i2plugins.i2p=7oQz2gHOxFXxXTI6uGMk1Giv9UmviBhbubWKDjDqW1Rxvmm55tvC1znaAAZoV0X6YP i2pbote.i2p=~taSfBfeiMM5fW~qwUGZr4kAXmSoentWVjlQhTCKWhVj04KV34tLguNQEpHb1cA2eIwlkTpY0TPYUVKt866jLgQEteuIImmNuStVgm6DWh4baPqI22oSNC7O-4EW6PJy1tT9nr1NXu5p4w2jY4P4Css76xthaf6Z5YUOWAIwnMlptyac-qFHmjmU3CFqvKQgBnA4NB0ts7Y2~TcvciANllfsjfsMgFdg--FYpKiwC8bSsTHKJ3~oGb6osMqql~Vzr6kvIzfLnvabbuW8wjG2JvATBuJ3IY-BN59KdT84nc00SuMgmt1ywVvHOl0~n8Cjr1hASYiJ2FTxEQRbQ9WRaxbnk5BO~yeiedCsjw7ImsSES3GzcU5zVVx9p3bgx7P~X0h52VripL6bovj9YJznN3qw0eRCJGjY-du8azFNV6~6ZZ6ss14RNC~HKIzlhR7F5kF~4H2wfC1EdNlmm1cI0iYRdEdwSSVX47LngHyK-ZQbVZOGeEeCU8J8Vhk~8WdLAAAA planet.i2p=W0omtMApOdlTkgJoct08QnzDkeb~xc60df5Cx3k3qqOFmyEkRB65NdpSdvldI5STmXmXlZe68f8Hu1dfBMmKvfpBFMpP-mRVYuHbEa4N1dRkp3AOswZFO51lSC~MVPMZKGHAv0cfv5WFaJ9nfuaR7iYYWJF11xotoPTMbJdB-I3XPC8rxHI-73ATlOD4cU9oZ6BYcBE0dun9zw4IHBcRpnFRx~s-TkevNfPnBqujB-NNgA8a5s~QUj0h3FwwUWsNB8f1Uwy~DwoQh7pMp6dsZ3umEyBn2HaXZasSmbzB30qkQRs9vrAtIFdIzCQ~8gI2cHdHEPgExUQX~xlM8QZEgnLXSfS93asWPdpitv~KT7bO-35BgTBdCozHTCcvys6bYJ24UnkFVBE0D2L0t98neelWkJSaEU0QzxdRphoCZY8OABQIaS4qw6PEFD1Un1vxNCh~TDFWcYBZ3Rqsc~ISW0wF7oOS6-DPT3q5O8cGLc8iAEdRchrU9XyAHAKVlEZxAAAA outproxy2.h2ik.i2p=zjXqVu1pnPpsR0DnqiIlAidy8GSLznEupTrb~vUg-NELU3~Gmbqc-soJlYu69VyQdZxVGNZ1PsgacjJwxtd8otZ~lgqsJV2aDJdzDIClEj9hYM4hV4ClHdZQnEOEHj1fc5TK7n31o3jr94kz6ZtdG9eL7F~YIE7EcADJ7ECg-wz05~xj8NK4gH67mMSCHgX92RTQRTGFtxxrPkVRLD8GE069wGmRpV9xt3wZqn12ijdo1HjNMbqxZfSbulscm0M2~qy4fwzF1OYWSg5-~NY02iNygwKYhG2CdgDyFALVGvHfJ-wzZ~pKj62-c8HVg1qHE6B1bKKO5GID03JoRAlEeZFkrqqmUQyQvzxhlUJlcnaBOaCoIm9L8999cHQj7-JHJTTvJ2TltvSbj1TcyoIFEdSyW22TJGRMoopezPoCERhemy79cb~SvsK46m4J7hBDjQl7Rgzp-uC5aSMEN3PU2g1w5A3DWxodUy2Zzg~moJaKbeS8Vf~mLVEt63djlFMxAAAA +exotrack.i2p=Ly1vs4plBuGisqlMiQOjhVkXFZPBMy9joSCrus~tuLXBRXDrPYG9WXJMzY4gb3LiW0VVawv0kLgikX8eeeruXmgKwQW5zB9UPSP0CQnXTRelE3Jn7lev~re4woHvgS-EGBwWikxqXF3f7W8-LhieI0JhBZxItiWhJJME07oncW0kgS8UIMl0wqN2Y-p0sryFCN056TfGNTXigfxrSLqKnpi6a2OyEkF62qvRID3qXzRque0vKQjqvavq2mqxjFrSgLUoyKod5h9Px6qK08gtoAyDKMLPk7fPgReYKj6awiOxRSGfsMpZD3~ZuV0Sts2XtCau3S3myYMIDe5oKziPtZRIej4KBDxT0YYIw5v4RoqzqF88gNgHDfkPZ25JKTOt5xGcPTG8kwYrtx39PX6NrJmv-I~LUz6sZZlIW24k1qbO7zBxZ6mazldQY1~FJGXzn5MNzsxp44iOZdMDJJh18N0Psthk2hqlQOS4L0Ss1Odm1czhBxf1Y~j3L-QsMttcAAAA diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index f6e6df3a5..4e28a2c8d 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 = 4; + public final static long BUILD = 5; /** for example "-test" */ public final static String EXTRA = ""; From 3f3385fdde9e6b3f4142288d9f82ec46c9edfb5b Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Mon, 7 Feb 2011 19:32:26 +0000 Subject: [PATCH 164/463] message tweak --- .../java/src/org/klomp/snark/SnarkManager.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index d59055688..e7803ded3 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -589,11 +589,13 @@ public class SnarkManager implements Snark.CompleteListener { if (!TrackerClient.isValidAnnounce(info.getAnnounce())) { if (_util.shouldUseOpenTrackers() && _util.getOpenTrackers() != null) { - addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); - } else if (_util.getDHT() != null) { - addMessage(_("Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will announce to DHT only.", info.getName())); + //addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); + addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers only.", info.getName())); + //} else if (_util.getDHT() != null) { + // addMessage(_("Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will announce to DHT only.", info.getName())); } else { - addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); + //addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); + addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers before starting the torrent.", info.getName())); dontAutoStart = true; } } From c2871e151ba3d50d83c86b0bd0479495cdb95352 Mon Sep 17 00:00:00 2001 From: mathiasdm <mathiasdm@mail.i2p> Date: Wed, 9 Feb 2011 06:03:29 +0000 Subject: [PATCH 165/463] Use multimap instead of map, to allow multiple headers with the same key. --- .../i2p/i2ptunnel/I2PTunnelHTTPServer.java | 77 +++++++++++++++---- 1 file changed, 60 insertions(+), 17 deletions(-) diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java index d4efaa8ea..938a1ebcc 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java @@ -10,7 +10,11 @@ import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; import java.net.SocketException; +import java.util.ArrayList; +import java.util.HashMap; import java.util.Iterator; +import java.util.List; +import java.util.Map; import java.util.Properties; import java.util.zip.GZIPOutputStream; @@ -94,23 +98,24 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer { InputStream in = socket.getInputStream(); StringBuilder command = new StringBuilder(128); - Properties headers = readHeaders(in, command, + Map<String, List<String>> headers = readHeaders(in, command, CLIENT_SKIPHEADERS, getTunnel().getContext()); - headers.setProperty(HASH_HEADER, socket.getPeerDestination().calculateHash().toBase64()); - headers.setProperty(DEST32_HEADER, Base32.encode(socket.getPeerDestination().calculateHash().getData()) + ".b32.i2p" ); - headers.setProperty(DEST64_HEADER, socket.getPeerDestination().toBase64()); + + addEntry(headers, HASH_HEADER, socket.getPeerDestination().calculateHash().toBase64()); + addEntry(headers, DEST32_HEADER, Base32.encode(socket.getPeerDestination().calculateHash().getData()) + ".b32.i2p"); + addEntry(headers, DEST64_HEADER, socket.getPeerDestination().toBase64()); if ( (_spoofHost != null) && (_spoofHost.trim().length() > 0) ) - headers.setProperty("Host", _spoofHost); - headers.setProperty("Connection", "close"); + setEntry(headers, "Host", _spoofHost); + setEntry(headers, "Connection", "close"); // we keep the enc sent by the browser before clobbering it, since it may have // been x-i2p-gzip - String enc = headers.getProperty("Accept-encoding"); - String altEnc = headers.getProperty("X-Accept-encoding"); + String enc = getEntryOrNull(headers, "Accept-encoding"); + String altEnc = getEntryOrNull(headers, "X-Accept-encoding"); // according to rfc2616 s14.3, this *should* force identity, even if // "identity;q=1, *;q=0" didn't. - headers.setProperty("Accept-encoding", ""); + setEntry(headers, "Accept-encoding", ""); String modifiedHeader = formatHeaders(headers, command); //String modifiedHeader = getModifiedHeader(socket); @@ -234,7 +239,7 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer { //Change headers to protect server identity StringBuilder command = new StringBuilder(128); - Properties headers = readHeaders(serverin, command, + Map<String, List<String>> headers = readHeaders(serverin, command, SERVER_SKIPHEADERS, _ctx); String modifiedHeaders = formatHeaders(headers, command); compressedOut.write(modifiedHeaders.getBytes()); @@ -360,13 +365,14 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer { } } - private static String formatHeaders(Properties headers, StringBuilder command) { + private static String formatHeaders(Map<String, List<String>> headers, StringBuilder command) { StringBuilder buf = new StringBuilder(command.length() + headers.size() * 64); buf.append(command.toString().trim()).append("\r\n"); - for (Iterator iter = headers.keySet().iterator(); iter.hasNext(); ) { + for (Iterator<String> iter = headers.keySet().iterator(); iter.hasNext(); ) { String name = (String)iter.next(); - String val = headers.getProperty(name); - buf.append(name.trim()).append(": ").append(val.trim()).append("\r\n"); + for(String val: headers.get(name)) { + buf.append(name.trim()).append(": ").append(val.trim()).append("\r\n"); + } } buf.append("\r\n"); return buf.toString(); @@ -374,9 +380,46 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer { /** ridiculously long, just to prevent OOM DOS @since 0.7.13 */ private static final int MAX_HEADERS = 60; + + /** + * Add an entry to the multimap. + */ + private static void addEntry(Map<String, List<String>> headers, String key, String value) { + List<String> entry = headers.get(key); + if(entry == null) { + headers.put(key, entry = new ArrayList<String>()); + } + entry.add(value); + } + + /** + * Remove the other matching entries and set this entry as the only one. + */ + private static void setEntry(Map<String, List<String>> headers, String key, String value) { + List<String> entry = headers.get(key); + if(entry == null) { + headers.put(key, entry = new ArrayList<String>()); + } + entry.clear(); + entry.add(value); + } + + /** + * Get the first matching entry in the multimap + * @return the first matching entry or null + */ + private static String getEntryOrNull(Map<String, List<String>> headers, String key) { + List<String> entries = headers.get(key); + if(entries == null || entries.size() < 1) { + return null; + } + else { + return entries.get(0); + } + } - private static Properties readHeaders(InputStream in, StringBuilder command, String[] skipHeaders, I2PAppContext ctx) throws IOException { - Properties headers = new Properties(); + private static Map<String, List<String>> readHeaders(InputStream in, StringBuilder command, String[] skipHeaders, I2PAppContext ctx) throws IOException { + HashMap<String, List<String>> headers = new HashMap<String, List<String>>(); StringBuilder buf = new StringBuilder(128); boolean ok = DataHelper.readLine(in, command); @@ -438,7 +481,7 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer { continue; } - headers.setProperty(name, value); + addEntry(headers, name, value); //if (_log.shouldLog(Log.DEBUG)) // _log.debug("Read the header [" + name + "] = [" + value + "]"); } From 467de344b912c7d982f02be5821f1845eb255d9d Mon Sep 17 00:00:00 2001 From: walking <walking@mail.i2p> Date: Wed, 9 Feb 2011 15:54:27 +0000 Subject: [PATCH 166/463] * fix typo in bat script * fix build script poupdate target on windows * change messages_nl.po's encoding to UTF-8 (desktopUI) * add message_zh.po for desktopUI - POs not translated yet, just updated --- apps/desktopgui/build.xml | 12 +- apps/desktopgui/locale/messages_nl.po | 13 +- apps/desktopgui/locale/messages_zh.po | 40 + apps/i2psnark/java/bundle-messages.bat | 6 +- apps/i2psnark/locale/messages_zh.po | 1913 +-- apps/i2ptunnel/java/bundle-messages.bat | 6 +- apps/i2ptunnel/locale/messages_zh.po | 511 +- apps/routerconsole/java/bundle-messages.bat | 6 +- apps/routerconsole/locale/messages_zh.po | 10892 ++++++++++-------- apps/susidns/locale/messages_zh.po | 937 +- apps/susidns/src/bundle-messages.bat | 6 +- 11 files changed, 7769 insertions(+), 6573 deletions(-) create mode 100644 apps/desktopgui/locale/messages_zh.po diff --git a/apps/desktopgui/build.xml b/apps/desktopgui/build.xml index f8de80428..e4af84393 100644 --- a/apps/desktopgui/build.xml +++ b/apps/desktopgui/build.xml @@ -45,7 +45,11 @@ <exec executable="sh" osfamily="mac" failifexecutionfails="true" > <arg value="./bundle-messages.sh" /> </exec> - + <exec executable="cmd" osfamily="windows" failifexecutionfails="true" > + <arg value="/c" /> + <!-- no leading ./ here, windoz complains about it. --> + <arg value="bundle-messages.bat" /> + </exec> <jar basedir="${build}" destfile="${dist}/${jar}"> <manifest> <attribute name="Main-Class" value="net.i2p.desktopgui.Main"/> @@ -78,6 +82,12 @@ <arg value="./bundle-messages.sh" /> <arg value="-p" /> </exec> + <exec executable="cmd" osfamily="windows" failifexecutionfails="true" > + <arg value="/c" /> + <!-- no leading ./ here, windoz complains about it. --> + <arg value="bundle-messages.bat" /> + <arg value="-p" /> + </exec> </target> <target name="dist" depends="jar" /> diff --git a/apps/desktopgui/locale/messages_nl.po b/apps/desktopgui/locale/messages_nl.po index 433eb604b..23a5c4b94 100644 --- a/apps/desktopgui/locale/messages_nl.po +++ b/apps/desktopgui/locale/messages_nl.po @@ -1,3 +1,14 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + #: src/net/i2p/desktopgui/ExternalTrayManager.java:23 msgid "Start I2P" msgstr "I2P starten" @@ -24,6 +35,6 @@ msgstr "I2P stoppen" #~ msgid "Browser not found" #~ msgstr "Browser niet gevonden" - #~ msgid "The default browser for your system was not found." #~ msgstr "De standaard webbrowser voor je systeem werd niet gevonden." + diff --git a/apps/desktopgui/locale/messages_zh.po b/apps/desktopgui/locale/messages_zh.po new file mode 100644 index 000000000..e5221b720 --- /dev/null +++ b/apps/desktopgui/locale/messages_zh.po @@ -0,0 +1,40 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:23 +msgid "Start I2P" +msgstr "启动 I2P" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 +msgid "I2P is starting!" +msgstr "正在启动 I2P !" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 +msgid "Starting" +msgstr "正在启动" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:25 +msgid "Launch I2P Browser" +msgstr "正在启动I2P浏览器" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:49 +msgid "Restart I2P" +msgstr "重启 I2P" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:67 +msgid "Stop I2P" +msgstr "停止 I2P" + +#~ msgid "Browser not found" +#~ msgstr "Browser niet gevonden" +#~ msgid "The default browser for your system was not found." +#~ msgstr "De standaard webbrowser voor je systeem werd niet gevonden." + diff --git a/apps/i2psnark/java/bundle-messages.bat b/apps/i2psnark/java/bundle-messages.bat index 90feca972..cb72cc5d1 100644 --- a/apps/i2psnark/java/bundle-messages.bat +++ b/apps/i2psnark/java/bundle-messages.bat @@ -9,9 +9,11 @@ if not exist ..\locale\*.only goto updateALL rem put a messages_xx.only(eg messages_zh.only) into locale folder rem this script will only touch the po file(eg zh) you specified, leaving other po files untact. - +echo [tip] Puting a messages_{LangCode}.only (eg messages_zh.only) +echo into locale folder will restrict the PO file update +echo process to your choosen language ONLY. for %%i in (..\locale\*.only) do set PO=%%~ni -echo [Notice] Yu choose to Ony update the choosen file: %PO%.po +echo [info] %PO%.only found, will ONLY update file : %PO%.po for %%i in (..\locale\*.po) do if not %%~ni==%PO% ren %%i %%~ni.po- call sh --login %cd%\bmsg.sh diff --git a/apps/i2psnark/locale/messages_zh.po b/apps/i2psnark/locale/messages_zh.po index b649d8c58..070ede6ad 100644 --- a/apps/i2psnark/locale/messages_zh.po +++ b/apps/i2psnark/locale/messages_zh.po @@ -1,821 +1,1092 @@ -# I2P -# Copyright (C) 2009 The I2P Project -# This file is distributed under the same license as the i2psnark package. -# To contribute translations, see http://www.i2p2.de/newdevelopers -# foo <foo@bar>, 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: I2P i2psnark\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-10-04 02:45+0000\n" -"PO-Revision-Date: 2010-10-04 12:00+0800\n" -"Last-Translator: walking <walking@mail.i2p>\n" -"Language-Team: foo <foo@bar>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Chinese\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ../java/src/org/klomp/snark/SnarkManager.java:88 -#, java-format -msgid "Adding torrents in {0} minutes" -msgstr "{0}分钟内完成添加" - -#: ../java/src/org/klomp/snark/SnarkManager.java:258 -#, java-format -msgid "Total uploaders limit changed to {0}" -msgstr "总上传种子数限制已更新为{0}" - -#: ../java/src/org/klomp/snark/SnarkManager.java:260 -#, java-format -msgid "Minimum total uploaders limit is {0}" -msgstr "最低上传种子数限制为{0}" - -#: ../java/src/org/klomp/snark/SnarkManager.java:272 -#, java-format -msgid "Up BW limit changed to {0}KBps" -msgstr "上传带宽限制改为 {0} KBps" - -#: ../java/src/org/klomp/snark/SnarkManager.java:274 -#, java-format -msgid "Minimum up bandwidth limit is {0}KBps" -msgstr "最小上传带宽限制为 {0} KBps" - -#: ../java/src/org/klomp/snark/SnarkManager.java:286 -#, java-format -msgid "Startup delay limit changed to {0} minutes" -msgstr "启动延迟已更新为{0}" - -#: ../java/src/org/klomp/snark/SnarkManager.java:333 -msgid "I2CP and tunnel changes will take effect after stopping all torrents" -msgstr "I2CP与隧道设置的变化在所有种子停止后才能生效" - -#: ../java/src/org/klomp/snark/SnarkManager.java:339 -msgid "Disconnecting old I2CP destination" -msgstr "正在断开旧的I2CP目标" - -#: ../java/src/org/klomp/snark/SnarkManager.java:343 -#, java-format -msgid "I2CP settings changed to {0}" -msgstr "I2CP设置改为{0}" - -#: ../java/src/org/klomp/snark/SnarkManager.java:347 -msgid "Unable to connect with the new settings, reverting to the old I2CP settings" -msgstr "无法通过新设置连接,恢复I2CP的旧设置" - -#: ../java/src/org/klomp/snark/SnarkManager.java:351 -msgid "Unable to reconnect with the old settings!" -msgstr "旧设置也无法连接!" - -#: ../java/src/org/klomp/snark/SnarkManager.java:353 -msgid "Reconnected on the new I2CP destination" -msgstr "重新连接新I2CP目标" - -#: ../java/src/org/klomp/snark/SnarkManager.java:364 -#, java-format -msgid "I2CP listener restarted for \"{0}\"" -msgstr "\"{0}\"的I2CP监听端口已启动" - -#: ../java/src/org/klomp/snark/SnarkManager.java:375 -msgid "Enabled autostart" -msgstr "启用自动启动" - -#: ../java/src/org/klomp/snark/SnarkManager.java:377 -msgid "Disabled autostart" -msgstr "禁用自动启动" - -#: ../java/src/org/klomp/snark/SnarkManager.java:383 -msgid "Enabled open trackers - torrent restart required to take effect." -msgstr "启用OpenTracker-重新启动种子后生效" - -#: ../java/src/org/klomp/snark/SnarkManager.java:385 -msgid "Disabled open trackers - torrent restart required to take effect." -msgstr "禁用OpenTracker - 重新启动种子后生效" - -#: ../java/src/org/klomp/snark/SnarkManager.java:392 -msgid "Open Tracker list changed - torrent restart required to take effect." -msgstr "OpenTracker列表已改变 - 重新启动种子后生效" - -#: ../java/src/org/klomp/snark/SnarkManager.java:399 -msgid "Configuration unchanged." -msgstr "设置未改变" - -#: ../java/src/org/klomp/snark/SnarkManager.java:409 -#, java-format -msgid "Unable to save the config to {0}" -msgstr "无法保存设置到{0}" - -#: ../java/src/org/klomp/snark/SnarkManager.java:445 -msgid "Connecting to I2P" -msgstr "正在连接到I2P" - -#: ../java/src/org/klomp/snark/SnarkManager.java:448 -msgid "Error connecting to I2P - check your I2CP settings!" -msgstr "连接I2P时发生错误 - 请检查I2CP设置!" - -#: ../java/src/org/klomp/snark/SnarkManager.java:457 -#, java-format -msgid "Error: Could not add the torrent {0}" -msgstr "错误:无法添加种子{0}" - -#. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:479 -#, java-format -msgid "Cannot open \"{0}\"" -msgstr "无法打开 \"{0}\"" - -#: ../java/src/org/klomp/snark/SnarkManager.java:492 -#, java-format -msgid "Warning - Ignoring non-i2p tracker in \"{0}\", will announce to i2p open trackers only" -msgstr "警告 - 忽略\"{0}\"文件中I2P网络外的Tracker服务器,文件将仅发布至 I2P 内的 Open Tracker 服务器。" - -#: ../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 "警告 - 忽略\"{0}\"文件中I2P网络外的Tracker服务器,OpenTracker已禁用,启动此种子前您必须启用OpenTracker。" - -#: ../java/src/org/klomp/snark/SnarkManager.java:513 -#, java-format -msgid "Torrent in \"{0}\" is invalid" -msgstr "无效种子 \"{0}\" " - -#: ../java/src/org/klomp/snark/SnarkManager.java:528 -#, java-format -msgid "Torrent added and started: \"{0}\"" -msgstr "已添加并启动种子:\"{0}\"" - -#: ../java/src/org/klomp/snark/SnarkManager.java:530 -#, java-format -msgid "Torrent added: \"{0}\"" -msgstr "已添加种子:\"{0}\"" - -#: ../java/src/org/klomp/snark/SnarkManager.java:627 -#, java-format -msgid "Too many files in \"{0}\" ({1}), deleting it!" -msgstr "\"{0}\" ({1}) 含有太多文件,删除之!" - -#: ../java/src/org/klomp/snark/SnarkManager.java:629 -#, java-format -msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" -msgstr "种子文件 \"{0}\" 不以 \".torrent\"结尾,正在删除!" - -#: ../java/src/org/klomp/snark/SnarkManager.java:631 -#, java-format -msgid "No pieces in \"{0}\", deleting it!" -msgstr "\"{0}\" 中没有数据片,删除之!" - -#: ../java/src/org/klomp/snark/SnarkManager.java:633 -#, java-format -msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!" -msgstr "\"{0}\" 中文件分片太多,限额为{1},删除之!" - -#: ../java/src/org/klomp/snark/SnarkManager.java:635 -#, java-format -msgid "Pieces are too large in \"{0}\" ({1}B), deleting it." -msgstr "\"{0}\" ({1}B) 中文件分片过大,删除之。" - -#: ../java/src/org/klomp/snark/SnarkManager.java:636 -#, java-format -msgid "Limit is {0}B" -msgstr "限额为 {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 "目前不支持大于{0}B 的种子,正在删除\"{1}\"" - -#: ../java/src/org/klomp/snark/SnarkManager.java:660 -#, java-format -msgid "Error: Could not remove the torrent {0}" -msgstr "错误:无法删除种子{0}" - -#: ../java/src/org/klomp/snark/SnarkManager.java:681 -#, java-format -msgid "Torrent stopped: \"{0}\"" -msgstr "种子已停止:\"{0}\"" - -#: ../java/src/org/klomp/snark/SnarkManager.java:696 -#, java-format -msgid "Torrent removed: \"{0}\"" -msgstr "种子已删除:\"{0}\"" - -#: ../java/src/org/klomp/snark/SnarkManager.java:729 -#, java-format -msgid "Download finished: \"{0}\"" -msgstr "下载已完成:\"{0}\"" - -#: ../java/src/org/klomp/snark/SnarkManager.java:729 -#, java-format -msgid "size: {0}B" -msgstr "大小:{0}B" - -#: ../java/src/org/klomp/snark/SnarkManager.java:757 -msgid "Unable to connect to I2P!" -msgstr "无法连接至I2P!" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:174 -msgid "I2PSnark - Anonymous BitTorrent Client" -msgstr "I2PSnark - 匿名BitTorrent客户端" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:185 -msgid "Torrents" -msgstr "种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:187 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837 -msgid "I2PSnark" -msgstr "" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:191 -msgid "Refresh page" -msgstr "刷新页面" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:193 -msgid "<img border=\"0\" src=\"/themes/console/snark/images/arrow_refresh.png\"> I2PSnark" -msgstr "" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:195 -msgid "Forum" -msgstr "论坛" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:240 -msgid "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=\"Torrent Status\">Status" -msgstr "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=\"种子状态\">状态" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:246 -msgid "<img border=\"0\" src=\"/themes/console/snark/images/showpeers.png\" title=\"Toggle Peer Visibility\" alt=\"Hide Peers\">" -msgstr "<img border=\"0\" src=\"/themes/console/snark/images/showpeers.png\" title=\"隐藏节点\" alt=\"隐藏节点\">" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:249 -msgid "<img border=\"0\" src=\"/themes/console/snark/images/hidepeers.png\" title=\"Toggle Peer Visibility\" alt=\"Show Peers\">" -msgstr "<img border=\"0\" src=\"/themes/console/snark/images/hidepeers.png\" title=\"显示节点\" alt=\"显示节点\">" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:254 -msgid "<img border=\"0\" src=\"/themes/console/snark/images/torrent.png\" title=\"Loaded Torrents\">Torrent" -msgstr "<img border=\"0\" src=\"/themes/console/snark/images/torrent.png\" title=\"载入的种子\">种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:256 -msgid "<img border=\"0\" src=\"/themes/console/snark/images/eta.png\" title=\"Estimated Download Time\">ETA" -msgstr "<img border=\"0\" src=\"/themes/console/snark/images/eta.png\" title=\"预计剩余时间\">预计剩余时间" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:258 -msgid "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=\"Data Downloaded\">RX" -msgstr "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=\"下载数据量\">下载" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:260 -msgid "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=\"Data Uploaded\">TX" -msgstr "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=\"上传数据量\">上传" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:262 -msgid "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=\"Download Speed\">Rate" -msgstr "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=\"下载速度\">下载速度" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:264 -msgid "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=\"Upload Speed\">Rate" -msgstr "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=\"上传速度\">上传速度" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:271 -msgid "Stop all torrents and the I2P tunnel" -msgstr "停止全部种子及I2P隧道" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273 -msgid "<img src=\"/themes/console/snark/images/stop_all.png\" title=\"Stop All Torrents\" alt=\"Stop All\">" -msgstr "<img src=\"/themes/console/snark/images/stop_all.png\" title=\"全部停止\" alt=\"全部停止\">" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:278 -msgid "Start all torrents and the I2P tunnel" -msgstr "启动全部种子及I2P隧道" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:280 -msgid "<img src=\"/themes/console/snark/images/start_all.png\" title=\"Start All Torrents\" alt=\"Start All\">" -msgstr "<img src=\"/themes/console/snark/images/start_all.png\" title=\"全部开始\" alt=\"全部开始\">" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297 -msgid "No torrents loaded." -msgstr "未载入任何种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:302 -msgid "Totals" -msgstr "总计" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:304 -#, java-format -msgid "1 torrent" -msgid_plural "{0} torrents" -msgstr[0] "{0}个种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:307 -#, java-format -msgid "1 connected peer" -msgid_plural "{0} connected peers" -msgstr[0] "{0}个已连接用户" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:336 -#, java-format -msgid "Torrent file {0} does not exist" -msgstr "种子文件{0}不存在" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1481 -#, java-format -msgid "Torrent already running: {0}" -msgstr "种子已启动:{0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:348 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1483 -#, java-format -msgid "Torrent already in the queue: {0}" -msgstr "种子排队中:{0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:352 -#, java-format -msgid "Copying torrent to {0}" -msgstr "正在复制种子到{0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:355 -#, java-format -msgid "Unable to copy the torrent to {0}" -msgstr "无法复制种子文件到{0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:355 -#, java-format -msgid "from {0}" -msgstr "来源{0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:363 -#, java-format -msgid "Fetching {0}" -msgstr "正在获取{0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:367 -msgid "Invalid URL - must start with http://" -msgstr "无效链接 - 必须以http:// 开头" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397 -#, java-format -msgid "Starting up torrent {0}" -msgstr "正在启动种子{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 "种子文件已删除:{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 "数据文件已删除:{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 "无法删除数据文件:{0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462 -#, java-format -msgid "Data dir deleted: {0}" -msgstr "数据文件夹已删除:{0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:494 -msgid "Error creating torrent - you must select a tracker" -msgstr "创建种子时发生错误 - 您必须选择一个Tracker" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509 -#, java-format -msgid "Torrent created for \"{0}\"" -msgstr "种子创建成功\"{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 "多数I2PTracker需要用户在做种前注册新种子 - 请在启动 \"{0}\"前到所使用的Tracker进行注册。" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:514 -#, java-format -msgid "Error creating a torrent for \"{0}\"" -msgstr "创建种子时发生错误 \"{0}\"" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:517 -#, java-format -msgid "Cannot create a torrent for the nonexistent data: {0}" -msgstr "无法为不存在的数据文件创建种子:{0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:520 -msgid "Error creating torrent - you must enter a file or directory" -msgstr "创建种子时发生错误 - 必须指定文件或文件夹" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:523 -msgid "Stopping all torrents and closing the I2P tunnel." -msgstr "正在停用所有种子并关闭I2P隧道。" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:532 -msgid "I2P tunnel closed." -msgstr "I2P隧道已关闭" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535 -msgid "Opening the I2P tunnel and starting all torrents." -msgstr "正在打开I2P隧道并启动所有种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:851 -msgid "Unknown" -msgstr "未知" - -#: ../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 "Tracker错误" - -#: ../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] "{0}个用户" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:679 -msgid "Seeding" -msgstr "正做种" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:682 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317 -msgid "Complete" -msgstr "完成" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:685 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:690 -msgid "OK" -msgstr "确定" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:693 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698 -msgid "Stalled" -msgstr "等待" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 -msgid "No Peers" -msgstr "没有用户" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:703 -msgid "Stopped" -msgstr "已停用" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:718 -msgid "View files" -msgstr "浏览文件" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:720 -msgid "Open file" -msgstr "打开文件" - -#: ../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 "<img border=\"0\" src=\"/themes/console/snark/images/details.png\">" -msgstr "" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:785 -msgid "Stop the torrent" -msgstr "停止种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787 -msgid "<img src=\"/themes/console/snark/images/stop.png\" title=\"Stop Torrent\" alt=\"Stop\">" -msgstr "<img src=\"/themes/console/snark/images/stop.png\" title=\"停止下载\" alt=\"停止\">" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:793 -msgid "Start the torrent" -msgstr "启动种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:795 -msgid "<img src=\"/themes/console/snark/images/start.png\" title=\"Start Torrent\" alt=\"Start\">" -msgstr "<img src=\"/themes/console/snark/images/start.png\" title=\"开始下载\" alt=\"开始\">" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:800 -msgid "Remove the torrent from the active list, deleting the .torrent file" -msgstr "取消下载任务并删除对应种子文件。" - -#. Can't figure out how to escape double quotes inside the onclick string. -#. Single quotes in translate strings with parameters must be doubled. -#. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:805 -#, java-format -msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?" -msgstr "您确定要删除文件“{0}.torrent”(下载的数据文件不会被删除)?" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:807 -msgid "<img src=\"/themes/console/snark/images/remove.png\" title=\"Remove Torrent\" alt=\"Remove\">" -msgstr "<img src=\"/themes/console/snark/images/remove.png\" title=\"删除种子\" alt=\"删除种子\">" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811 -msgid "Delete the .torrent file and the associated data file(s)" -msgstr "删除种子及所下载的文件" - -#. Can't figure out how to escape double quotes inside the onclick string. -#. Single quotes in translate strings with parameters must be doubled. -#. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:816 -#, java-format -msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?" -msgstr "您确定要删除种子“{0}”(下载的数据文件会一并被删除)?" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:818 -msgid "<img src=\"/themes/console/snark/images/delete.png\" title=\"Delete Torrent + Data\" alt=\"Delete\">" -msgstr "<img src=\"/themes/console/snark/images/delete.png\" title=\"删除种子 + 数据\" alt=\"删除种子 + 数据\">" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:861 -msgid "Seed" -msgstr "种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:879 -msgid "Uninteresting (The peer has no pieces we need)" -msgstr "无需要部分" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:881 -msgid "Choked (The peer is not allowing us to request pieces)" -msgstr "拒绝请求" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:895 -msgid "Uninterested (We have no pieces the peer needs)" -msgstr "无需要部分" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:897 -msgid "Choking (We are not allowing the peer to request pieces)" -msgstr "拒绝请求" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:927 -msgid "<img border=\"0\" src=\"/themes/console/snark/images/add.png\">Add Torrent" -msgstr "<img border=\"0\" src=\"/themes/console/snark/images/add.png\">添加种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:929 -msgid "From URL" -msgstr "从URL" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:934 -msgid "Add torrent" -msgstr "添加种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:937 -#, java-format -msgid "You can also copy .torrent files to: <code>{0}" -msgstr "或者您可以将.torrent文件复制到<code>{0}." - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:939 -msgid "Removing a .torrent will cause it to stop." -msgstr "删除种子文件将导致该下载任务中止。" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958 -msgid "<img border=\"0\" src=\"/themes/console/snark/images/create.png\">Create Torrent" -msgstr "<img border=\"0\" src=\"/themes/console/snark/images/create.png\">创建种子" - -#. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:961 -msgid "Data to seed" -msgstr "做种数据" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:965 -msgid "File or directory to seed (must be within the specified path)" -msgstr "做种文件或文件夹(必须下面为Snark指定的文件夹中)" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 -msgid "Select a tracker" -msgstr "选择一个Tracker" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982 -msgid "or " -msgstr "或 " - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985 -msgid "Specify custom tracker announce URL" -msgstr "指定Open Tracker发布链接" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:988 -msgid "Create torrent" -msgstr "创建种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1133 -msgid "<img border=\"0\" src=\"/themes/console/snark/images/config.png\">Configuration" -msgstr "<img border=\"0\" src=\"/themes/console/snark/images/config.png\">设置" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009 -msgid "Data directory" -msgstr "数据文件夹" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1012 -msgid "Directory to store torrents and data" -msgstr "种子及被做种文件的保存位置。" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014 -msgid "Edit i2psnark.config and restart to change" -msgstr "编辑 i2psnark.config 并重启Snark后生效" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1018 -msgid "Auto start" -msgstr "自动启动" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022 -msgid "If checked, automatically start torrents that are added" -msgstr "选中后Snark将自动启动已添加的所有种子。" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 -msgid "Startup delay" -msgstr "启动延迟" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1028 -msgid "minutes" -msgstr "分" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1052 -msgid "Total uploader limit" -msgstr "限制总上传种子数为" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055 -msgid "peers" -msgstr "用户" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1059 -msgid "Up bandwidth limit" -msgstr "上传带宽限制" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1062 -msgid "Half available bandwidth recommended." -msgstr "推荐设置为可用带宽的一半。" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1064 -msgid "View or change router bandwidth" -msgstr "浏览或修改路由器带宽" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068 -msgid "Use open trackers also" -msgstr "同时使用OpenTracker" - -#: ../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 "选择后在OpenTracker及种子文件中的Tracker上同时发布。" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1076 -msgid "Open tracker announce URLs" -msgstr "Open Tracker发布链接" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1088 -msgid "Inbound Settings" -msgstr "入站设置" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1094 -msgid "Outbound Settings" -msgstr "出站设置" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101 -msgid "I2CP host" -msgstr "I2CP主机" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1106 -msgid "I2CP port" -msgstr "I2CP端口" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118 -msgid "I2CP options" -msgstr "I2CP选项" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1124 -msgid "Save configuration" -msgstr "保存设置" - -#. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1141 -#, java-format -msgid "1 hop" -msgid_plural "{0} hops" -msgstr[0] "{0}跳" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 -#, java-format -msgid "1 tunnel" -msgid_plural "{0} tunnels" -msgstr[0] "{0}隧道" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271 -msgid "Torrent" -msgstr "种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1278 -msgid "<img border=\"0\" src=\"/themes/console/snark/images/file.png\" title=\"File\" alt=\"File\"> " -msgstr "<img border=\"0\" src=\"/themes/console/snark/images/file.png\" title=\"文件\" alt=\"文件\"> " - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1278 -msgid "<img border=\"0\" src=\"/themes/console/snark/images/size.png\" title=\"FileSize\" alt=\"FileSize\">Size" -msgstr "<img border=\"0\" src=\"/themes/console/snark/images/size.png\" title=\"文件大小\" alt=\"文件大小\">大小" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 -msgid "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=\"Download Status\">Status" -msgstr "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=\"下载状态\">状态" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301 -msgid "Directory" -msgstr "文件夹" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1306 -msgid "Torrent not found?" -msgstr "种子未找到" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314 -msgid "File not found in torrent?" -msgstr "种子中没有发现文件?" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320 -msgid "complete" -msgstr "完成" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1321 -msgid "bytes remaining" -msgstr "剩余字节数" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1373 -msgid "Up to higher level directory" -msgstr "上一层文件夹" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1461 -#, java-format -msgid "Torrent fetched from {0}" -msgstr "从{0}获取种子成功" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489 -#, java-format -msgid "Torrent at {0} was not valid" -msgstr "{0}的种子中有错误" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1494 -#, java-format -msgid "Torrent was not retrieved from {0}" -msgstr "从{0}获得种子失败" - -#~ msgid "Status" -#~ msgstr "状态" -#~ msgid "Hide Peers" -#~ msgstr "隐藏用户" -#~ msgid "Show Peers" -#~ msgstr "显示用户" -#~ msgid "ETA" -#~ msgstr "预计剩余时间" -#~ msgid "Downloaded" -#~ msgstr "已下载" -#~ msgid "Uploaded" -#~ msgstr "已上传" -#~ msgid "Down Rate" -#~ msgstr "下载速度" -#~ msgid "Up Rate" -#~ msgstr "上传速度" -#~ msgid "Stop All" -#~ msgstr "停止全部" -#~ msgid "Start All" -#~ msgstr "启动全部" -#~ msgid "Details" -#~ msgstr "详情" -#~ msgid "Stop" -#~ msgstr "停止" -#~ msgid "Start" -#~ msgstr "启动" -#~ msgid "Remove" -#~ msgstr "移除" -#~ msgid "Delete" -#~ msgstr "删除" -#~ msgid "Add Torrent" -#~ msgstr "添加种子" -#~ msgid "Create Torrent" -#~ msgstr "创建种子" -#~ msgid "or" -#~ msgstr "或" -#~ msgid "Configuration" -#~ msgstr "设置" -#~ msgid "File" -#~ msgstr "文件" -#~ msgid "Size" -#~ msgstr "大小" -#~ msgid "Cannot change the I2CP settings while torrents are active" -#~ msgstr "正在下载/上传,无法更改I2CP设置" -#~ msgid "{0} torrents" -#~ msgstr "{0} 个种子" -#~ msgid "Non-i2p tracker in \"{0}\", deleting it from our list of trackers!" -#~ msgstr "" -#~ "【匿名性警告】\"{0}\" 中含有非I2P Tracker,程序将从Tracker列表中将其删除。" -#~ msgid "Custom tracker URL" -#~ msgstr "自定义TrackerURL" -#~ msgid "Configure" -#~ msgstr "设置" - +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the i2psnark package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo <foo@bar>, 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P i2psnark\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-09 15:08+0000\n" +"PO-Revision-Date: 2010-10-04 12:00+0800\n" +"Last-Translator: walking <walking@mail.i2p>\n" +"Language-Team: foo <foo@bar>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Chinese\n" +"Plural-Forms: nplurals=1; plural=0\n" + +#: ../java/src/org/klomp/snark/SnarkManager.java:307 +#, java-format +msgid "Total uploaders limit changed to {0}" +msgstr "总上传种子数限制已更新为{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:309 +#, java-format +msgid "Minimum total uploaders limit is {0}" +msgstr "最低上传种子数限制为{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:321 +#, java-format +msgid "Up BW limit changed to {0}KBps" +msgstr "上传带宽限制改为 {0} KBps" + +#: ../java/src/org/klomp/snark/SnarkManager.java:323 +#, java-format +msgid "Minimum up bandwidth limit is {0}KBps" +msgstr "最小上传带宽限制为 {0} KBps" + +#: ../java/src/org/klomp/snark/SnarkManager.java:335 +#, fuzzy, java-format +msgid "Startup delay changed to {0}" +msgstr "启动延迟已更新为{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:386 +msgid "I2CP and tunnel changes will take effect after stopping all torrents" +msgstr "I2CP与隧道设置的变化在所有种子停止后才能生效" + +#: ../java/src/org/klomp/snark/SnarkManager.java:393 +msgid "Disconnecting old I2CP destination" +msgstr "正在断开旧的I2CP目标" + +#: ../java/src/org/klomp/snark/SnarkManager.java:397 +#, java-format +msgid "I2CP settings changed to {0}" +msgstr "I2CP设置改为{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:402 +msgid "" +"Unable to connect with the new settings, reverting to the old I2CP settings" +msgstr "无法通过新设置连接,恢复I2CP的旧设置" + +#: ../java/src/org/klomp/snark/SnarkManager.java:406 +msgid "Unable to reconnect with the old settings!" +msgstr "旧设置也无法连接!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:408 +msgid "Reconnected on the new I2CP destination" +msgstr "重新连接新I2CP目标" + +#: ../java/src/org/klomp/snark/SnarkManager.java:418 +#, java-format +msgid "I2CP listener restarted for \"{0}\"" +msgstr "\"{0}\"的I2CP监听端口已启动" + +#: ../java/src/org/klomp/snark/SnarkManager.java:429 +msgid "Enabled autostart" +msgstr "启用自动启动" + +#: ../java/src/org/klomp/snark/SnarkManager.java:431 +msgid "Disabled autostart" +msgstr "禁用自动启动" + +#: ../java/src/org/klomp/snark/SnarkManager.java:437 +msgid "Enabled open trackers - torrent restart required to take effect." +msgstr "启用OpenTracker-重新启动种子后生效" + +#: ../java/src/org/klomp/snark/SnarkManager.java:439 +msgid "Disabled open trackers - torrent restart required to take effect." +msgstr "禁用OpenTracker - 重新启动种子后生效" + +#: ../java/src/org/klomp/snark/SnarkManager.java:447 +msgid "Open Tracker list changed - torrent restart required to take effect." +msgstr "OpenTracker列表已改变 - 重新启动种子后生效" + +#: ../java/src/org/klomp/snark/SnarkManager.java:454 +#, java-format +msgid "{0} theme loaded, return to main i2psnark page to view." +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:461 +msgid "Configuration unchanged." +msgstr "设置未改变" + +#: ../java/src/org/klomp/snark/SnarkManager.java:471 +#, java-format +msgid "Unable to save the config to {0}" +msgstr "无法保存设置到{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:536 +msgid "Connecting to I2P" +msgstr "正在连接到I2P" + +#: ../java/src/org/klomp/snark/SnarkManager.java:539 +msgid "Error connecting to I2P - check your I2CP settings!" +msgstr "连接I2P时发生错误 - 请检查I2CP设置!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:548 +#, java-format +msgid "Error: Could not add the torrent {0}" +msgstr "错误:无法添加种子{0}" + +#. catch this here so we don't try do delete it below +#: ../java/src/org/klomp/snark/SnarkManager.java:570 +#, java-format +msgid "Cannot open \"{0}\"" +msgstr "无法打开 \"{0}\"" + +#. TODO - if the existing one is a magnet, delete it and add the metainfo instead? +#: ../java/src/org/klomp/snark/SnarkManager.java:586 +#: ../java/src/org/klomp/snark/SnarkManager.java:657 +#: ../java/src/org/klomp/snark/SnarkManager.java:712 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1923 +#, fuzzy, java-format +msgid "Torrent with this info hash is already running: {0}" +msgstr "种子已启动:{0}" + +#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); +#: ../java/src/org/klomp/snark/SnarkManager.java:593 +#, fuzzy, java-format +msgid "" +"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers " +"only." +msgstr "" +"警告 - 忽略\"{0}\"文件中I2P网络外的Tracker服务器,文件将仅发布至 I2P 内的 " +"Open Tracker 服务器。" + +#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); +#: ../java/src/org/klomp/snark/SnarkManager.java:598 +#, fuzzy, java-format +msgid "" +"Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " +"disabled, you should enable open trackers before starting the torrent." +msgstr "" +"警告 - 忽略\"{0}\"文件中I2P网络外的Tracker服务器,OpenTracker已禁用,启动此种" +"子前您必须启用OpenTracker。" + +#: ../java/src/org/klomp/snark/SnarkManager.java:619 +#, java-format +msgid "Torrent in \"{0}\" is invalid" +msgstr "无效种子 \"{0}\" " + +#: ../java/src/org/klomp/snark/SnarkManager.java:624 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1946 +#, java-format +msgid "ERROR - Out of memory, cannot create torrent from {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:635 +#, java-format +msgid "Torrent added and started: \"{0}\"" +msgstr "已添加并启动种子:\"{0}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:637 +#, java-format +msgid "Torrent added: \"{0}\"" +msgstr "已添加种子:\"{0}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:668 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:488 +#, java-format +msgid "Fetching {0}" +msgstr "正在获取{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:671 +#, java-format +msgid "" +"We have no saved peers and no other torrents are running. Fetch of {0} will " +"not succeed until you start another torrent." +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:675 +#, fuzzy, java-format +msgid "Adding {0}" +msgstr "正在获取{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:722 +#: ../java/src/org/klomp/snark/SnarkManager.java:745 +#: ../java/src/org/klomp/snark/SnarkManager.java:1166 +#, fuzzy, java-format +msgid "Failed to copy torrent file to {0}" +msgstr "无法复制种子文件到{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:968 +#, java-format +msgid "Too many files in \"{0}\" ({1}), deleting it!" +msgstr "\"{0}\" ({1}) 含有太多文件,删除之!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:970 +#, java-format +msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" +msgstr "种子文件 \"{0}\" 不以 \".torrent\"结尾,正在删除!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:972 +#, java-format +msgid "No pieces in \"{0}\", deleting it!" +msgstr "\"{0}\" 中没有数据片,删除之!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:974 +#, java-format +msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!" +msgstr "\"{0}\" 中文件分片太多,限额为{1},删除之!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:976 +#, java-format +msgid "Pieces are too large in \"{0}\" ({1}B), deleting it." +msgstr "\"{0}\" ({1}B) 中文件分片过大,删除之。" + +#: ../java/src/org/klomp/snark/SnarkManager.java:977 +#, java-format +msgid "Limit is {0}B" +msgstr "限额为 {0}B" + +#: ../java/src/org/klomp/snark/SnarkManager.java:985 +#, java-format +msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" +msgstr "目前不支持大于{0}B 的种子,正在删除\"{1}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1001 +#, java-format +msgid "Error: Could not remove the torrent {0}" +msgstr "错误:无法删除种子{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1022 +#: ../java/src/org/klomp/snark/SnarkManager.java:1040 +#, java-format +msgid "Torrent stopped: \"{0}\"" +msgstr "种子已停止:\"{0}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1061 +#, java-format +msgid "Torrent removed: \"{0}\"" +msgstr "种子已删除:\"{0}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1069 +#, fuzzy, java-format +msgid "Adding torrents in {0}" +msgstr "{0}分钟内完成添加" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1118 +#, fuzzy, java-format +msgid "Download finished: {0}" +msgstr "下载已完成:\"{0}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1162 +#, fuzzy, java-format +msgid "Metainfo received for {0}" +msgstr "从{0}获得种子失败" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1163 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:523 +#, java-format +msgid "Starting up torrent {0}" +msgstr "正在启动种子{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1217 +msgid "Unable to connect to I2P!" +msgstr "无法连接至I2P!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1223 +#, fuzzy, java-format +msgid "Unable to add {0}" +msgstr "无法保存设置到{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:204 +msgid "I2PSnark - Anonymous BitTorrent Client" +msgstr "I2PSnark - 匿名BitTorrent客户端" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:217 +msgid "Torrents" +msgstr "种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:220 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:227 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006 +msgid "I2PSnark" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:224 +msgid "Refresh page" +msgstr "刷新页面" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:229 +msgid "Forum" +msgstr "论坛" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 +msgid "Status" +msgstr "状态" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:289 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:291 +msgid "Hide Peers" +msgstr "隐藏用户" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:296 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:298 +msgid "Show Peers" +msgstr "显示用户" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:305 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1591 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1607 +msgid "Torrent" +msgstr "种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:309 +#, fuzzy +msgid "Estimated time remaining" +msgstr "剩余字节数" + +#. Translators: Please keep short or translate as " " +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:312 +msgid "ETA" +msgstr "预计剩余时间" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316 +msgid "Downloaded" +msgstr "已下载" + +#. Translators: Please keep short or translate as " " +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:319 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:333 +msgid "RX" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:323 +msgid "Uploaded" +msgstr "已上传" + +#. Translators: Please keep short or translate as " " +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:326 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:343 +msgid "TX" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:331 +msgid "Down Rate" +msgstr "下载速度" + +#. Translators: Please keep short or translate as " " +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:336 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:345 +#, fuzzy +msgid "Rate" +msgstr "上传速度" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:341 +msgid "Up Rate" +msgstr "上传速度" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:363 +msgid "Stop all torrents and the I2P tunnel" +msgstr "停止全部种子及I2P隧道" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 +msgid "Stop All" +msgstr "停止全部" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:374 +msgid "Start all torrents and the I2P tunnel" +msgstr "启动全部种子及I2P隧道" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376 +msgid "Start All" +msgstr "启动全部" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:395 +msgid "No torrents loaded." +msgstr "未载入任何种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:400 +msgid "Totals" +msgstr "总计" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402 +#, java-format +msgid "1 torrent" +msgid_plural "{0} torrents" +msgstr[0] "{0}个种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:405 +#, java-format +msgid "1 connected peer" +msgid_plural "{0} connected peers" +msgstr[0] "{0}个已连接用户" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:494 +#, fuzzy, java-format +msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" +msgstr "无效链接 - 必须以http:// 开头" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:542 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569 +#, fuzzy, java-format +msgid "Magnet deleted: {0}" +msgstr "数据文件夹已删除:{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:550 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:575 +#, java-format +msgid "Torrent file deleted: {0}" +msgstr "种子文件已删除:{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:581 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:591 +#, java-format +msgid "Data file deleted: {0}" +msgstr "数据文件已删除:{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 +#, java-format +msgid "Data file could not be deleted: {0}" +msgstr "无法删除数据文件:{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:602 +#, java-format +msgid "Data dir deleted: {0}" +msgstr "数据文件夹已删除:{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 +msgid "Error creating torrent - you must select a tracker" +msgstr "创建种子时发生错误 - 您必须选择一个Tracker" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:651 +#, java-format +msgid "Torrent created for \"{0}\"" +msgstr "种子创建成功\"{0}\"" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653 +#, java-format +msgid "" +"Many I2P trackers require you to register new torrents before seeding - " +"please do so before starting \"{0}\"" +msgstr "" +"多数I2PTracker需要用户在做种前注册新种子 - 请在启动 \"{0}\"前到所使用的" +"Tracker进行注册。" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655 +#, java-format +msgid "Error creating a torrent for \"{0}\"" +msgstr "创建种子时发生错误 \"{0}\"" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:658 +#, java-format +msgid "Cannot create a torrent for the nonexistent data: {0}" +msgstr "无法为不存在的数据文件创建种子:{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:661 +msgid "Error creating torrent - you must enter a file or directory" +msgstr "创建种子时发生错误 - 必须指定文件或文件夹" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664 +msgid "Stopping all torrents and closing the I2P tunnel." +msgstr "正在停用所有种子并关闭I2P隧道。" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:675 +msgid "I2P tunnel closed." +msgstr "I2P隧道已关闭" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:678 +msgid "Opening the I2P tunnel and starting all torrents." +msgstr "正在打开I2P隧道并启动所有种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:806 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812 +#, fuzzy +msgid "Tracker Error" +msgstr "Tracker错误" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:820 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:824 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:832 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:841 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845 +#, java-format +msgid "1 peer" +msgid_plural "{0} peers" +msgstr[0] "{0}个用户" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:817 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822 +msgid "Seeding" +msgstr "正做种" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:826 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1718 +msgid "Complete" +msgstr "完成" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:829 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834 +msgid "OK" +msgstr "确定" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:843 +msgid "Stalled" +msgstr "等待" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:847 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:850 +msgid "No Peers" +msgstr "没有用户" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852 +msgid "Stopped" +msgstr "已停用" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:863 +#, fuzzy +msgid "Torrent details" +msgstr "种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:864 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 +msgid "Info" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:878 +msgid "View files" +msgstr "浏览文件" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:880 +msgid "Open file" +msgstr "打开文件" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:892 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1754 +#, fuzzy +msgid "Open" +msgstr "打开文件" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:938 +msgid "Stop the torrent" +msgstr "停止种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:940 +msgid "Stop" +msgstr "停止" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:949 +msgid "Start the torrent" +msgstr "启动种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:951 +msgid "Start" +msgstr "启动" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:961 +msgid "Remove the torrent from the active list, deleting the .torrent file" +msgstr "取消下载任务并删除对应种子文件。" + +#. Can't figure out how to escape double quotes inside the onclick string. +#. Single quotes in translate strings with parameters must be doubled. +#. Then the remaining single quite must be escaped +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:966 +#, java-format +msgid "" +"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded " +"data will not be deleted) ?" +msgstr "您确定要删除文件“{0}.torrent”(下载的数据文件不会被删除)?" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 +msgid "Remove" +msgstr "移除" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:979 +msgid "Delete the .torrent file and the associated data file(s)" +msgstr "删除种子及所下载的文件" + +#. Can't figure out how to escape double quotes inside the onclick string. +#. Single quotes in translate strings with parameters must be doubled. +#. Then the remaining single quite must be escaped +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:984 +#, java-format +msgid "" +"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " +"data?" +msgstr "您确定要删除种子“{0}”(下载的数据文件会一并被删除)?" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 +msgid "Delete" +msgstr "删除" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1020 +msgid "Unknown" +msgstr "未知" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +msgid "Seed" +msgstr "种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055 +msgid "Uninteresting (The peer has no pieces we need)" +msgstr "无需要部分" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057 +msgid "Choked (The peer is not allowing us to request pieces)" +msgstr "拒绝请求" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 +msgid "Uninterested (We have no pieces the peer needs)" +msgstr "无需要部分" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079 +msgid "Choking (We are not allowing the peer to request pieces)" +msgstr "拒绝请求" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1137 +#, fuzzy, java-format +msgid "Details at {0} tracker" +msgstr "选择一个Tracker" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166 +msgid "Add Torrent" +msgstr "添加种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1168 +msgid "From URL" +msgstr "从URL" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1171 +msgid "Torrent file must originate from an I2P-based tracker" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176 +msgid "Add torrent" +msgstr "添加种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1179 +#, fuzzy, java-format +msgid "You can also copy .torrent files to: {0}." +msgstr "或者您可以将.torrent文件复制到<code>{0}." + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181 +msgid "Removing a .torrent will cause it to stop." +msgstr "删除种子文件将导致该下载任务中止。" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1204 +msgid "Create Torrent" +msgstr "创建种子" + +#. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n"); +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 +msgid "Data to seed" +msgstr "做种数据" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1211 +msgid "File or directory to seed (must be within the specified path)" +msgstr "做种文件或文件夹(必须下面为Snark指定的文件夹中)" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1213 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1632 +msgid "Tracker" +msgstr "Tracker服务器" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1215 +msgid "Select a tracker" +msgstr "选择一个Tracker" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1219 +#, fuzzy +msgid "Open trackers and DHT only" +msgstr "Open Tracker发布链接" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1234 +msgid "or" +msgstr "或" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237 +msgid "Specify custom tracker announce URL" +msgstr "指定Open Tracker发布链接" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240 +msgid "Create torrent" +msgstr "创建种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1258 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1397 +msgid "Configuration" +msgstr "设置" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1262 +msgid "Data directory" +msgstr "数据文件夹" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264 +msgid "Edit i2psnark.config and restart to change" +msgstr "编辑 i2psnark.config 并重启Snark后生效" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1268 +msgid "Auto start" +msgstr "自动启动" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1272 +msgid "If checked, automatically start torrents that are added" +msgstr "选中后Snark将自动启动已添加的所有种子。" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1276 +msgid "Theme" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1289 +msgid "Startup delay" +msgstr "启动延迟" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +msgid "minutes" +msgstr "分" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1315 +msgid "Total uploader limit" +msgstr "限制总上传种子数为" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1318 +msgid "peers" +msgstr "用户" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1322 +msgid "Up bandwidth limit" +msgstr "上传带宽限制" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1325 +msgid "Half available bandwidth recommended." +msgstr "推荐设置为可用带宽的一半。" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1327 +msgid "View or change router bandwidth" +msgstr "浏览或修改路由器带宽" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1331 +msgid "Use open trackers also" +msgstr "同时使用OpenTracker" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1335 +msgid "" +"If checked, announce torrents to open trackers as well as the tracker listed " +"in the torrent file" +msgstr "选择后在OpenTracker及种子文件中的Tracker上同时发布。" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1339 +msgid "Open tracker announce URLs" +msgstr "Open Tracker发布链接" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351 +msgid "Inbound Settings" +msgstr "入站设置" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1357 +msgid "Outbound Settings" +msgstr "出站设置" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1365 +msgid "I2CP host" +msgstr "I2CP主机" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1370 +msgid "I2CP port" +msgstr "I2CP端口" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1383 +msgid "I2CP options" +msgstr "I2CP选项" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 +msgid "Save configuration" +msgstr "保存设置" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1438 +#, java-format +msgid "Invalid info hash in magnet URL {0}" +msgstr "" + +#. * dummies for translation +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1448 +#, java-format +msgid "1 hop" +msgid_plural "{0} hops" +msgstr[0] "{0}跳" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1449 +#, java-format +msgid "1 tunnel" +msgid_plural "{0} tunnels" +msgstr[0] "{0}隧道" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1611 +#, fuzzy +msgid "Completion" +msgstr "完成" + +#. else unknown +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1615 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1664 +msgid "Size" +msgstr "大小" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1620 +#, fuzzy +msgid "Files" +msgstr "文件" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1622 +msgid "Pieces" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1623 +msgid "Piece size" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1645 +msgid "Magnet link" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1701 +msgid "Directory" +msgstr "文件夹" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671 +msgid "Priority" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1676 +msgid "Up to higher level directory" +msgstr "上一层文件夹" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1706 +msgid "Torrent not found?" +msgstr "种子未找到" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1715 +msgid "File not found in torrent?" +msgstr "种子中没有发现文件?" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1728 +msgid "complete" +msgstr "完成" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1729 +msgid "bytes remaining" +msgstr "剩余字节数" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1780 +msgid "High" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1785 +msgid "Normal" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1790 +msgid "Skip" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1799 +msgid "Save priorities" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1914 +#, java-format +msgid "Torrent fetched from {0}" +msgstr "从{0}获取种子成功" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1936 +#, java-format +msgid "Torrent already running: {0}" +msgstr "种子已启动:{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1938 +#, java-format +msgid "Torrent already in the queue: {0}" +msgstr "种子排队中:{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 +#, java-format +msgid "Torrent at {0} was not valid" +msgstr "{0}的种子中有错误" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 +#, java-format +msgid "Torrent was not retrieved from {0}" +msgstr "从{0}获得种子失败" + +#~ msgid "size: {0}B" +#~ msgstr "大小:{0}B" + +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=" +#~ "\"Torrent Status\">Status" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=" +#~ "\"种子状态\">状态" + +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/showpeers.png\" " +#~ "title=\"Toggle Peer Visibility\" alt=\"Hide Peers\">" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/showpeers.png\" " +#~ "title=\"隐藏节点\" alt=\"隐藏节点\">" + +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/hidepeers.png\" " +#~ "title=\"Toggle Peer Visibility\" alt=\"Show Peers\">" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/hidepeers.png\" " +#~ "title=\"显示节点\" alt=\"显示节点\">" + +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/torrent.png\" title=" +#~ "\"Loaded Torrents\">Torrent" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/torrent.png\" title=" +#~ "\"载入的种子\">种子" + +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/eta.png\" title=" +#~ "\"Estimated Download Time\">ETA" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/eta.png\" title=\"预" +#~ "计剩余时间\">预计剩余时间" + +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=\"Data " +#~ "Downloaded\">RX" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=\"下载" +#~ "数据量\">下载" + +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=" +#~ "\"Data Uploaded\">TX" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=\"上传" +#~ "数据量\">上传" + +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=" +#~ "\"Download Speed\">Rate" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=\"下载" +#~ "速度\">下载速度" + +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=" +#~ "\"Upload Speed\">Rate" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=\"上传" +#~ "速度\">上传速度" + +#~ msgid "" +#~ "<img src=\"/themes/console/snark/images/stop_all.png\" title=\"Stop All " +#~ "Torrents\" alt=\"Stop All\">" +#~ msgstr "" +#~ "<img src=\"/themes/console/snark/images/stop_all.png\" title=\"全部停止\" " +#~ "alt=\"全部停止\">" + +#~ msgid "" +#~ "<img src=\"/themes/console/snark/images/start_all.png\" title=\"Start All " +#~ "Torrents\" alt=\"Start All\">" +#~ msgstr "" +#~ "<img src=\"/themes/console/snark/images/start_all.png\" title=\"全部开始" +#~ "\" alt=\"全部开始\">" + +#~ msgid "Torrent file {0} does not exist" +#~ msgstr "种子文件{0}不存在" + +#~ msgid "Copying torrent to {0}" +#~ msgstr "正在复制种子到{0}" + +#~ msgid "from {0}" +#~ msgstr "来源{0}" + +#~ msgid "" +#~ "<img src=\"/themes/console/snark/images/stop.png\" title=\"Stop Torrent\" " +#~ "alt=\"Stop\">" +#~ msgstr "" +#~ "<img src=\"/themes/console/snark/images/stop.png\" title=\"停止下载\" alt=" +#~ "\"停止\">" + +#~ msgid "" +#~ "<img src=\"/themes/console/snark/images/start.png\" title=\"Start Torrent" +#~ "\" alt=\"Start\">" +#~ msgstr "" +#~ "<img src=\"/themes/console/snark/images/start.png\" title=\"开始下载\" " +#~ "alt=\"开始\">" + +#~ msgid "" +#~ "<img src=\"/themes/console/snark/images/remove.png\" title=\"Remove " +#~ "Torrent\" alt=\"Remove\">" +#~ msgstr "" +#~ "<img src=\"/themes/console/snark/images/remove.png\" title=\"删除种子\" " +#~ "alt=\"删除种子\">" + +#~ msgid "" +#~ "<img src=\"/themes/console/snark/images/delete.png\" title=\"Delete " +#~ "Torrent + Data\" alt=\"Delete\">" +#~ msgstr "" +#~ "<img src=\"/themes/console/snark/images/delete.png\" title=\"删除种子 + 数" +#~ "据\" alt=\"删除种子 + 数据\">" + +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/add.png\">Add Torrent" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/add.png\">添加种子" + +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/create.png\">Create " +#~ "Torrent" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/create.png\">创建种子" + +#~ msgid "or " +#~ msgstr "或 " + +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/config.png" +#~ "\">Configuration" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/config.png\">设置" + +#~ msgid "Directory to store torrents and data" +#~ msgstr "种子及被做种文件的保存位置。" + +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/file.png\" title=" +#~ "\"File\" alt=\"File\"> " +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/file.png\" title=\"文" +#~ "件\" alt=\"文件\"> " + +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/size.png\" title=" +#~ "\"FileSize\" alt=\"FileSize\">Size" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/size.png\" title=\"文" +#~ "件大小\" alt=\"文件大小\">大小" + +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=" +#~ "\"Download Status\">Status" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=" +#~ "\"下载状态\">状态" + +#~ msgid "Details" +#~ msgstr "详情" + +#~ msgid "Cannot change the I2CP settings while torrents are active" +#~ msgstr "正在下载/上传,无法更改I2CP设置" + +#~ msgid "{0} torrents" +#~ msgstr "{0} 个种子" + +#~ msgid "Non-i2p tracker in \"{0}\", deleting it from our list of trackers!" +#~ msgstr "" +#~ "【匿名性警告】\"{0}\" 中含有非I2P Tracker,程序将从Tracker列表中将其删除。" + +#~ msgid "Custom tracker URL" +#~ msgstr "自定义TrackerURL" + +#~ msgid "Configure" +#~ msgstr "设置" diff --git a/apps/i2ptunnel/java/bundle-messages.bat b/apps/i2ptunnel/java/bundle-messages.bat index 90feca972..20b42773b 100644 --- a/apps/i2ptunnel/java/bundle-messages.bat +++ b/apps/i2ptunnel/java/bundle-messages.bat @@ -9,9 +9,11 @@ if not exist ..\locale\*.only goto updateALL rem put a messages_xx.only(eg messages_zh.only) into locale folder rem this script will only touch the po file(eg zh) you specified, leaving other po files untact. - +echo [tip] Puting a messages_{LangCode}.only (eg messages_zh.only) +echo into locale folder will restrict the PO file update +echo process to your choosen language ONLY. for %%i in (..\locale\*.only) do set PO=%%~ni -echo [Notice] Yu choose to Ony update the choosen file: %PO%.po +echo [info] %PO%.po found, will ONLY update file : %PO%.po for %%i in (..\locale\*.po) do if not %%~ni==%PO% ren %%i %%~ni.po- call sh --login %cd%\bmsg.sh diff --git a/apps/i2ptunnel/locale/messages_zh.po b/apps/i2ptunnel/locale/messages_zh.po index f6efbfd3b..6fdc776cb 100644 --- a/apps/i2ptunnel/locale/messages_zh.po +++ b/apps/i2ptunnel/locale/messages_zh.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2ptunnel\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-10-04 02:45+0000\n" +"POT-Creation-Date: 2011-02-09 15:20+0000\n" "PO-Revision-Date: 2010-05-29 10:57+0800\n" "Last-Translator: walking <walking@mail.i2p>\n" "Language-Team: foo <foo@bar>\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Chinese\n" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:492 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474 #, java-format msgid "" "To visit the destination in your host database, click <a href=\"{0}\">here</" @@ -28,65 +28,109 @@ msgstr "" "\"{0}\">这里</a>。要访问【地址助手】返回的目标主机请点<a href=\"{1}\">这里</" "a>。" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:909 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931 msgid "" "Click a link below to look for an address helper by using a \"jump\" service:" msgstr "" "请点击下面的链接通过【跳转(Jump)】服务提供的【地址助手】链接跳转至域名对应的" "主机:" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:372 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336 +msgid "internal" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:171 +msgid "" +"Invalid form submission, probably because you used the 'back' or 'reload' " +"button on your browser. Please resubmit." +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218 +msgid "Configuration reloaded for all tunnels" +msgstr "" + +#. and give them something to look at in any case +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:230 +#, fuzzy +msgid "Starting tunnel" +msgstr "正在启动..." + +#. and give them something to look at in any case +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:243 +msgid "Stopping tunnel" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:311 +msgid "Configuration changes saved" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314 +msgid "Failed to save configuration" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398 msgid "New Tunnel" msgstr "新建隧道" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:392 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418 msgid "Standard client" msgstr "标准客户端" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:393 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419 msgid "HTTP client" msgstr "HTTP 客户端" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:394 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420 msgid "IRC client" msgstr "IRC 客户端" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:395 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:421 msgid "Standard server" msgstr "标准服务器" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:396 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:422 msgid "HTTP server" msgstr "HTTP 服务器" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:397 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:423 msgid "SOCKS 4/4a/5 proxy" msgstr "SOCKS4/4A/5 代理" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:424 msgid "SOCKS IRC proxy" msgstr "SOCKS IRC 代理" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:399 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:425 msgid "CONNECT/SSL/HTTPS proxy" msgstr "CONNECT/SSL/HTTPS 代理" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:400 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:426 msgid "IRC server" msgstr "IRC 服务器" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:401 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:427 msgid "Streamr client" msgstr "Streamr 客户端" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:402 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:428 msgid "Streamr server" msgstr "Streamr 服务器" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:403 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:429 msgid "HTTP bidir" msgstr "双向http" +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290 +msgid "Host not set" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:521 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:272 +msgid "Port not set" +msgstr "" + #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:73 msgid "I2P Tunnel Manager - Edit Client Tunnel" msgstr "I2P 隧道管理器 - 编辑客户端隧道" @@ -111,14 +155,14 @@ msgstr "名称" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:116 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:116 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:246 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:270 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:279 msgid "Type" msgstr "类型" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:120 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:120 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:226 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:358 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:386 msgid "Description" msgstr "描述" @@ -129,83 +173,66 @@ msgstr "目标" #: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:162 msgid "Access Point" msgstr "接入点" #: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:150 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:192 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:153 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:167 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:213 msgid "required" msgstr "必要" -#: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:159 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:178 msgid "Reachable by" msgstr "访问地址" -#: ../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 "本地(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 "任何人(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地址)" - -#: ../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 "其他" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:195 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:180 msgid "Outproxies" msgstr "出口代理" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:187 msgid "Tunnel Destination" msgstr "隧道目标" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:214 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:199 msgid "name or destination" msgstr "名称或描述" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202 +msgid "b32 not recommended" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208 msgid "Shared Client" msgstr "共享客户端" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:212 msgid "" "(Share tunnels with other clients and irc/httpclients? Change requires " "restart of client proxy)" msgstr "(与其他客户端例如IRC/HTTP共享隧道?修改需要重新启动)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:216 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:124 msgid "Auto Start" msgstr "自动启动" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:232 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:128 msgid "(Check the Box for 'YES')" msgstr "(选中表示\"是\")" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:234 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:249 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:243 msgid "Advanced networking options" msgstr "高级网络设置" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224 msgid "" "(NOTE: when this client proxy is configured to share tunnels, then these " "options are for all the shared proxy clients!)" @@ -213,246 +240,273 @@ msgstr "" "(注意:此客户代理被设置使用共享隧道时,这些设置将影响所有使用共享隧道的客户" "端!)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:238 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:251 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245 msgid "Tunnel Options" msgstr "隧道选项" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:240 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:253 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:247 msgid "Length" msgstr "长度" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:260 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:254 msgid "0 hop tunnel (low anonymity, low latency)" msgstr "直连(匿名性无,延迟低)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:251 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:264 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:258 msgid "1 hop tunnel (medium anonymity, medium latency)" msgstr "隧道跳点x1(匿名性中,延迟中)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:255 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:268 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:262 msgid "2 hop tunnel (high anonymity, high latency)" msgstr "隧道跳点x2(匿名性高,延迟高)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:259 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:272 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:266 msgid "3 hop tunnel (very high anonymity, poor performance)" msgstr "隧道跳点x3(匿名性优,影响性能)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:268 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:281 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:256 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:275 msgid "hop tunnel (very poor performance)" msgstr "跳点隧道(严重影响性能)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:273 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:286 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:261 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:280 msgid "Variance" msgstr "随机变化" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:293 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:268 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:287 msgid "0 hop variance (no randomisation, consistant performance)" msgstr "隧道长度恒定(随机性无,性能稳定)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:284 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:297 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:272 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:291 msgid "" "+ 0-1 hop variance (medium additive randomisation, subtractive performance)" msgstr "隧道长度+ 0-1(随机性中,影响性能)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:288 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295 msgid "" "+ 0-2 hop variance (high additive randomisation, subtractive performance)" msgstr "隧道长度+ 0-2(随机性高,影响性能)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:292 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:299 msgid "+/- 0-1 hop variance (standard randomisation, standard performance)" msgstr "隧道长度+/- 0-1(随机性标准,正常性能)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:284 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:303 msgid "+/- 0-2 hop variance (not recommended)" msgstr "隧道程度+/- 0-2(不推荐)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:315 msgid "hop variance" msgstr "节点数量" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:313 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:326 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:320 msgid "Count" msgstr "计数" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:320 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:333 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:327 msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)" msgstr "出/入站隧道x1(带宽低,低可靠性)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:324 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:331 msgid "" "2 inbound, 2 outbound tunnels (standard bandwidth usage, standard " "reliability)" msgstr "出/入站隧道x2(带宽标准,标准稳定性)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:328 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335 msgid "" "3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)" msgstr "出/入站隧道x3(带宽高,高稳定性)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:337 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:350 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:344 msgid "tunnels" msgstr "隧道" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:342 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:355 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349 msgid "Backup Count" msgstr "备用数量" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:349 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:362 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:356 msgid "0 backup tunnels (0 redundancy, no added resource usage)" msgstr "无备用隧道(无冗余,不增加资源占用)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:353 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:366 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:360 msgid "1 backup tunnel each direction (low redundancy, low resource usage)" msgstr "备用隧道对x1 (低冗余,低资源占用)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:357 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:370 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364 msgid "" "2 backup tunnels each direction (medium redundancy, medium resource usage)" msgstr "备用隧道对x2 (中冗余,中资源占用)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:361 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:374 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:349 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:368 msgid "3 backup tunnels each direction (high redundancy, high resource usage)" msgstr "备用隧道对x3 (高冗余,高资源占用)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:370 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:383 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:358 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377 msgid "backup tunnels" msgstr "备用隧道" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:377 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:390 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:384 msgid "Profile" msgstr "连接类型" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:384 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:372 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:391 msgid "interactive connection" msgstr "速度连接" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:376 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:395 msgid "bulk connection (downloads/websites/BT)" msgstr "效率连接(下载/WEB/BT)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:390 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:378 msgid "Delay Connect" msgstr "连接延迟断开" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:394 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:382 msgid "for request/response connections" msgstr "单请求/响应连接" -#: ../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选项" +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399 +#, fuzzy +msgid "Router I2CP Address" +msgstr "Base32地址" -#: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401 msgid "Host" msgstr "主机" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java: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/editClient_jsp.java:396 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:148 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:244 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:266 msgid "Port" msgstr "端口" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:410 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:406 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479 msgid "Reduce tunnel quantity when idle" msgstr "空闲时缩减隧道数量" -#: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:408 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:422 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:430 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:442 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:452 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:472 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:419 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481 msgid "Enable" msgstr "启用" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:416 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:449 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:412 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:485 msgid "Reduced tunnel count" msgstr "削减后的隧道数量" -#: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:416 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:489 msgid "Idle minutes" msgstr "空闲时间(分钟)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:424 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420 msgid "Close tunnels when idle" msgstr "空闲时关闭隧道" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:430 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:426 msgid "New Keys on Reopen" msgstr "重新打开隧道时使用新密钥" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:438 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435 msgid "Disable" msgstr "禁用" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:444 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440 msgid "Delay tunnel open until required" msgstr "仅在请求时打开" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:454 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:450 msgid "Persistent private key" msgstr "永久私有密钥" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:460 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:456 msgid "File" msgstr "文件" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:460 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:220 msgid "Local destination" msgstr "本地目标" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:468 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464 msgid "(if known)" msgstr "(如果已知)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:472 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:489 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:470 +#, fuzzy +msgid "Local Authorization" +msgstr "本地目标" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490 +#, fuzzy +msgid "Username" +msgstr "网站名称" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:480 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:494 +msgid "Password" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484 +msgid "Outproxy Authorization" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502 +msgid "Jump URL List" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:508 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525 msgid "Custom options" msgstr "自定义选项" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:512 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:529 msgid "" "NOTE: If tunnel is currently running, most changes will not take effect " "until tunnel is stopped and restarted." @@ -460,18 +514,18 @@ msgstr "" "注意:如果当前隧道已经启动,设置需要【停止】并重新【启动】相应隧道后才能生" "效。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:478 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:514 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531 msgid "Cancel" msgstr "取消" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:482 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535 msgid "Delete" msgstr "删除" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:501 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:520 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537 msgid "Save" msgstr "保存" @@ -487,88 +541,126 @@ msgstr "服务器隧道设置" msgid "New server settings" msgstr "新建服务器设置" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:214 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:199 msgid "Website name" msgstr "网站名称" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:218 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:203 msgid "(leave blank for outproxies)" msgstr "(出口代理这里请置空)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:208 msgid "Private key file" msgstr "私钥文件" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:230 msgid "Add to local addressbook" msgstr "添加至本地地址簿" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:415 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:237 +msgid "Hostname Signature" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417 msgid "Encrypt Leaseset" msgstr "加密赁集" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:421 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423 msgid "Encryption Key" msgstr "加密密钥" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:425 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427 msgid "Generate New Key" msgstr "生成新密钥" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429 msgid "Generate" msgstr "生成" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:487 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:523 msgid "(Tunnel must be stopped first)" msgstr "(必须先停止隧道)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433 msgid "Restricted Access List" msgstr "限制访问列表" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:437 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439 +msgid "Whitelist" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443 +msgid "Blacklist" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447 msgid "Access List" msgstr "访问列表" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:441 -msgid "(Restrict to these clients only)" -msgstr "(仅允许这些客户访问)" +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451 +msgid "Inbound connection limits (0 to disable)" +msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:457 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453 +#, fuzzy +msgid "Per client" +msgstr "HTTP 客户端" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455 +#, fuzzy +msgid "Per minute" +msgstr "空闲时间(分钟)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459 +msgid "Per hour" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463 +msgid "Per day" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467 +msgid "Total" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475 +msgid "Max concurrent connections (0 to disable)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493 msgid "New Certificate type" msgstr "新建证书类型" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495 msgid "None" msgstr "无" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499 msgid "Hashcash (effort)" msgstr "Hashcash (强度)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:469 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505 msgid "Hashcash Calc Time" msgstr "Hashcash 计算时间" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:471 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507 msgid "Estimate" msgstr "估算" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:473 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509 msgid "Hidden" msgstr "隐藏" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:477 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513 msgid "Signed (signed by)" msgstr "签名(签名者)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:483 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519 msgid "Modify Certificate" msgstr "修改证书" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:485 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521 msgid "Modify" msgstr "修改" @@ -618,7 +710,7 @@ msgstr "预览" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:113 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:177 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:250 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:278 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:297 msgid "Status" msgstr "状态" @@ -631,30 +723,30 @@ msgid "No Preview" msgstr "无预览" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:184 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:285 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:304 msgid "Starting..." msgstr "正在启动..." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:191 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:205 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java: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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:339 msgid "Stop" msgstr "停止" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:198 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:332 msgid "Running" msgstr "运行中" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:212 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:346 msgid "Stopped" msgstr "已停止" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:334 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:353 msgid "Start" msgstr "启动" @@ -663,12 +755,12 @@ msgid "New server tunnel" msgstr "新建服务器隧道" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:236 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:368 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:396 msgid "Standard" msgstr "标准" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:238 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:370 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:398 msgid "Create" msgstr "创建" @@ -677,25 +769,48 @@ msgid "I2P Client Tunnels" msgstr "I2P客户端隧道" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:248 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:274 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:283 msgid "Interface" msgstr "网络接口" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:299 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:318 msgid "Standby" msgstr "等待" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:346 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:363 msgid "Outproxy" msgstr "出口代理" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:350 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:367 msgid "Destination" msgstr "目标" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:366 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:381 +#, fuzzy +msgid "none" +msgstr "无" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394 msgid "New client tunnel" msgstr "新建客户隧道" +#~ msgid "Locally (127.0.0.1)" +#~ msgstr "本地(127.0.0.1)" + +#~ msgid "Everyone (0.0.0.0)" +#~ msgstr "任何人(0.0.0.0)" + +#~ msgid "LAN Hosts (Please specify your LAN address)" +#~ msgstr "局域网(请指定LAN地址)" + +#~ msgid "Other" +#~ msgstr "其他" + +#~ msgid "I2CP Options" +#~ msgstr "I2CP选项" + +#~ msgid "(Restrict to these clients only)" +#~ msgstr "(仅允许这些客户访问)" + #~ msgid "Unimplemented" #~ msgstr "尚未实现" diff --git a/apps/routerconsole/java/bundle-messages.bat b/apps/routerconsole/java/bundle-messages.bat index 90feca972..cb72cc5d1 100644 --- a/apps/routerconsole/java/bundle-messages.bat +++ b/apps/routerconsole/java/bundle-messages.bat @@ -9,9 +9,11 @@ if not exist ..\locale\*.only goto updateALL rem put a messages_xx.only(eg messages_zh.only) into locale folder rem this script will only touch the po file(eg zh) you specified, leaving other po files untact. - +echo [tip] Puting a messages_{LangCode}.only (eg messages_zh.only) +echo into locale folder will restrict the PO file update +echo process to your choosen language ONLY. for %%i in (..\locale\*.only) do set PO=%%~ni -echo [Notice] Yu choose to Ony update the choosen file: %PO%.po +echo [info] %PO%.only found, will ONLY update file : %PO%.po for %%i in (..\locale\*.po) do if not %%~ni==%PO% ren %%i %%~ni.po- call sh --login %cd%\bmsg.sh diff --git a/apps/routerconsole/locale/messages_zh.po b/apps/routerconsole/locale/messages_zh.po index 4e7419ac0..06a108aa2 100644 --- a/apps/routerconsole/locale/messages_zh.po +++ b/apps/routerconsole/locale/messages_zh.po @@ -1,5112 +1,5780 @@ -# 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 <foo@bar>, 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: I2P routerconsole\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-10-04 02:45+0000\n" -"PO-Revision-Date: \n" -"Last-Translator: walking <walking@mail.i2p>\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: Chinese\n" -"X-Poedit-Country: CHINA\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ../../../router/java/src/net/i2p/router/Blocklist.java:126 -#, java-format -msgid "Banned by router hash: {0}" -msgstr "按路由器 HASH 封杀: {0}" - -#: ../../../router/java/src/net/i2p/router/Blocklist.java:128 -msgid "Banned by router hash" -msgstr "已按路由 HASH 封杀" - -#. 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 <a target=\"_top\" href=\"logs.jsp\">logs</a> and if nothing helps, read the <a target=\"_top\" href=\"http://www.i2p2.de/faq.html\">FAQ</a> about reseeding manually." -msgstr "请保证HTTP通信没有受阻,检查 <a target=\"_top\" href=\"logs.jsp\">日志</a> ,如果问题仍无法解决,请参照 <a target=\"_top\" href=\"http://www.i2p2.de/faq.html\">FAQ</a> 进行手动补种。" - -#: ../../../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 "正在补种:获取补种连接..." - -#: ../../../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 "上次补种尝试失败(补种服务器未返回任何路由信息URL)。" - -#: ../../../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 "上次补种失败(exception caught)." - -#: ../../../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 "以路由Hash区分的远程节点" - -#: ../../../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 "进/出站平滑传输率(Kbyte/s)" - -#: ../../../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 "拥塞窗口,即每次确认前可发送的字节量" - -#: ../../../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 "慢启动门槛" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 -msgid "The round trip time in milliseconds" -msgstr "往返时间单位毫秒" - -#: ../../../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 "环行时间的标准差单位毫秒" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 -msgid "The retransmit timeout in milliseconds" -msgstr "重传输超时时间单位毫秒" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 -msgid "Current maximum send packet size / estimated maximum receive packet size (bytes)" -msgstr "当前发送数据包的最大大小/预计接收数据包的最大大小(字节)" - -#: ../../../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:409 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:627 -#, 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("<tr> <td colspan=\"11\"><hr></td></tr>\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 "按节点Hash" - -#: ../../../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 "按RTT偏差" - -#: ../../../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 "按出站最大传输单元" - -#: ../../../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("<tr><td colspan=\"16\"><hr></td></tr>\n"); -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2102 -msgid "SUMMARY" -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:525 -msgid "Rejecting tunnels: Request overload" -msgstr "拒绝共享:请求过多" - -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:550 -msgid "Rejecting tunnels: Connection limit" -msgstr "拒绝共享:连接受限" - -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:744 -msgid "Dropping tunnel requests: High load" -msgstr "忽略共享请求:高负载" - -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:753 -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:18 -msgid "Azerbaijan" -msgstr "阿塞拜疆" - -#: ../java/build/Countries.java:19 -msgid "Bosnia and Herzegovina" -msgstr "波黑" - -#: ../java/build/Countries.java:20 -msgid "Barbados" -msgstr "巴巴多斯" - -#: ../java/build/Countries.java:21 -msgid "Bangladesh" -msgstr "孟加拉" - -#: ../java/build/Countries.java:22 -msgid "Belgium" -msgstr "比利时" - -#: ../java/build/Countries.java:23 -msgid "Burkina Faso" -msgstr "布基纳法索" - -#: ../java/build/Countries.java:24 -msgid "Bulgaria" -msgstr "保加利亚" - -#: ../java/build/Countries.java:25 -msgid "Bahrain" -msgstr "巴林" - -#: ../java/build/Countries.java:26 -msgid "Burundi" -msgstr "不丹" - -#: ../java/build/Countries.java:27 -msgid "Benin" -msgstr "贝宁" - -#: ../java/build/Countries.java:28 -msgid "Bermuda" -msgstr "百慕大" - -#: ../java/build/Countries.java:29 -msgid "Brunei Darussalam" -msgstr "文莱达鲁萨兰" - -#: ../java/build/Countries.java:30 -msgid "Bolivia" -msgstr "玻利维亚" - -#: ../java/build/Countries.java:31 -msgid "Brazil" -msgstr "巴西" - -#: ../java/build/Countries.java:32 -msgid "Bahamas" -msgstr "巴哈马" - -#: ../java/build/Countries.java:33 -msgid "Bhutan" -msgstr "不丹" - -#: ../java/build/Countries.java:34 -msgid "Bouvet Island" -msgstr "布韦群岛" - -#: ../java/build/Countries.java:35 -msgid "Botswana" -msgstr "伯兹瓦纳" - -#: ../java/build/Countries.java:36 -msgid "Belarus" -msgstr "白俄罗斯" - -#: ../java/build/Countries.java:37 -msgid "Belize" -msgstr "伯利兹" - -#: ../java/build/Countries.java:38 -msgid "Canada" -msgstr "加拿大" - -#: ../java/build/Countries.java:39 -msgid "The Democratic Republic of the Congo" -msgstr "刚果" - -#: ../java/build/Countries.java:40 -msgid "Central African Republic" -msgstr "中非" - -#: ../java/build/Countries.java:41 -msgid "Congo" -msgstr "Congo" - -#: ../java/build/Countries.java:42 -msgid "Switzerland" -msgstr "瑞士" - -#: ../java/build/Countries.java:43 -msgid "Cote D'Ivoire" -msgstr "象牙海岸" - -#: ../java/build/Countries.java:44 -msgid "Cook Islands" -msgstr "库克群岛" - -#: ../java/build/Countries.java:45 -msgid "Chile" -msgstr "智利" - -#: ../java/build/Countries.java:46 -msgid "Cameroon" -msgstr "喀麦隆" - -#: ../java/build/Countries.java:47 -msgid "China" -msgstr "中国" - -#: ../java/build/Countries.java:48 -msgid "Colombia" -msgstr "哥伦比亚" - -#: ../java/build/Countries.java:49 -msgid "Costa Rica" -msgstr "哥斯达黎加" - -#: ../java/build/Countries.java:50 -msgid "Serbia and Montenegro" -msgstr "塞尔维亚与黑山" - -#: ../java/build/Countries.java:51 -msgid "Cuba" -msgstr "古巴" - -#: ../java/build/Countries.java:52 -msgid "Cape Verde" -msgstr "佛得角" - -#: ../java/build/Countries.java:53 -msgid "Cyprus" -msgstr "塞浦路斯" - -#: ../java/build/Countries.java:54 -msgid "Czech Republic" -msgstr "捷克" - -#: ../java/build/Countries.java:55 -msgid "Germany" -msgstr "德国" - -#: ../java/build/Countries.java:56 -msgid "Djibouti" -msgstr "吉布提" - -#: ../java/build/Countries.java:57 -msgid "Denmark" -msgstr "丹麦" - -#: ../java/build/Countries.java:58 -msgid "Dominica" -msgstr "多米尼" - -#: ../java/build/Countries.java:59 -msgid "Dominican Republic" -msgstr "多米尼加联邦" - -#: ../java/build/Countries.java:60 -msgid "Algeria" -msgstr "阿尔及利亚" - -#: ../java/build/Countries.java:61 -msgid "Ecuador" -msgstr "厄瓜多尔" - -#: ../java/build/Countries.java:62 -msgid "Estonia" -msgstr "爱沙尼亚" - -#: ../java/build/Countries.java:63 -msgid "Egypt" -msgstr "埃及" - -#: ../java/build/Countries.java:64 -msgid "Eritrea" -msgstr "厄立特里亚" - -#: ../java/build/Countries.java:65 -msgid "Spain" -msgstr "西班牙" - -#: ../java/build/Countries.java:66 -msgid "Ethiopia" -msgstr "埃塞俄比亚" - -#: ../java/build/Countries.java:67 -msgid "Finland" -msgstr "芬兰" - -#: ../java/build/Countries.java:68 -msgid "Fiji" -msgstr "斐济" - -#: ../java/build/Countries.java:69 -msgid "Falkland Islands (Malvinas)" -msgstr "福克兰群岛" - -#: ../java/build/Countries.java:70 -msgid "Federated States of Micronesia" -msgstr "密克罗尼西亚" - -#: ../java/build/Countries.java:71 -msgid "Faroe Islands" -msgstr "法罗群岛" - -#: ../java/build/Countries.java:72 -msgid "France" -msgstr "法国" - -#: ../java/build/Countries.java:73 -msgid "Gabon" -msgstr "加蓬" - -#: ../java/build/Countries.java:74 -msgid "United Kingdom" -msgstr "英国" - -#: ../java/build/Countries.java:75 -msgid "Grenada" -msgstr "格林纳达" - -#: ../java/build/Countries.java:76 -msgid "Georgia" -msgstr "格鲁吉亚" - -#: ../java/build/Countries.java:77 -msgid "French Guiana" -msgstr "圭亚那" - -#: ../java/build/Countries.java:78 -msgid "Ghana" -msgstr "加纳" - -#: ../java/build/Countries.java:79 -msgid "Gibraltar" -msgstr "直布罗陀" - -#: ../java/build/Countries.java:80 -msgid "Greenland" -msgstr "格陵兰群岛" - -#: ../java/build/Countries.java:81 -msgid "Gambia" -msgstr "冈比亚" - -#: ../java/build/Countries.java:82 -msgid "Guinea" -msgstr "几内亚" - -#: ../java/build/Countries.java:83 -msgid "Guadeloupe" -msgstr "瓜德罗普岛" - -#: ../java/build/Countries.java:84 -msgid "Equatorial Guinea" -msgstr "赤道几内亚" - -#: ../java/build/Countries.java:85 -msgid "Greece" -msgstr "希腊" - -#: ../java/build/Countries.java:86 -msgid "South Georgia and the South Sandwich Islands" -msgstr "南乔治亚岛和南桑德韦奇岛" - -#: ../java/build/Countries.java:87 -msgid "Guatemala" -msgstr "危地马拉" - -#: ../java/build/Countries.java:88 -msgid "Guam" -msgstr "关岛" - -#: ../java/build/Countries.java:89 -msgid "Guinea-Bissau" -msgstr "几内亚比绍" - -#: ../java/build/Countries.java:90 -msgid "Guyana" -msgstr "圭亚那" - -#: ../java/build/Countries.java:91 -msgid "Hong Kong" -msgstr "香港" - -#: ../java/build/Countries.java:92 -msgid "Honduras" -msgstr "洪都拉斯" - -#: ../java/build/Countries.java:93 -msgid "Croatia" -msgstr "克罗蒂亚" - -#: ../java/build/Countries.java:94 -msgid "Haiti" -msgstr "海地" - -#: ../java/build/Countries.java:95 -msgid "Hungary" -msgstr "匈牙利" - -#: ../java/build/Countries.java:96 -msgid "Indonesia" -msgstr "印尼" - -#: ../java/build/Countries.java:97 -msgid "Ireland" -msgstr "爱尔兰" - -#: ../java/build/Countries.java:98 -msgid "Israel" -msgstr "以色列" - -#: ../java/build/Countries.java:99 -msgid "India" -msgstr "印度" - -#: ../java/build/Countries.java:100 -msgid "British Indian Ocean Territory" -msgstr "英属印度洋地区" - -#: ../java/build/Countries.java:101 -msgid "Iraq" -msgstr "伊拉克" - -#: ../java/build/Countries.java:102 -msgid "Islamic Republic of Iran" -msgstr "伊朗" - -#: ../java/build/Countries.java:103 -msgid "Iceland" -msgstr "冰岛" - -#: ../java/build/Countries.java:104 -msgid "Italy" -msgstr "意大利" - -#: ../java/build/Countries.java:105 -msgid "Jamaica" -msgstr "牙买加" - -#: ../java/build/Countries.java:106 -msgid "Jordan" -msgstr "约旦" - -#: ../java/build/Countries.java:107 -msgid "Japan" -msgstr "日本" - -#: ../java/build/Countries.java:108 -msgid "Kenya" -msgstr "肯尼亚" - -#: ../java/build/Countries.java:109 -msgid "Kyrgyzstan" -msgstr "吉尔吉斯斯坦" - -#: ../java/build/Countries.java:110 -msgid "Cambodia" -msgstr "柬埔塞" - -#: ../java/build/Countries.java:111 -msgid "Kiribati" -msgstr "基里巴斯" - -#: ../java/build/Countries.java:112 -msgid "Comoros" -msgstr "科摩罗" - -#: ../java/build/Countries.java:113 -msgid "Saint Kitts and Nevis" -msgstr "圣克里斯多福与尼维斯" - -#: ../java/build/Countries.java:114 -msgid "Republic of Korea" -msgstr "韩国" - -#: ../java/build/Countries.java:115 -msgid "Kuwait" -msgstr "科威特" - -#: ../java/build/Countries.java:116 -msgid "Cayman Islands" -msgstr "开曼群岛" - -#: ../java/build/Countries.java:117 -msgid "Kazakhstan" -msgstr "哈萨克斯坦" - -#: ../java/build/Countries.java:118 -msgid "Lao People's Democratic Republic" -msgstr "老挝" - -#: ../java/build/Countries.java:119 -msgid "Lebanon" -msgstr "黎巴嫩" - -#: ../java/build/Countries.java:120 -msgid "Saint Lucia" -msgstr "圣露西亚岛" - -#: ../java/build/Countries.java:121 -msgid "Liechtenstein" -msgstr "列支敦士登" - -#: ../java/build/Countries.java:122 -msgid "Sri Lanka" -msgstr "斯里兰卡" - -#: ../java/build/Countries.java:123 -msgid "Liberia" -msgstr "利比里亚" - -#: ../java/build/Countries.java:124 -msgid "Lesotho" -msgstr "莱索托" - -#: ../java/build/Countries.java:125 -msgid "Lithuania" -msgstr "立陶宛" - -#: ../java/build/Countries.java:126 -msgid "Luxembourg" -msgstr "卢森堡" - -#: ../java/build/Countries.java:127 -msgid "Latvia" -msgstr "拉脱维亚" - -#: ../java/build/Countries.java:128 -msgid "Libyan Arab Jamahiriya" -msgstr "利比亚" - -#: ../java/build/Countries.java:129 -msgid "Morocco" -msgstr "摩洛哥" - -#: ../java/build/Countries.java:130 -msgid "Monaco" -msgstr "摩纳哥" - -#: ../java/build/Countries.java:131 -msgid "Republic of Moldova" -msgstr "摩尔多瓦" - -#: ../java/build/Countries.java:132 -msgid "Madagascar" -msgstr "马达加斯加" - -#: ../java/build/Countries.java:133 -msgid "Marshall Islands" -msgstr "马绍尔群岛" - -#: ../java/build/Countries.java:134 -msgid "The Former Yugoslav Republic of Macedonia" -msgstr "前南斯拉夫之马其顿共和国" - -#: ../java/build/Countries.java:135 -msgid "Mali" -msgstr "马里" - -#: ../java/build/Countries.java:136 -msgid "Myanmar" -msgstr "缅甸" - -#: ../java/build/Countries.java:137 -msgid "Mongolia" -msgstr "蒙古" - -#: ../java/build/Countries.java:138 -msgid "Macao" -msgstr "澳门" - -#: ../java/build/Countries.java:139 -msgid "Northern Mariana Islands" -msgstr "北马里亚纳群岛" - -#: ../java/build/Countries.java:140 -msgid "Martinique" -msgstr "马提尼克岛" - -#: ../java/build/Countries.java:141 -msgid "Mauritania" -msgstr "毛里塔尼亚" - -#: ../java/build/Countries.java:142 -msgid "Montserrat" -msgstr "蒙特塞拉特" - -#: ../java/build/Countries.java:143 -msgid "Malta" -msgstr "马尔他" - -#: ../java/build/Countries.java:144 -msgid "Mauritius" -msgstr "毛里求斯" - -#: ../java/build/Countries.java:145 -msgid "Maldives" -msgstr "马尔代夫" - -#: ../java/build/Countries.java:146 -msgid "Malawi" -msgstr "马拉维" - -#: ../java/build/Countries.java:147 -msgid "Mexico" -msgstr "墨西哥" - -#: ../java/build/Countries.java:148 -msgid "Malaysia" -msgstr "马来西亚" - -#: ../java/build/Countries.java:149 -msgid "Mozambique" -msgstr "莫桑比克" - -#: ../java/build/Countries.java:150 -msgid "Namibia" -msgstr "纳米比亚" - -#: ../java/build/Countries.java:151 -msgid "New Caledonia" -msgstr "新喀里多尼亚" - -#: ../java/build/Countries.java:152 -msgid "Niger" -msgstr "尼日尔" - -#: ../java/build/Countries.java:153 -msgid "Norfolk Island" -msgstr "尼加拉瓜" - -#: ../java/build/Countries.java:154 -msgid "Nigeria" -msgstr "尼日利亚" - -#: ../java/build/Countries.java:155 -msgid "Nicaragua" -msgstr "尼加拉瓜" - -#: ../java/build/Countries.java:156 -msgid "Netherlands" -msgstr "荷兰" - -#: ../java/build/Countries.java:157 -msgid "Norway" -msgstr "挪威" - -#: ../java/build/Countries.java:158 -msgid "Nepal" -msgstr "尼泊尔" - -#: ../java/build/Countries.java:159 -msgid "Nauru" -msgstr "瑙鲁" - -#: ../java/build/Countries.java:160 -msgid "Niue" -msgstr "纽埃岛" - -#: ../java/build/Countries.java:161 -msgid "New Zealand" -msgstr "新西兰" - -#: ../java/build/Countries.java:162 -msgid "Oman" -msgstr "阿曼" - -#: ../java/build/Countries.java:163 -msgid "Panama" -msgstr "巴拿马" - -#: ../java/build/Countries.java:164 -msgid "Peru" -msgstr "秘鲁" - -#: ../java/build/Countries.java:165 -msgid "French Polynesia" -msgstr "玻利尼西亚" - -#: ../java/build/Countries.java:166 -msgid "Papua New Guinea" -msgstr "巴布亚新几内亚" - -#: ../java/build/Countries.java:167 -msgid "Philippines" -msgstr "菲律宾" - -#: ../java/build/Countries.java:168 -msgid "Pakistan" -msgstr "巴基斯坦" - -#: ../java/build/Countries.java:169 -msgid "Poland" -msgstr "波兰" - -#: ../java/build/Countries.java:170 -msgid "Saint Pierre and Miquelon" -msgstr "圣皮埃尔岛和密克隆" - -#: ../java/build/Countries.java:171 -msgid "Puerto Rico" -msgstr "波多黎各" - -#: ../java/build/Countries.java:172 -msgid "Palestinian Territory" -msgstr "巴勒斯坦地区" - -#: ../java/build/Countries.java:173 -msgid "Portugal" -msgstr "葡萄牙" - -#: ../java/build/Countries.java:174 -msgid "Palau" -msgstr "帕劳" - -#: ../java/build/Countries.java:175 -msgid "Paraguay" -msgstr "巴拉圭" - -#: ../java/build/Countries.java:176 -msgid "Qatar" -msgstr "卡塔尔" - -#: ../java/build/Countries.java:177 -msgid "Reunion" -msgstr "留尼汪岛" - -#: ../java/build/Countries.java:178 -msgid "Romania" -msgstr "罗马尼亚" - -#: ../java/build/Countries.java:179 -msgid "Serbia" -msgstr "塞尔维亚" - -#: ../java/build/Countries.java:180 -msgid "Russian Federation" -msgstr "俄联邦" - -#: ../java/build/Countries.java:181 -msgid "Rwanda" -msgstr "卢旺达" - -#: ../java/build/Countries.java:182 -msgid "Saudi Arabia" -msgstr "沙特阿拉伯" - -#: ../java/build/Countries.java:183 -msgid "Solomon Islands" -msgstr "所罗门群岛" - -#: ../java/build/Countries.java:184 -msgid "Seychelles" -msgstr "塞舌尔" - -#: ../java/build/Countries.java:185 -msgid "Sudan" -msgstr "苏丹" - -#: ../java/build/Countries.java:186 -msgid "Sweden" -msgstr "瑞典" - -#: ../java/build/Countries.java:187 -msgid "Singapore" -msgstr "新加坡" - -#: ../java/build/Countries.java:188 -msgid "Slovenia" -msgstr "斯洛文尼亚" - -#: ../java/build/Countries.java:189 -msgid "Slovakia" -msgstr "斯洛伐克" - -#: ../java/build/Countries.java:190 -msgid "Sierra Leone" -msgstr "塞拉利昂" - -#: ../java/build/Countries.java:191 -msgid "San Marino" -msgstr "圣马力诺" - -#: ../java/build/Countries.java:192 -msgid "Senegal" -msgstr "塞内加尔" - -#: ../java/build/Countries.java:193 -msgid "Somalia" -msgstr "索马里" - -#: ../java/build/Countries.java:194 -msgid "Suriname" -msgstr "苏里南" - -#: ../java/build/Countries.java:195 -msgid "Sao Tome and Principe" -msgstr "圣多美与普林西比共和国" - -#: ../java/build/Countries.java:196 -msgid "El Salvador" -msgstr "萨尔瓦多" - -#: ../java/build/Countries.java:197 -msgid "Syrian Arab Republic" -msgstr "叙利亚" - -#: ../java/build/Countries.java:198 -msgid "Swaziland" -msgstr "斯威士兰" - -#: ../java/build/Countries.java:199 -msgid "Turks and Caicos Islands" -msgstr "特克斯和凯科斯群岛" - -#: ../java/build/Countries.java:200 -msgid "Chad" -msgstr "乍得" - -#: ../java/build/Countries.java:201 -msgid "French Southern Territories" -msgstr "法属南半球领地" - -#: ../java/build/Countries.java:202 -msgid "Togo" -msgstr "多哥" - -#: ../java/build/Countries.java:203 -msgid "Thailand" -msgstr "泰国" - -#: ../java/build/Countries.java:204 -msgid "Tajikistan" -msgstr "塔吉克斯坦" - -#: ../java/build/Countries.java:205 -msgid "Tokelau" -msgstr "托克劳群岛" - -#: ../java/build/Countries.java:206 -msgid "Timor-Leste" -msgstr "东帝汶" - -#: ../java/build/Countries.java:207 -msgid "Turkmenistan" -msgstr "土库曼斯坦" - -#: ../java/build/Countries.java:208 -msgid "Tunisia" -msgstr "突尼斯" - -#: ../java/build/Countries.java:209 -msgid "Tonga" -msgstr "汤加" - -#: ../java/build/Countries.java:210 -msgid "Turkey" -msgstr "土耳其" - -#: ../java/build/Countries.java:211 -msgid "Trinidad and Tobago" -msgstr "特立尼达和多巴哥" - -#: ../java/build/Countries.java:212 -msgid "Tuvalu" -msgstr "图瓦鲁" - -#: ../java/build/Countries.java:213 -msgid "Taiwan" -msgstr "台湾" - -#: ../java/build/Countries.java:214 -msgid "United Republic of Tanzania" -msgstr "坦桑尼亚" - -#: ../java/build/Countries.java:215 -msgid "Ukraine" -msgstr "乌克兰" - -#: ../java/build/Countries.java:216 -msgid "Uganda" -msgstr "乌干达" - -#: ../java/build/Countries.java:217 -msgid "United States Minor Outlying Islands" -msgstr "美国本土外小岛屿" - -#: ../java/build/Countries.java:218 -msgid "United States" -msgstr "美国" - -#: ../java/build/Countries.java:219 -msgid "Uruguay" -msgstr "乌拉圭" - -#: ../java/build/Countries.java:220 -msgid "Uzbekistan" -msgstr "乌兹别克斯坦" - -#: ../java/build/Countries.java:221 -msgid "Holy See (Vatican City State)" -msgstr "梵地冈" - -#: ../java/build/Countries.java:222 -msgid "Saint Vincent and the Grenadines" -msgstr "圣文森特和格林纳丁斯" - -#: ../java/build/Countries.java:223 -msgid "Venezuela" -msgstr "委内瑞拉" - -#: ../java/build/Countries.java:224 -#: ../java/build/Countries.java:225 -msgid "Virgin Islands" -msgstr "维京群岛" - -#: ../java/build/Countries.java:226 -msgid "Viet Nam" -msgstr "越南" - -#: ../java/build/Countries.java:227 -msgid "Vanuatu" -msgstr "瓦努阿图" - -#: ../java/build/Countries.java:228 -msgid "Wallis and Futuna" -msgstr "瓦利斯群岛和富图纳群岛" - -#: ../java/build/Countries.java:229 -msgid "Samoa" -msgstr "东萨摩亚" - -#: ../java/build/Countries.java:230 -msgid "Yemen" -msgstr "也门" - -#: ../java/build/Countries.java:231 -msgid "Mayotte" -msgstr "马约特" - -#: ../java/build/Countries.java:232 -msgid "South Africa" -msgstr "南非" - -#: ../java/build/Countries.java:233 -msgid "Zambia" -msgstr "赞比亚" - -#: ../java/build/Countries.java:234 -msgid "Zimbabwe" -msgstr "津巴布韦" - -#: ../java/src/net/i2p/router/web/CSSHelper.java:57 -#: ../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" -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 "保存 WebApp 设置" - -#: ../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:387 -#: ../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 "WebApp 设置已保存" - -#: ../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 "Web程序" - -#: ../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 "未指定插件链接" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:289 -#, java-format -msgid "No update URL specified for {0}" -msgstr "{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:268 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180 -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:81 -#: ../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:230 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:237 -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 "" - -#: ../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 "" - -#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 -msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT" -msgstr "" - -#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 -msgid "CRIT" -msgstr "" - -#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 -msgid "DEBUG" -msgstr "" - -#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 -msgid "ERROR" -msgstr "" - -#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 -msgid "INFO" -msgstr "" - -#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 -msgid "WARN" -msgstr "" - -#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:199 -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:100 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376 -#: ../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:106 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:255 -#: ../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:382 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:142 -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 "正在启用笔记本模式" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:244 -msgid "Disabling laptop mode" -msgstr "正在禁用笔记本模式" - -#: ../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 "Bit/s" - -#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:170 -#, java-format -msgid "or {0} bytes per month maximum" -msgstr "或最多 {0} Byte/月(假设始终 7 天 x 24小时开机)" - -#: ../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 "程序启动时显示控制台" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:117 -msgid "Console is to be shown on startup" -msgstr "启动后显示控制台" - -#: ../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 "启动后不打开控制台" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:120 -msgid "Console is not to be shown on startup" -msgstr "启动后不显示控制台" - -#: ../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 <a href=\"graphs.jsp\">Graphs Page</a>" -msgstr "曲线图列表已更新,更新后的内容可能需要最多 60s 的时间才能在这里及 <a href=\"graphs.jsp\">统计图表</a>页面中反映出来。" - -#. 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} 跳点" - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:15 -#, java-format -msgid "1 tunnel" -msgid_plural "{0} tunnels" -msgstr[0] "{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("<tr><th></th><th>Inbound</th><th>Outbound</th></tr>\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 "英语" - -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 -msgid "French" -msgstr "法语" - -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 -msgid "German" -msgstr "德语" - -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 -msgid "Chinese" -msgstr "中文" - -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 -msgid "Dutch" -msgstr "荷兰语" - -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 -msgid "Russian" -msgstr "俄语" - -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 -msgid "Swedish" -msgstr "瑞士语" - -#: ../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 "正在更新新闻链接至" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:112 -msgid "Updating proxy host to" -msgstr "正在更新代理主机至" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:120 -msgid "Updating proxy port to" -msgstr "正在更新代理端口至" - -#: ../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 "正在更新更新链接至" - -#: ../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 "正在更新未签名软件链接至" - -#: ../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 "仅下载、验证并重启" - -#: ../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 "过去 {1} 统计 {0}" - -#: ../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 "赁集" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:128 -msgid "LeaseSet" -msgstr "赁集" - -#: ../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 "网关" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:164 -msgid "Lease" -msgstr "租赁" - -#: ../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 "查看赁集" - -#: ../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 "NetDb路由器统计" - -#: ../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 "地址" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:373 -msgid "cost" -msgstr "开销" - -#: ../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 "" - -#: ../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 "" - -#: ../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}B" - -#: ../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("<b>" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + "</b>"); -#: ../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} 已安装,重启I2P后生效" - -#: ../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 "分组(容量)" - -#: ../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 "种子节点与整合节点" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:188 -msgid "Caps" -msgstr "容量" - -#: ../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 "10m响应时间" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195 -msgid "1h Resp. Time" -msgstr "1h响应时间" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196 -msgid "1d Resp. Time" -msgstr "1d响应时间" - -#: ../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 "1h失败率" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 -msgid "1d Fail Rate" -msgstr "1d失败率" - -#: ../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 "由节点描述信息管理器决定" - -#: ../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 "netDb中的容量,与描述信息无关。" - -#. capabilities -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 -#: ../java/strings/Strings.java:81 -msgid "caps" -msgstr "容量" - -#: ../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 "该节点一分钟由单一隧道通过的数据峰值(byte/s)。" - -#: ../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 "出站(byte/s)" - -#. def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3); -#: ../java/src/net/i2p/router/web/StatSummarizer.java:183 -msgid "Inbound bytes/sec" -msgstr "入站(byte/s)" - -#: ../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 "自运行起无事件" - -#: ../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 "I2P 使用帮助与常见问答" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:42 -msgid "Help & FAQ" -msgstr "" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:54 -msgid "Configure startup of clients and webapps (services); manually start dormant services" -msgstr "设置客户程序及Web程序(服务)的启动;手动启动重要服务" - -#: ../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 "管理您的 I2P HOST表(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 "匿名BT" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:74 -msgid "Anonymous webmail client" -msgstr "匿名Web邮件客户端" - -#: ../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 "内置的匿名Web服务器" - -#: ../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路由器的列表" - -#: ../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 "I2P隧道" - -#: ../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 "正常" - -#: ../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 "错误-SymmeticNAT" - -#: ../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 "警告-种子节点因防火墙受限" - -#: ../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=新端口并重启程序" - -#: ../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 "Lease已过期" - -#. 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 "接收" - -#: ../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 "发送" - -#: ../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 "点击【重启】完成安装" - -#: ../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 "匿名BT客户端" - -#: ../java/strings/Strings.java:14 -msgid "i2ptunnel" -msgstr "I2P隧道" - -#: ../java/strings/Strings.java:15 -msgid "susimail" -msgstr "匿名邮箱" - -#: ../java/strings/Strings.java:16 -msgid "susidns" -msgstr "susiDNS" - -#: ../java/strings/Strings.java:17 -msgid "routerconsole" -msgstr "路由控制台" - -#. 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 "匿名主页服务器" - -#: ../java/strings/Strings.java:26 -msgid "I2P webserver (eepsite)" -msgstr "匿名主页服务器(eepsite)" - -#: ../java/strings/Strings.java:27 -msgid "Browser launch at startup" -msgstr "路由器启动时运行浏览器" - -#: ../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 "路由启动时打开控制台" - -#: ../java/strings/Strings.java:37 -msgid "IRC proxy" -msgstr "I2P聊天室" - -#: ../java/strings/Strings.java:38 -msgid "eepsite" -msgstr "匿名网站" - -#: ../java/strings/Strings.java:39 -msgid "I2P webserver" -msgstr "匿名主页服务器" - -#: ../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 "I2P聊天室" - -#. hardcoded in i2psnark -#: ../java/strings/Strings.java:45 -msgid "I2PSnark" -msgstr "I2P Snark" - -#. hardcoded in iMule? -#: ../java/strings/Strings.java:47 -msgid "iMule" -msgstr "" - -#. 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 "加密" - -#: ../java/strings/Strings.java:61 -msgid "i2cp" -msgstr "" - -#: ../java/strings/Strings.java:63 -msgid "InNetPool" -msgstr "" - -#: ../java/strings/Strings.java:64 -msgid "JobQueue" -msgstr "作业队列" - -#: ../java/strings/Strings.java:65 -msgid "NetworkDatabase" -msgstr "网络数据库" - -#: ../java/strings/Strings.java:66 -msgid "ntcp" -msgstr "NTCP" - -#: ../java/strings/Strings.java:69 -msgid "Stream" -msgstr "流" - -#: ../java/strings/Strings.java:70 -msgid "Throttle" -msgstr "门槛" - -#: ../java/strings/Strings.java:71 -msgid "Transport" -msgstr "传输" - -#: ../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 "主机" - -#: ../java/strings/Strings.java:78 -msgid "key" -msgstr "密钥" - -#: ../java/strings/Strings.java:79 -msgid "port" -msgstr "端口" - -#. introducer host -#: ../java/strings/Strings.java:83 -msgid "ihost0" -msgstr "" - -#: ../java/strings/Strings.java:84 -msgid "ihost1" -msgstr "" - -#: ../java/strings/Strings.java:85 -msgid "ihost2" -msgstr "" - -#. introducer port -#: ../java/strings/Strings.java:87 -msgid "iport0" -msgstr "" - -#: ../java/strings/Strings.java:88 -msgid "iport1" -msgstr "" - -#: ../java/strings/Strings.java:89 -msgid "iport2" -msgstr "" - -#. introducer key -#: ../java/strings/Strings.java:91 -msgid "ikey0" -msgstr "" - -#: ../java/strings/Strings.java:92 -msgid "ikey1" -msgstr "" - -#: ../java/strings/Strings.java:93 -msgid "ikey2" -msgstr "" - -#. introducer tag -#: ../java/strings/Strings.java:95 -msgid "itag0" -msgstr "" - -#: ../java/strings/Strings.java:96 -msgid "itag1" -msgstr "" - -#: ../java/strings/Strings.java:97 -msgid "itag2" -msgstr "" - -#. 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_005fnl_jsp.java:220 -#: ../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_005fnl_jsp.java:224 -#: ../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 "KBps 入站" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:317 -msgid "KBps Out" -msgstr "KBps 出站" - -#: ../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 "您设置I2P仅共享 {0} KBps" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:345 -msgid "I2P requires at least 12KBps to enable sharing. " -msgstr "I2P 需要至少 12KBps 才能进行共享。" - -#: ../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 "您设置I2P共享 {0} KBps" - -#: ../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 IP 地址探测" - -#: ../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 IP 地址探测" - -#: ../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 "笔记本模式 - IP变化后改变路由身份及UDP端口(拨号用户慎用)" - -#: ../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 "完全禁用" - -#: ../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 "仅在受到防火墙的流量限制或入站连接限制时使用" - -#: ../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 "修改这些设置将必须重启路由器。" - -#: ../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数据包通过。" - -#: ../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)或借助“SSU中介”进行UDP端口穿透,通过它们也可以中继数据。" - -#: ../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不能正常工作,或外部防火墙封锁网络。" - -#: ../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 "在某些防火墙下例如Symmetric,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)通讯可以检测外部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支持仍在测试阶段,可能由于一些原因无法正常工作。" - -#: ../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支持有Bug" - -#: ../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 的关闭或开启均需要程序重启后生效。" - -#: ../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 "上面输入的主机名称将在网络数据库(NetDB)中发布。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:558 -msgid "They are <b>not private</b>." -msgstr "他们并<b>非私有地址</b>。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:560 -msgid "Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1." -msgstr "此外,<b>请勿输入如127.0.0.1或192.168.1.1等私有地址</b>" - -#: ../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 "如果您设置了错误的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 <a href=\"logs.jsp\">logs</a> may also help diagnose the problem." -msgstr "如果存在错误,<a href=\"logs.jsp\">日志</a>可以帮助您诊断问题。" - -#: ../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 "由于防火墙检测方法并非100%可靠,有时也可能错误地显示此此提示。" - -#: ../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也能够正常工作,无需担心。受到防火墙阻隔时,路由器将通过“中介(Introducers)”中继入站连接。" - -#: ../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 "然而,如果您能打开防火墙端口,您才能得到的共享流量,更好的帮助I2P网络。" - -#: ../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 "路由器被设置为禁止发布IP地址,因此并不需要入站连接。" - -#: ../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 "您设置I2P共享超过128KBps的带宽,但您的连接因防火墙受阻。" - -#: ../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可以正常工作,但如果您的确能够分享超过128kps的带宽,打开防火墙端口它能工作的更好帮助网络中其他的人。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:610 -msgid "WARN - Firewalled and Floodfill" -msgstr "警告 - 种子节点,因防火墙受限" - -#: ../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设置为种子路由,但您的连接已因防火墙受阻。" - -#: ../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 "为了种子路由能够更好的参与到I2P网络中,请您的防火墙中打开端口。" - -# 暂不翻译方便反馈 -#: ../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连接,其他路由器节点将无法与您建立连接,造成网络受阻。" - -#: ../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连接。" - -# 暂不翻译 -#: ../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 "您设置了使用TCP连接,然而禁用了UDP连接。" - -#: ../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 "您的TCP连接似乎因防火墙受阻,导致您的路由器无法接收入站连接。" - -#: ../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一类的内网地址。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:642 -msgid "Correct the address or disable inbound TCP above." -msgstr "正确设置IP地址或禁用上面的入站TCP连接。" - -# 暂不翻译,方便错误反馈 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:644 -msgid "ERR - SymmetricNAT" -msgstr "错误 - 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检测到您受到Symmetic 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无法与此类防火墙很好的并存。您可能无法接收入站连接,这会障碍您连入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=新端口 并重启程序" - -#: ../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的端口,如果是,关闭此程序或设置I2P使用不同的端口。" - -#: ../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 "然而,发生此错误后一般需要重启程序才能解决。" - -# 暂不翻译,方便错误反馈 -#: ../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。" - -#: ../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 "某些设置需要程序重启后生效。" - -#: ../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 "WebApp 设置" - -#: ../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 Web 程序随客户端“web控制台”一同启动,并与路由运行于同一JVM中。这些Web程序通常可以通过路由器界面直接访问。他们可能是完整的程序 (例如 i2psnark/BT客户端),其他客户端程序的前端或必须单独启动的程序(例如. susidns, i2ptunnel),甚至根本没有Web界面(例如 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 "从webapps目录中删除相应的.war文件同样可以禁用Web程序;然而这些 .war 文件和Web程序在更新I2P后还会再次出现,所以推荐在这里通过设置的方法禁用不用的Web程序。" - -#: ../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 "安装插件前,请输入插件的下载链接:" - -#: ../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 "路由的钥匙环被用来解密和加密赁集." - -#: ../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 "钥匙环可以包含本地和远程的加密目标(Destination)." - -#: ../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 "I2P 隧道页面" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:316 -msgid "Dest. name, hash, or full key" -msgstr "目标(Dest.)名称, HASH, 或完整公钥" - -#: ../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 "等级外<br>日志项目" - -#: ../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 "路由器Key(见NetDB)" - -#: ../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 "评分(Bonuse)可能为正或为负并影响节点是否评为快速和高容量节点。快速节点用于客户程序通道,高容量节点用于探索隧道。当前评分显示于" - -#: ../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 "如果你想要路由器关闭后自动重新启动,可以选择下面的选项。" - -#: ../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 "此功能在如下情况下适用 - 例如当您修改了某些只在启动时读取的设置,例如路由器控制台密码,路由监听接口等。" - -#: ../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 "平滑重启可能会等待几分钟的时间(但你的节点一定会感激你的耐心),硬重启可以立即完成。" - -#: ../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 "路由关闭后将等待1分钟再重新启动。" - -#: ../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 "如果你使用Windows, 可以在这里开启或关闭这个托盘图标。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:326 -msgid "Run on startup" -msgstr "启动时运行" - -#: ../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 "这里你可以通过下面的选项来设置开机后 I2P 是否启动 - I2P 将相应的安装或卸载I2P服务。" - -#: ../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 "您可以考虑先平滑关闭路由,待退出后运行 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 <a href=\"logs.jsp#servicelogs\">wrapper.log</a>." -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:358 -msgid "Launch browser on router startup?" -msgstr "路由器启动时运行浏览器?" - -#: ../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 "此Web控制台是I2P的主要设置界面,所以如果您您觉得有必要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个跳点的隧道(例如 2跳点 + 0-2跳点,3跳点 + 0-1跳点, 3跳点 + 0-2跳点),或大量常规+大量备用,可能降低性能和稳定性。" - -#: ../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占用和/或高上行流量。" - -#: ../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 "I2P 隧道页面" - -#: ../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 "抱歉,主题功能在InternetExplorer中已禁用。" - -#: ../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的UserAgent;您需要设置浏览器(或过滤式代理)使用不同的UserAgent,才能访问路由控制台的主题功能。" - -#: ../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 "软件及新闻更新" - -#: ../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 "新闻链接" - -#: ../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 "更新链接" - -#: ../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 "未签名软件链接" - -#: ../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 <a href=\"http://trac.i2p2.i2p/newticket\">trac.i2p2.i2p</a>." -msgstr "如果您发现错误请报告至<a href=\"http://trac.i2p2.i2p/newticket\">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" -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 "服务(封装)日志" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:105 -msgid "network database summary" -msgstr "I2P 网络数据库概况" - -#: ../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 "Web程序(war)未找到" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:231 -msgid "Web Application Not Running" -msgstr "Web程序(.war)未运行" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:233 -msgid "The requested web application is not running." -msgstr "您所访问的Web程序未启动。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:235 -msgid "Please visit the <a href=\"/configclients.jsp#webapp\">config clients page</a> to start it." -msgstr "请先在<a href=\"/configclients.jsp#webapp\">配置客户端页面</a>中启动它。" - -#: ../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} 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 隧道概况" - -#~ msgid "hops" -#~ msgstr "跳点" -#~ msgid "tunnels" -#~ msgstr "隧道" -#~ msgid "Tunnels in/out" -#~ msgstr "通道(上/下行)" -#~ msgid "name" -#~ msgstr "名称" -#~ msgid "" -#~ "WebApp configuration saved successfully - restart required to take effect." -#~ msgstr "WebApp设置保存成功 - 程序重启后生效" -#~ msgid "Start Now" -#~ msgstr "立即启动" -#~ msgid "Show the router's workload, and how it's performing" -#~ msgstr "显示I2P路由器的负载与工作状况" -#~ msgid "Jobs" -#~ msgstr "作业" -#~ msgid "This is useful in some situations" -#~ msgstr "重启在某些情况下有用" -#~ msgid "I2P will install (or remove) a service accordingly." -#~ msgstr "I2P将相应的将自身安装为服务(或卸载服务)。" -#~ msgid "Expl. + Client" -#~ msgstr "探测+客户" -#~ msgid "Part. from + to" -#~ msgstr "相邻共享节点" -#~ msgid "Depth" -#~ msgstr "深度" -#~ msgid "Addresses" -#~ msgstr "地址" -#~ msgid "view without" -#~ msgstr "查看不含" -#~ msgid "view with" -#~ msgstr "查看含" -#~ msgid "stats" -#~ msgstr "统计" -#~ msgid "View" -#~ msgstr "查看" -#~ msgid "Not Failing" -#~ msgstr "标准" -#~ msgid "" -#~ "If you want the router to restart itself after shutting down, you can " -#~ "choose one of the following. 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. A graceful restart will take a few minutes (but your peers " -#~ "will appreciate your patience), while a hard restart does so " -#~ "immediately. After tearing down the router, it will wait 1 minute before " -#~ "starting back up again." -#~ msgstr "" -#~ "如果你想要路由器关闭后重新启动,可以选择下面的选项。重启在某些情况下有用 " -#~ "- 例如当修改了客户程序仅在启动时读取的设置比如路由器控制界面的密码,监听的" -#~ "接口。平滑重启可能会等待几分钟的时间 (但其他节点一定会感激你的耐心),硬重" -#~ "启可以立即完成。 路由关闭后将等待1分钟再重新启动。" -#~ msgid "" -#~ "On the windows platform, there is a small application to sit in the " -#~ "system tray, allowing you to view the router's status (later on, I2P " -#~ "client applications will be able to integrate their own functionality " -#~ "into the system tray as well). If you are on windows, you can either " -#~ "enable or disable that icon here." -#~ msgstr "" -#~ "windows 平台允许小程序进驻系统托盘,让你可以查看路由状态,(以后的 I2P 客户" -#~ "端程序也会将它们的功能集成到系统托盘里)。如果你使用Windows, 可以在这里开启" -#~ "或关闭这个托盘图标。" - +# 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 <foo@bar>, 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P routerconsole\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-09 15:08+0000\n" +"PO-Revision-Date: \n" +"Last-Translator: walking <walking@mail.i2p>\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: Chinese\n" +"X-Poedit-Country: CHINA\n" +"Plural-Forms: nplurals=1; plural=0\n" + +#. NOTE TO TRANSLATORS: Feel free to translate all these as you see fit, there are several options... +#. spaces or not, '.' or not, plural or not. Try not to make it too long, it is used in +#. a lot of tables. +#. milliseconds +#. Note to translators, may be negative or zero, 2999 maximum. +#. {0,number,####} prevents 1234 from being output as 1,234 in the English locale. +#. If you want the digit separator in your locale, translate as {0}. +#. alternates: msec, msecs +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1124 +#, java-format +msgid "1 ms" +msgid_plural "{0,number,####} ms" +msgstr[0] "" + +#. seconds +#. Note to translators: quantity will always be greater than one. +#. alternates: secs, sec. 'seconds' is probably too long. +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1129 +#, java-format +msgid "1 sec" +msgid_plural "{0} sec" +msgstr[0] "" + +#. minutes +#. Note to translators: quantity will always be greater than one. +#. alternates: mins, min. 'minutes' is probably too long. +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1134 +#, java-format +msgid "1 min" +msgid_plural "{0} min" +msgstr[0] "" + +#. hours +#. Note to translators: quantity will always be greater than one. +#. alternates: hrs, hr., hrs. +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1139 +#, fuzzy, java-format +msgid "1 hour" +msgid_plural "{0} hours" +msgstr[0] "小时" + +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1141 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313 +msgid "n/a" +msgstr "" + +#. days +#. Note to translators: quantity will always be greater than one. +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1145 +#, java-format +msgid "1 day" +msgid_plural "{0} days" +msgstr[0] "" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:122 +#, java-format +msgid "Banned by router hash: {0}" +msgstr "按路由器 HASH 封杀: {0}" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:124 +msgid "Banned by router hash" +msgstr "已按路由 HASH 封杀" + +#. Temporary reason, until the job finishes +#: ../../../router/java/src/net/i2p/router/Blocklist.java:669 +msgid "IP banned" +msgstr "IP封锁" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:739 +#, 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:488 +msgid "Rejecting tunnels" +msgstr "拒绝参与共享隧道" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:105 +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 +msgid "Reseeding" +msgstr "正在补种(引导网络启动)..." + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:128 +#, java-format +msgid "Reseed fetched only 1 router." +msgid_plural "Reseed fetched only {0} routers." +msgstr[0] "" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:135 +#, fuzzy +msgid "Reseed failed." +msgstr "数据传输失败" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:136 +#, java-format +msgid "See {0} for help." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:137 +#, fuzzy +msgid "reseed configuration page" +msgstr "WebApp 设置已保存" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:239 +msgid "Reseeding: fetching seed URL." +msgstr "正在补种:获取补种连接..." + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281 +#, java-format +msgid "" +"Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." +msgstr "正在补种:从补种服务器获取路由信息({0}成功,{1}失败)。" + +#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:512 +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:450 +msgid "Unreachable on any transport" +msgstr "各传输方式均不可达" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:499 +msgid "Router Transport Addresses" +msgstr "路由传输地址" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:504 +#, java-format +msgid "{0} is used for outbound connections only" +msgstr "{0} 仅被用作出站连接" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123 +msgid "Help" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 +msgid "" +"Your transport connection limits are automatically set based on your " +"configured bandwidth." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 +msgid "" +"To override these limits, add the settings i2np.ntcp.maxConnections=nnn and " +"i2np.udp.maxConnections=nnn on the advanced configuration page." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 +msgid "Definitions" +msgstr "定义" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:735 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890 +#: ../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:524 +msgid "The remote peer, identified by router hash" +msgstr "以路由Hash区分的远程节点" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:736 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 +msgid "Dir" +msgstr "类别" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 +msgid "Inbound connection" +msgstr "进站连接" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 +msgid "Outbound connection" +msgstr "出站连接" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 +msgid "They offered to introduce us (help other peers traverse our firewall)" +msgstr "对方节点为中继帮助我方穿越防火墙" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 +msgid "We offered to introduce them (help other peers traverse their firewall)" +msgstr "我方为中继帮助其他节点穿越防火墙" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 +msgid "How long since a packet has been received / sent" +msgstr "最近一次数据传输距现在的时间" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895 +msgid "Idle" +msgstr "空闲" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1900 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 +msgid "In/Out" +msgstr "入/出" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 +msgid "The smoothed inbound / outbound transfer rate (KBytes per second)" +msgstr "进/出站平滑传输率(Kbyte/s)" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +msgid "How long ago this connection was established" +msgstr "连接建立时间" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905 +msgid "Up" +msgstr "寿命" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1907 +msgid "Skew" +msgstr "时滞" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +msgid "The difference between the peer's clock and your own" +msgstr "节点与本地时钟间的时滞" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +msgid "" +"The congestion window, which is how many bytes can be sent without an " +"acknowledgement" +msgstr "拥塞窗口,即每次确认前可发送的字节量" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +msgid "The number of sent messages awaiting acknowledgement" +msgstr "等待确认的已发送数据包数量" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 +msgid "The maximum number of concurrent messages to send" +msgstr "并发消息的最大发送量" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 +msgid "The number of pending sends which exceed congestion window" +msgstr "超过拥塞窗口的待发送数量" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 +msgid "The slow start threshold" +msgstr "慢启动门槛" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 +msgid "The round trip time in milliseconds" +msgstr "往返时间单位毫秒" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 +msgid "Dev" +msgstr "偏差" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +msgid "The standard deviation of the round trip time in milliseconds" +msgstr "环行时间的标准差单位毫秒" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 +msgid "The retransmit timeout in milliseconds" +msgstr "重传输超时时间单位毫秒" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +msgid "" +"Current maximum send packet size / estimated maximum receive packet size " +"(bytes)" +msgstr "当前发送数据包的最大大小/预计接收数据包的最大大小(字节)" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 +msgid "TX" +msgstr "发包" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 +msgid "The total number of packets sent to the peer" +msgstr "向节点发送的数据包总量" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:742 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926 +msgid "RX" +msgstr "接包" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 +msgid "The total number of packets received from the peer" +msgstr "从节点接收到数据包总量" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1929 +msgid "Dup TX" +msgstr "重发包" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +msgid "The total number of packets retransmitted to the peer" +msgstr "向节点发送的重复数据包总量" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1931 +msgid "Dup RX" +msgstr "重接包" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +msgid "The total number of duplicate packets received from the peer" +msgstr "从节点接收到的重复数据包总量" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:409 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:627 +#, java-format +msgid "Excessive clock skew: {0}" +msgstr "严重时滞:{0}" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:730 +msgid "NTCP connections" +msgstr "NTCP连接" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:731 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1886 +msgid "Limit" +msgstr "限制" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 +msgid "Timeout" +msgstr "超时" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:743 +msgid "Out Queue" +msgstr "出队" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:744 +msgid "Backlogged?" +msgstr "积压?" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:758 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1949 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +msgid "Inbound" +msgstr "入站" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1951 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +msgid "Outbound" +msgstr "出站" + +#. buf.append("<tr> <td colspan=\"11\"><hr></td></tr>\n"); +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:807 +msgid "peers" +msgstr "节点" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1885 +msgid "UDP connections" +msgstr "UDP连接" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1892 +msgid "Sort by peer hash" +msgstr "按节点Hash" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 +msgid "Direction/Introduction" +msgstr "方向" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1896 +msgid "Sort by idle inbound" +msgstr "出站空闲" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1898 +msgid "Sort by idle outbound" +msgstr "入站空闲" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1901 +msgid "Sort by inbound rate" +msgstr "按入站速度" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1903 +msgid "Sort by outbound rate" +msgstr "按出站速度" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1906 +msgid "Sort by connection uptime" +msgstr "按连接时间" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1908 +msgid "Sort by clock skew" +msgstr "按时滞" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1911 +msgid "Sort by congestion window" +msgstr "按拥塞窗口" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1913 +msgid "Sort by slow start threshold" +msgstr "按启动门槛" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1916 +msgid "Sort by round trip time" +msgstr "按往返时间" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918 +msgid "Sort by round trip time deviation" +msgstr "按RTT偏差" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1920 +msgid "Sort by retransmission timeout" +msgstr "按重传输超时时间" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1923 +msgid "Sort by outbound maximum transmit unit" +msgstr "按出站最大传输单元" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1925 +msgid "Sort by packets sent" +msgstr "按已发送数据包" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927 +msgid "Sort by packets received" +msgstr "按已接收数据包" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1930 +msgid "Sort by packets retransmitted" +msgstr "按重传数据包" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1932 +msgid "Sort by packets received more than once" +msgstr "按重复数据包" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1953 +msgid "We offered to introduce them" +msgstr "中继客户" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1955 +msgid "They offered to introduce us" +msgstr "中继" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1959 +msgid "Choked" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1967 +msgid "1 fail" +msgstr "失败 1 次" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1969 +#, java-format +msgid "{0} fails" +msgstr "失败 {0} 次" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1975 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:162 +msgid "Banned" +msgstr "已封锁" + +#. buf.append("<tr><td colspan=\"16\"><hr></td></tr>\n"); +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2106 +msgid "SUMMARY" +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:525 +msgid "Rejecting tunnels: Request overload" +msgstr "拒绝共享:请求过多" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:550 +msgid "Rejecting tunnels: Connection limit" +msgstr "拒绝共享:连接受限" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:744 +msgid "Dropping tunnel requests: High load" +msgstr "忽略共享请求:高负载" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:753 +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 "Congo" + +#: ../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:35 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:37 +#: ../java/strings/Strings.java:29 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:119 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:233 +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:35 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:335 +msgid "Save Client Configuration" +msgstr "保存客户程序设置" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:39 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:405 +#, fuzzy +msgid "Save Interface Configuration" +msgstr "保存客户程序设置" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 +msgid "Save WebApp Configuration" +msgstr "保存 WebApp 设置" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:47 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427 +msgid "Save Plugin Configuration" +msgstr "保存插件配置" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:51 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433 +msgid "Install Plugin" +msgstr "安装插件" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:87 +#, java-format +msgid "Deleted plugin {0}" +msgstr "删除插件 {0}" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:89 +#, java-format +msgid "Error deleting plugin {0}" +msgstr "删除插件 {0} 时发生错误" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:101 +#, java-format +msgid "Stopped plugin {0}" +msgstr "插件 {0} 已停用" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:103 +#, java-format +msgid "Error stopping plugin {0}" +msgstr "停用插件 {0} 时发生错误" + +#. label (IE) +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:255 +msgid "Start" +msgstr "启动" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:143 +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:49 +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:61 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:33 +msgid "Unsupported" +msgstr "未支持的" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:189 +msgid "New client added" +msgstr "新客户端添加完毕" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:193 +msgid "" +"Client configuration saved successfully - restart required to take effect." +msgstr "客户程序设置保存成功 - 程序重启后生效" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 +msgid "Bad client index." +msgstr "客户程序索引无效" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:384 +msgid "Client" +msgstr "客户" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:271 +msgid "started" +msgstr "已启动" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223 +msgid "deleted" +msgstr "已删除" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:240 +msgid "WebApp configuration saved." +msgstr "WebApp 设置已保存" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:256 +msgid "Plugin configuration saved." +msgstr "插件配置已保存" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:271 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +msgid "WebApp" +msgstr "Web程序" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:273 +msgid "Failed to start" +msgstr "启动失败" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:278 +msgid "Failed to find server." +msgstr "服务器或服务程序查找失败。" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:284 +msgid "No plugin URL specified." +msgstr "未指定插件链接" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:294 +#, java-format +msgid "No update URL specified for {0}" +msgstr "{0} 未指定更新链接" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:302 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:307 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:320 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:325 +msgid "Plugin or update download already in progress." +msgstr "插件/更新包的下载正在进行" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:311 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:118 +#, java-format +msgid "Downloading plugin from {0}" +msgstr "正在从 {0} 下载插件" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:329 +#, java-format +msgid "Checking plugin {0} for updates" +msgstr "正在检查插件 {0} 是否存在更新" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:339 +#, java-format +msgid "Started plugin {0}" +msgstr "插件 {0} 已运行" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:341 +#, java-format +msgid "Error starting plugin {0}" +msgstr "插件启动错误 {0}" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 +#, fuzzy +msgid "" +"Interface configuration saved successfully - restart required to take effect." +msgstr "客户程序设置保存成功 - 程序重启后生效" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:85 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258 +msgid "Edit" +msgstr "编辑" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:94 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:331 +msgid "Add Client" +msgstr "添加客户端" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 +msgid "Class and arguments" +msgstr "类与参数" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 +msgid "Control" +msgstr "控制项" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 +msgid "Run at Startup?" +msgstr "启动时运行?" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:197 +msgid "Description" +msgstr "描述" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 +msgid "Plugin" +msgstr "插件" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:161 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185 +msgid "Version" +msgstr "版本" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:163 +msgid "Signed by" +msgstr "数字签名者:" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:180 +msgid "Date" +msgstr "日期" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:186 +msgid "Author" +msgstr "作者" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:202 +msgid "License" +msgstr "许可证" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:207 +msgid "Website" +msgstr "网站" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:212 +msgid "Update link" +msgstr "更新链接" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:260 +msgid "Stop" +msgstr "停止" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:262 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:78 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:313 +msgid "Check for updates" +msgstr "检查更新" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:263 +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:242 +msgid "Update" +msgstr "更新" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:268 +#, java-format +msgid "Are you sure you want to delete {0}?" +msgstr "您确定要删除 {0} ?" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:270 +msgid "Delete" +msgstr "删除" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:18 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:325 +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:323 +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/ConfigLoggingHandler.java:82 +#, fuzzy +msgid "Log overrides updated" +msgstr "等级外<br>日志项目" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHandler.java:160 +#, fuzzy +msgid "Log configuration saved" +msgstr "插件配置已保存" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 +msgid "" +"Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:49 +msgid "" +"Or put entries in the logger.config file. Example: logger.record.net.i2p." +"router.tunnel=WARN" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:50 +msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +msgid "CRIT" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +msgid "DEBUG" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +msgid "ERROR" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +msgid "INFO" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +msgid "WARN" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:88 +#, fuzzy +msgid "Remove" +msgstr "职能" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:125 +msgid "Select a class to add" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:204 +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:101 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 +#: ../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:293 +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:107 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260 +#: ../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:387 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:143 +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/ConfigReseedHandler.java:29 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:34 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:360 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:516 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:352 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:377 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:344 +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 "正在启用笔记本模式" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:244 +msgid "Disabling laptop mode" +msgstr "正在禁用笔记本模式" + +#: ../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:41 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:49 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:59 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:62 +msgid "unknown" +msgstr "未知" + +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:172 +msgid "bits per second" +msgstr "Bit/s" + +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:173 +#, java-format +msgid "or {0} bytes per month maximum" +msgstr "或最多 {0} Byte/月(假设始终 7 天 x 24小时开机)" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:20 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:315 +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:317 +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:343 +msgid "Adjust peer 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 "容量值无效" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:17 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 +#, fuzzy +msgid "Save changes and reseed now" +msgstr "保存修改" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:21 +#, fuzzy +msgid "Reseeding is already in progress" +msgstr "创建中" + +#. skip the nonce checking in ReseedHandler +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:24 +msgid "Starting reseed process" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:66 +#, fuzzy +msgid "Configuration saved successfully." +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:293 +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:291 +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:295 +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:307 +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:309 +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:323 +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:325 +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:343 +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:351 +msgid "View console on startup" +msgstr "程序启动时显示控制台" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:93 +msgid "Console is to be shown on startup" +msgstr "启动后显示控制台" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:94 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 +msgid "Do not view console on startup" +msgstr "启动后不打开控制台" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96 +msgid "Console is not to be shown on startup" +msgstr "启动后不显示控制台" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:105 +msgid "Service installed" +msgstr "服务已安装" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:107 +msgid "Warning: unable to install the service" +msgstr "警告:无法安装服务" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:113 +msgid "Service removed" +msgstr "服务已卸载" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:115 +msgid "Warning: unable to remove the service" +msgstr "警告:无法卸载服务" + +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:111 +msgid "Stat filter and location updated successfully to" +msgstr "统计数据过滤器及位置成功更新至" + +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:113 +msgid "Failed to update the stat filter and location" +msgstr "统计数据过滤器及地址更新失败" + +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:114 +msgid "" +"Graph list updated, may take up to 60s to be reflected here and on the <a " +"href=\"graphs.jsp\">Graphs Page</a>" +msgstr "" +"曲线图列表已更新,更新后的内容可能需要最多 60s 的时间才能在这里及 <a href=" +"\"graphs.jsp\">统计图表</a>页面中反映出来。" + +#. 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:135 +msgid "Updated settings for all pools." +msgstr "隧道池更新完毕" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:140 +msgid "Exploratory tunnel configuration saved successfully." +msgstr "探索隧道设置保存成功。" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 +#: ../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} 跳点" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:15 +#, java-format +msgid "1 tunnel" +msgid_plural "{0} tunnels" +msgstr[0] "{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("<tr><th></th><th>Inbound</th><th>Outbound</th></tr>\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 "英语" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +msgid "French" +msgstr "法语" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +msgid "German" +msgstr "德语" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#, fuzzy +msgid "Spanish" +msgstr "西班牙" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +msgid "Dutch" +msgstr "荷兰语" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#, fuzzy +msgid "Portuguese" +msgstr "葡萄牙" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +msgid "Russian" +msgstr "俄语" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 +msgid "Chinese" +msgstr "中文" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 +msgid "Swedish" +msgstr "瑞士语" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:85 +msgid "Update available, attempting to download now" +msgstr "有更新可用,正在尝试下载" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:87 +msgid "Update available, click button on left to download" +msgstr "有更新可用,点左侧按钮下载" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:93 +msgid "No update available" +msgstr "无更新" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:101 +msgid "Updating news URL to" +msgstr "正在更新新闻链接至" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:109 +msgid "Updating proxy host to" +msgstr "正在更新代理主机至" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:117 +msgid "Updating proxy port to" +msgstr "正在更新代理端口至" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:130 +msgid "Updating refresh frequency to" +msgstr "正在更新更新频率为" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:137 +msgid "Updating update policy to" +msgstr "正在更新更新策略为" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:146 +msgid "Updating update URLs." +msgstr "正在更新更新链接至" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:155 +msgid "Updating trusted keys." +msgstr "正在更新可信公钥为" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:163 +msgid "Updating unsigned update URL to" +msgstr "正在更新未签名软件链接至" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:88 +#: ../java/src/net/i2p/router/web/GraphHelper.java:167 +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 "仅下载、验证并重启" + +#: ../java/src/net/i2p/router/web/FormHandler.java:174 +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:93 +msgid "Combined bandwidth graph" +msgstr "复合带宽图" + +#. e.g. "statname for 60m" +#: ../java/src/net/i2p/router/web/GraphHelper.java:107 +#, java-format +msgid "{0} for {1}" +msgstr "过去 {1} 统计 {0}" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:146 +msgid "Configure Graph Display" +msgstr "图表显示设置" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:146 +msgid "Select Stats" +msgstr "选择统计项" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:150 +msgid "Periods" +msgstr "周期" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:151 +msgid "Plot averages" +msgstr "事件均值" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:152 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 +msgid "or" +msgstr "或" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:152 +msgid "plot events" +msgstr "事件数量" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:153 +msgid "Image sizes" +msgstr "图像尺寸" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:153 +msgid "width" +msgstr "宽度" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:154 +msgid "height" +msgstr "高度" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:154 +#: ../java/src/net/i2p/router/web/GraphHelper.java:155 +msgid "pixels" +msgstr "像素" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:156 +msgid "Refresh delay" +msgstr "刷新延迟" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:171 +msgid "Redraw" +msgstr "重绘" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:203 +msgid "Graph settings saved" +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/LogsHelper.java:34 +#, fuzzy +msgid "File not found" +msgstr "未找到" + +#: ../java/src/net/i2p/router/web/LogsHelper.java:52 +msgid "No log messages" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:80 +msgid "Network Database RouterInfo Lookup" +msgstr "网络数据库 RouterInfo 检索" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:95 +#: ../java/strings/Strings.java:68 +msgid "Router" +msgstr "路由器" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:95 +msgid "not found in network database" +msgstr "在网络数据库概况未找到" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:107 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:215 +msgid "Network Database Contents" +msgstr "网络数据库内容" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:108 +msgid "View RouterInfo" +msgstr "浏览 RouterInfo" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:109 +msgid "LeaseSets" +msgstr "赁集" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:131 +msgid "LeaseSet" +msgstr "赁集" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:133 +msgid "Local" +msgstr "本地" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:135 +msgid "Unpublished" +msgstr "未发布" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:136 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143 +msgid "Destination" +msgstr "目标" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:153 +#, java-format +msgid "Expires in {0}" +msgstr "{0} 后过期" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:155 +#, java-format +msgid "Expired {0} ago" +msgstr "{0}前过期" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:167 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 +msgid "Gateway" +msgstr "网关" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:167 +msgid "Lease" +msgstr "租赁" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:169 +msgid "Tunnel" +msgstr "隧道" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:215 +msgid "View LeaseSets" +msgstr "查看赁集" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217 +msgid "Not initialized" +msgstr "未初始化" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:226 +msgid "Routers" +msgstr "路由器" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:228 +msgid "Show all routers" +msgstr "显示所有路由器" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:230 +msgid "Show all routers with full stats" +msgstr "显示所有路由及统计" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:265 +msgid "Network Database Router Statistics" +msgstr "NetDb路由器统计" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 +msgid "Count" +msgstr "计数" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 +msgid "Transports" +msgstr "传输" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 +msgid "Country" +msgstr "国家" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:342 +msgid "Our info" +msgstr "我方信息" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:344 +msgid "Peer info for" +msgstr "节点信息" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:348 +msgid "Full entry" +msgstr "完整项" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:115 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 +msgid "Hidden" +msgstr "隐身" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 +msgid "Updated" +msgstr "已更新" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:355 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:358 +#, java-format +msgid "{0} ago" +msgstr "{0}前" + +#. shouldnt happen +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:357 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:361 +msgid "Published" +msgstr "发布" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:363 +msgid "Address(es)" +msgstr "地址" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:376 +msgid "cost" +msgstr "开销" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +msgid "Hidden or starting up" +msgstr "隐身或正在启动" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +msgid "SSU" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +msgid "SSU with introducers" +msgstr "使用中介的SSU连接" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +msgid "NTCP" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +msgid "NTCP and SSU" +msgstr "NTCP 与 SSU" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +msgid "NTCP and SSU with introducers" +msgstr "使用中介的NTCP与SSU连接" + +#: ../java/src/net/i2p/router/web/NewsFetcher.java:93 +#, java-format +msgid "News last updated {0} ago." +msgstr "新闻更新于{0}前" + +#: ../java/src/net/i2p/router/web/NewsFetcher.java:99 +#, 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:139 +msgid "Downloading plugin" +msgstr "正在下载插件" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:146 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:244 +#, java-format +msgid "{0}B transferred" +msgstr "已传输 {0}B" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:153 +msgid "Plugin downloaded" +msgstr "插件下载完成" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:158 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:345 +#, java-format +msgid "Cannot create plugin directory {0}" +msgstr "无法创建插件目录 {0}" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:167 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:298 +#, java-format +msgid "from {0}" +msgstr "自 {0}" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:177 +#, java-format +msgid "Plugin from {0} is corrupt" +msgstr "由 {0} 获取的插件已损坏。" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:188 +#, java-format +msgid "Plugin from {0} does not contain the required configuration file" +msgstr "由 {0} 获取的插件缺少必要的配置文件" + +#. updateStatus("<b>" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + "</b>"); +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:201 +#, java-format +msgid "Plugin from {0} contains an invalid key" +msgstr "由 {0} 获取的插件签名密钥无效" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:220 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:229 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:238 +#, java-format +msgid "Plugin signature verification of {0} failed" +msgstr "插件 {0} 的签名验证失败。" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:253 +#, java-format +msgid "Plugin from {0} has invalid name or version" +msgstr "从 {0} 获取的插件缺少有效的名称或版本" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:258 +#, java-format +msgid "Plugin {0} has mismatched versions" +msgstr "插件 {0} 的内部版本不符。" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:266 +#, java-format +msgid "This plugin requires I2P version {0} or higher" +msgstr "插件需要I2P版本 {0} 或更高" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:274 +#, java-format +msgid "This plugin requires Java version {0} or higher" +msgstr "插件需要 Java 版本 {0} 或更高" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:282 +msgid "" +"Downloaded plugin is for new installs only, but the plugin is already " +"installed" +msgstr "所下插件包仅用于全新安装,但您已经安装过该插件" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:294 +msgid "Installed plugin does not contain the required configuration file" +msgstr "已安装插件缺少所需的配置文件" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:302 +msgid "Signature of downloaded plugin does not match installed plugin" +msgstr "所下插件的签名(人)与所安装插件的签名不符" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:309 +#, java-format +msgid "Downloaded plugin version {0} is not newer than installed plugin" +msgstr "所下插件版本 {0} 没有已安装插件的版本新" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:316 +#, java-format +msgid "Plugin update requires installed plugin version {0} or higher" +msgstr "插件更新包需要安装插件的版本为 {0} 或更高" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:323 +#, java-format +msgid "Plugin update requires installed plugin version {0} or lower" +msgstr "插件更新包需要安装插件的版本不高于 {0}" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:340 +msgid "Plugin is for upgrades only, but the plugin is not installed" +msgstr "插件更新包包找不到对应的原版插件" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:353 +#, java-format +msgid "Failed to install plugin in {0}" +msgstr "无法将插件安装至目录{0}" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:360 +#, java-format +msgid "Plugin {0} installed, router restart required" +msgstr "插件 {0} 已安装,重启I2P后生效" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:362 +#, java-format +msgid "Plugin {0} installed" +msgstr "插件 {0} 已安装" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:380 +#, java-format +msgid "Plugin {0} installed and started" +msgstr "插件 {0} 已安装并启动" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:383 +#, java-format +msgid "Plugin {0} installed but failed to start, check logs" +msgstr "插件 {0} 已安装但启动失败,请检查日志。" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:385 +#, java-format +msgid "Plugin {0} installed but failed to start" +msgstr "插件 {0} 已安装但启动失败" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:395 +#, 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 "分组(容量)" + +#: ../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:335 +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:339 +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:287 +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 "种子节点与整合节点" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:188 +msgid "Caps" +msgstr "容量" + +#: ../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 "10m响应时间" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195 +msgid "1h Resp. Time" +msgstr "1h响应时间" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196 +msgid "1d Resp. Time" +msgstr "1d响应时间" + +#: ../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 "1h失败率" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 +msgid "1d Fail Rate" +msgstr "1d失败率" + +#: ../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 "由节点描述信息管理器决定" + +#: ../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 "netDb中的容量,与描述信息无关。" + +#. capabilities +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 +#: ../java/strings/Strings.java:81 +msgid "caps" +msgstr "容量" + +#: ../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 "该节点一分钟由单一隧道通过的数据峰值(byte/s)。" + +#: ../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/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:223 +msgid "Bandwidth usage" +msgstr "带宽占用" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:230 +msgid "Outbound bytes/sec" +msgstr "出站(byte/s)" + +#. def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3); +#: ../java/src/net/i2p/router/web/StatSummarizer.java:232 +msgid "Inbound bytes/sec" +msgstr "入站(byte/s)" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:235 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:236 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:237 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:238 +msgid "bytes/sec" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:235 +msgid "out average" +msgstr "出站平均值" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:236 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:238 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:115 +msgid "max" +msgstr "最大" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:237 +msgid "in average" +msgstr "入站平均值" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:57 +msgid "GO" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:60 +msgid "Statistics gathered during this router's uptime" +msgstr "路由运行时收集的统计数据" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:63 +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:64 +msgid "These statistics are primarily used for development and debugging." +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:105 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:156 +msgid "No lifetime events" +msgstr "自运行起无事件" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:116 +msgid "frequency" +msgstr "更新频率" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:120 +#, fuzzy +msgid "Rolling average events per period" +msgstr "事件/周期" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:124 +#, fuzzy +msgid "Highest events per period" +msgstr "事件/周期" + +#. if (showAll && (curFreq.getMaxAverageEventsPerPeriod() > 0) && (curFreq.getAverageEventsPerPeriod() > 0) ) { +#. buf.append("(current is "); +#. buf.append(pct(curFreq.getAverageEventsPerPeriod()/curFreq.getMaxAverageEventsPerPeriod())); +#. buf.append(" of max)"); +#. } +#. buf.append(" <i>avg interval between updates:</i> (").append(num(curFreq.getAverageInterval())).append("ms, min "); +#. buf.append(num(curFreq.getMinAverageInterval())).append("ms)"); +#: ../java/src/net/i2p/router/web/StatsGenerator.java:135 +#, fuzzy +msgid "Lifetime average events per period" +msgstr "总平均值" + +#. Display the strict average +#: ../java/src/net/i2p/router/web/StatsGenerator.java:140 +#, fuzzy +msgid "Lifetime average frequency" +msgstr "总平均值" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:168 +msgid "rate" +msgstr "速度" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:170 +#, fuzzy +msgid "Average" +msgstr "入站平均值" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:173 +#, fuzzy +msgid "Highest average" +msgstr "入站平均值" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:202 +#, java-format +msgid "in this period which ended {0} ago." +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:204 +msgid "No events" +msgstr "无事件" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:210 +msgid "Average event count" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:212 +#, fuzzy +msgid "Events in peak period" +msgstr "事件/周期" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:220 +#, fuzzy +msgid "Graph Data" +msgstr "图表" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:222 +msgid "Graph Event Count" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:225 +msgid "Export Data as XML" +msgstr "" + +#. Display the strict average +#: ../java/src/net/i2p/router/web/StatsGenerator.java:230 +#, fuzzy +msgid "Lifetime average value" +msgstr "总平均值" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:41 +msgid "I2P Router Help & FAQ" +msgstr "I2P 使用帮助与常见问答" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:43 +msgid "Help & FAQ" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:55 +msgid "" +"Configure startup of clients and webapps (services); manually start dormant " +"services" +msgstr "设置客户程序及Web程序(服务)的启动;手动启动重要服务" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:57 +msgid "I2P Services" +msgstr "I2P 服务" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:63 +msgid "Manage your I2P hosts file here (I2P domain name resolution)" +msgstr "管理您的 I2P HOST表(I2P域名解析表)" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:65 +msgid "Addressbook" +msgstr "地址簿" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:69 +msgid "Built-in anonymous BitTorrent Client" +msgstr "内建的匿名 BitTorrent 客户端" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:71 +msgid "Torrents" +msgstr "匿名BT" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:75 +msgid "Anonymous webmail client" +msgstr "匿名Web邮件客户端" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:77 +msgid "Webmail" +msgstr "匿名邮箱" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:81 +msgid "Anonymous resident webserver" +msgstr "内置的匿名Web服务器" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:83 +msgid "Webserver" +msgstr "匿名主页服务器" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:91 +msgid "Configure I2P Router" +msgstr "设置 I2P 路由器" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:93 +msgid "I2P Internals" +msgstr "I2P内部设置" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:99 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:384 +msgid "View existing tunnels and tunnel build status" +msgstr "查看现存隧道及隧道的建立状态" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:105 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258 +msgid "Show all current peer connections" +msgstr "显示当前所有的节点连接" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:111 +msgid "Show recent peer performance profiles" +msgstr "显示当前节点的性能记录" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:113 +msgid "Profiles" +msgstr "节点信息" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:117 +msgid "Show list of all known I2P routers" +msgstr "包含所有已知I2P路由器的列表" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:119 +msgid "NetDB" +msgstr "NetDB" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123 +msgid "Health Report" +msgstr "路由器健康状况报告" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:125 +msgid "Logs" +msgstr "日志" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:135 +msgid "Graph router performance" +msgstr "路由性能统计图" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:137 +msgid "Graphs" +msgstr "图表" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141 +msgid "Textual router performance statistics" +msgstr "路由性能文字统计" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:370 +msgid "Local Destinations" +msgstr "本地服务" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:149 +#: ../java/strings/Strings.java:62 +msgid "I2PTunnel" +msgstr "I2P隧道" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164 +msgid "I2P Router Help" +msgstr "I2P路由帮助" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166 +msgid "General" +msgstr "功能概况" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171 +msgid "Local Identity" +msgstr "本地身份" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:175 +msgid "Your unique I2P router identity is" +msgstr "您I2P路由的唯一身份为" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179 +msgid "never reveal it to anyone" +msgstr "切勿将其告诉任何人" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:181 +msgid "show" +msgstr "显示" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192 +msgid "How long we've been running for this session" +msgstr "本次路由运行时间" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195 +msgid "Uptime" +msgstr "运行时间" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 +msgid "" +"Help with configuring your firewall and router for optimal I2P performance" +msgstr "如何正确配置防火墙和(物理)路由器优化I2P性能" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 +msgid "Download" +msgstr "下载" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:240 +msgid "Download Unsigned" +msgstr "下载未签名更新" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266 +msgid "Active" +msgstr "活动节点" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275 +msgid "Fast" +msgstr "快速节点" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:281 +msgid "High capacity" +msgstr "高容量节点" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:293 +msgid "Known" +msgstr "已知节点" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:308 +msgid "Help with firewall configuration" +msgstr "如何配置防火墙" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:310 +msgid "Check NAT/firewall" +msgstr "检查NAT/防火墙" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:330 +msgid "Reseed" +msgstr "补种(搜索节点启动网络)" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:347 +msgid "Configure router bandwidth allocation" +msgstr "设置路由的带宽分配" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:349 +msgid "Bandwidth in/out" +msgstr "带宽(进/出站)" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:369 +msgid "Total" +msgstr "总计" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376 +msgid "Used" +msgstr "已用" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:391 +msgid "Exploratory" +msgstr "探测" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403 +msgid "Participating" +msgstr "共享" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:409 +msgid "Share ratio" +msgstr "共享/占用" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415 +msgid "What's in the router's job queue?" +msgstr "查看路由的作业队列" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 +msgid "Congestion" +msgstr "拥堵" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:422 +msgid "Job lag" +msgstr "作业延迟" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:428 +msgid "Message delay" +msgstr "消息延迟" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:434 +msgid "Tunnel lag" +msgstr "隧道延迟" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440 +msgid "Backlog" +msgstr "积压" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:106 +msgid "ERR-Client Manager I2CP Error - check logs" +msgstr "错误-客户程序管理器I2CP错误 - 请看日志" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:113 +#, java-format +msgid "ERR-Clock Skew of {0}" +msgstr "错误-系统时滞 {0}" + +# 暂不翻译,确定/良好 可能影响按钮的翻译 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:122 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 +msgid "OK" +msgstr "正常" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:123 +msgid "ERR-Private TCP Address" +msgstr "错误-TCP私有地址" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:125 +msgid "ERR-SymmetricNAT" +msgstr "错误-SymmeticNAT" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:128 +msgid "WARN-Firewalled with Inbound TCP Enabled" +msgstr "警告-入站TCP开启但因防火墙受限" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:130 +msgid "WARN-Firewalled and Floodfill" +msgstr "警告-种子节点因防火墙受限" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:132 +msgid "WARN-Firewalled and Fast" +msgstr "警告-快速节点因防火墙受限" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:133 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 +msgid "Firewalled" +msgstr "防火墙限制" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:135 +msgid "" +"ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and " +"restart" +msgstr "" +"错误-UDP端口已占用 - 在高级设置中设置 i2np.udp.internalPort=新端口并重启程序" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:141 +msgid "ERR-No Active Peers, Check Network Connection and Firewall" +msgstr "错误-无活动节点,请检查网络连接及防火墙" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:144 +msgid "ERR-UDP Disabled and Inbound TCP host/port not set" +msgstr "错误-UDP已禁用且TCP入站主机与端口未设置" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:146 +msgid "WARN-Firewalled with UDP Disabled" +msgstr "警告-因防火墙受限且UDP被禁用" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:148 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 +msgid "Testing" +msgstr "测试中" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:370 +msgid "Add/remove/edit & control your client and server tunnels" +msgstr "添加、删除、编辑或控制客户程序隧道和服务隧道" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:382 +msgid "Server" +msgstr "服务" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:386 +msgid "Show tunnels" +msgstr "显示隧道" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:397 +msgid "Leases expired" +msgstr "Lease已过期" + +#. red or yellow light +#: ../java/src/net/i2p/router/web/SummaryHelper.java:397 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:398 +msgid "Rebuilding" +msgstr "正在重建" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:398 +msgid "ago" +msgstr "前" + +#. green light +#: ../java/src/net/i2p/router/web/SummaryHelper.java:401 +msgid "Ready" +msgstr "就绪" + +#. yellow light +#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 +msgid "Building" +msgstr "创建中" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 +msgid "Building tunnels" +msgstr "正在隧道创建" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:410 +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:421 +#: ../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:89 +#, java-format +msgid "events in {0}" +msgstr "事件/{0}" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:91 +#, java-format +msgid "averaged for {0}" +msgstr "{0} 平均值" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:101 +msgid "Events per period" +msgstr "事件/周期" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:114 +msgid "avg" +msgstr "平均" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:116 +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:287 +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 "接收" + +#: ../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 "发送" + +#: ../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:142 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:237 +msgid "Updating" +msgstr "正在更新" + +#. Process the .sud/.su2 file +#: ../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:261 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:286 +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:281 +msgid "Restarting" +msgstr "正在重启" + +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:118 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:288 +msgid "Click Restart to install" +msgstr "点击【重启】完成安装" + +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:120 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:290 +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:292 +#, 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:184 +#, fuzzy, java-format +msgid "Updating from {0}" +msgstr "正在更新UDP端口由" + +#: ../java/src/net/i2p/router/web/UpdateHandler.java:253 +#, fuzzy, java-format +msgid "No new version found at {0}" +msgstr "插件 {0} 有更新" + +#: ../java/src/net/i2p/router/web/UpdateHandler.java:281 +msgid "Update verified" +msgstr "更新已验证" + +#: ../java/src/net/i2p/router/web/UpdateHandler.java:307 +#, fuzzy, java-format +msgid "Transfer failed from {0}" +msgstr "数据传输失败" + +#. wars for ConfigClientsHelper +#: ../java/strings/Strings.java:12 +msgid "addressbook" +msgstr "地址簿" + +#: ../java/strings/Strings.java:13 +msgid "i2psnark" +msgstr "匿名BT客户端" + +#: ../java/strings/Strings.java:14 +msgid "i2ptunnel" +msgstr "I2P隧道" + +#: ../java/strings/Strings.java:15 +msgid "susimail" +msgstr "匿名邮箱" + +#: ../java/strings/Strings.java:16 +msgid "susidns" +msgstr "susiDNS" + +#: ../java/strings/Strings.java:17 +msgid "routerconsole" +msgstr "路由控制台" + +#. 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 "匿名主页服务器" + +#: ../java/strings/Strings.java:26 +msgid "I2P webserver (eepsite)" +msgstr "匿名主页服务器(eepsite)" + +#: ../java/strings/Strings.java:27 +msgid "Browser launch at startup" +msgstr "路由器启动时运行浏览器" + +#: ../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 "路由启动时打开控制台" + +#: ../java/strings/Strings.java:37 +msgid "IRC proxy" +msgstr "I2P聊天室" + +#: ../java/strings/Strings.java:38 +msgid "eepsite" +msgstr "匿名网站" + +#: ../java/strings/Strings.java:39 +msgid "I2P webserver" +msgstr "匿名主页服务器" + +#: ../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 "I2P聊天室" + +#. hardcoded in i2psnark +#: ../java/strings/Strings.java:45 +msgid "I2PSnark" +msgstr "I2P Snark" + +#. hardcoded in iMule? +#: ../java/strings/Strings.java:47 +msgid "iMule" +msgstr "" + +#. 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 "加密" + +#: ../java/strings/Strings.java:61 +msgid "i2cp" +msgstr "" + +#: ../java/strings/Strings.java:63 +msgid "InNetPool" +msgstr "" + +#: ../java/strings/Strings.java:64 +msgid "JobQueue" +msgstr "作业队列" + +#: ../java/strings/Strings.java:65 +msgid "NetworkDatabase" +msgstr "网络数据库" + +#: ../java/strings/Strings.java:66 +msgid "ntcp" +msgstr "NTCP" + +#: ../java/strings/Strings.java:69 +msgid "Stream" +msgstr "流" + +#: ../java/strings/Strings.java:70 +msgid "Throttle" +msgstr "门槛" + +#: ../java/strings/Strings.java:71 +msgid "Transport" +msgstr "传输" + +#: ../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 "主机" + +#: ../java/strings/Strings.java:78 +msgid "key" +msgstr "密钥" + +#: ../java/strings/Strings.java:79 +msgid "port" +msgstr "端口" + +#. introducer host +#: ../java/strings/Strings.java:83 +msgid "ihost0" +msgstr "" + +#: ../java/strings/Strings.java:84 +msgid "ihost1" +msgstr "" + +#: ../java/strings/Strings.java:85 +msgid "ihost2" +msgstr "" + +#. introducer port +#: ../java/strings/Strings.java:87 +msgid "iport0" +msgstr "" + +#: ../java/strings/Strings.java:88 +msgid "iport1" +msgstr "" + +#: ../java/strings/Strings.java:89 +msgid "iport2" +msgstr "" + +#. introducer key +#: ../java/strings/Strings.java:91 +msgid "ikey0" +msgstr "" + +#: ../java/strings/Strings.java:92 +msgid "ikey1" +msgstr "" + +#: ../java/strings/Strings.java:93 +msgid "ikey2" +msgstr "" + +#. introducer tag +#: ../java/strings/Strings.java:95 +msgid "itag0" +msgstr "" + +#: ../java/strings/Strings.java:96 +msgid "itag1" +msgstr "" + +#: ../java/strings/Strings.java:97 +msgid "itag2" +msgstr "" + +#. 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:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:230 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:215 +msgid "Refresh (s)" +msgstr "刷新(秒)" + +#. ditto +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:231 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:219 +msgid "Enable" +msgstr "启用" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:240 +msgid "I2P Network Configuration" +msgstr "I2P 连网设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:298 +msgid "Bandwidth limiter" +msgstr "带宽限制" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:300 +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:304 +msgid "KBps In" +msgstr "KBps 入站" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:318 +msgid "KBps Out" +msgstr "KBps 出站" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:334 +msgid "Share" +msgstr "共享" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:304 +msgid "NOTE" +msgstr "注意" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:343 +#, java-format +msgid "You have configured I2P to share only {0} KBps." +msgstr "您设置I2P仅共享 {0} KBps" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:346 +msgid "I2P requires at least 12KBps to enable sharing. " +msgstr "I2P 需要至少 12KBps 才能进行共享。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347 +msgid "" +"Please enable sharing (participating in tunnels) by configuring more " +"bandwidth. " +msgstr "请设置更多的带宽以便启用共享功能(加入到其他节点的隧道创建中)。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:348 +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:351 +#, java-format +msgid "You have configured I2P to share {0} KBps." +msgstr "您设置I2P共享 {0} KBps" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:354 +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:358 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:403 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:348 +#: ../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:342 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:365 +msgid "Cancel" +msgstr "取消" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:375 +msgid "IP and Transport Configuration" +msgstr "IP 与传输设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:377 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:306 +msgid "The default settings will work for most people." +msgstr "默认设置适于大多数人。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:379 +msgid "There is help below." +msgstr "页面下方有帮助信息" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:381 +msgid "UPnP Configuration" +msgstr "UPnP 设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:385 +msgid "Enable UPnP to open firewall ports" +msgstr "启用UPnP以打开防火墙端口" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:387 +msgid "UPnP status" +msgstr "UPnP 统计" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:389 +msgid "IP Configuration" +msgstr "IP 设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:391 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:461 +msgid "Externally reachable hostname or IP address" +msgstr "公网可访问的本机域名或IP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395 +msgid "Use all auto-detect methods" +msgstr "使用全部自动探测方法" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399 +msgid "Disable UPnP IP address detection" +msgstr "禁用UPnP IP 地址探测" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 +msgid "Ignore local interface IP address" +msgstr "忽略本地接口的 IP 地址" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:407 +msgid "Use SSU IP address detection only" +msgstr "仅使用SSU IP 地址探测" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:411 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 +msgid "Specify hostname or IP" +msgstr "指定主机名或IP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 +msgid "Select Interface" +msgstr "选择网络接口" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:431 +msgid "Hidden mode - do not publish IP" +msgstr "隐身模式 - 不发布IP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:433 +msgid "(prevents participating traffic)" +msgstr "(阻止共享流量)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 +msgid "Action when IP changes" +msgstr "IP改变后应" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:439 +msgid "" +"Laptop mode - Change router identity and UDP port when IP changes for " +"enhanced anonymity" +msgstr "笔记本模式 - IP变化后改变路由身份及UDP端口(拨号用户慎用)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:441 +msgid "Experimental" +msgstr "试验性" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:443 +msgid "UDP Configuration:" +msgstr "UDP 设置:" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:445 +msgid "UDP port:" +msgstr "UDP端口" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 +msgid "TCP Configuration" +msgstr "TCP 连接设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:465 +msgid "Use auto-detected IP address" +msgstr "使用自动检测得到的 IP 地址" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:467 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499 +msgid "currently" +msgstr "目前" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:471 +msgid "if we are not firewalled" +msgstr "如果没有受到防火墙阻挡" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:475 +msgid "Always use auto-detected IP address (Not firewalled)" +msgstr "总是使用自动探测到的IP地址(没有防火墙限制)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 +msgid "Disable inbound (Firewalled)" +msgstr "禁止入站连接(受防火墙限制)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:489 +msgid "Completely disable" +msgstr "完全禁用" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:491 +msgid "" +"(select only if behind a firewall that throttles or blocks outbound TCP)" +msgstr "仅在受到防火墙的流量限制或入站连接限制时使用" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 +msgid "Externally reachable TCP port" +msgstr "公网可访问的TCP端口" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 +msgid "Use the same port configured for UDP" +msgstr "使用与UDP相同的端口" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:505 +msgid "Specify Port" +msgstr "指定端口" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:330 +msgid "Note" +msgstr "注意" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:512 +msgid "Changing these settings will restart your router." +msgstr "修改这些设置将必须重启路由器。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:518 +msgid "Configuration Help" +msgstr "设置帮助" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:520 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 +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:522 +msgid "" +"If you can, please poke a hole in your firewall to allow unsolicited UDP and " +"TCP packets to reach you." +msgstr "如果可能,请在防火墙中添加端口并允许入站UDP/TCP数据包通过。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:524 +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)或借助“SSU中介”进行UDP端口穿" +"透,通过它们也可以中继数据。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:526 +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不能正常工作,或外部防火墙封锁网络。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:528 +msgid "Certain firewalls such as symmetric NATs may not work well with I2P." +msgstr "在某些防火墙下例如Symmetric,I2P可能无法有效利用NAT工作。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:537 +msgid "" +"UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect " +"the external IP address and forward ports." +msgstr "UPnP与公网网关设备(IGD)通讯可以检测外部IP和映射端口。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:539 +msgid "UPnP support is beta, and may not work for any number of reasons" +msgstr "UPnP支持仍在测试阶段,可能由于一些原因无法正常工作。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:541 +msgid "No UPnP-compatible device present" +msgstr "没有发现UPnP兼容设备" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:543 +msgid "UPnP disabled on the device" +msgstr "设备上的UPnP支持已禁用" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:545 +msgid "Software firewall interference with UPnP" +msgstr "软件防火墙阻止UPnP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:547 +msgid "Bugs in the device's UPnP implementation" +msgstr "设备的UPnP支持有Bug" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:549 +msgid "Multiple firewall/routers in the internet connection path" +msgstr "公网连接中存在多个防火墙/路由器" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:551 +msgid "UPnP device change, reset, or address change" +msgstr "UPnP设备改变、重置或地址迁移" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:553 +msgid "Review the UPnP status here." +msgstr "在这里检查UPnP状态。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 +msgid "" +"UPnP may be enabled or disabled above, but a change requires a router " +"restart to take effect." +msgstr "UPnP 的关闭或开启均需要程序重启后生效。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 +msgid "Hostnames entered above will be published in the network database." +msgstr "上面输入的主机名称将在网络数据库(NetDB)中发布。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 +msgid "They are <b>not private</b>." +msgstr "他们并<b>非私有地址</b>。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 +msgid "" +"Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1." +msgstr "此外,<b>请勿输入如127.0.0.1或192.168.1.1等私有地址</b>" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 +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 "" +"如果您设置了错误的IP地址或主机名称,或NAT/防火墙配置不当,您的网络性能将受到" +"明显影响。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 +msgid "When in doubt, leave the settings at the defaults." +msgstr "如果对设置有疑问,请保留默认设置。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 +msgid "Reachability Help" +msgstr "连通性帮助" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:572 +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:575 +msgid "" +"If there is an error, the <a href=\"logs.jsp\">logs</a> may also help " +"diagnose the problem." +msgstr "如果存在错误,<a href=\"logs.jsp\">日志</a>可以帮助您诊断问题。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 +msgid "Your UDP port does not appear to be firewalled." +msgstr "您的UDP端口似乎一切正常。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 +msgid "Your UDP port appears to be firewalled." +msgstr "您的UDP端口似乎因防火墙而连接受限。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 +msgid "" +"As the firewall detection methods are not 100% reliable, this may " +"occasionally be displayed in error." +msgstr "由于防火墙检测方法并非100%可靠,有时也可能错误地显示此此提示。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587 +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:589 +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也能够正常工作,无需担心。受到防火墙阻隔时,路由器将通" +"过“中介(Introducers)”中继入站连接。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:591 +msgid "" +"However, you will get more participating traffic and help the network more " +"if you can open your firewall(s)." +msgstr "" +"然而,如果您能打开防火墙端口,您才能得到的共享流量,更好的帮助I2P网络。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593 +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:595 +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:599 +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:603 +msgid "" +"The router is not configured to publish its address, therefore it does not " +"expect incoming connections." +msgstr "路由器被设置为禁止发布IP地址,因此并不需要入站连接。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 +msgid "WARN - Firewalled and Fast" +msgstr "警告 - 快速节点,因防火墙受限" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 +msgid "" +"You have configured I2P to share more than 128KBps of bandwidth, but you are " +"firewalled." +msgstr "您设置I2P共享超过128KBps的带宽,但您的连接因防火墙受阻。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 +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可以正常工作,但如果您的确能够分享超过128kps的带宽,打" +"开防火墙端口它能工作的更好帮助网络中其他的人。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 +msgid "WARN - Firewalled and Floodfill" +msgstr "警告 - 种子节点,因防火墙受限" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 +msgid "" +"You have configured I2P to be a floodfill router, but you are firewalled." +msgstr "您已将I2P设置为种子路由,但您的连接已因防火墙受阻。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 +msgid "" +"For best participation as a floodfill router, you should open your firewall." +msgstr "为了种子路由能够更好的参与到I2P网络中,请您的防火墙中打开端口。" + +# 暂不翻译方便反馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 +msgid "WARN - Firewalled with Inbound TCP Enabled" +msgstr "警告 - 入站TCP开启,但因防火墙受限" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 +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:621 +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连接,其他路由器节点将无法与您" +"建立连接,造成网络受阻。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 +msgid "Please open your firewall or disable inbound TCP above." +msgstr "请打开您的防火墙端口或禁用上面的入站TCP连接。" + +# 暂不翻译 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 +msgid "WARN - Firewalled with UDP Disabled" +msgstr "警告 - 因防火墙受限,且UDP被禁用" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 +msgid "You have configured inbound TCP, however you have disabled UDP." +msgstr "您设置了使用TCP连接,然而禁用了UDP连接。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 +msgid "" +"You appear to be firewalled on TCP, therefore your router cannot accept " +"inbound connections." +msgstr "您的TCP连接似乎因防火墙受阻,导致您的路由器无法接收入站连接。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:631 +msgid "Please open your firewall or enable UDP." +msgstr "请打开防火墙端口或启用UDP。" + +# 暂不翻译,方便错误反馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 +msgid "ERR - Clock Skew" +msgstr "错误 - 系统时滞" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 +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:637 +msgid "Correct your clock setting if this error persists." +msgstr "如果错误持续,请校对您的系统时间。" + +# 暂不翻译,方便错误反馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 +msgid "ERR - Private TCP Address" +msgstr "错误 - 私有TCP地址" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 +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一类的内网地" +"址。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 +msgid "Correct the address or disable inbound TCP above." +msgstr "正确设置IP地址或禁用上面的入站TCP连接。" + +# 暂不翻译,方便错误反馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 +msgid "ERR - SymmetricNAT" +msgstr "错误 - SymmetricNAT" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 +msgid "I2P detected that you are firewalled by a Symmetric NAT." +msgstr "I2P检测到您受到Symmetic NAT的阻挡。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 +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无法与此类防火墙很好的并存。您可能无法接收入站连接,这会障碍您连入I2P网" +"络。" + +# 暂不翻译,方便问题反馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:651 +msgid "" +"ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config " +"and restart" +msgstr "" +"错误 - UDP端口已占用 - 在高级设置中设置 i2np.udp.internalPort=新端口 并重启程" +"序" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 +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:655 +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的端口,如果是,关闭此程序或设置I2P使用不同的" +"端口。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:657 +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:659 +msgid "However, a restart is always required after this error." +msgstr "然而,发生此错误后一般需要重启程序才能解决。" + +# 暂不翻译,方便错误反馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 +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:663 +msgid "" +"You have not configured inbound TCP with a hostname and port above, however " +"you have disabled UDP." +msgstr "您没有设置入站TCP的主机名称和端口,同时又关闭了UDP。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:665 +msgid "Therefore your router cannot accept inbound connections." +msgstr "因此您的路由器无法接收入站连接。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:667 +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:669 +msgid "ERR - Client Manager I2CP Error - check logs" +msgstr "错误 - 客户程序管理器 I2CP 错误 - 请看日志" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 +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:673 +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:241 +msgid "I2P Advanced Configuration" +msgstr "I2P 高级设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:301 +msgid "Advanced I2P Configuration" +msgstr "I2P 高级设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:311 +msgid "Some changes may require a restart to take effect." +msgstr "某些设置需要程序重启后生效。" + +#: ../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:243 +msgid "I2P Client Configuration" +msgstr "I2P 客户程序设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:312 +msgid "Client Configuration" +msgstr "客户程序设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:314 +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:318 +msgid "To change other client options, edit the file" +msgstr "修改其他客户端设置请编辑文件" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:401 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:415 +msgid "All changes require restart to take effect." +msgstr "所有更改均需要程序重启才能生效。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:337 +#, fuzzy +msgid "Advanced Client Interface Configuration" +msgstr "I2P 高级设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:339 +msgid "External I2CP (I2P Client Protocol) Interface Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 +msgid "Enabled without SSL" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351 +msgid "Enabled with SSL required" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 +msgid "Disabled - Clients outside this Java process may not connect" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:359 +msgid "I2CP Port" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:363 +#, fuzzy +msgid "I2CP Interface" +msgstr "I2P内部设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:379 +#, fuzzy +msgid "Authorization" +msgstr "作者" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:385 +msgid "Require username and password" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:387 +#, fuzzy +msgid "Username" +msgstr "名称" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:391 +msgid "Password" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:397 +msgid "Any changes made here must also be configured in the external client." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:399 +msgid "Many clients do not support SSL or authorization." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:407 +msgid "WebApp Configuration" +msgstr "WebApp 设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 +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 Web 程序随客户端“web控制台”一同启动,并与路由运行于同一JVM中。" +"这些Web程序通常可以通过路由器界面直接访问。他们可能是完整的程序 (例如 " +"i2psnark/BT客户端),其他客户端程序的前端或必须单独启动的程序(例如. susidns, " +"i2ptunnel),甚至根本没有Web界面(例如 addressbook)。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:411 +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 "" +"从webapps目录中删除相应的.war文件同样可以禁用Web程序;然而这些 .war 文件和Web" +"程序在更新I2P后还会再次出现,所以推荐在这里通过设置的方法禁用不用的Web程序。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:421 +msgid "Plugin Configuration" +msgstr "插件设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 +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:429 +msgid "Plugin Installation" +msgstr "插件安装" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 +msgid "To install a plugin, enter the download URL:" +msgstr "安装插件前,请输入插件的下载链接:" + +#: ../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:227 +msgid "I2P Keyring Configuration" +msgstr "I2P 钥匙环设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:295 +msgid "The router keyring is used to decrypt encrypted leaseSets." +msgstr "路由的钥匙环被用来解密和加密赁集." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:298 +msgid "" +"The keyring may contain keys for local or remote encrypted destinations." +msgstr "钥匙环可以包含本地和远程的加密目标(Destination)." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:308 +msgid "Manual Keyring Addition" +msgstr "手动添加钥匙环" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:310 +msgid "Enter keys for encrypted remote destinations here." +msgstr "在此处添加远程加密目标的密钥。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:313 +msgid "Keys for local destinations must be entered on the" +msgstr "输入本地目标的密钥请到" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:315 +msgid "I2PTunnel page" +msgstr "I2P 隧道页面" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:317 +msgid "Dest. name, hash, or full key" +msgstr "目标(Dest.)名称, HASH, 或完整公钥" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:319 +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:241 +msgid "I2P Logging Configuration" +msgstr "I2P 记录设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 +msgid "Configure I2P Logging Options" +msgstr "设置 I2P 记录选项" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:303 +msgid "Logging filename" +msgstr "日志文件名称" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307 +msgid "(the symbol '@' will be replaced during log rotation)" +msgstr "(日志轮转时符号'@'将被替换)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:309 +msgid "Log record format" +msgstr "日志记录格式" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 +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:315 +msgid "Log date format" +msgstr "日志日期格式" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 +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:321 +msgid "Max log file size" +msgstr "日志最大体积" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:325 +msgid "Default log level" +msgstr "默认日志等级" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329 +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:331 +msgid "Log level overrides" +msgstr "等级外<br>日志项目" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:335 +#, fuzzy +msgid "New override" +msgstr "等级外<br>日志项目" + +#: ../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:227 +msgid "I2P Peer Configuration" +msgstr "I2P 节点设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:305 +msgid "Manual Peer Controls" +msgstr "手动节点控制" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:307 +msgid "Router Hash" +msgstr "路由器Key(见NetDB)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:311 +msgid "Manually Ban / Unban a Peer" +msgstr "手动封杀/解封某个节点" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:313 +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:323 +msgid "Adjust Profile Bonuses" +msgstr "调整节点评分" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 +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 "" +"评分(Bonuse)可能为正或为负并影响节点是否评为快速和高容量节点。快速节点用于客" +"户程序通道,高容量节点用于探索隧道。当前评分显示于" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:327 +msgid "profiles page" +msgstr "节点信息页面" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:251 +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/configreseed_jsp.java:106 +#, fuzzy +msgid "config reseeding" +msgstr "钥匙环设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:240 +#, fuzzy +msgid "I2P Reseeding Configuration" +msgstr "I2P 钥匙环设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:300 +#, fuzzy +msgid "Reseeding Configuration" +msgstr "I2P 钥匙环设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:302 +msgid "" +"Reseeding is the bootstrapping process used to find other routers when you " +"first install I2P, or when your router has too few router references " +"remaining." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304 +msgid "" +"If reseeding has failed, you should first check your network connection." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:308 +msgid "" +"Change these only if HTTP is blocked by a restrictive firewall, reseed has " +"failed, and you have access to an HTTP proxy." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +#, java-format +msgid "See {0} for instructions on reseeding manually." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +msgid "the FAQ" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:312 +msgid "Reseed URL Selection" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 +msgid "Try SSL first then non-SSL" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:324 +msgid "Use SSL only" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:330 +msgid "Use non-SSL only" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:332 +#, fuzzy +msgid "Reseed URLs" +msgstr "补种(搜索节点启动网络)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:336 +msgid "Enable HTTP proxy (not used for SSL)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:340 +#, fuzzy +msgid "HTTP Proxy Host" +msgstr "HTTP 代理" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:344 +#, fuzzy +msgid "HTTP Proxy Port" +msgstr "HTTP 代理" + +#: ../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:227 +msgid "I2P Service Configuration" +msgstr "I2P 服务设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:285 +msgid "Shutdown the router" +msgstr "关闭路由器" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:287 +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:289 +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:299 +msgid "" +"If you want the router to restart itself after shutting down, you can choose " +"one of the following." +msgstr "如果你想要路由器关闭后自动重新启动,可以选择下面的选项。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:301 +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 "" +"此功能在如下情况下适用 - 例如当您修改了某些只在启动时读取的设置,例如路由器控" +"制台密码,路由监听接口等。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:303 +msgid "" +"A graceful restart will take a few minutes (but your peers will appreciate " +"your patience), while a hard restart does so immediately." +msgstr "" +"平滑重启可能会等待几分钟的时间(但你的节点一定会感激你的耐心),硬重启可以立即" +"完成。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 +msgid "" +"After tearing down the router, it will wait 1 minute before starting back up " +"again." +msgstr "路由关闭后将等待1分钟再重新启动。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:315 +msgid "Run on startup" +msgstr "启动时运行" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 +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 "" +"这里你可以通过下面的选项来设置开机后 I2P 是否启动 - I2P 将相应的安装或卸载I2P" +"服务。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 +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:329 +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:331 +msgid "" +"You may want to consider shutting down gracefully, as above, then running " +"uninstall_i2p_service_winnt.bat." +msgstr "" +"您可以考虑先平滑关闭路由,待退出后运行 uninstall_i2p_service_winnt.bat。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 +msgid "Debugging" +msgstr "调试" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 +msgid "View the job queue" +msgstr "查看作业队列" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 +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 <a href=" +"\"logs.jsp#servicelogs\">wrapper.log</a>." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 +msgid "Launch browser on router startup?" +msgstr "路由器启动时运行浏览器?" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 +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 "" +"此Web控制台是I2P的主要设置界面,所以如果您您觉得有必要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:228 +msgid "I2P Stats Configuration" +msgstr "I2P 统计设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302 +msgid "Configure I2P Stat Collection" +msgstr "设置 I2P 统计项" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:304 +msgid "Enable full stats?" +msgstr "启用完整统计?" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:311 +msgid "change requires restart to take effect" +msgstr "设置需要程序重启后才能生效。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:313 +msgid "Stat file" +msgstr "统计文件" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:317 +msgid "Filter" +msgstr "过滤器" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:328 +msgid "toggle all" +msgstr "全部切换" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:330 +msgid "Log" +msgstr "日志" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:332 +msgid "Graph" +msgstr "图表" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:371 +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:240 +msgid "I2P Tunnel Configuration" +msgstr "I2P 隧道设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:306 +msgid "The default settings work for most people." +msgstr "默认设置适于大多数人。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:310 +msgid "There is a fundamental tradeoff between anonymity and performance." +msgstr "匿名性需要以性能为代价。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:313 +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个跳点的隧道(例如 2跳点 + 0-2跳点,3跳点 + 0-1跳点, 3跳点 + 0-2跳点),或" +"大量常规+大量备用,可能降低性能和稳定性。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:316 +msgid "High CPU and/or high outbound bandwidth usage may result." +msgstr "导致高CPU占用和/或高上行流量。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:319 +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:333 +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:336 +msgid "Client tunnel changes are temporary and are not saved." +msgstr "对客户程序隧道的修改是临时的,将不予保存。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:338 +msgid "To make permanent client tunnel changes see the" +msgstr "要永久性更改客户通道的设置参见" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:340 +msgid "i2ptunnel page" +msgstr "I2P 隧道页面" + +#: ../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:240 +msgid "I2P UI Configuration" +msgstr "I2P 界面设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:292 +msgid "Router Console Theme" +msgstr "路由控制台主题" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:310 +msgid "Theme selection disabled for Internet Explorer, sorry." +msgstr "抱歉,主题功能在InternetExplorer中已禁用。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:312 +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的UserAgent;您需要设置浏览器(或过滤" +"式代理)使用不同的UserAgent,才能访问路由控制台的主题功能。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:316 +msgid "Router Console Language" +msgstr "路由控制台语言" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:320 +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:324 +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:227 +msgid "I2P Update Configuration" +msgstr "I2P 更新设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:303 +msgid "Check for I2P and news updates" +msgstr "检查I2P软件及新闻更新" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:305 +msgid "News & I2P Updates" +msgstr "软件及新闻更新" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:309 +msgid "Update In Progress" +msgstr "更新中" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:317 +msgid "News URL" +msgstr "新闻链接" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:321 +msgid "Refresh frequency" +msgstr "更新频率" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:327 +msgid "Update policy" +msgstr "升级策略" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331 +msgid "Update through the eepProxy?" +msgstr "通过I2P代理更新?" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:335 +msgid "eepProxy host" +msgstr "I2P代理主机" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:339 +msgid "eepProxy port" +msgstr "I2P代理端口" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:343 +msgid "Update URLs" +msgstr "更新链接" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:347 +msgid "Trusted keys" +msgstr "可信公钥" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:351 +msgid "Update with unsigned development builds?" +msgstr "更新包括未签名的开发版?" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:355 +msgid "Unsigned Build URL" +msgstr "未签名软件链接" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 +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:367 +msgid "Save" +msgstr "保存" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:115 +msgid "Internal Error" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:117 +#, fuzzy +msgid "Router Console" +msgstr "I2P 路由控制台" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:121 +#, fuzzy +msgid "Configuration" +msgstr "IP 设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129 +msgid "Sorry! There has been an internal error." +msgstr "" + +#. note to translators - both parameters are URLs +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:133 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:232 +#, java-format +msgid "Please report bugs on {0} or {1}." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 +msgid "" +"You may use the username \"guest\" and password \"guest\" if you do not wish " +"to register." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 +msgid "Please include this information in bug reports" +msgstr "报告问题时请包括以下信息" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:141 +msgid "Error Details" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:143 +#, fuzzy, java-format +msgid "Error {0}" +msgstr "错误 404" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:163 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:228 +#, fuzzy +msgid "I2P Version and Running Environment" +msgstr "I2P 版本及运行环境" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 +msgid "" +"Note that system information, log timestamps, and log messages may provide " +"clues to your location; please review everything you include in a bug report." +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:242 +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:244 +msgid "Error 404" +msgstr "错误 404" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:249 +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:227 +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:226 +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:226 +msgid "I2P Router Logs" +msgstr "I2P 路由器日志" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:281 +msgid "Critical Logs" +msgstr "关键日志" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:285 +msgid "Router Logs" +msgstr "路由器日志" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:291 +msgid "Service (Wrapper) Logs" +msgstr "服务(封装)日志" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:105 +msgid "network database summary" +msgstr "I2P 网络数据库概况" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:226 +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 "Web程序(war)未找到" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:230 +msgid "Web Application Not Running" +msgstr "Web程序(.war)未运行" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:232 +msgid "The requested web application is not running." +msgstr "您所访问的Web程序未启动。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:234 +msgid "" +"Please visit the <a href=\"/configclients.jsp#webapp\">config clients page</" +"a> to start it." +msgstr "" +"请先在<a href=\"/configclients.jsp#webapp\">配置客户端页面</a>中启动它。" + +#: ../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:226 +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:226 +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:243 +msgid "I2P Router Statistics" +msgstr "I2P 路由器统计数据" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:248 +#, java-format +msgid "Disable {0} 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:226 +msgid "I2P Tunnel Summary" +msgstr "I2P 隧道概况" + +#~ msgid "" +#~ "Ensure that nothing blocks outbound HTTP, check <a target=\"_top\" href=" +#~ "\"logs.jsp\">logs</a> and if nothing helps, read the <a target=\"_top\" " +#~ "href=\"http://www.i2p2.de/faq.html\">FAQ</a> about reseeding manually." +#~ msgstr "" +#~ "请保证HTTP通信没有受阻,检查 <a target=\"_top\" href=\"logs.jsp\">日志</" +#~ "a> ,如果问题仍无法解决,请参照 <a target=\"_top\" href=\"http://www.i2p2." +#~ "de/faq.html\">FAQ</a> 进行手动补种。" + +#~ msgid "Last reseed failed fully (failed reading seed URL)." +#~ msgstr "上次补种尝试失败(读取补种URL失败)。" + +#~ msgid "Last reseed failed fully (no routerInfo URLs at seed URL)." +#~ msgstr "上次补种尝试失败(补种服务器未返回任何路由信息URL)。" + +#~ msgid "Last reseed failed partly ({0}% of {1})." +#~ msgstr "上次补种部分失败({0}%失败,共{1})" + +#~ msgid "Last reseed failed ({0}% of {1})." +#~ msgstr "上次补种失败({0}%失败,共{1})" + +#~ msgid "Last reseed failed fully (exception caught)." +#~ msgstr "上次补种失败(exception caught)." + +#~ msgid "Show systray icon" +#~ msgstr "显示托盘图标" + +#~ msgid "System tray icon enabled." +#~ msgstr "系统托盘图标已启用" + +#~ msgid "System tray icon feature not supported on this platform. Sorry!" +#~ msgstr "您的平台不支持系统托盘图标功能" + +#~ msgid "Warning: unable to contact the systray manager" +#~ msgstr "警告:与托盘管理器通讯失败" + +#~ msgid "Hide systray icon" +#~ msgstr "隐藏系统图标" + +#~ msgid "System tray icon disabled." +#~ msgstr "系统托盘已禁用" + +#~ msgid "minute" +#~ msgstr "分钟" + +#~ msgid "minutes" +#~ msgstr "分钟" + +#~ msgid "avg value" +#~ msgstr "均值" + +#~ msgid "events" +#~ msgstr "事件" + +#~ msgid "lifetime average" +#~ msgstr "总平均值" + +#~ msgid "peak average" +#~ msgstr "峰值平均值" + +#~ msgid "Systray integration" +#~ msgstr "使用系统托盘" + +#~ 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 平台允许小程序进驻系统托盘,让你可以查看路由状态" + +#~ msgid "" +#~ "(later on, I2P client applications will be able to integrate their own " +#~ "functionality into the system tray as well)." +#~ msgstr "(以后的 I2P 客户端程序也会将它们的功能集成到系统托盘里)。" + +#~ msgid "" +#~ "If you are on windows, you can either enable or disable that icon here." +#~ msgstr "如果你使用Windows, 可以在这里开启或关闭这个托盘图标。" + +#~ msgid "" +#~ "Please report bugs on <a href=\"http://trac.i2p2.i2p/newticket\">trac." +#~ "i2p2.i2p</a>." +#~ msgstr "" +#~ "如果您发现错误请报告至<a href=\"http://trac.i2p2.i2p/newticket\">trac." +#~ "i2p2.i2p</a>。" + +#~ msgid "hops" +#~ msgstr "跳点" + +#~ msgid "tunnels" +#~ msgstr "隧道" + +#~ msgid "Tunnels in/out" +#~ msgstr "通道(上/下行)" + +#~ msgid "" +#~ "WebApp configuration saved successfully - restart required to take effect." +#~ msgstr "WebApp设置保存成功 - 程序重启后生效" + +#~ msgid "Start Now" +#~ msgstr "立即启动" + +#~ msgid "Show the router's workload, and how it's performing" +#~ msgstr "显示I2P路由器的负载与工作状况" + +#~ msgid "Jobs" +#~ msgstr "作业" + +#~ msgid "This is useful in some situations" +#~ msgstr "重启在某些情况下有用" + +#~ msgid "I2P will install (or remove) a service accordingly." +#~ msgstr "I2P将相应的将自身安装为服务(或卸载服务)。" + +#~ msgid "Expl. + Client" +#~ msgstr "探测+客户" + +#~ msgid "Part. from + to" +#~ msgstr "相邻共享节点" + +#~ msgid "Depth" +#~ msgstr "深度" + +#~ msgid "Addresses" +#~ msgstr "地址" + +#~ msgid "view without" +#~ msgstr "查看不含" + +#~ msgid "view with" +#~ msgstr "查看含" + +#~ msgid "stats" +#~ msgstr "统计" + +#~ msgid "View" +#~ msgstr "查看" + +#~ msgid "Not Failing" +#~ msgstr "标准" + +#~ msgid "" +#~ "If you want the router to restart itself after shutting down, you can " +#~ "choose one of the following. 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. A graceful restart will take a few minutes (but your peers " +#~ "will appreciate your patience), while a hard restart does so " +#~ "immediately. After tearing down the router, it will wait 1 minute before " +#~ "starting back up again." +#~ msgstr "" +#~ "如果你想要路由器关闭后重新启动,可以选择下面的选项。重启在某些情况下有用 " +#~ "- 例如当修改了客户程序仅在启动时读取的设置比如路由器控制界面的密码,监听的" +#~ "接口。平滑重启可能会等待几分钟的时间 (但其他节点一定会感激你的耐心),硬重" +#~ "启可以立即完成。 路由关闭后将等待1分钟再重新启动。" + +#~ msgid "" +#~ "On the windows platform, there is a small application to sit in the " +#~ "system tray, allowing you to view the router's status (later on, I2P " +#~ "client applications will be able to integrate their own functionality " +#~ "into the system tray as well). If you are on windows, you can either " +#~ "enable or disable that icon here." +#~ msgstr "" +#~ "windows 平台允许小程序进驻系统托盘,让你可以查看路由状态,(以后的 I2P 客户" +#~ "端程序也会将它们的功能集成到系统托盘里)。如果你使用Windows, 可以在这里开启" +#~ "或关闭这个托盘图标。" diff --git a/apps/susidns/locale/messages_zh.po b/apps/susidns/locale/messages_zh.po index ace16bf4b..02944af36 100644 --- a/apps/susidns/locale/messages_zh.po +++ b/apps/susidns/locale/messages_zh.po @@ -1,432 +1,505 @@ -# I2P -# Copyright (C) 2009 The I2P Project -# This file is distributed under the same license as the susidns package. -# To contribute translations, see http://www.i2p2.de/newdevelopers -# foo <foo@bar>, 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: I2P susidns\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-05-29 02:35+0000\n" -"PO-Revision-Date: 2010-05-29 12:51+0800\n" -"Last-Translator: walking <walking@mail.i2p>\n" -"Language-Team: foo <foo@bar>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Chinese\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 "搜索" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:203 -msgid "Search within filtered list" -msgstr "在过滤结果中搜索" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:205 -msgid "Filtered list" -msgstr "过滤结果列表" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:209 -msgid "no matches" -msgstr "无匹配项目" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:212 -msgid "Addressbook" -msgstr "地址簿" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:214 -msgid "contains no entries" -msgstr "包含 0 个项目" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:216 -msgid "contains 1 entry" -msgstr "包含 1 个项目" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:218 -#, java-format -msgid "contains {0} entries" -msgstr "包含 {0} 个项目" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:228 -#, java-format -msgid "Showing {0} of {1}" -msgstr "显示 {0} 个项目共 {1}" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:259 -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:368 -msgid "Add" -msgstr "添加" - -#: ../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 "替换" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:263 -#, java-format -msgid "Host name {0} is already in addressbook, unchanged." -msgstr "主机名称{0}已存在于地址簿中,本次操作未更新。" - -#: ../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 "域名{0}已以不同目标密钥的存在于地址簿中,点击“替换”进行覆盖" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:277 -#, java-format -msgid "Destination added for {0}." -msgstr "目标密钥已添加为{0}。" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:279 -#, java-format -msgid "Destination changed for {0}." -msgstr "目标已更新为{0}。" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:284 -msgid "Invalid Base 64 destination." -msgstr "无效的Base64目标密钥" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:288 -msgid "Please enter a host name and destination" -msgstr "请输入主机名称与目标" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:292 -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314 -msgid "Delete Selected" -msgstr "删除选中项" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:302 -#, java-format -msgid "Destination {0} deleted." -msgstr "目标 {0} 已删除" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:304 -#, java-format -msgid "{0} destinations deleted." -msgstr "{0} 个目标已删除" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:310 -msgid "Addressbook saved." -msgstr "地址簿已保存" - -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:313 -msgid "ERROR: Could not write addressbook file." -msgstr "错误:无法写入地址簿文件" - -#: ../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 "提交数据无效,可能的原因是您使用了浏览器中的“前进”或“后退”按钮造成会话过期,请重新提交。" - -#: ../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 "保存" - -#: ../src/java/src/i2p/susi/dns/ConfigBean.java:141 -msgid "Configuration saved." -msgstr "配置已保存" - -#: ../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 "刷新" - -#: ../src/java/src/i2p/susi/dns/ConfigBean.java:144 -msgid "Configuration reloaded." -msgstr "配置已重新载入" - -#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:138 -msgid "Subscriptions saved, updating addressbook from subscription sources now." -msgstr "订阅已保存,正在通过订阅地址更新地址簿。" - -#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:142 -msgid "Subscriptions saved." -msgstr "订阅已保存。" - -#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:146 -msgid "Subscriptions reloaded." -msgstr "订阅设置已重新载入。" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125 -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145 -msgid "addressbook" -msgstr "地址簿" - -#: ../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 "地址簿" - -#: ../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 "私人" - -#: ../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 "主要" - -#: ../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 "路由" - -#: ../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 "发布" - -#: ../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 "订阅" - -#: ../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 "配置" - -#: ../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 "介绍" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:163 -msgid "Filter" -msgstr "过滤器" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:166 -msgid "all" -msgstr "全部" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:177 -msgid "Current filter" -msgstr "当前过滤器" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:182 -msgid "clear filter" -msgstr "清除过滤器" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:224 -msgid "Name" -msgstr "名称" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:226 -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:362 -msgid "Destination" -msgstr "目标" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:257 -msgid "Mark for deletion" -msgstr "标记为删除" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:279 -msgid "address helper link" -msgstr "地址簿助手链接" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:312 -msgid "Cancel" -msgstr "取消" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345 -msgid "This addressbook is empty." -msgstr "此地址簿为空" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:356 -msgid "Add new destination" -msgstr "添加新目标" - -#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:358 -msgid "Hostname" -msgstr "主机名称" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:132 -msgid "Hints" -msgstr "提示" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134 -msgid "File and directory paths here are relative to the addressbook's working directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P\\addressbook\\ (Windows)." -msgstr "此处使用的路径是以地址簿工作目录为参照的相对路径,通常为 ~/.i2p/addressbook/ (Linux) 或 %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 "如果您希望想地址簿手动添加地址条目,请将其加入私有地址簿或主地址簿。" - -#: ../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 "路由地址簿与已发布地址簿会由地址簿程序负责更新。" - -#: ../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 "当您发布地址簿时,主地址簿与路由地址簿中的所有地址条目都会显示于已发布地址簿中。" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142 -msgid "Use the private addressbook for private destinations, these are not published." -msgstr "私有地址簿用来记录需要保密的私人目标,其中的条目不会被发布。" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144 -msgid "Options" -msgstr "选项" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146 -msgid "File containing the list of subscriptions URLs (no need to change)" -msgstr "含有订阅URL列表的文件(无需修改)" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148 -msgid "Update interval in hours" -msgstr "更新周期(小时)" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150 -msgid "Your public hosts.txt file (choose a path within your webserver document root)" -msgstr "您发布的公开地址簿 hosts.txt (请指定为您Web服务器目录中的某个路径以便发布。)" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152 -msgid "Your hosts.txt (don't change)" -msgstr "您的 host.txt (无需修改)" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:154 -msgid "Your personal addressbook, these hosts will be published" -msgstr "您的个人地址簿,其中的地址会参与发布。" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:156 -msgid "Your private addressbook, it is never published" -msgstr "您的私有地址簿,其中的地址不会被发布。" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158 -msgid "Port for your eepProxy (no need to change)" -msgstr "您的I2P代理端口(无需修改)" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160 -msgid "Hostname for your eepProxy (no need to change)" -msgstr "您的I2P代理主机名(无需修改)" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162 -msgid "Whether to update the published addressbook" -msgstr "是否更新发布地址簿" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164 -msgid "File containing the etags header from the fetched subscription URLs (no need to change)" -msgstr "此文件含有订阅URL返回的etag头(无需修改)" - -#: ../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 "此文件含有每个地址簿订阅URL上次获取时的修改时间(无需修改)" - -#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168 -msgid "File to log activity to (change to /dev/null if you like)" -msgstr "活动日志文件(关闭可设为/dev/null [Linux])" - -#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:91 -msgid "Introduction" -msgstr "介绍" - -#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:109 -msgid "What is the addressbook?" -msgstr "什么是地址簿" - -#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:111 -msgid "The addressbook application is part of your i2p installation." -msgstr "地址簿程序是I2P安装程序的一部分。" - -#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113 -msgid "It regularly updates your hosts.txt file from distributed sources or \"subscriptions\"." -msgstr "他通过分散的来源或称地址簿“订阅”(概念类似RSS)更新您的地址簿文件 host.txt。" - -#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115 -msgid "In the default configuration, the addressbook is only subscribed to www.i2p2.i2p." -msgstr "默认设置中地址簿仅订阅 www.i2p2.i2p 的项目。" - -#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117 -msgid "Subscribing to additional sites is easy, just add them to your <a href=\"subscriptions.jsp\">subscriptions</a> file." -msgstr "订阅其他网站的地址簿也很简单,只需将它们加入 <a href=\"subscriptions.jsp\">订阅</a> 文件即可。" - -#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:119 -msgid "For more information on naming in i2p, see <a href=\"http://www.i2p2.i2p/naming.html\">the overview on www.i2p2.i2p</a>." -msgstr "关于I2P网络域名系统的更多信息,参见 <a href=\"http://www.i2p2.i2p/naming.html\"> www.i2p2.i2p 网站上的“概述” </a>." - -#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121 -msgid "How does the addressbook work?" -msgstr "那么地址簿是如何工作的呢?" - -#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123 -msgid "The addressbook application regularly polls your subscriptions and merges their content into your \"router\" addressbook, stored in the hosts.txt file." -msgstr "地址簿程序定期通过订阅的URL获取新的地址簿条目并将它们合并入您的“路由”地址簿中,保存与 hosts.txt 文件内。" - -#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125 -msgid "Then it merges your \"master\" addressbook (userhosts.txt) into the router addressbook as well." -msgstr "随后他还会将您的“主要”地址簿(userhost.txt)合并入路由器地址簿。" - -#: ../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 "如果启用了相关配置,路由器地址簿会写入您的“发布”地址簿中,如果您有自己的eepsite匿名站点,那么它可以通过您的站点公开发布。" - -#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:129 -msgid "The router also uses a private addressbook (privatehosts.txt, not shown in the picture), which is not merged or published." -msgstr "路由器同时提供了私有地址簿(privatehost.txt,图片中为出现),其中的项目不会被合并或发布。" - -#: ../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 "您可以访问私有地址簿中的网站,但它们的地址绝不会通过您的公开地址簿发布给别人。" - -#: ../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 "私有地址簿还可以被用来设置网站别名。" - -#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132 -msgid "The subscription file contains a list of i2p URLs." -msgstr "订阅文件是一个I2P链接列表。" - -#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134 -msgid "The addressbook application regularly checks this list for new eepsites." -msgstr "地址簿程序定期通过这些链接检查是否有新的I2P匿名网站。" - -#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136 -msgid "Those URLs refer to published hosts.txt files." -msgstr "这些URL指向公开发布的hosts.txt文件。" - -#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138 -msgid "The default subscription is the hosts.txt from www.i2p2.i2p, which is updated infrequently." -msgstr "默认订阅是 www.i2p2.i2p 提供的 hosts.txt,此文件很少更新。" - -#: ../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 "所以订阅一些网站的最新地址簿是个不错的主意。" - -#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142 -msgid "See the FAQ for a list of subscription URLs." -msgstr "其他来源的订阅链接参见I2P站点的 <a href=\"http://www.i2p2.i2p/faq_zh.html\">FAQ</a>" - -#~ msgid "Delete" -#~ msgstr "删除" - +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the susidns package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo <foo@bar>, 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P susidns\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-09 15:10+0000\n" +"PO-Revision-Date: 2010-05-29 12:51+0800\n" +"Last-Translator: walking <walking@mail.i2p>\n" +"Language-Team: foo <foo@bar>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Chinese\n" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:200 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:193 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:197 +msgid "Search" +msgstr "搜索" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:204 +msgid "Search within filtered list" +msgstr "在过滤结果中搜索" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206 +msgid "Filtered list" +msgstr "过滤结果列表" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:210 +msgid "no matches" +msgstr "无匹配项目" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:213 +msgid "Addressbook" +msgstr "地址簿" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:215 +msgid "contains no entries" +msgstr "包含 0 个项目" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:217 +msgid "contains 1 entry" +msgstr "包含 1 个项目" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:219 +#, java-format +msgid "contains {0} entries" +msgstr "包含 {0} 个项目" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:229 +#, java-format +msgid "Showing {0} of {1}" +msgstr "显示 {0} 个项目共 {1}" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:368 +msgid "Add" +msgstr "添加" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:265 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:366 +msgid "Replace" +msgstr "替换" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264 +#, java-format +msgid "Host name {0} is already in addressbook, unchanged." +msgstr "主机名称{0}已存在于地址簿中,本次操作未更新。" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266 +#, java-format +msgid "" +"Host name {0} is already in addressbook with a different destination. Click " +"\"Replace\" to overwrite." +msgstr "域名{0}已以不同目标密钥的存在于地址簿中,点击“替换”进行覆盖" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278 +#, java-format +msgid "Destination added for {0}." +msgstr "目标密钥已添加为{0}。" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:280 +#, java-format +msgid "Destination changed for {0}." +msgstr "目标已更新为{0}。" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:285 +msgid "Invalid Base 64 destination." +msgstr "无效的Base64目标密钥" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:289 +msgid "Please enter a host name and destination" +msgstr "请输入主机名称与目标" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:293 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314 +msgid "Delete Selected" +msgstr "删除选中项" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:303 +#, java-format +msgid "Destination {0} deleted." +msgstr "目标 {0} 已删除" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305 +#, java-format +msgid "{0} destinations deleted." +msgstr "{0} 个目标已删除" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:311 +msgid "Addressbook saved." +msgstr "地址簿已保存" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:314 +msgid "ERROR: Could not write addressbook file." +msgstr "错误:无法写入地址簿文件" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319 +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151 +msgid "" +"Invalid form submission, probably because you used the \"back\" or \"reload" +"\" button on your browser. Please resubmit." +msgstr "" +"提交数据无效,可能的原因是您使用了浏览器中的“前进”或“后退”按钮造成会话过期," +"请重新提交。" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:130 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:130 +msgid "Save" +msgstr "保存" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:141 +msgid "Configuration saved." +msgstr "配置已保存" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:128 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:128 +msgid "Reload" +msgstr "刷新" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:144 +msgid "Configuration reloaded." +msgstr "配置已重新载入" + +#. Yes this is a hack. +#. No it doesn't work on a text-mode browser. +#. Fetching from the addressbook servlet +#. with the correct parameters will kick off a +#. config reload and fetch. +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:139 +msgid "" +"Subscriptions saved, updating addressbook from subscription sources now." +msgstr "订阅已保存,正在通过订阅地址更新地址簿。" + +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143 +msgid "Subscriptions saved." +msgstr "订阅已保存。" + +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147 +msgid "Subscriptions reloaded." +msgstr "订阅设置已重新载入。" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145 +msgid "addressbook" +msgstr "地址簿" + +#: ../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 "地址簿" + +#: ../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 "私人" + +#: ../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 "主要" + +#: ../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 "路由" + +#: ../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 "发布" + +#: ../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 "订阅" + +#: ../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 "配置" + +#: ../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 "介绍" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:163 +msgid "Filter" +msgstr "过滤器" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:166 +msgid "all" +msgstr "全部" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:177 +msgid "Current filter" +msgstr "当前过滤器" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:182 +msgid "clear filter" +msgstr "清除过滤器" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:224 +msgid "Name" +msgstr "名称" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:226 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:362 +msgid "Destination" +msgstr "目标" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:257 +msgid "Mark for deletion" +msgstr "标记为删除" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:279 +msgid "address helper link" +msgstr "地址簿助手链接" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:312 +msgid "Cancel" +msgstr "取消" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345 +msgid "This addressbook is empty." +msgstr "此地址簿为空" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:356 +msgid "Add new destination" +msgstr "添加新目标" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:358 +msgid "Hostname" +msgstr "主机名称" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:132 +msgid "Hints" +msgstr "提示" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134 +msgid "" +"File and directory paths here are relative to the addressbook's working " +"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P" +"\\addressbook\\ (Windows)." +msgstr "" +"此处使用的路径是以地址簿工作目录为参照的相对路径,通常为 ~/.i2p/addressbook/ " +"(Linux) 或 %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 "如果您希望想地址簿手动添加地址条目,请将其加入私有地址簿或主地址簿。" + +#: ../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 "路由地址簿与已发布地址簿会由地址簿程序负责更新。" + +#: ../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 "" +"当您发布地址簿时,主地址簿与路由地址簿中的所有地址条目都会显示于已发布地址簿" +"中。" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142 +msgid "" +"Use the private addressbook for private destinations, these are not " +"published." +msgstr "私有地址簿用来记录需要保密的私人目标,其中的条目不会被发布。" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144 +msgid "Options" +msgstr "选项" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146 +msgid "File containing the list of subscriptions URLs (no need to change)" +msgstr "含有订阅URL列表的文件(无需修改)" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148 +msgid "Update interval in hours" +msgstr "更新周期(小时)" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150 +msgid "" +"Your public hosts.txt file (choose a path within your webserver document " +"root)" +msgstr "" +"您发布的公开地址簿 hosts.txt (请指定为您Web服务器目录中的某个路径以便发布。)" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152 +msgid "Your hosts.txt (don't change)" +msgstr "您的 host.txt (无需修改)" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:154 +msgid "Your personal addressbook, these hosts will be published" +msgstr "您的个人地址簿,其中的地址会参与发布。" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:156 +msgid "Your private addressbook, it is never published" +msgstr "您的私有地址簿,其中的地址不会被发布。" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158 +msgid "Port for your eepProxy (no need to change)" +msgstr "您的I2P代理端口(无需修改)" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160 +msgid "Hostname for your eepProxy (no need to change)" +msgstr "您的I2P代理主机名(无需修改)" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162 +msgid "Whether to update the published addressbook" +msgstr "是否更新发布地址簿" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164 +msgid "" +"File containing the etags header from the fetched subscription URLs (no need " +"to change)" +msgstr "此文件含有订阅URL返回的etag头(无需修改)" + +#: ../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 "此文件含有每个地址簿订阅URL上次获取时的修改时间(无需修改)" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168 +msgid "File to log activity to (change to /dev/null if you like)" +msgstr "活动日志文件(关闭可设为/dev/null [Linux])" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:91 +msgid "Introduction" +msgstr "介绍" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:109 +msgid "What is the addressbook?" +msgstr "什么是地址簿" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:111 +msgid "The addressbook application is part of your i2p installation." +msgstr "地址簿程序是I2P安装程序的一部分。" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113 +msgid "" +"It regularly updates your hosts.txt file from distributed sources or " +"\"subscriptions\"." +msgstr "" +"他通过分散的来源或称地址簿“订阅”(概念类似RSS)更新您的地址簿文件 host.txt。" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115 +msgid "" +"In the default configuration, the addressbook is only subscribed to www.i2p2." +"i2p." +msgstr "默认设置中地址簿仅订阅 www.i2p2.i2p 的项目。" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117 +msgid "" +"Subscribing to additional sites is easy, just add them to your <a href=" +"\"subscriptions.jsp\">subscriptions</a> file." +msgstr "" +"订阅其他网站的地址簿也很简单,只需将它们加入 <a href=\"subscriptions.jsp\">订" +"阅</a> 文件即可。" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:119 +msgid "" +"For more information on naming in i2p, see <a href=\"http://www.i2p2.i2p/" +"naming.html\">the overview on www.i2p2.i2p</a>." +msgstr "" +"关于I2P网络域名系统的更多信息,参见 <a href=\"http://www.i2p2.i2p/naming.html" +"\"> www.i2p2.i2p 网站上的“概述” </a>." + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121 +msgid "How does the addressbook work?" +msgstr "那么地址簿是如何工作的呢?" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123 +msgid "" +"The addressbook application regularly polls your subscriptions and merges " +"their content into your \"router\" addressbook, stored in the hosts.txt file." +msgstr "" +"地址簿程序定期通过订阅的URL获取新的地址簿条目并将它们合并入您的“路由”地址簿" +"中,保存与 hosts.txt 文件内。" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125 +msgid "" +"Then it merges your \"master\" addressbook (userhosts.txt) into the router " +"addressbook as well." +msgstr "随后他还会将您的“主要”地址簿(userhost.txt)合并入路由器地址簿。" + +#: ../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 "" +"如果启用了相关配置,路由器地址簿会写入您的“发布”地址簿中,如果您有自己的" +"eepsite匿名站点,那么它可以通过您的站点公开发布。" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:129 +msgid "" +"The router also uses a private addressbook (privatehosts.txt, not shown in " +"the picture), which is not merged or published." +msgstr "" +"路由器同时提供了私有地址簿(privatehost.txt,图片中为出现),其中的项目不会被合并" +"或发布。" + +#: ../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 "" +"您可以访问私有地址簿中的网站,但它们的地址绝不会通过您的公开地址簿发布给别" +"人。" + +#: ../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 "私有地址簿还可以被用来设置网站别名。" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132 +msgid "The subscription file contains a list of i2p URLs." +msgstr "订阅文件是一个I2P链接列表。" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134 +msgid "" +"The addressbook application regularly checks this list for new eepsites." +msgstr "地址簿程序定期通过这些链接检查是否有新的I2P匿名网站。" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136 +msgid "Those URLs refer to published hosts.txt files." +msgstr "这些URL指向公开发布的hosts.txt文件。" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138 +msgid "" +"The default subscription is the hosts.txt from www.i2p2.i2p, which is " +"updated infrequently." +msgstr "默认订阅是 www.i2p2.i2p 提供的 hosts.txt,此文件很少更新。" + +#: ../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 "所以订阅一些网站的最新地址簿是个不错的主意。" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142 +msgid "See the FAQ for a list of subscription URLs." +msgstr "" +"其他来源的订阅链接参见I2P站点的 <a href=\"http://www.i2p2.i2p/faq_zh.html" +"\">FAQ</a>" + +#~ msgid "Delete" +#~ msgstr "删除" diff --git a/apps/susidns/src/bundle-messages.bat b/apps/susidns/src/bundle-messages.bat index 90feca972..cb72cc5d1 100644 --- a/apps/susidns/src/bundle-messages.bat +++ b/apps/susidns/src/bundle-messages.bat @@ -9,9 +9,11 @@ if not exist ..\locale\*.only goto updateALL rem put a messages_xx.only(eg messages_zh.only) into locale folder rem this script will only touch the po file(eg zh) you specified, leaving other po files untact. - +echo [tip] Puting a messages_{LangCode}.only (eg messages_zh.only) +echo into locale folder will restrict the PO file update +echo process to your choosen language ONLY. for %%i in (..\locale\*.only) do set PO=%%~ni -echo [Notice] Yu choose to Ony update the choosen file: %PO%.po +echo [info] %PO%.only found, will ONLY update file : %PO%.po for %%i in (..\locale\*.po) do if not %%~ni==%PO% ren %%i %%~ni.po- call sh --login %cd%\bmsg.sh From 99ebad3032ccca81c25592f3796a8de40b6c5dce Mon Sep 17 00:00:00 2001 From: sponge <sponge@mail.i2p> Date: Wed, 9 Feb 2011 16:15:36 +0000 Subject: [PATCH 167/463] BOB config fix, I2CP fix some leaks, see history.txt for details --- apps/BOB/src/net/i2p/BOB/BOB.java | 18 +++++++++++++++--- .../net/i2p/data/i2cp/I2CPMessageReader.java | 3 +++ .../i2p/internal/QueuedI2CPMessageReader.java | 8 +++++++- history.txt | 7 +++++++ .../client/QueuedClientConnectionRunner.java | 3 ++- 5 files changed, 34 insertions(+), 5 deletions(-) diff --git a/apps/BOB/src/net/i2p/BOB/BOB.java b/apps/BOB/src/net/i2p/BOB/BOB.java index 2c689f65d..60bf2b9ff 100644 --- a/apps/BOB/src/net/i2p/BOB/BOB.java +++ b/apps/BOB/src/net/i2p/BOB/BOB.java @@ -120,6 +120,7 @@ public class BOB { public final static String PROP_CONFIG_LOCATION = "BOB.config"; public final static String PROP_BOB_PORT = "BOB.port"; public final static String PROP_BOB_HOST = "BOB.host"; + public final static String PROP_CFG_VER = "BOB.CFG.VER"; private static NamedDB database; private static Properties props = new Properties(); private static AtomicBoolean spin = new AtomicBoolean(true); @@ -209,30 +210,41 @@ public class BOB { // Global router and client API configurations that are missing are set to defaults here. if (!props.containsKey(I2PClient.PROP_TCP_HOST)) { props.setProperty(I2PClient.PROP_TCP_HOST, "localhost"); + save = true; } if (!props.containsKey(I2PClient.PROP_TCP_PORT)) { props.setProperty(I2PClient.PROP_TCP_PORT, "7654"); - } - if (!props.containsKey(I2PClient.PROP_RELIABILITY)) { - props.setProperty(I2PClient.PROP_RELIABILITY, I2PClient.PROP_RELIABILITY_BEST_EFFORT); + save = true; } if (!props.containsKey(PROP_BOB_PORT)) { props.setProperty(PROP_BOB_PORT, "2827"); // 0xB0B + save = true; } if (!props.containsKey("inbound.length")) { props.setProperty("inbound.length", "1"); + save = true; } if (!props.containsKey("outbound.length")) { props.setProperty("outbound.length", "1"); + save = true; } if (!props.containsKey("inbound.lengthVariance")) { props.setProperty("inbound.lengthVariance", "0"); + save = true; } if (!props.containsKey("outbound.lengthVariance")) { props.setProperty("outbound.lengthVariance", "0"); + save = true; } if (!props.containsKey(PROP_BOB_HOST)) { props.setProperty(PROP_BOB_HOST, "localhost"); + save = true; + } + // PROP_RELIABILITY_NONE, PROP_RELIABILITY_BEST_EFFORT, PROP_RELIABILITY_GUARANTEED + if (!props.containsKey(PROP_CFG_VER)) { + props.setProperty(I2PClient.PROP_RELIABILITY, I2PClient.PROP_RELIABILITY_NONE); + props.setProperty(PROP_CFG_VER,"1"); + save = true; } if (save) { File cfg = new File(configLocation); diff --git a/core/java/src/net/i2p/data/i2cp/I2CPMessageReader.java b/core/java/src/net/i2p/data/i2cp/I2CPMessageReader.java index 39633881e..99990e0b5 100644 --- a/core/java/src/net/i2p/data/i2cp/I2CPMessageReader.java +++ b/core/java/src/net/i2p/data/i2cp/I2CPMessageReader.java @@ -197,6 +197,9 @@ public class I2CPMessageReader { } } _stream = null; + _listener = null; + _reader = null; + _readerThread = null; } } } diff --git a/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java b/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java index d713b678d..55b29b310 100644 --- a/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java +++ b/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java @@ -11,11 +11,13 @@ import net.i2p.util.I2PThread; * @since 0.8.3 */ public class QueuedI2CPMessageReader extends I2CPMessageReader { - private final I2CPMessageQueue in; + private /* final */ I2CPMessageQueue in; public QueuedI2CPMessageReader(I2CPMessageQueue in, I2CPMessageEventListener lsnr) { super(lsnr); this.in = in; + _reader = null; + _readerThread = null; _reader = new QueuedI2CPMessageReaderRunner(); _readerThread = new I2PThread(_reader, "I2CP Internal Reader " + (++__readerId), true); } @@ -57,6 +59,10 @@ public class QueuedI2CPMessageReader extends I2CPMessageReader { } } } + super.run(); // Since we are dead, this will do some clean up, nothing else :-) + in = null; + _readerThread = null; + _reader = null; } } } diff --git a/history.txt b/history.txt index 19395eac1..ce975c687 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,10 @@ +2011-02-09 sponge + * BOB: fixup delivery in config, adds config file versioning. + * I2CP: Fix most of the I2CP leaks. Two leaks remain, but they are small. + net.i2p.internal.QueuedI2CPMessageReader and + net.i2p.router.client.I2CPMessageQueueImpl + are the two remaining leaks. + 2011-02-07 zzz * i2psnark: - Check for dup magnet torrent when adding torrent file diff --git a/router/java/src/net/i2p/router/client/QueuedClientConnectionRunner.java b/router/java/src/net/i2p/router/client/QueuedClientConnectionRunner.java index 758e8221e..61c37c1f5 100644 --- a/router/java/src/net/i2p/router/client/QueuedClientConnectionRunner.java +++ b/router/java/src/net/i2p/router/client/QueuedClientConnectionRunner.java @@ -17,7 +17,7 @@ import net.i2p.util.Log; * @since 0.8.3 */ class QueuedClientConnectionRunner extends ClientConnectionRunner { - private final I2CPMessageQueue queue; + private /* final */ I2CPMessageQueue queue; /** * Create a new runner with the given queues @@ -46,6 +46,7 @@ class QueuedClientConnectionRunner extends ClientConnectionRunner { void stopRunning() { super.stopRunning(); queue.close(); + queue = null; } /** From c8866bebc48ad50d1fcfeefbba866768900e3af2 Mon Sep 17 00:00:00 2001 From: mathiasdm <mathiasdm@mail.i2p> Date: Thu, 10 Feb 2011 07:20:40 +0000 Subject: [PATCH 168/463] Added tests to fix HTTPTunnelServer header fix. --- apps/i2ptunnel/java/build.xml | 46 +++++++++++++++++++ .../i2p/i2ptunnel/I2PTunnelHTTPServer.java | 2 +- .../i2ptunnel/I2PTunnelHTTPServerTest.java | 45 ++++++++++++++++++ 3 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 apps/i2ptunnel/java/test/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java diff --git a/apps/i2ptunnel/java/build.xml b/apps/i2ptunnel/java/build.xml index f50fadd3e..163de6696 100644 --- a/apps/i2ptunnel/java/build.xml +++ b/apps/i2ptunnel/java/build.xml @@ -141,6 +141,52 @@ splitindex="true" windowtitle="I2PTunnel" /> </target> + + <target name="compileTest"> + <mkdir dir="./build" /> + <mkdir dir="./build/obj" /> + <javac srcdir="./src:./test" debug="true" source="1.5" target="1.5" deprecation="on" destdir="./build/obj" > + <compilerarg line="${javac.compilerargs}" /> + <classpath> + <pathelement location="../../../core/java/build/i2p.jar" /> + <pathelement location="../../ministreaming/java/build/mstreaming.jar" /> + </classpath> + </javac> + </target> + <target name="test" depends="clean, compileTest"> + <junit printsummary="on" fork="yes"> + <classpath> + <pathelement path="${classpath}" /> + <pathelement location="./build/obj" /> + <pathelement location="../../../core/java/build/i2p.jar" /> + </classpath> + <batchtest> + <fileset dir="./test/"> + <include name="**/*Test.java" /> + </fileset> + </batchtest> + <formatter type="xml"/> + </junit> + <mkdir dir="../../../reports/" /> + <mkdir dir="../../../reports/i2ptunnel/" /> + <mkdir dir="../../../reports/i2ptunnel/junit/" /> + <delete> + <fileset dir="../../../reports/i2ptunnel/junit"> + <include name="TEST-*.xml"/> + </fileset> + </delete> + <copy todir="../../../reports/i2ptunnel/junit"> + <fileset dir="."> + <include name="TEST-*.xml"/> + </fileset> + </copy> + <delete> + <fileset dir="."> + <include name="TEST-*.xml"/> + </fileset> + </delete> + </target> + <target name="clean"> <delete dir="./build" /> <delete dir="../jsp/WEB-INF/" /> diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java index 938a1ebcc..bafa0387c 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java @@ -418,7 +418,7 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer { } } - private static Map<String, List<String>> readHeaders(InputStream in, StringBuilder command, String[] skipHeaders, I2PAppContext ctx) throws IOException { + protected static Map<String, List<String>> readHeaders(InputStream in, StringBuilder command, String[] skipHeaders, I2PAppContext ctx) throws IOException { HashMap<String, List<String>> headers = new HashMap<String, List<String>>(); StringBuilder buf = new StringBuilder(128); diff --git a/apps/i2ptunnel/java/test/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java b/apps/i2ptunnel/java/test/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java new file mode 100644 index 000000000..f35787e55 --- /dev/null +++ b/apps/i2ptunnel/java/test/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java @@ -0,0 +1,45 @@ +package net.i2p.i2ptunnel; + +import java.io.BufferedWriter; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStreamWriter; +import java.util.Map; +import java.util.List; + +import junit.framework.TestCase; + +public class I2PTunnelHTTPServerTest extends TestCase { + + public InputStream fillInputStream(String headers) throws IOException { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(baos)); + bw.write(headers); + bw.flush(); + byte[] bytes = baos.toByteArray(); + return new ByteArrayInputStream(bytes); + } + + public void testSimpleHeader() throws IOException { + String headerString = "GET /blah HTTP/1.1\r\n"; + headerString += "BLAH: something\r\n"; + headerString += "\r\n"; + InputStream in = fillInputStream(headerString); + Map<String, List<String>> headers = I2PTunnelHTTPServer.readHeaders(in, new StringBuilder(128), new String[0], null); + assertEquals(headers.size(), 1); //One header + } + + public void testDuplicateHeader() throws IOException { + String headerString = "GET /something HTTP/1.1\r\n"; + headerString += "someHeader: blabla bla bloooo\r\n"; + headerString += "someHeader: oh my, duplication!\r\n"; + headerString += "\r\n"; + InputStream in = fillInputStream(headerString); + Map<String, List<String>> headers = I2PTunnelHTTPServer.readHeaders(in, new StringBuilder(128), new String[0], null); + assertEquals(headers.size(), 1); + assertEquals(headers.get("someHeader").size(), 2); + } + +} From 2db136b420b805816883113429a33fc19c49d3b6 Mon Sep 17 00:00:00 2001 From: walking <walking@mail.i2p> Date: Thu, 10 Feb 2011 09:46:25 +0000 Subject: [PATCH 169/463] * minor revise on some wording. * updated translation. --- .../src/org/klomp/snark/SnarkManager.java | 2 +- .../org/klomp/snark/web/I2PSnarkServlet.java | 3 +- apps/i2psnark/locale/messages_zh.po | 2125 ++- apps/i2ptunnel/locale/messages_zh.po | 1597 ++- .../net/i2p/router/web/StatsGenerator.java | 7 +- apps/routerconsole/locale/messages_zh.po | 11250 ++++++++-------- 6 files changed, 7291 insertions(+), 7693 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index e7803ded3..f0f7a1f54 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -595,7 +595,7 @@ public class SnarkManager implements Snark.CompleteListener { // addMessage(_("Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will announce to DHT only.", info.getName())); } else { //addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); - addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers before starting the torrent.", info.getName())); + addMessage(_("Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is enabled before starting this torrent.", info.getName())); dontAutoStart = true; } } diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index b8f986fc3..0b15de790 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -1216,7 +1216,8 @@ public class I2PSnarkServlet extends Default { out.write("</option>\n"); // todo remember this one with _lastAnnounceURL also out.write("<option value=\"none\">"); - out.write(_("Open trackers and DHT only")); + //out.write(_("Open trackers and DHT only")); + out.write(_("Open trackers only")); out.write("</option>\n"); Map trackers = _manager.getTrackers(); for (Iterator iter = trackers.entrySet().iterator(); iter.hasNext(); ) { diff --git a/apps/i2psnark/locale/messages_zh.po b/apps/i2psnark/locale/messages_zh.po index 070ede6ad..fb29b8f7a 100644 --- a/apps/i2psnark/locale/messages_zh.po +++ b/apps/i2psnark/locale/messages_zh.po @@ -1,1092 +1,1033 @@ -# I2P -# Copyright (C) 2009 The I2P Project -# This file is distributed under the same license as the i2psnark package. -# To contribute translations, see http://www.i2p2.de/newdevelopers -# foo <foo@bar>, 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: I2P i2psnark\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-09 15:08+0000\n" -"PO-Revision-Date: 2010-10-04 12:00+0800\n" -"Last-Translator: walking <walking@mail.i2p>\n" -"Language-Team: foo <foo@bar>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Chinese\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#: ../java/src/org/klomp/snark/SnarkManager.java:307 -#, java-format -msgid "Total uploaders limit changed to {0}" -msgstr "总上传种子数限制已更新为{0}" - -#: ../java/src/org/klomp/snark/SnarkManager.java:309 -#, java-format -msgid "Minimum total uploaders limit is {0}" -msgstr "最低上传种子数限制为{0}" - -#: ../java/src/org/klomp/snark/SnarkManager.java:321 -#, java-format -msgid "Up BW limit changed to {0}KBps" -msgstr "上传带宽限制改为 {0} KBps" - -#: ../java/src/org/klomp/snark/SnarkManager.java:323 -#, java-format -msgid "Minimum up bandwidth limit is {0}KBps" -msgstr "最小上传带宽限制为 {0} KBps" - -#: ../java/src/org/klomp/snark/SnarkManager.java:335 -#, fuzzy, java-format -msgid "Startup delay changed to {0}" -msgstr "启动延迟已更新为{0}" - -#: ../java/src/org/klomp/snark/SnarkManager.java:386 -msgid "I2CP and tunnel changes will take effect after stopping all torrents" -msgstr "I2CP与隧道设置的变化在所有种子停止后才能生效" - -#: ../java/src/org/klomp/snark/SnarkManager.java:393 -msgid "Disconnecting old I2CP destination" -msgstr "正在断开旧的I2CP目标" - -#: ../java/src/org/klomp/snark/SnarkManager.java:397 -#, java-format -msgid "I2CP settings changed to {0}" -msgstr "I2CP设置改为{0}" - -#: ../java/src/org/klomp/snark/SnarkManager.java:402 -msgid "" -"Unable to connect with the new settings, reverting to the old I2CP settings" -msgstr "无法通过新设置连接,恢复I2CP的旧设置" - -#: ../java/src/org/klomp/snark/SnarkManager.java:406 -msgid "Unable to reconnect with the old settings!" -msgstr "旧设置也无法连接!" - -#: ../java/src/org/klomp/snark/SnarkManager.java:408 -msgid "Reconnected on the new I2CP destination" -msgstr "重新连接新I2CP目标" - -#: ../java/src/org/klomp/snark/SnarkManager.java:418 -#, java-format -msgid "I2CP listener restarted for \"{0}\"" -msgstr "\"{0}\"的I2CP监听端口已启动" - -#: ../java/src/org/klomp/snark/SnarkManager.java:429 -msgid "Enabled autostart" -msgstr "启用自动启动" - -#: ../java/src/org/klomp/snark/SnarkManager.java:431 -msgid "Disabled autostart" -msgstr "禁用自动启动" - -#: ../java/src/org/klomp/snark/SnarkManager.java:437 -msgid "Enabled open trackers - torrent restart required to take effect." -msgstr "启用OpenTracker-重新启动种子后生效" - -#: ../java/src/org/klomp/snark/SnarkManager.java:439 -msgid "Disabled open trackers - torrent restart required to take effect." -msgstr "禁用OpenTracker - 重新启动种子后生效" - -#: ../java/src/org/klomp/snark/SnarkManager.java:447 -msgid "Open Tracker list changed - torrent restart required to take effect." -msgstr "OpenTracker列表已改变 - 重新启动种子后生效" - -#: ../java/src/org/klomp/snark/SnarkManager.java:454 -#, java-format -msgid "{0} theme loaded, return to main i2psnark page to view." -msgstr "" - -#: ../java/src/org/klomp/snark/SnarkManager.java:461 -msgid "Configuration unchanged." -msgstr "设置未改变" - -#: ../java/src/org/klomp/snark/SnarkManager.java:471 -#, java-format -msgid "Unable to save the config to {0}" -msgstr "无法保存设置到{0}" - -#: ../java/src/org/klomp/snark/SnarkManager.java:536 -msgid "Connecting to I2P" -msgstr "正在连接到I2P" - -#: ../java/src/org/klomp/snark/SnarkManager.java:539 -msgid "Error connecting to I2P - check your I2CP settings!" -msgstr "连接I2P时发生错误 - 请检查I2CP设置!" - -#: ../java/src/org/klomp/snark/SnarkManager.java:548 -#, java-format -msgid "Error: Could not add the torrent {0}" -msgstr "错误:无法添加种子{0}" - -#. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:570 -#, java-format -msgid "Cannot open \"{0}\"" -msgstr "无法打开 \"{0}\"" - -#. TODO - if the existing one is a magnet, delete it and add the metainfo instead? -#: ../java/src/org/klomp/snark/SnarkManager.java:586 -#: ../java/src/org/klomp/snark/SnarkManager.java:657 -#: ../java/src/org/klomp/snark/SnarkManager.java:712 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1923 -#, fuzzy, java-format -msgid "Torrent with this info hash is already running: {0}" -msgstr "种子已启动:{0}" - -#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:593 -#, fuzzy, java-format -msgid "" -"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers " -"only." -msgstr "" -"警告 - 忽略\"{0}\"文件中I2P网络外的Tracker服务器,文件将仅发布至 I2P 内的 " -"Open Tracker 服务器。" - -#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:598 -#, fuzzy, java-format -msgid "" -"Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " -"disabled, you should enable open trackers before starting the torrent." -msgstr "" -"警告 - 忽略\"{0}\"文件中I2P网络外的Tracker服务器,OpenTracker已禁用,启动此种" -"子前您必须启用OpenTracker。" - -#: ../java/src/org/klomp/snark/SnarkManager.java:619 -#, java-format -msgid "Torrent in \"{0}\" is invalid" -msgstr "无效种子 \"{0}\" " - -#: ../java/src/org/klomp/snark/SnarkManager.java:624 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1946 -#, java-format -msgid "ERROR - Out of memory, cannot create torrent from {0}" -msgstr "" - -#: ../java/src/org/klomp/snark/SnarkManager.java:635 -#, java-format -msgid "Torrent added and started: \"{0}\"" -msgstr "已添加并启动种子:\"{0}\"" - -#: ../java/src/org/klomp/snark/SnarkManager.java:637 -#, java-format -msgid "Torrent added: \"{0}\"" -msgstr "已添加种子:\"{0}\"" - -#: ../java/src/org/klomp/snark/SnarkManager.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:488 -#, java-format -msgid "Fetching {0}" -msgstr "正在获取{0}" - -#: ../java/src/org/klomp/snark/SnarkManager.java:671 -#, java-format -msgid "" -"We have no saved peers and no other torrents are running. Fetch of {0} will " -"not succeed until you start another torrent." -msgstr "" - -#: ../java/src/org/klomp/snark/SnarkManager.java:675 -#, fuzzy, java-format -msgid "Adding {0}" -msgstr "正在获取{0}" - -#: ../java/src/org/klomp/snark/SnarkManager.java:722 -#: ../java/src/org/klomp/snark/SnarkManager.java:745 -#: ../java/src/org/klomp/snark/SnarkManager.java:1166 -#, fuzzy, java-format -msgid "Failed to copy torrent file to {0}" -msgstr "无法复制种子文件到{0}" - -#: ../java/src/org/klomp/snark/SnarkManager.java:968 -#, java-format -msgid "Too many files in \"{0}\" ({1}), deleting it!" -msgstr "\"{0}\" ({1}) 含有太多文件,删除之!" - -#: ../java/src/org/klomp/snark/SnarkManager.java:970 -#, java-format -msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" -msgstr "种子文件 \"{0}\" 不以 \".torrent\"结尾,正在删除!" - -#: ../java/src/org/klomp/snark/SnarkManager.java:972 -#, java-format -msgid "No pieces in \"{0}\", deleting it!" -msgstr "\"{0}\" 中没有数据片,删除之!" - -#: ../java/src/org/klomp/snark/SnarkManager.java:974 -#, java-format -msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!" -msgstr "\"{0}\" 中文件分片太多,限额为{1},删除之!" - -#: ../java/src/org/klomp/snark/SnarkManager.java:976 -#, java-format -msgid "Pieces are too large in \"{0}\" ({1}B), deleting it." -msgstr "\"{0}\" ({1}B) 中文件分片过大,删除之。" - -#: ../java/src/org/klomp/snark/SnarkManager.java:977 -#, java-format -msgid "Limit is {0}B" -msgstr "限额为 {0}B" - -#: ../java/src/org/klomp/snark/SnarkManager.java:985 -#, java-format -msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" -msgstr "目前不支持大于{0}B 的种子,正在删除\"{1}\"" - -#: ../java/src/org/klomp/snark/SnarkManager.java:1001 -#, java-format -msgid "Error: Could not remove the torrent {0}" -msgstr "错误:无法删除种子{0}" - -#: ../java/src/org/klomp/snark/SnarkManager.java:1022 -#: ../java/src/org/klomp/snark/SnarkManager.java:1040 -#, java-format -msgid "Torrent stopped: \"{0}\"" -msgstr "种子已停止:\"{0}\"" - -#: ../java/src/org/klomp/snark/SnarkManager.java:1061 -#, java-format -msgid "Torrent removed: \"{0}\"" -msgstr "种子已删除:\"{0}\"" - -#: ../java/src/org/klomp/snark/SnarkManager.java:1069 -#, fuzzy, java-format -msgid "Adding torrents in {0}" -msgstr "{0}分钟内完成添加" - -#: ../java/src/org/klomp/snark/SnarkManager.java:1118 -#, fuzzy, java-format -msgid "Download finished: {0}" -msgstr "下载已完成:\"{0}\"" - -#: ../java/src/org/klomp/snark/SnarkManager.java:1162 -#, fuzzy, java-format -msgid "Metainfo received for {0}" -msgstr "从{0}获得种子失败" - -#: ../java/src/org/klomp/snark/SnarkManager.java:1163 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:523 -#, java-format -msgid "Starting up torrent {0}" -msgstr "正在启动种子{0}" - -#: ../java/src/org/klomp/snark/SnarkManager.java:1217 -msgid "Unable to connect to I2P!" -msgstr "无法连接至I2P!" - -#: ../java/src/org/klomp/snark/SnarkManager.java:1223 -#, fuzzy, java-format -msgid "Unable to add {0}" -msgstr "无法保存设置到{0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:204 -msgid "I2PSnark - Anonymous BitTorrent Client" -msgstr "I2PSnark - 匿名BitTorrent客户端" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:217 -msgid "Torrents" -msgstr "种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:220 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:227 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006 -msgid "I2PSnark" -msgstr "" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:224 -msgid "Refresh page" -msgstr "刷新页面" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:229 -msgid "Forum" -msgstr "论坛" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:283 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 -msgid "Status" -msgstr "状态" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:289 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:291 -msgid "Hide Peers" -msgstr "隐藏用户" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:296 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:298 -msgid "Show Peers" -msgstr "显示用户" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:305 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1591 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1607 -msgid "Torrent" -msgstr "种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:309 -#, fuzzy -msgid "Estimated time remaining" -msgstr "剩余字节数" - -#. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:312 -msgid "ETA" -msgstr "预计剩余时间" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316 -msgid "Downloaded" -msgstr "已下载" - -#. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:319 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:333 -msgid "RX" -msgstr "" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:323 -msgid "Uploaded" -msgstr "已上传" - -#. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:326 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:343 -msgid "TX" -msgstr "" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:331 -msgid "Down Rate" -msgstr "下载速度" - -#. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:336 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:345 -#, fuzzy -msgid "Rate" -msgstr "上传速度" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:341 -msgid "Up Rate" -msgstr "上传速度" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:363 -msgid "Stop all torrents and the I2P tunnel" -msgstr "停止全部种子及I2P隧道" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 -msgid "Stop All" -msgstr "停止全部" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:374 -msgid "Start all torrents and the I2P tunnel" -msgstr "启动全部种子及I2P隧道" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376 -msgid "Start All" -msgstr "启动全部" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:395 -msgid "No torrents loaded." -msgstr "未载入任何种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:400 -msgid "Totals" -msgstr "总计" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402 -#, java-format -msgid "1 torrent" -msgid_plural "{0} torrents" -msgstr[0] "{0}个种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:405 -#, java-format -msgid "1 connected peer" -msgid_plural "{0} connected peers" -msgstr[0] "{0}个已连接用户" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:494 -#, fuzzy, java-format -msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" -msgstr "无效链接 - 必须以http:// 开头" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:542 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569 -#, fuzzy, java-format -msgid "Magnet deleted: {0}" -msgstr "数据文件夹已删除:{0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:550 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:575 -#, java-format -msgid "Torrent file deleted: {0}" -msgstr "种子文件已删除:{0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:581 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:591 -#, java-format -msgid "Data file deleted: {0}" -msgstr "数据文件已删除:{0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 -#, java-format -msgid "Data file could not be deleted: {0}" -msgstr "无法删除数据文件:{0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:602 -#, java-format -msgid "Data dir deleted: {0}" -msgstr "数据文件夹已删除:{0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 -msgid "Error creating torrent - you must select a tracker" -msgstr "创建种子时发生错误 - 您必须选择一个Tracker" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:651 -#, java-format -msgid "Torrent created for \"{0}\"" -msgstr "种子创建成功\"{0}\"" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653 -#, java-format -msgid "" -"Many I2P trackers require you to register new torrents before seeding - " -"please do so before starting \"{0}\"" -msgstr "" -"多数I2PTracker需要用户在做种前注册新种子 - 请在启动 \"{0}\"前到所使用的" -"Tracker进行注册。" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655 -#, java-format -msgid "Error creating a torrent for \"{0}\"" -msgstr "创建种子时发生错误 \"{0}\"" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:658 -#, java-format -msgid "Cannot create a torrent for the nonexistent data: {0}" -msgstr "无法为不存在的数据文件创建种子:{0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:661 -msgid "Error creating torrent - you must enter a file or directory" -msgstr "创建种子时发生错误 - 必须指定文件或文件夹" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664 -msgid "Stopping all torrents and closing the I2P tunnel." -msgstr "正在停用所有种子并关闭I2P隧道。" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:675 -msgid "I2P tunnel closed." -msgstr "I2P隧道已关闭" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:678 -msgid "Opening the I2P tunnel and starting all torrents." -msgstr "正在打开I2P隧道并启动所有种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:806 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812 -#, fuzzy -msgid "Tracker Error" -msgstr "Tracker错误" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:820 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:824 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:832 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:841 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845 -#, java-format -msgid "1 peer" -msgid_plural "{0} peers" -msgstr[0] "{0}个用户" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:817 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822 -msgid "Seeding" -msgstr "正做种" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:826 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1613 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1718 -msgid "Complete" -msgstr "完成" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:829 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834 -msgid "OK" -msgstr "确定" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:843 -msgid "Stalled" -msgstr "等待" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:847 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:850 -msgid "No Peers" -msgstr "没有用户" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852 -msgid "Stopped" -msgstr "已停用" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:863 -#, fuzzy -msgid "Torrent details" -msgstr "种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:864 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 -msgid "Info" -msgstr "" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:878 -msgid "View files" -msgstr "浏览文件" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:880 -msgid "Open file" -msgstr "打开文件" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:892 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1754 -#, fuzzy -msgid "Open" -msgstr "打开文件" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:938 -msgid "Stop the torrent" -msgstr "停止种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:940 -msgid "Stop" -msgstr "停止" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:949 -msgid "Start the torrent" -msgstr "启动种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:951 -msgid "Start" -msgstr "启动" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:961 -msgid "Remove the torrent from the active list, deleting the .torrent file" -msgstr "取消下载任务并删除对应种子文件。" - -#. Can't figure out how to escape double quotes inside the onclick string. -#. Single quotes in translate strings with parameters must be doubled. -#. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:966 -#, java-format -msgid "" -"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded " -"data will not be deleted) ?" -msgstr "您确定要删除文件“{0}.torrent”(下载的数据文件不会被删除)?" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 -msgid "Remove" -msgstr "移除" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:979 -msgid "Delete the .torrent file and the associated data file(s)" -msgstr "删除种子及所下载的文件" - -#. Can't figure out how to escape double quotes inside the onclick string. -#. Single quotes in translate strings with parameters must be doubled. -#. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:984 -#, java-format -msgid "" -"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " -"data?" -msgstr "您确定要删除种子“{0}”(下载的数据文件会一并被删除)?" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 -msgid "Delete" -msgstr "删除" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1020 -msgid "Unknown" -msgstr "未知" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 -msgid "Seed" -msgstr "种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055 -msgid "Uninteresting (The peer has no pieces we need)" -msgstr "无需要部分" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057 -msgid "Choked (The peer is not allowing us to request pieces)" -msgstr "拒绝请求" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 -msgid "Uninterested (We have no pieces the peer needs)" -msgstr "无需要部分" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079 -msgid "Choking (We are not allowing the peer to request pieces)" -msgstr "拒绝请求" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1137 -#, fuzzy, java-format -msgid "Details at {0} tracker" -msgstr "选择一个Tracker" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166 -msgid "Add Torrent" -msgstr "添加种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1168 -msgid "From URL" -msgstr "从URL" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1171 -msgid "Torrent file must originate from an I2P-based tracker" -msgstr "" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176 -msgid "Add torrent" -msgstr "添加种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1179 -#, fuzzy, java-format -msgid "You can also copy .torrent files to: {0}." -msgstr "或者您可以将.torrent文件复制到<code>{0}." - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181 -msgid "Removing a .torrent will cause it to stop." -msgstr "删除种子文件将导致该下载任务中止。" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1204 -msgid "Create Torrent" -msgstr "创建种子" - -#. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 -msgid "Data to seed" -msgstr "做种数据" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1211 -msgid "File or directory to seed (must be within the specified path)" -msgstr "做种文件或文件夹(必须下面为Snark指定的文件夹中)" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1213 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1632 -msgid "Tracker" -msgstr "Tracker服务器" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1215 -msgid "Select a tracker" -msgstr "选择一个Tracker" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1219 -#, fuzzy -msgid "Open trackers and DHT only" -msgstr "Open Tracker发布链接" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1234 -msgid "or" -msgstr "或" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237 -msgid "Specify custom tracker announce URL" -msgstr "指定Open Tracker发布链接" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240 -msgid "Create torrent" -msgstr "创建种子" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1258 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1397 -msgid "Configuration" -msgstr "设置" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1262 -msgid "Data directory" -msgstr "数据文件夹" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264 -msgid "Edit i2psnark.config and restart to change" -msgstr "编辑 i2psnark.config 并重启Snark后生效" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1268 -msgid "Auto start" -msgstr "自动启动" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1272 -msgid "If checked, automatically start torrents that are added" -msgstr "选中后Snark将自动启动已添加的所有种子。" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1276 -msgid "Theme" -msgstr "" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1289 -msgid "Startup delay" -msgstr "启动延迟" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 -msgid "minutes" -msgstr "分" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1315 -msgid "Total uploader limit" -msgstr "限制总上传种子数为" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1318 -msgid "peers" -msgstr "用户" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1322 -msgid "Up bandwidth limit" -msgstr "上传带宽限制" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1325 -msgid "Half available bandwidth recommended." -msgstr "推荐设置为可用带宽的一半。" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1327 -msgid "View or change router bandwidth" -msgstr "浏览或修改路由器带宽" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1331 -msgid "Use open trackers also" -msgstr "同时使用OpenTracker" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1335 -msgid "" -"If checked, announce torrents to open trackers as well as the tracker listed " -"in the torrent file" -msgstr "选择后在OpenTracker及种子文件中的Tracker上同时发布。" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1339 -msgid "Open tracker announce URLs" -msgstr "Open Tracker发布链接" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351 -msgid "Inbound Settings" -msgstr "入站设置" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1357 -msgid "Outbound Settings" -msgstr "出站设置" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1365 -msgid "I2CP host" -msgstr "I2CP主机" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1370 -msgid "I2CP port" -msgstr "I2CP端口" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1383 -msgid "I2CP options" -msgstr "I2CP选项" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 -msgid "Save configuration" -msgstr "保存设置" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1438 -#, java-format -msgid "Invalid info hash in magnet URL {0}" -msgstr "" - -#. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1448 -#, java-format -msgid "1 hop" -msgid_plural "{0} hops" -msgstr[0] "{0}跳" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1449 -#, java-format -msgid "1 tunnel" -msgid_plural "{0} tunnels" -msgstr[0] "{0}隧道" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1611 -#, fuzzy -msgid "Completion" -msgstr "完成" - -#. else unknown -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1615 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1664 -msgid "Size" -msgstr "大小" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1620 -#, fuzzy -msgid "Files" -msgstr "文件" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1622 -msgid "Pieces" -msgstr "" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1623 -msgid "Piece size" -msgstr "" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1645 -msgid "Magnet link" -msgstr "" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1662 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1701 -msgid "Directory" -msgstr "文件夹" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671 -msgid "Priority" -msgstr "" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1676 -msgid "Up to higher level directory" -msgstr "上一层文件夹" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1706 -msgid "Torrent not found?" -msgstr "种子未找到" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1715 -msgid "File not found in torrent?" -msgstr "种子中没有发现文件?" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1728 -msgid "complete" -msgstr "完成" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1729 -msgid "bytes remaining" -msgstr "剩余字节数" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1780 -msgid "High" -msgstr "" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1785 -msgid "Normal" -msgstr "" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1790 -msgid "Skip" -msgstr "" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1799 -msgid "Save priorities" -msgstr "" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1914 -#, java-format -msgid "Torrent fetched from {0}" -msgstr "从{0}获取种子成功" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1936 -#, java-format -msgid "Torrent already running: {0}" -msgstr "种子已启动:{0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1938 -#, java-format -msgid "Torrent already in the queue: {0}" -msgstr "种子排队中:{0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 -#, java-format -msgid "Torrent at {0} was not valid" -msgstr "{0}的种子中有错误" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 -#, java-format -msgid "Torrent was not retrieved from {0}" -msgstr "从{0}获得种子失败" - -#~ msgid "size: {0}B" -#~ msgstr "大小:{0}B" - -#~ msgid "" -#~ "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=" -#~ "\"Torrent Status\">Status" -#~ msgstr "" -#~ "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=" -#~ "\"种子状态\">状态" - -#~ msgid "" -#~ "<img border=\"0\" src=\"/themes/console/snark/images/showpeers.png\" " -#~ "title=\"Toggle Peer Visibility\" alt=\"Hide Peers\">" -#~ msgstr "" -#~ "<img border=\"0\" src=\"/themes/console/snark/images/showpeers.png\" " -#~ "title=\"隐藏节点\" alt=\"隐藏节点\">" - -#~ msgid "" -#~ "<img border=\"0\" src=\"/themes/console/snark/images/hidepeers.png\" " -#~ "title=\"Toggle Peer Visibility\" alt=\"Show Peers\">" -#~ msgstr "" -#~ "<img border=\"0\" src=\"/themes/console/snark/images/hidepeers.png\" " -#~ "title=\"显示节点\" alt=\"显示节点\">" - -#~ msgid "" -#~ "<img border=\"0\" src=\"/themes/console/snark/images/torrent.png\" title=" -#~ "\"Loaded Torrents\">Torrent" -#~ msgstr "" -#~ "<img border=\"0\" src=\"/themes/console/snark/images/torrent.png\" title=" -#~ "\"载入的种子\">种子" - -#~ msgid "" -#~ "<img border=\"0\" src=\"/themes/console/snark/images/eta.png\" title=" -#~ "\"Estimated Download Time\">ETA" -#~ msgstr "" -#~ "<img border=\"0\" src=\"/themes/console/snark/images/eta.png\" title=\"预" -#~ "计剩余时间\">预计剩余时间" - -#~ msgid "" -#~ "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=\"Data " -#~ "Downloaded\">RX" -#~ msgstr "" -#~ "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=\"下载" -#~ "数据量\">下载" - -#~ msgid "" -#~ "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=" -#~ "\"Data Uploaded\">TX" -#~ msgstr "" -#~ "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=\"上传" -#~ "数据量\">上传" - -#~ msgid "" -#~ "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=" -#~ "\"Download Speed\">Rate" -#~ msgstr "" -#~ "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=\"下载" -#~ "速度\">下载速度" - -#~ msgid "" -#~ "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=" -#~ "\"Upload Speed\">Rate" -#~ msgstr "" -#~ "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=\"上传" -#~ "速度\">上传速度" - -#~ msgid "" -#~ "<img src=\"/themes/console/snark/images/stop_all.png\" title=\"Stop All " -#~ "Torrents\" alt=\"Stop All\">" -#~ msgstr "" -#~ "<img src=\"/themes/console/snark/images/stop_all.png\" title=\"全部停止\" " -#~ "alt=\"全部停止\">" - -#~ msgid "" -#~ "<img src=\"/themes/console/snark/images/start_all.png\" title=\"Start All " -#~ "Torrents\" alt=\"Start All\">" -#~ msgstr "" -#~ "<img src=\"/themes/console/snark/images/start_all.png\" title=\"全部开始" -#~ "\" alt=\"全部开始\">" - -#~ msgid "Torrent file {0} does not exist" -#~ msgstr "种子文件{0}不存在" - -#~ msgid "Copying torrent to {0}" -#~ msgstr "正在复制种子到{0}" - -#~ msgid "from {0}" -#~ msgstr "来源{0}" - -#~ msgid "" -#~ "<img src=\"/themes/console/snark/images/stop.png\" title=\"Stop Torrent\" " -#~ "alt=\"Stop\">" -#~ msgstr "" -#~ "<img src=\"/themes/console/snark/images/stop.png\" title=\"停止下载\" alt=" -#~ "\"停止\">" - -#~ msgid "" -#~ "<img src=\"/themes/console/snark/images/start.png\" title=\"Start Torrent" -#~ "\" alt=\"Start\">" -#~ msgstr "" -#~ "<img src=\"/themes/console/snark/images/start.png\" title=\"开始下载\" " -#~ "alt=\"开始\">" - -#~ msgid "" -#~ "<img src=\"/themes/console/snark/images/remove.png\" title=\"Remove " -#~ "Torrent\" alt=\"Remove\">" -#~ msgstr "" -#~ "<img src=\"/themes/console/snark/images/remove.png\" title=\"删除种子\" " -#~ "alt=\"删除种子\">" - -#~ msgid "" -#~ "<img src=\"/themes/console/snark/images/delete.png\" title=\"Delete " -#~ "Torrent + Data\" alt=\"Delete\">" -#~ msgstr "" -#~ "<img src=\"/themes/console/snark/images/delete.png\" title=\"删除种子 + 数" -#~ "据\" alt=\"删除种子 + 数据\">" - -#~ msgid "" -#~ "<img border=\"0\" src=\"/themes/console/snark/images/add.png\">Add Torrent" -#~ msgstr "" -#~ "<img border=\"0\" src=\"/themes/console/snark/images/add.png\">添加种子" - -#~ msgid "" -#~ "<img border=\"0\" src=\"/themes/console/snark/images/create.png\">Create " -#~ "Torrent" -#~ msgstr "" -#~ "<img border=\"0\" src=\"/themes/console/snark/images/create.png\">创建种子" - -#~ msgid "or " -#~ msgstr "或 " - -#~ msgid "" -#~ "<img border=\"0\" src=\"/themes/console/snark/images/config.png" -#~ "\">Configuration" -#~ msgstr "" -#~ "<img border=\"0\" src=\"/themes/console/snark/images/config.png\">设置" - -#~ msgid "Directory to store torrents and data" -#~ msgstr "种子及被做种文件的保存位置。" - -#~ msgid "" -#~ "<img border=\"0\" src=\"/themes/console/snark/images/file.png\" title=" -#~ "\"File\" alt=\"File\"> " -#~ msgstr "" -#~ "<img border=\"0\" src=\"/themes/console/snark/images/file.png\" title=\"文" -#~ "件\" alt=\"文件\"> " - -#~ msgid "" -#~ "<img border=\"0\" src=\"/themes/console/snark/images/size.png\" title=" -#~ "\"FileSize\" alt=\"FileSize\">Size" -#~ msgstr "" -#~ "<img border=\"0\" src=\"/themes/console/snark/images/size.png\" title=\"文" -#~ "件大小\" alt=\"文件大小\">大小" - -#~ msgid "" -#~ "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=" -#~ "\"Download Status\">Status" -#~ msgstr "" -#~ "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=" -#~ "\"下载状态\">状态" - -#~ msgid "Details" -#~ msgstr "详情" - -#~ msgid "Cannot change the I2CP settings while torrents are active" -#~ msgstr "正在下载/上传,无法更改I2CP设置" - -#~ msgid "{0} torrents" -#~ msgstr "{0} 个种子" - -#~ msgid "Non-i2p tracker in \"{0}\", deleting it from our list of trackers!" -#~ msgstr "" -#~ "【匿名性警告】\"{0}\" 中含有非I2P Tracker,程序将从Tracker列表中将其删除。" - -#~ msgid "Custom tracker URL" -#~ msgstr "自定义TrackerURL" - -#~ msgid "Configure" -#~ msgstr "设置" +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the i2psnark package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo <foo@bar>, 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P i2psnark\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-10 09:12+0000\n" +"PO-Revision-Date: 2011-02-10 17:14+0800\n" +"Last-Translator: \n" +"Language-Team: foo <foo@bar>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Chinese\n" +"Plural-Forms: nplurals=1; plural=0\n" + +#: ../java/src/org/klomp/snark/SnarkManager.java:307 +#, java-format +msgid "Total uploaders limit changed to {0}" +msgstr "总上传种子数限制已更新为{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:309 +#, java-format +msgid "Minimum total uploaders limit is {0}" +msgstr "最低上传种子数限制为{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:321 +#, java-format +msgid "Up BW limit changed to {0}KBps" +msgstr "上传带宽限制改为 {0} KBps" + +#: ../java/src/org/klomp/snark/SnarkManager.java:323 +#, java-format +msgid "Minimum up bandwidth limit is {0}KBps" +msgstr "最小上传带宽限制为 {0} KBps" + +#: ../java/src/org/klomp/snark/SnarkManager.java:335 +#, java-format +msgid "Startup delay changed to {0}" +msgstr "下载前的延迟已更新为{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:386 +msgid "I2CP and tunnel changes will take effect after stopping all torrents" +msgstr "I2CP与隧道设置的变化在所有种子停止后才能生效" + +#: ../java/src/org/klomp/snark/SnarkManager.java:393 +msgid "Disconnecting old I2CP destination" +msgstr "正在断开旧的I2CP目标" + +#: ../java/src/org/klomp/snark/SnarkManager.java:397 +#, java-format +msgid "I2CP settings changed to {0}" +msgstr "I2CP设置改为{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:402 +msgid "Unable to connect with the new settings, reverting to the old I2CP settings" +msgstr "无法通过新设置连接,恢复I2CP的旧设置" + +#: ../java/src/org/klomp/snark/SnarkManager.java:406 +msgid "Unable to reconnect with the old settings!" +msgstr "旧设置也无法连接!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:408 +msgid "Reconnected on the new I2CP destination" +msgstr "重新连接新I2CP目标" + +#: ../java/src/org/klomp/snark/SnarkManager.java:418 +#, java-format +msgid "I2CP listener restarted for \"{0}\"" +msgstr "\"{0}\"的I2CP监听端口已启动" + +#: ../java/src/org/klomp/snark/SnarkManager.java:429 +msgid "Enabled autostart" +msgstr "启用自动启动" + +#: ../java/src/org/klomp/snark/SnarkManager.java:431 +msgid "Disabled autostart" +msgstr "禁用自动启动" + +#: ../java/src/org/klomp/snark/SnarkManager.java:437 +msgid "Enabled open trackers - torrent restart required to take effect." +msgstr "启用OpenTracker-重新启动种子后生效" + +#: ../java/src/org/klomp/snark/SnarkManager.java:439 +msgid "Disabled open trackers - torrent restart required to take effect." +msgstr "禁用OpenTracker - 重新启动种子后生效" + +#: ../java/src/org/klomp/snark/SnarkManager.java:447 +msgid "Open Tracker list changed - torrent restart required to take effect." +msgstr "OpenTracker列表已改变 - 重新启动种子后生效" + +#: ../java/src/org/klomp/snark/SnarkManager.java:454 +#, java-format +msgid "{0} theme loaded, return to main i2psnark page to view." +msgstr "{0} 主题已加载,浏览效果请到 i2psnark 主页。" + +#: ../java/src/org/klomp/snark/SnarkManager.java:461 +msgid "Configuration unchanged." +msgstr "设置未改变" + +#: ../java/src/org/klomp/snark/SnarkManager.java:471 +#, java-format +msgid "Unable to save the config to {0}" +msgstr "无法保存设置到{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:536 +msgid "Connecting to I2P" +msgstr "正在连接到I2P" + +#: ../java/src/org/klomp/snark/SnarkManager.java:539 +msgid "Error connecting to I2P - check your I2CP settings!" +msgstr "连接I2P时发生错误 - 请检查I2CP设置!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:548 +#, java-format +msgid "Error: Could not add the torrent {0}" +msgstr "错误:无法添加种子{0}" + +#. catch this here so we don't try do delete it below +#: ../java/src/org/klomp/snark/SnarkManager.java:570 +#, java-format +msgid "Cannot open \"{0}\"" +msgstr "无法打开 \"{0}\"" + +#. TODO - if the existing one is a magnet, delete it and add the metainfo instead? +#: ../java/src/org/klomp/snark/SnarkManager.java:586 +#: ../java/src/org/klomp/snark/SnarkManager.java:657 +#: ../java/src/org/klomp/snark/SnarkManager.java:712 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1924 +#, java-format +msgid "Torrent with this info hash is already running: {0}" +msgstr "具有相同Hash链接的种子已在下载中:{0}" + +#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); +#: ../java/src/org/klomp/snark/SnarkManager.java:593 +#, java-format +msgid "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers only." +msgstr "提示 - “{0}”文件中不包含 I2P Tracker服务器,文件将仅发布至 I2P 的 Open Tracker 。" + +#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); +#: ../java/src/org/klomp/snark/SnarkManager.java:598 +#, java-format +msgid "Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is enabled before starting this torrent." +msgstr "警告 -“{0}”中不包含 I2P Tracker 服务器,下载此种子请先启用 Open Tracker。" + +#: ../java/src/org/klomp/snark/SnarkManager.java:619 +#, java-format +msgid "Torrent in \"{0}\" is invalid" +msgstr "无效种子 \"{0}\" " + +#: ../java/src/org/klomp/snark/SnarkManager.java:624 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1947 +#, java-format +msgid "ERROR - Out of memory, cannot create torrent from {0}" +msgstr "错误: 内存不足,无法为 {0} 创建种子。" + +#: ../java/src/org/klomp/snark/SnarkManager.java:635 +#, java-format +msgid "Torrent added and started: \"{0}\"" +msgstr "已添加并启动种子:\"{0}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:637 +#, java-format +msgid "Torrent added: \"{0}\"" +msgstr "已添加种子:\"{0}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:668 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:488 +#, java-format +msgid "Fetching {0}" +msgstr "正在获取{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:671 +#, java-format +msgid "We have no saved peers and no other torrents are running. Fetch of {0} will not succeed until you start another torrent." +msgstr "程序还不知道其他客户端的存在,目前也没有其他种子正在运行。在您启动其他种子前文件 {0} 无法成功下载。" + +#: ../java/src/org/klomp/snark/SnarkManager.java:675 +#, java-format +msgid "Adding {0}" +msgstr "正在添加{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:722 +#: ../java/src/org/klomp/snark/SnarkManager.java:745 +#: ../java/src/org/klomp/snark/SnarkManager.java:1166 +#, java-format +msgid "Failed to copy torrent file to {0}" +msgstr "无法复制种子文件到{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:968 +#, java-format +msgid "Too many files in \"{0}\" ({1}), deleting it!" +msgstr "\"{0}\" ({1}) 含有太多文件,删除之!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:970 +#, java-format +msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" +msgstr "种子文件 \"{0}\" 不以 \".torrent\"结尾,正在删除!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:972 +#, java-format +msgid "No pieces in \"{0}\", deleting it!" +msgstr "\"{0}\" 中没有数据片,删除之!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:974 +#, java-format +msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!" +msgstr "\"{0}\" 中文件分片太多,限额为{1},删除之!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:976 +#, java-format +msgid "Pieces are too large in \"{0}\" ({1}B), deleting it." +msgstr "\"{0}\" ({1}B) 中文件分片过大,删除之。" + +#: ../java/src/org/klomp/snark/SnarkManager.java:977 +#, java-format +msgid "Limit is {0}B" +msgstr "限额为 {0}B" + +#: ../java/src/org/klomp/snark/SnarkManager.java:985 +#, java-format +msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" +msgstr "目前不支持大于{0}B 的种子,正在删除\"{1}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1001 +#, java-format +msgid "Error: Could not remove the torrent {0}" +msgstr "错误:无法删除种子{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1022 +#: ../java/src/org/klomp/snark/SnarkManager.java:1040 +#, java-format +msgid "Torrent stopped: \"{0}\"" +msgstr "种子已停止:\"{0}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1061 +#, java-format +msgid "Torrent removed: \"{0}\"" +msgstr "种子已删除:\"{0}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1069 +#, java-format +msgid "Adding torrents in {0}" +msgstr "{0} 分钟内完成添加" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1118 +#, java-format +msgid "Download finished: {0}" +msgstr "下载已完成: {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1162 +#, java-format +msgid "Metainfo received for {0}" +msgstr "已获得 {0} 的 Metainfo" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1163 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:523 +#, java-format +msgid "Starting up torrent {0}" +msgstr "正在启动种子{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1217 +msgid "Unable to connect to I2P!" +msgstr "无法连接至I2P!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1223 +#, java-format +msgid "Unable to add {0}" +msgstr "添加{0}失败" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:204 +msgid "I2PSnark - Anonymous BitTorrent Client" +msgstr "I2PSnark - 匿名BitTorrent客户端" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:217 +msgid "Torrents" +msgstr "种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:220 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:227 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006 +msgid "I2PSnark" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:224 +msgid "Refresh page" +msgstr "刷新页面" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:229 +msgid "Forum" +msgstr "论坛" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1668 +msgid "Status" +msgstr "状态" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:289 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:291 +msgid "Hide Peers" +msgstr "隐藏用户" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:296 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:298 +msgid "Show Peers" +msgstr "显示用户" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:305 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1608 +msgid "Torrent" +msgstr "种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:309 +msgid "Estimated time remaining" +msgstr "预计剩余时间" + +#. Translators: Please keep short or translate as " " +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:312 +msgid "ETA" +msgstr "预计剩余时间" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316 +msgid "Downloaded" +msgstr "已下载" + +#. Translators: Please keep short or translate as " " +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:319 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:333 +msgid "RX" +msgstr "已接收" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:323 +msgid "Uploaded" +msgstr "已上传" + +#. Translators: Please keep short or translate as " " +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:326 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:343 +msgid "TX" +msgstr "已发送" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:331 +msgid "Down Rate" +msgstr "下载速度" + +#. Translators: Please keep short or translate as " " +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:336 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:345 +msgid "Rate" +msgstr "速度" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:341 +msgid "Up Rate" +msgstr "上传速度" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:363 +msgid "Stop all torrents and the I2P tunnel" +msgstr "停止全部种子及I2P隧道" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 +msgid "Stop All" +msgstr "停止全部" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:374 +msgid "Start all torrents and the I2P tunnel" +msgstr "启动全部种子及I2P隧道" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376 +msgid "Start All" +msgstr "启动全部" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:395 +msgid "No torrents loaded." +msgstr "未载入任何种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:400 +msgid "Totals" +msgstr "总计" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402 +#, java-format +msgid "1 torrent" +msgid_plural "{0} torrents" +msgstr[0] "{0}个种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:405 +#, java-format +msgid "1 connected peer" +msgid_plural "{0} connected peers" +msgstr[0] "{0}个已连接用户" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:494 +#, java-format +msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" +msgstr "无效链接 - 链接必须以“http://”,“{0}”或“{1}”开头" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:542 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569 +#, java-format +msgid "Magnet deleted: {0}" +msgstr "Magnet 已删除:{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:550 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:575 +#, java-format +msgid "Torrent file deleted: {0}" +msgstr "种子文件已删除:{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:581 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:591 +#, java-format +msgid "Data file deleted: {0}" +msgstr "数据文件已删除:{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 +#, java-format +msgid "Data file could not be deleted: {0}" +msgstr "无法删除数据文件:{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:602 +#, java-format +msgid "Data dir deleted: {0}" +msgstr "数据文件夹已删除:{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 +msgid "Error creating torrent - you must select a tracker" +msgstr "创建种子时发生错误 - 您必须选择一个Tracker" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:651 +#, java-format +msgid "Torrent created for \"{0}\"" +msgstr "种子创建成功\"{0}\"" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653 +#, java-format +msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\"" +msgstr "多数I2PTracker需要用户在做种前注册新种子 - 请在启动 \"{0}\"前到所使用的Tracker进行注册。" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655 +#, java-format +msgid "Error creating a torrent for \"{0}\"" +msgstr "创建种子时发生错误 \"{0}\"" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:658 +#, java-format +msgid "Cannot create a torrent for the nonexistent data: {0}" +msgstr "无法为不存在的数据文件创建种子:{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:661 +msgid "Error creating torrent - you must enter a file or directory" +msgstr "创建种子时发生错误 - 必须指定文件或文件夹" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664 +msgid "Stopping all torrents and closing the I2P tunnel." +msgstr "正在停用所有种子并关闭I2P隧道。" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:675 +msgid "I2P tunnel closed." +msgstr "I2P隧道已关闭" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:678 +msgid "Opening the I2P tunnel and starting all torrents." +msgstr "正在打开I2P隧道并启动所有种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:806 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812 +msgid "Tracker Error" +msgstr "Tracker错误" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:820 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:824 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:832 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:841 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845 +#, java-format +msgid "1 peer" +msgid_plural "{0} peers" +msgstr[0] "{0}个用户" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:817 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822 +msgid "Seeding" +msgstr "正做种" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:826 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 +msgid "Complete" +msgstr "完成" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:829 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834 +msgid "OK" +msgstr "确定" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:843 +msgid "Stalled" +msgstr "等待" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:847 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:850 +msgid "No Peers" +msgstr "没有用户" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852 +msgid "Stopped" +msgstr "已停用" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:863 +msgid "Torrent details" +msgstr "种子详情" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:864 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 +msgid "Info" +msgstr "信息" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:878 +msgid "View files" +msgstr "浏览文件" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:880 +msgid "Open file" +msgstr "打开文件" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:892 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1755 +msgid "Open" +msgstr "打开" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:938 +msgid "Stop the torrent" +msgstr "停止种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:940 +msgid "Stop" +msgstr "停止" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:949 +msgid "Start the torrent" +msgstr "启动种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:951 +msgid "Start" +msgstr "启动" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:961 +msgid "Remove the torrent from the active list, deleting the .torrent file" +msgstr "取消下载任务并删除对应种子文件。" + +#. Can't figure out how to escape double quotes inside the onclick string. +#. Single quotes in translate strings with parameters must be doubled. +#. Then the remaining single quite must be escaped +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:966 +#, java-format +msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?" +msgstr "您确定要删除文件“{0}.torrent”(下载的数据文件不会被删除)?" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 +msgid "Remove" +msgstr "移除" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:979 +msgid "Delete the .torrent file and the associated data file(s)" +msgstr "删除种子及所下载的文件" + +#. Can't figure out how to escape double quotes inside the onclick string. +#. Single quotes in translate strings with parameters must be doubled. +#. Then the remaining single quite must be escaped +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:984 +#, java-format +msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?" +msgstr "您确定要删除种子“{0}”(下载的数据文件会一并被删除)?" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 +msgid "Delete" +msgstr "删除" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1020 +msgid "Unknown" +msgstr "未知" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +msgid "Seed" +msgstr "种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055 +msgid "Uninteresting (The peer has no pieces we need)" +msgstr "无需要部分" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057 +msgid "Choked (The peer is not allowing us to request pieces)" +msgstr "拒绝请求" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 +msgid "Uninterested (We have no pieces the peer needs)" +msgstr "无需要部分" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079 +msgid "Choking (We are not allowing the peer to request pieces)" +msgstr "拒绝请求" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1137 +#, java-format +msgid "Details at {0} tracker" +msgstr "Tracker {0} 上的详细信息" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166 +msgid "Add Torrent" +msgstr "添加种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1168 +msgid "From URL" +msgstr "从URL" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1171 +msgid "Torrent file must originate from an I2P-based tracker" +msgstr "种子文件必须来在I2P内网中的Tracker服务器。" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176 +msgid "Add torrent" +msgstr "添加种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1179 +#, java-format +msgid "You can also copy .torrent files to: {0}." +msgstr "您也可以将.torrent文件复制到: {0}." + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181 +msgid "Removing a .torrent will cause it to stop." +msgstr "删除种子文件将导致该下载任务中止。" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1204 +msgid "Create Torrent" +msgstr "创建种子" + +#. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n"); +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 +msgid "Data to seed" +msgstr "做种数据" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1211 +msgid "File or directory to seed (must be within the specified path)" +msgstr "做种文件或文件夹(必须下面为Snark指定的文件夹中)" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1213 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1633 +msgid "Tracker" +msgstr "Tracker服务器" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1215 +msgid "Select a tracker" +msgstr "选择一个Tracker" + +#. out.write(_("Open trackers and DHT only")); +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220 +msgid "Open trackers only" +msgstr "仅通过 Open Tracker发布链接" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1235 +msgid "or" +msgstr "或" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1238 +msgid "Specify custom tracker announce URL" +msgstr "指定Open Tracker发布链接" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1241 +msgid "Create torrent" +msgstr "创建种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1259 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1398 +msgid "Configuration" +msgstr "设置" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263 +msgid "Data directory" +msgstr "数据文件夹" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1265 +msgid "Edit i2psnark.config and restart to change" +msgstr "编辑 i2psnark.config 并重启Snark后生效" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1269 +msgid "Auto start" +msgstr "自动启动" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1273 +msgid "If checked, automatically start torrents that are added" +msgstr "选中后Snark将自动启动已添加的所有种子。" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277 +msgid "Theme" +msgstr "主题" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1290 +msgid "Startup delay" +msgstr "启动延迟" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1292 +msgid "minutes" +msgstr "分" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1316 +msgid "Total uploader limit" +msgstr "限制总上传种子数为" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1319 +msgid "peers" +msgstr "用户" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1323 +msgid "Up bandwidth limit" +msgstr "上传带宽限制" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1326 +msgid "Half available bandwidth recommended." +msgstr "推荐设置为可用带宽的一半。" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1328 +msgid "View or change router bandwidth" +msgstr "浏览或修改路由器带宽" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1332 +msgid "Use open trackers also" +msgstr "同时使用OpenTracker" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1336 +msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file" +msgstr "选择后在OpenTracker及种子文件中的Tracker上同时发布。" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1340 +msgid "Open tracker announce URLs" +msgstr "Open Tracker发布链接" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1352 +msgid "Inbound Settings" +msgstr "入站设置" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 +msgid "Outbound Settings" +msgstr "出站设置" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1366 +msgid "I2CP host" +msgstr "I2CP主机" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1371 +msgid "I2CP port" +msgstr "I2CP端口" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1384 +msgid "I2CP options" +msgstr "I2CP选项" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1389 +msgid "Save configuration" +msgstr "保存设置" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1439 +#, java-format +msgid "Invalid info hash in magnet URL {0}" +msgstr "magnet磁性链接“{0}”中的hash信息有误。" + +#. * dummies for translation +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1449 +#, java-format +msgid "1 hop" +msgid_plural "{0} hops" +msgstr[0] "{0}跳" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1450 +#, java-format +msgid "1 tunnel" +msgid_plural "{0} tunnels" +msgstr[0] "{0}隧道" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1612 +msgid "Completion" +msgstr "完成" + +#. else unknown +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1616 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1665 +msgid "Size" +msgstr "大小" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1621 +msgid "Files" +msgstr "文件" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1623 +msgid "Pieces" +msgstr "分块数量" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1624 +msgid "Piece size" +msgstr "分块大小" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1646 +msgid "Magnet link" +msgstr "Magnet磁性链接" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1702 +msgid "Directory" +msgstr "文件夹" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +msgid "Priority" +msgstr "优先级" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1677 +msgid "Up to higher level directory" +msgstr "上一层文件夹" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1707 +msgid "Torrent not found?" +msgstr "种子未找到" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 +msgid "File not found in torrent?" +msgstr "种子中没有发现文件?" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1729 +msgid "complete" +msgstr "完成" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1730 +msgid "bytes remaining" +msgstr "剩余字节数" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781 +msgid "High" +msgstr "高" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1786 +msgid "Normal" +msgstr "普通" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1791 +msgid "Skip" +msgstr "跳过" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1800 +msgid "Save priorities" +msgstr "保存优先级" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1915 +#, java-format +msgid "Torrent fetched from {0}" +msgstr "从{0}获取种子成功" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1937 +#, java-format +msgid "Torrent already running: {0}" +msgstr "种子已启动:{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#, java-format +msgid "Torrent already in the queue: {0}" +msgstr "种子排队中:{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 +#, java-format +msgid "Torrent at {0} was not valid" +msgstr "{0}的种子中有错误" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1952 +#, java-format +msgid "Torrent was not retrieved from {0}" +msgstr "从{0}获得种子失败" + +#~ msgid "size: {0}B" +#~ msgstr "大小:{0}B" +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=" +#~ "\"Torrent Status\">Status" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=" +#~ "\"种子状态\">状态" +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/showpeers.png\" " +#~ "title=\"Toggle Peer Visibility\" alt=\"Hide Peers\">" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/showpeers.png\" " +#~ "title=\"隐藏节点\" alt=\"隐藏节点\">" +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/hidepeers.png\" " +#~ "title=\"Toggle Peer Visibility\" alt=\"Show Peers\">" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/hidepeers.png\" " +#~ "title=\"显示节点\" alt=\"显示节点\">" +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/torrent.png\" title=" +#~ "\"Loaded Torrents\">Torrent" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/torrent.png\" title=" +#~ "\"载入的种子\">种子" +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/eta.png\" title=" +#~ "\"Estimated Download Time\">ETA" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/eta.png\" title=\"预" +#~ "计剩余时间\">预计剩余时间" +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=\"Data " +#~ "Downloaded\">RX" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=\"下载" +#~ "数据量\">下载" +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=" +#~ "\"Data Uploaded\">TX" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=\"上传" +#~ "数据量\">上传" +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=" +#~ "\"Download Speed\">Rate" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=\"下载" +#~ "速度\">下载速度" +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=" +#~ "\"Upload Speed\">Rate" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=\"上传" +#~ "速度\">上传速度" +#~ msgid "" +#~ "<img src=\"/themes/console/snark/images/stop_all.png\" title=\"Stop All " +#~ "Torrents\" alt=\"Stop All\">" +#~ msgstr "" +#~ "<img src=\"/themes/console/snark/images/stop_all.png\" title=\"全部停止\" " +#~ "alt=\"全部停止\">" +#~ msgid "" +#~ "<img src=\"/themes/console/snark/images/start_all.png\" title=\"Start All " +#~ "Torrents\" alt=\"Start All\">" +#~ msgstr "" +#~ "<img src=\"/themes/console/snark/images/start_all.png\" title=\"全部开始" +#~ "\" alt=\"全部开始\">" +#~ msgid "Torrent file {0} does not exist" +#~ msgstr "种子文件{0}不存在" +#~ msgid "Copying torrent to {0}" +#~ msgstr "正在复制种子到{0}" +#~ msgid "from {0}" +#~ msgstr "来源{0}" +#~ msgid "" +#~ "<img src=\"/themes/console/snark/images/stop.png\" title=\"Stop Torrent\" " +#~ "alt=\"Stop\">" +#~ msgstr "" +#~ "<img src=\"/themes/console/snark/images/stop.png\" title=\"停止下载\" alt=" +#~ "\"停止\">" +#~ msgid "" +#~ "<img src=\"/themes/console/snark/images/start.png\" title=\"Start Torrent" +#~ "\" alt=\"Start\">" +#~ msgstr "" +#~ "<img src=\"/themes/console/snark/images/start.png\" title=\"开始下载\" " +#~ "alt=\"开始\">" +#~ msgid "" +#~ "<img src=\"/themes/console/snark/images/remove.png\" title=\"Remove " +#~ "Torrent\" alt=\"Remove\">" +#~ msgstr "" +#~ "<img src=\"/themes/console/snark/images/remove.png\" title=\"删除种子\" " +#~ "alt=\"删除种子\">" +#~ msgid "" +#~ "<img src=\"/themes/console/snark/images/delete.png\" title=\"Delete " +#~ "Torrent + Data\" alt=\"Delete\">" +#~ msgstr "" +#~ "<img src=\"/themes/console/snark/images/delete.png\" title=\"删除种子 + 数" +#~ "据\" alt=\"删除种子 + 数据\">" +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/add.png\">Add Torrent" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/add.png\">添加种子" +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/create.png\">Create " +#~ "Torrent" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/create.png\">创建种子" +#~ msgid "or " +#~ msgstr "或 " +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/config.png" +#~ "\">Configuration" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/config.png\">设置" +#~ msgid "Directory to store torrents and data" +#~ msgstr "种子及被做种文件的保存位置。" +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/file.png\" title=" +#~ "\"File\" alt=\"File\"> " +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/file.png\" title=\"文" +#~ "件\" alt=\"文件\"> " +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/size.png\" title=" +#~ "\"FileSize\" alt=\"FileSize\">Size" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/size.png\" title=\"文" +#~ "件大小\" alt=\"文件大小\">大小" +#~ msgid "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=" +#~ "\"Download Status\">Status" +#~ msgstr "" +#~ "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=" +#~ "\"下载状态\">状态" +#~ msgid "Details" +#~ msgstr "详情" +#~ msgid "Cannot change the I2CP settings while torrents are active" +#~ msgstr "正在下载/上传,无法更改I2CP设置" +#~ msgid "{0} torrents" +#~ msgstr "{0} 个种子" +#~ msgid "Non-i2p tracker in \"{0}\", deleting it from our list of trackers!" +#~ msgstr "" +#~ "【匿名性警告】\"{0}\" 中含有非I2P Tracker,程序将从Tracker列表中将其删除。" +#~ msgid "Custom tracker URL" +#~ msgstr "自定义TrackerURL" +#~ msgid "Configure" +#~ msgstr "设置" + diff --git a/apps/i2ptunnel/locale/messages_zh.po b/apps/i2ptunnel/locale/messages_zh.po index 6fdc776cb..b98971df0 100644 --- a/apps/i2ptunnel/locale/messages_zh.po +++ b/apps/i2ptunnel/locale/messages_zh.po @@ -1,816 +1,781 @@ -# I2P -# Copyright (C) 2009 The I2P Project -# This file is distributed under the same license as the i2ptunnel package. -# To contribute translations, see http://www.i2p2.de/newdevelopers -# foo <foo@bar>, 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: I2P i2ptunnel\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-09 15:20+0000\n" -"PO-Revision-Date: 2010-05-29 10:57+0800\n" -"Last-Translator: walking <walking@mail.i2p>\n" -"Language-Team: foo <foo@bar>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Chinese\n" - -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474 -#, java-format -msgid "" -"To visit the destination in your host database, click <a href=\"{0}\">here</" -"a>. To visit the conflicting addresshelper destination, click <a href=\"{1}" -"\">here</a>." -msgstr "" -"域名冲突:要访问您本地【地址簿】中设置的目标主机(相当与IP),请点击<a href=" -"\"{0}\">这里</a>。要访问【地址助手】返回的目标主机请点<a href=\"{1}\">这里</" -"a>。" - -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931 -msgid "" -"Click a link below to look for an address helper by using a \"jump\" service:" -msgstr "" -"请点击下面的链接通过【跳转(Jump)】服务提供的【地址助手】链接跳转至域名对应的" -"主机:" - -#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326 -#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336 -msgid "internal" -msgstr "" - -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:171 -msgid "" -"Invalid form submission, probably because you used the 'back' or 'reload' " -"button on your browser. Please resubmit." -msgstr "" - -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218 -msgid "Configuration reloaded for all tunnels" -msgstr "" - -#. and give them something to look at in any case -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:230 -#, fuzzy -msgid "Starting tunnel" -msgstr "正在启动..." - -#. and give them something to look at in any case -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:243 -msgid "Stopping tunnel" -msgstr "" - -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:311 -msgid "Configuration changes saved" -msgstr "" - -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314 -msgid "Failed to save configuration" -msgstr "" - -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398 -msgid "New Tunnel" -msgstr "新建隧道" - -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418 -msgid "Standard client" -msgstr "标准客户端" - -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419 -msgid "HTTP client" -msgstr "HTTP 客户端" - -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420 -msgid "IRC client" -msgstr "IRC 客户端" - -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:421 -msgid "Standard server" -msgstr "标准服务器" - -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:422 -msgid "HTTP server" -msgstr "HTTP 服务器" - -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:423 -msgid "SOCKS 4/4a/5 proxy" -msgstr "SOCKS4/4A/5 代理" - -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:424 -msgid "SOCKS IRC proxy" -msgstr "SOCKS IRC 代理" - -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:425 -msgid "CONNECT/SSL/HTTPS proxy" -msgstr "CONNECT/SSL/HTTPS 代理" - -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:426 -msgid "IRC server" -msgstr "IRC 服务器" - -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:427 -msgid "Streamr client" -msgstr "Streamr 客户端" - -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:428 -msgid "Streamr server" -msgstr "Streamr 服务器" - -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:429 -msgid "HTTP bidir" -msgstr "双向http" - -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290 -msgid "Host not set" -msgstr "" - -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:521 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:272 -msgid "Port not set" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:73 -msgid "I2P Tunnel Manager - Edit Client Tunnel" -msgstr "I2P 隧道管理器 - 编辑客户端隧道" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:93 -msgid "Edit proxy settings" -msgstr "编辑代理设置" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:101 -msgid "New proxy settings" -msgstr "新建代理设置" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:112 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:112 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:107 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:121 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:242 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:257 -msgid "Name" -msgstr "名称" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:116 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:116 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:246 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:279 -msgid "Type" -msgstr "类型" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:120 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:120 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:226 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:386 -msgid "Description" -msgstr "描述" - -#: ../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 "目标" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:130 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:132 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:162 -msgid "Access Point" -msgstr "接入点" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:137 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:150 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:192 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:153 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:167 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:213 -msgid "required" -msgstr "必要" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:159 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:178 -msgid "Reachable by" -msgstr "访问地址" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:180 -msgid "Outproxies" -msgstr "出口代理" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:187 -msgid "Tunnel Destination" -msgstr "隧道目标" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:199 -msgid "name or destination" -msgstr "名称或描述" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202 -msgid "b32 not recommended" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208 -msgid "Shared Client" -msgstr "共享客户端" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:212 -msgid "" -"(Share tunnels with other clients and irc/httpclients? Change requires " -"restart of client proxy)" -msgstr "(与其他客户端例如IRC/HTTP共享隧道?修改需要重新启动)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:124 -msgid "Auto Start" -msgstr "自动启动" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:128 -msgid "(Check the Box for 'YES')" -msgstr "(选中表示\"是\")" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:222 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:243 -msgid "Advanced networking options" -msgstr "高级网络设置" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224 -msgid "" -"(NOTE: when this client proxy is configured to share tunnels, then these " -"options are for all the shared proxy clients!)" -msgstr "" -"(注意:此客户代理被设置使用共享隧道时,这些设置将影响所有使用共享隧道的客户" -"端!)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:226 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245 -msgid "Tunnel Options" -msgstr "隧道选项" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:228 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:247 -msgid "Length" -msgstr "长度" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:254 -msgid "0 hop tunnel (low anonymity, low latency)" -msgstr "直连(匿名性无,延迟低)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:258 -msgid "1 hop tunnel (medium anonymity, medium latency)" -msgstr "隧道跳点x1(匿名性中,延迟中)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:262 -msgid "2 hop tunnel (high anonymity, high latency)" -msgstr "隧道跳点x2(匿名性高,延迟高)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:266 -msgid "3 hop tunnel (very high anonymity, poor performance)" -msgstr "隧道跳点x3(匿名性优,影响性能)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:256 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:275 -msgid "hop tunnel (very poor performance)" -msgstr "跳点隧道(严重影响性能)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:261 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:280 -msgid "Variance" -msgstr "随机变化" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:268 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:287 -msgid "0 hop variance (no randomisation, consistant performance)" -msgstr "隧道长度恒定(随机性无,性能稳定)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:272 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:291 -msgid "" -"+ 0-1 hop variance (medium additive randomisation, subtractive performance)" -msgstr "隧道长度+ 0-1(随机性中,影响性能)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295 -msgid "" -"+ 0-2 hop variance (high additive randomisation, subtractive performance)" -msgstr "隧道长度+ 0-2(随机性高,影响性能)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:299 -msgid "+/- 0-1 hop variance (standard randomisation, standard performance)" -msgstr "隧道长度+/- 0-1(随机性标准,正常性能)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:284 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:303 -msgid "+/- 0-2 hop variance (not recommended)" -msgstr "隧道程度+/- 0-2(不推荐)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:315 -msgid "hop variance" -msgstr "节点数量" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:301 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:320 -msgid "Count" -msgstr "计数" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:327 -msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)" -msgstr "出/入站隧道x1(带宽低,低可靠性)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:312 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:331 -msgid "" -"2 inbound, 2 outbound tunnels (standard bandwidth usage, standard " -"reliability)" -msgstr "出/入站隧道x2(带宽标准,标准稳定性)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335 -msgid "" -"3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)" -msgstr "出/入站隧道x3(带宽高,高稳定性)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:344 -msgid "tunnels" -msgstr "隧道" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:330 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349 -msgid "Backup Count" -msgstr "备用数量" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:337 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:356 -msgid "0 backup tunnels (0 redundancy, no added resource usage)" -msgstr "无备用隧道(无冗余,不增加资源占用)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:341 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:360 -msgid "1 backup tunnel each direction (low redundancy, low resource usage)" -msgstr "备用隧道对x1 (低冗余,低资源占用)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:345 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364 -msgid "" -"2 backup tunnels each direction (medium redundancy, medium resource usage)" -msgstr "备用隧道对x2 (中冗余,中资源占用)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:349 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:368 -msgid "3 backup tunnels each direction (high redundancy, high resource usage)" -msgstr "备用隧道对x3 (高冗余,高资源占用)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:358 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377 -msgid "backup tunnels" -msgstr "备用隧道" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:365 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:384 -msgid "Profile" -msgstr "连接类型" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:372 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:391 -msgid "interactive connection" -msgstr "速度连接" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:376 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:395 -msgid "bulk connection (downloads/websites/BT)" -msgstr "效率连接(下载/WEB/BT)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:378 -msgid "Delay Connect" -msgstr "连接延迟断开" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:382 -msgid "for request/response connections" -msgstr "单请求/响应连接" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399 -#, fuzzy -msgid "Router I2CP Address" -msgstr "Base32地址" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401 -msgid "Host" -msgstr "主机" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:396 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:148 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:244 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:266 -msgid "Port" -msgstr "端口" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:406 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479 -msgid "Reduce tunnel quantity when idle" -msgstr "空闲时缩减隧道数量" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:408 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:422 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:430 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:442 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:452 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:472 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:419 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481 -msgid "Enable" -msgstr "启用" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:412 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:485 -msgid "Reduced tunnel count" -msgstr "削减后的隧道数量" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:416 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:436 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:489 -msgid "Idle minutes" -msgstr "空闲时间(分钟)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420 -msgid "Close tunnels when idle" -msgstr "空闲时关闭隧道" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:426 -msgid "New Keys on Reopen" -msgstr "重新打开隧道时使用新密钥" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435 -msgid "Disable" -msgstr "禁用" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440 -msgid "Delay tunnel open until required" -msgstr "仅在请求时打开" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:450 -msgid "Persistent private key" -msgstr "永久私有密钥" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:456 -msgid "File" -msgstr "文件" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:460 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:220 -msgid "Local destination" -msgstr "本地目标" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464 -msgid "(if known)" -msgstr "(如果已知)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:470 -#, fuzzy -msgid "Local Authorization" -msgstr "本地目标" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490 -#, fuzzy -msgid "Username" -msgstr "网站名称" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:480 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:494 -msgid "Password" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484 -msgid "Outproxy Authorization" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502 -msgid "Jump URL List" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:508 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525 -msgid "Custom options" -msgstr "自定义选项" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:512 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:529 -msgid "" -"NOTE: If tunnel is currently running, most changes will not take effect " -"until tunnel is stopped and restarted." -msgstr "" -"注意:如果当前隧道已经启动,设置需要【停止】并重新【启动】相应隧道后才能生" -"效。" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:514 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531 -msgid "Cancel" -msgstr "取消" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:518 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535 -msgid "Delete" -msgstr "删除" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:520 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537 -msgid "Save" -msgstr "保存" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:73 -msgid "I2P Tunnel Manager - Edit Server Tunnel" -msgstr "I2P隧道管理器 - 编辑服务器隧道" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:93 -msgid "Edit server settings" -msgstr "服务器隧道设置" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:101 -msgid "New server settings" -msgstr "新建服务器设置" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:199 -msgid "Website name" -msgstr "网站名称" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:203 -msgid "(leave blank for outproxies)" -msgstr "(出口代理这里请置空)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:208 -msgid "Private key file" -msgstr "私钥文件" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:230 -msgid "Add to local addressbook" -msgstr "添加至本地地址簿" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:237 -msgid "Hostname Signature" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417 -msgid "Encrypt Leaseset" -msgstr "加密赁集" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423 -msgid "Encryption Key" -msgstr "加密密钥" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427 -msgid "Generate New Key" -msgstr "生成新密钥" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429 -msgid "Generate" -msgstr "生成" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:523 -msgid "(Tunnel must be stopped first)" -msgstr "(必须先停止隧道)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433 -msgid "Restricted Access List" -msgstr "限制访问列表" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439 -msgid "Whitelist" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443 -msgid "Blacklist" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447 -msgid "Access List" -msgstr "访问列表" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451 -msgid "Inbound connection limits (0 to disable)" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453 -#, fuzzy -msgid "Per client" -msgstr "HTTP 客户端" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455 -#, fuzzy -msgid "Per minute" -msgstr "空闲时间(分钟)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459 -msgid "Per hour" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463 -msgid "Per day" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467 -msgid "Total" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475 -msgid "Max concurrent connections (0 to disable)" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493 -msgid "New Certificate type" -msgstr "新建证书类型" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495 -msgid "None" -msgstr "无" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499 -msgid "Hashcash (effort)" -msgstr "Hashcash (强度)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505 -msgid "Hashcash Calc Time" -msgstr "Hashcash 计算时间" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507 -msgid "Estimate" -msgstr "估算" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509 -msgid "Hidden" -msgstr "隐藏" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513 -msgid "Signed (signed by)" -msgstr "签名(签名者)" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519 -msgid "Modify Certificate" -msgstr "修改证书" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521 -msgid "Modify" -msgstr "修改" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:71 -msgid "I2P Tunnel Manager - List" -msgstr "I2P隧道管理器 - 列表" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:83 -msgid "Status Messages" -msgstr "状态信息" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:87 -msgid "Refresh" -msgstr "刷新" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:91 -msgid "Stop All" -msgstr "全部停止" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:95 -msgid "Start All" -msgstr "全部启动" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:99 -msgid "Restart All" -msgstr "全部重启" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:103 -msgid "Reload Config" -msgstr "重新载入设置" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:105 -msgid "I2P Server Tunnels" -msgstr "I2P服务端隧道" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:109 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:130 -msgid "Points at" -msgstr "指向" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:111 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:153 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:157 -msgid "Preview" -msgstr "预览" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:113 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:177 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:250 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:297 -msgid "Status" -msgstr "状态" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:163 -msgid "Base32 Address" -msgstr "Base32地址" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:171 -msgid "No Preview" -msgstr "无预览" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:184 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:304 -msgid "Starting..." -msgstr "正在启动..." - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:191 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:205 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:311 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:325 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:339 -msgid "Stop" -msgstr "停止" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:198 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:332 -msgid "Running" -msgstr "运行中" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:212 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:346 -msgid "Stopped" -msgstr "已停止" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:353 -msgid "Start" -msgstr "启动" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:234 -msgid "New server tunnel" -msgstr "新建服务器隧道" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:236 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:396 -msgid "Standard" -msgstr "标准" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:238 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:398 -msgid "Create" -msgstr "创建" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:240 -msgid "I2P Client Tunnels" -msgstr "I2P客户端隧道" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:248 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:283 -msgid "Interface" -msgstr "网络接口" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:318 -msgid "Standby" -msgstr "等待" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:363 -msgid "Outproxy" -msgstr "出口代理" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:367 -msgid "Destination" -msgstr "目标" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:381 -#, fuzzy -msgid "none" -msgstr "无" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394 -msgid "New client tunnel" -msgstr "新建客户隧道" - -#~ msgid "Locally (127.0.0.1)" -#~ msgstr "本地(127.0.0.1)" - -#~ msgid "Everyone (0.0.0.0)" -#~ msgstr "任何人(0.0.0.0)" - -#~ msgid "LAN Hosts (Please specify your LAN address)" -#~ msgstr "局域网(请指定LAN地址)" - -#~ msgid "Other" -#~ msgstr "其他" - -#~ msgid "I2CP Options" -#~ msgstr "I2CP选项" - -#~ msgid "(Restrict to these clients only)" -#~ msgstr "(仅允许这些客户访问)" - -#~ msgid "Unimplemented" -#~ msgstr "尚未实现" +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the i2ptunnel package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo <foo@bar>, 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P i2ptunnel\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-10 09:13+0000\n" +"PO-Revision-Date: 2011-02-10 17:14+0800\n" +"Last-Translator: \n" +"Language-Team: foo <foo@bar>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Chinese\n" + +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474 +#, java-format +msgid "To visit the destination in your host database, click <a href=\"{0}\">here</a>. To visit the conflicting addresshelper destination, click <a href=\"{1}\">here</a>." +msgstr "域名冲突:要访问您本地【地址簿】中设置的目标主机(相当与IP),请点击<a href=\"{0}\">这里</a>。要访问【地址助手】返回的目标主机请点<a href=\"{1}\">这里</a>。" + +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931 +msgid "Click a link below to look for an address helper by using a \"jump\" service:" +msgstr "请点击下面的链接通过【跳转(Jump)】服务提供的【地址助手】链接跳转至域名对应的主机:" + +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336 +msgid "internal" +msgstr "内部" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:171 +msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit." +msgstr "网页提交无效,可能的原因是您使用了浏览器的“后退”和“刷新”按钮,导致表单过期,请重新提交。" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218 +msgid "Configuration reloaded for all tunnels" +msgstr "所有隧道都已根据当前配置重启" + +#. and give them something to look at in any case +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:230 +msgid "Starting tunnel" +msgstr "正在启动隧道" + +#. and give them something to look at in any case +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:243 +msgid "Stopping tunnel" +msgstr "正在关闭隧道" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:311 +msgid "Configuration changes saved" +msgstr "配置修改成功" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314 +msgid "Failed to save configuration" +msgstr "配置保存失败" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398 +msgid "New Tunnel" +msgstr "新建隧道" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418 +msgid "Standard client" +msgstr "标准客户端" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419 +msgid "HTTP client" +msgstr "HTTP 客户端" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420 +msgid "IRC client" +msgstr "IRC 客户端" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:421 +msgid "Standard server" +msgstr "标准服务器" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:422 +msgid "HTTP server" +msgstr "HTTP 服务器" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:423 +msgid "SOCKS 4/4a/5 proxy" +msgstr "SOCKS4/4A/5 代理" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:424 +msgid "SOCKS IRC proxy" +msgstr "SOCKS IRC 代理" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:425 +msgid "CONNECT/SSL/HTTPS proxy" +msgstr "CONNECT/SSL/HTTPS 代理" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:426 +msgid "IRC server" +msgstr "IRC 服务器" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:427 +msgid "Streamr client" +msgstr "Streamr 客户端" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:428 +msgid "Streamr server" +msgstr "Streamr 服务器" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:429 +msgid "HTTP bidir" +msgstr "双向http" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290 +msgid "Host not set" +msgstr "主机未设置" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:521 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:272 +msgid "Port not set" +msgstr "端口未设置" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:73 +msgid "I2P Tunnel Manager - Edit Client Tunnel" +msgstr "I2P 隧道管理器 - 编辑客户端隧道" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:93 +msgid "Edit proxy settings" +msgstr "编辑代理设置" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:101 +msgid "New proxy settings" +msgstr "新建代理设置" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:112 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:112 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:107 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:121 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:242 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:257 +msgid "Name" +msgstr "名称" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:116 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:116 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:246 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:279 +msgid "Type" +msgstr "类型" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:120 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:120 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:386 +msgid "Description" +msgstr "描述" + +#: ../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 "目标" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:130 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:132 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:162 +msgid "Access Point" +msgstr "接入点" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:150 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:192 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:153 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:167 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:213 +msgid "required" +msgstr "必要" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:159 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:178 +msgid "Reachable by" +msgstr "访问地址" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:180 +msgid "Outproxies" +msgstr "出口代理" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:187 +msgid "Tunnel Destination" +msgstr "隧道目标" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:199 +msgid "name or destination" +msgstr "名称或描述" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202 +msgid "b32 not recommended" +msgstr "请避免使用b32地址。" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208 +msgid "Shared Client" +msgstr "共享客户端" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:212 +msgid "(Share tunnels with other clients and irc/httpclients? Change requires restart of client proxy)" +msgstr "(与其他客户端例如IRC/HTTP共享隧道?修改需要重新启动)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:124 +msgid "Auto Start" +msgstr "自动启动" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:128 +msgid "(Check the Box for 'YES')" +msgstr "(选中表示\"是\")" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:243 +msgid "Advanced networking options" +msgstr "高级网络设置" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224 +msgid "(NOTE: when this client proxy is configured to share tunnels, then these options are for all the shared proxy clients!)" +msgstr "(注意:此客户代理被设置使用共享隧道时,这些设置将影响所有使用共享隧道的客户端!)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245 +msgid "Tunnel Options" +msgstr "隧道选项" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:247 +msgid "Length" +msgstr "长度" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:254 +msgid "0 hop tunnel (low anonymity, low latency)" +msgstr "直连(匿名性无,延迟低)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:258 +msgid "1 hop tunnel (medium anonymity, medium latency)" +msgstr "隧道跳点x1(匿名性中,延迟中)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:262 +msgid "2 hop tunnel (high anonymity, high latency)" +msgstr "隧道跳点x2(匿名性高,延迟高)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:266 +msgid "3 hop tunnel (very high anonymity, poor performance)" +msgstr "隧道跳点x3(匿名性优,影响性能)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:256 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:275 +msgid "hop tunnel (very poor performance)" +msgstr "跳点隧道(严重影响性能)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:261 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:280 +msgid "Variance" +msgstr "随机变化" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:268 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:287 +msgid "0 hop variance (no randomisation, consistant performance)" +msgstr "隧道长度恒定(随机性无,性能稳定)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:272 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:291 +msgid "+ 0-1 hop variance (medium additive randomisation, subtractive performance)" +msgstr "隧道长度+ 0-1(随机性中,影响性能)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295 +msgid "+ 0-2 hop variance (high additive randomisation, subtractive performance)" +msgstr "隧道长度+ 0-2(随机性高,影响性能)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:299 +msgid "+/- 0-1 hop variance (standard randomisation, standard performance)" +msgstr "隧道长度+/- 0-1(随机性标准,正常性能)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:284 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:303 +msgid "+/- 0-2 hop variance (not recommended)" +msgstr "隧道程度+/- 0-2(不推荐)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:315 +msgid "hop variance" +msgstr "节点数量" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:320 +msgid "Count" +msgstr "计数" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:327 +msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)" +msgstr "出/入站隧道x1(带宽低,低可靠性)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:331 +msgid "2 inbound, 2 outbound tunnels (standard bandwidth usage, standard reliability)" +msgstr "出/入站隧道x2(带宽标准,标准稳定性)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335 +msgid "3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)" +msgstr "出/入站隧道x3(带宽高,高稳定性)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:344 +msgid "tunnels" +msgstr "隧道" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349 +msgid "Backup Count" +msgstr "备用数量" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:356 +msgid "0 backup tunnels (0 redundancy, no added resource usage)" +msgstr "无备用隧道(无冗余,不增加资源占用)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:360 +msgid "1 backup tunnel each direction (low redundancy, low resource usage)" +msgstr "备用隧道对x1 (低冗余,低资源占用)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364 +msgid "2 backup tunnels each direction (medium redundancy, medium resource usage)" +msgstr "备用隧道对x2 (中冗余,中资源占用)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:349 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:368 +msgid "3 backup tunnels each direction (high redundancy, high resource usage)" +msgstr "备用隧道对x3 (高冗余,高资源占用)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:358 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377 +msgid "backup tunnels" +msgstr "备用隧道" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:384 +msgid "Profile" +msgstr "连接类型" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:372 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:391 +msgid "interactive connection" +msgstr "速度连接" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:376 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:395 +msgid "bulk connection (downloads/websites/BT)" +msgstr "效率连接(下载/WEB/BT)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:378 +msgid "Delay Connect" +msgstr "连接延迟断开" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:382 +msgid "for request/response connections" +msgstr "单请求/响应连接" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399 +msgid "Router I2CP Address" +msgstr "路由器I2CP地址" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401 +msgid "Host" +msgstr "主机" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:396 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:148 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:244 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:266 +msgid "Port" +msgstr "端口" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:406 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481 +msgid "Reduce tunnel quantity when idle" +msgstr "空闲时缩减隧道数量" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:408 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:422 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:430 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:442 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:452 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:472 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:419 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:483 +msgid "Enable" +msgstr "启用" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:412 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:487 +msgid "Reduced tunnel count" +msgstr "削减后的隧道数量" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:416 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:491 +msgid "Idle minutes" +msgstr "空闲时间(分钟)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420 +msgid "Close tunnels when idle" +msgstr "空闲时关闭隧道" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:426 +msgid "New Keys on Reopen" +msgstr "重新打开隧道时使用新密钥" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435 +msgid "Disable" +msgstr "禁用" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440 +msgid "Delay tunnel open until required" +msgstr "仅在请求时打开" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:450 +msgid "Persistent private key" +msgstr "永久私有密钥" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:456 +msgid "File" +msgstr "文件" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:460 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:220 +msgid "Local destination" +msgstr "本地目标" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464 +msgid "(if known)" +msgstr "(如果已知)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:470 +msgid "Local Authorization" +msgstr "本地认证" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490 +msgid "Username" +msgstr "用户名" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:480 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:494 +msgid "Password" +msgstr "密码" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484 +msgid "Outproxy Authorization" +msgstr "出口代理认证" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502 +msgid "Jump URL List" +msgstr "跳转服务列表" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:508 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:527 +msgid "Custom options" +msgstr "自定义选项" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:512 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531 +msgid "NOTE: If tunnel is currently running, most changes will not take effect until tunnel is stopped and restarted." +msgstr "注意:如果当前隧道已经启动,设置需要【停止】并重新【启动】相应隧道后才能生效。" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:514 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:533 +msgid "Cancel" +msgstr "取消" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537 +msgid "Delete" +msgstr "删除" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:520 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:539 +msgid "Save" +msgstr "保存" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:73 +msgid "I2P Tunnel Manager - Edit Server Tunnel" +msgstr "I2P隧道管理器 - 编辑服务器隧道" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:93 +msgid "Edit server settings" +msgstr "服务器隧道设置" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:101 +msgid "New server settings" +msgstr "新建服务器设置" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:199 +msgid "Website name" +msgstr "网站名称" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:203 +msgid "(leave blank for outproxies)" +msgstr "(出口代理这里请置空)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:208 +msgid "Private key file" +msgstr "私钥文件" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:230 +msgid "Add to local addressbook" +msgstr "添加至本地地址簿" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:237 +msgid "Hostname Signature" +msgstr "主机名签名" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417 +msgid "Encrypt Leaseset" +msgstr "加密赁集" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423 +msgid "Encryption Key" +msgstr "加密密钥" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427 +msgid "Generate New Key" +msgstr "生成新密钥" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429 +msgid "Generate" +msgstr "生成" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525 +msgid "(Tunnel must be stopped first)" +msgstr "(必须先停止隧道)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433 +msgid "Restricted Access List" +msgstr "限制访问列表" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439 +msgid "Whitelist" +msgstr "白名单" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443 +msgid "Blacklist" +msgstr "黑名单" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447 +msgid "Access List" +msgstr "访问列表" + +# disable=>noLimit +#. out.print(intl._("Inbound connection limits (0 to disable)")); +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:452 +msgid "Inbound connection limits (0=unlimited)" +msgstr "入站连接限制(0=无限制)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:454 +msgid "Per client" +msgstr "按客户端" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:456 +msgid "Per minute" +msgstr "按分钟" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:460 +msgid "Per hour" +msgstr "按小时" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:464 +msgid "Per day" +msgstr "按天" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:468 +msgid "Total" +msgstr "总数" + +# disable=>noLimit +#. out.print(intl._("Max concurrent connections (0 to disable)")); +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:477 +msgid "Max concurrent connections (0=unlimited)" +msgstr "最大并发连接数(0=无限制)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495 +msgid "New Certificate type" +msgstr "新建证书类型" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:497 +msgid "None" +msgstr "无" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:501 +msgid "Hashcash (effort)" +msgstr "Hashcash (强度)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507 +msgid "Hashcash Calc Time" +msgstr "Hashcash 计算时间" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509 +msgid "Estimate" +msgstr "估算" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:511 +msgid "Hidden" +msgstr "隐藏" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:515 +msgid "Signed (signed by)" +msgstr "签名(签名者)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521 +msgid "Modify Certificate" +msgstr "修改证书" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:523 +msgid "Modify" +msgstr "修改" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:71 +msgid "I2P Tunnel Manager - List" +msgstr "I2P隧道管理器 - 列表" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:83 +msgid "Status Messages" +msgstr "状态信息" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:87 +msgid "Refresh" +msgstr "刷新" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:91 +msgid "Stop All" +msgstr "全部停止" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:95 +msgid "Start All" +msgstr "全部启动" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:99 +msgid "Restart All" +msgstr "全部重启" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:103 +msgid "Reload Config" +msgstr "重新载入设置" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:105 +msgid "I2P Server Tunnels" +msgstr "I2P服务端隧道" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:109 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:130 +msgid "Points at" +msgstr "指向" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:111 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:153 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:157 +msgid "Preview" +msgstr "预览" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:113 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:177 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:250 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:297 +msgid "Status" +msgstr "状态" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:163 +msgid "Base32 Address" +msgstr "Base32地址" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:171 +msgid "No Preview" +msgstr "无预览" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:184 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:304 +msgid "Starting..." +msgstr "正在启动..." + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:191 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:205 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:339 +msgid "Stop" +msgstr "停止" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:198 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:332 +msgid "Running" +msgstr "运行中" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:212 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:346 +msgid "Stopped" +msgstr "已停止" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:353 +msgid "Start" +msgstr "启动" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:234 +msgid "New server tunnel" +msgstr "新建服务器隧道" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:396 +msgid "Standard" +msgstr "标准" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:238 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:398 +msgid "Create" +msgstr "创建" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:240 +msgid "I2P Client Tunnels" +msgstr "I2P客户端隧道" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:248 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:283 +msgid "Interface" +msgstr "网络接口" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:318 +msgid "Standby" +msgstr "等待" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:363 +msgid "Outproxy" +msgstr "出口代理" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:367 +msgid "Destination" +msgstr "目标" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:381 +msgid "none" +msgstr "无" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394 +msgid "New client tunnel" +msgstr "新建客户隧道" + +#~ msgid "Locally (127.0.0.1)" +#~ msgstr "本地(127.0.0.1)" +#~ msgid "Everyone (0.0.0.0)" +#~ msgstr "任何人(0.0.0.0)" +#~ msgid "LAN Hosts (Please specify your LAN address)" +#~ msgstr "局域网(请指定LAN地址)" +#~ msgid "Other" +#~ msgstr "其他" +#~ msgid "I2CP Options" +#~ msgstr "I2CP选项" +#~ msgid "(Restrict to these clients only)" +#~ msgstr "(仅允许这些客户访问)" +#~ msgid "Unimplemented" +#~ msgstr "尚未实现" + diff --git a/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java b/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java index 6b6a8b616..20d7da9bf 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java @@ -197,9 +197,10 @@ public class StatsGenerator { buf.append("; "); } - buf.append(ngettext((int) curRate.getLastEventCount(), "There was 1 event", "There were {0} events")); - buf.append(' '); - buf.append(_("in this period which ended {0} ago.", DataHelper.formatDuration2(now - curRate.getLastCoalesceDate()))); + // breaking the sentence like before makes translation in my language impossible. + buf.append(_("There were {0} event(s) in this period", curRate.getLastEventCount())); + // buf.append(' '); + buf.append(_(" which ended {0} ago.", DataHelper.formatDuration2(now - curRate.getLastCoalesceDate()))); } else { buf.append(" <i>").append(_("No events")).append("</i> "); } diff --git a/apps/routerconsole/locale/messages_zh.po b/apps/routerconsole/locale/messages_zh.po index 06a108aa2..8e283ab8e 100644 --- a/apps/routerconsole/locale/messages_zh.po +++ b/apps/routerconsole/locale/messages_zh.po @@ -1,5780 +1,5470 @@ -# 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 <foo@bar>, 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: I2P routerconsole\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-09 15:08+0000\n" -"PO-Revision-Date: \n" -"Last-Translator: walking <walking@mail.i2p>\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: Chinese\n" -"X-Poedit-Country: CHINA\n" -"Plural-Forms: nplurals=1; plural=0\n" - -#. NOTE TO TRANSLATORS: Feel free to translate all these as you see fit, there are several options... -#. spaces or not, '.' or not, plural or not. Try not to make it too long, it is used in -#. a lot of tables. -#. milliseconds -#. Note to translators, may be negative or zero, 2999 maximum. -#. {0,number,####} prevents 1234 from being output as 1,234 in the English locale. -#. If you want the digit separator in your locale, translate as {0}. -#. alternates: msec, msecs -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1124 -#, java-format -msgid "1 ms" -msgid_plural "{0,number,####} ms" -msgstr[0] "" - -#. seconds -#. Note to translators: quantity will always be greater than one. -#. alternates: secs, sec. 'seconds' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1129 -#, java-format -msgid "1 sec" -msgid_plural "{0} sec" -msgstr[0] "" - -#. minutes -#. Note to translators: quantity will always be greater than one. -#. alternates: mins, min. 'minutes' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1134 -#, java-format -msgid "1 min" -msgid_plural "{0} min" -msgstr[0] "" - -#. hours -#. Note to translators: quantity will always be greater than one. -#. alternates: hrs, hr., hrs. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1139 -#, fuzzy, java-format -msgid "1 hour" -msgid_plural "{0} hours" -msgstr[0] "小时" - -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1141 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313 -msgid "n/a" -msgstr "" - -#. days -#. Note to translators: quantity will always be greater than one. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1145 -#, java-format -msgid "1 day" -msgid_plural "{0} days" -msgstr[0] "" - -#: ../../../router/java/src/net/i2p/router/Blocklist.java:122 -#, java-format -msgid "Banned by router hash: {0}" -msgstr "按路由器 HASH 封杀: {0}" - -#: ../../../router/java/src/net/i2p/router/Blocklist.java:124 -msgid "Banned by router hash" -msgstr "已按路由 HASH 封杀" - -#. Temporary reason, until the job finishes -#: ../../../router/java/src/net/i2p/router/Blocklist.java:669 -msgid "IP banned" -msgstr "IP封锁" - -#: ../../../router/java/src/net/i2p/router/Blocklist.java:739 -#, 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:488 -msgid "Rejecting tunnels" -msgstr "拒绝参与共享隧道" - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:105 -#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 -msgid "Reseeding" -msgstr "正在补种(引导网络启动)..." - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:128 -#, java-format -msgid "Reseed fetched only 1 router." -msgid_plural "Reseed fetched only {0} routers." -msgstr[0] "" - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:135 -#, fuzzy -msgid "Reseed failed." -msgstr "数据传输失败" - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:136 -#, java-format -msgid "See {0} for help." -msgstr "" - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:137 -#, fuzzy -msgid "reseed configuration page" -msgstr "WebApp 设置已保存" - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:239 -msgid "Reseeding: fetching seed URL." -msgstr "正在补种:获取补种连接..." - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281 -#, java-format -msgid "" -"Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." -msgstr "正在补种:从补种服务器获取路由信息({0}成功,{1}失败)。" - -#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:512 -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:450 -msgid "Unreachable on any transport" -msgstr "各传输方式均不可达" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:499 -msgid "Router Transport Addresses" -msgstr "路由传输地址" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:504 -#, java-format -msgid "{0} is used for outbound connections only" -msgstr "{0} 仅被用作出站连接" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:518 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123 -msgid "Help" -msgstr "" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 -msgid "" -"Your transport connection limits are automatically set based on your " -"configured bandwidth." -msgstr "" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 -msgid "" -"To override these limits, add the settings i2np.ntcp.maxConnections=nnn and " -"i2np.udp.maxConnections=nnn on the advanced configuration page." -msgstr "" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 -msgid "Definitions" -msgstr "定义" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:735 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890 -#: ../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:524 -msgid "The remote peer, identified by router hash" -msgstr "以路由Hash区分的远程节点" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:736 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 -msgid "Dir" -msgstr "类别" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 -msgid "Inbound connection" -msgstr "进站连接" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 -msgid "Outbound connection" -msgstr "出站连接" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 -msgid "They offered to introduce us (help other peers traverse our firewall)" -msgstr "对方节点为中继帮助我方穿越防火墙" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 -msgid "We offered to introduce them (help other peers traverse their firewall)" -msgstr "我方为中继帮助其他节点穿越防火墙" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 -msgid "How long since a packet has been received / sent" -msgstr "最近一次数据传输距现在的时间" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895 -msgid "Idle" -msgstr "空闲" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1900 -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 -msgid "In/Out" -msgstr "入/出" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 -msgid "The smoothed inbound / outbound transfer rate (KBytes per second)" -msgstr "进/出站平滑传输率(Kbyte/s)" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 -msgid "How long ago this connection was established" -msgstr "连接建立时间" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905 -msgid "Up" -msgstr "寿命" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1907 -msgid "Skew" -msgstr "时滞" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 -msgid "The difference between the peer's clock and your own" -msgstr "节点与本地时钟间的时滞" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 -msgid "" -"The congestion window, which is how many bytes can be sent without an " -"acknowledgement" -msgstr "拥塞窗口,即每次确认前可发送的字节量" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 -msgid "The number of sent messages awaiting acknowledgement" -msgstr "等待确认的已发送数据包数量" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 -msgid "The maximum number of concurrent messages to send" -msgstr "并发消息的最大发送量" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 -msgid "The number of pending sends which exceed congestion window" -msgstr "超过拥塞窗口的待发送数量" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 -msgid "The slow start threshold" -msgstr "慢启动门槛" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 -msgid "The round trip time in milliseconds" -msgstr "往返时间单位毫秒" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 -msgid "Dev" -msgstr "偏差" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 -msgid "The standard deviation of the round trip time in milliseconds" -msgstr "环行时间的标准差单位毫秒" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 -msgid "The retransmit timeout in milliseconds" -msgstr "重传输超时时间单位毫秒" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 -msgid "" -"Current maximum send packet size / estimated maximum receive packet size " -"(bytes)" -msgstr "当前发送数据包的最大大小/预计接收数据包的最大大小(字节)" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 -msgid "TX" -msgstr "发包" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 -msgid "The total number of packets sent to the peer" -msgstr "向节点发送的数据包总量" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:742 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926 -msgid "RX" -msgstr "接包" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 -msgid "The total number of packets received from the peer" -msgstr "从节点接收到数据包总量" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1929 -msgid "Dup TX" -msgstr "重发包" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 -msgid "The total number of packets retransmitted to the peer" -msgstr "向节点发送的重复数据包总量" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1931 -msgid "Dup RX" -msgstr "重接包" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 -msgid "The total number of duplicate packets received from the peer" -msgstr "从节点接收到的重复数据包总量" - -#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:409 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:627 -#, java-format -msgid "Excessive clock skew: {0}" -msgstr "严重时滞:{0}" - -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:730 -msgid "NTCP connections" -msgstr "NTCP连接" - -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:731 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1886 -msgid "Limit" -msgstr "限制" - -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 -msgid "Timeout" -msgstr "超时" - -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:743 -msgid "Out Queue" -msgstr "出队" - -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:744 -msgid "Backlogged?" -msgstr "积压?" - -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:758 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1949 -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 -msgid "Inbound" -msgstr "入站" - -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1951 -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 -msgid "Outbound" -msgstr "出站" - -#. buf.append("<tr> <td colspan=\"11\"><hr></td></tr>\n"); -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:807 -msgid "peers" -msgstr "节点" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1885 -msgid "UDP connections" -msgstr "UDP连接" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1892 -msgid "Sort by peer hash" -msgstr "按节点Hash" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 -msgid "Direction/Introduction" -msgstr "方向" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1896 -msgid "Sort by idle inbound" -msgstr "出站空闲" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1898 -msgid "Sort by idle outbound" -msgstr "入站空闲" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1901 -msgid "Sort by inbound rate" -msgstr "按入站速度" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1903 -msgid "Sort by outbound rate" -msgstr "按出站速度" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1906 -msgid "Sort by connection uptime" -msgstr "按连接时间" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1908 -msgid "Sort by clock skew" -msgstr "按时滞" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1911 -msgid "Sort by congestion window" -msgstr "按拥塞窗口" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1913 -msgid "Sort by slow start threshold" -msgstr "按启动门槛" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1916 -msgid "Sort by round trip time" -msgstr "按往返时间" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918 -msgid "Sort by round trip time deviation" -msgstr "按RTT偏差" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1920 -msgid "Sort by retransmission timeout" -msgstr "按重传输超时时间" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1923 -msgid "Sort by outbound maximum transmit unit" -msgstr "按出站最大传输单元" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1925 -msgid "Sort by packets sent" -msgstr "按已发送数据包" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927 -msgid "Sort by packets received" -msgstr "按已接收数据包" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1930 -msgid "Sort by packets retransmitted" -msgstr "按重传数据包" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1932 -msgid "Sort by packets received more than once" -msgstr "按重复数据包" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1953 -msgid "We offered to introduce them" -msgstr "中继客户" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1955 -msgid "They offered to introduce us" -msgstr "中继" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1959 -msgid "Choked" -msgstr "" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1967 -msgid "1 fail" -msgstr "失败 1 次" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1969 -#, java-format -msgid "{0} fails" -msgstr "失败 {0} 次" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1975 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:162 -msgid "Banned" -msgstr "已封锁" - -#. buf.append("<tr><td colspan=\"16\"><hr></td></tr>\n"); -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2106 -msgid "SUMMARY" -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:525 -msgid "Rejecting tunnels: Request overload" -msgstr "拒绝共享:请求过多" - -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:550 -msgid "Rejecting tunnels: Connection limit" -msgstr "拒绝共享:连接受限" - -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:744 -msgid "Dropping tunnel requests: High load" -msgstr "忽略共享请求:高负载" - -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:753 -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 "Congo" - -#: ../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:35 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:37 -#: ../java/strings/Strings.java:29 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:119 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:233 -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:35 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:335 -msgid "Save Client Configuration" -msgstr "保存客户程序设置" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:39 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:405 -#, fuzzy -msgid "Save Interface Configuration" -msgstr "保存客户程序设置" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 -msgid "Save WebApp Configuration" -msgstr "保存 WebApp 设置" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:47 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427 -msgid "Save Plugin Configuration" -msgstr "保存插件配置" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:51 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433 -msgid "Install Plugin" -msgstr "安装插件" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:87 -#, java-format -msgid "Deleted plugin {0}" -msgstr "删除插件 {0}" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:89 -#, java-format -msgid "Error deleting plugin {0}" -msgstr "删除插件 {0} 时发生错误" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:101 -#, java-format -msgid "Stopped plugin {0}" -msgstr "插件 {0} 已停用" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:103 -#, java-format -msgid "Error stopping plugin {0}" -msgstr "停用插件 {0} 时发生错误" - -#. label (IE) -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:124 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:255 -msgid "Start" -msgstr "启动" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:143 -#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:49 -#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:61 -#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:33 -msgid "Unsupported" -msgstr "未支持的" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:189 -msgid "New client added" -msgstr "新客户端添加完毕" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:193 -msgid "" -"Client configuration saved successfully - restart required to take effect." -msgstr "客户程序设置保存成功 - 程序重启后生效" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 -msgid "Bad client index." -msgstr "客户程序索引无效" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:384 -msgid "Client" -msgstr "客户" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:271 -msgid "started" -msgstr "已启动" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223 -msgid "deleted" -msgstr "已删除" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:240 -msgid "WebApp configuration saved." -msgstr "WebApp 设置已保存" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:256 -msgid "Plugin configuration saved." -msgstr "插件配置已保存" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:271 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 -msgid "WebApp" -msgstr "Web程序" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:273 -msgid "Failed to start" -msgstr "启动失败" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:278 -msgid "Failed to find server." -msgstr "服务器或服务程序查找失败。" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:284 -msgid "No plugin URL specified." -msgstr "未指定插件链接" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:294 -#, java-format -msgid "No update URL specified for {0}" -msgstr "{0} 未指定更新链接" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:302 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:307 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:320 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:325 -msgid "Plugin or update download already in progress." -msgstr "插件/更新包的下载正在进行" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:311 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:118 -#, java-format -msgid "Downloading plugin from {0}" -msgstr "正在从 {0} 下载插件" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:329 -#, java-format -msgid "Checking plugin {0} for updates" -msgstr "正在检查插件 {0} 是否存在更新" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:339 -#, java-format -msgid "Started plugin {0}" -msgstr "插件 {0} 已运行" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:341 -#, java-format -msgid "Error starting plugin {0}" -msgstr "插件启动错误 {0}" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 -#, fuzzy -msgid "" -"Interface configuration saved successfully - restart required to take effect." -msgstr "客户程序设置保存成功 - 程序重启后生效" - -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:85 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258 -msgid "Edit" -msgstr "编辑" - -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:94 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:331 -msgid "Add Client" -msgstr "添加客户端" - -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 -msgid "Class and arguments" -msgstr "类与参数" - -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 -msgid "Control" -msgstr "控制项" - -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 -msgid "Run at Startup?" -msgstr "启动时运行?" - -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:197 -msgid "Description" -msgstr "描述" - -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 -msgid "Plugin" -msgstr "插件" - -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:161 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185 -msgid "Version" -msgstr "版本" - -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:163 -msgid "Signed by" -msgstr "数字签名者:" - -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:180 -msgid "Date" -msgstr "日期" - -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:186 -msgid "Author" -msgstr "作者" - -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:202 -msgid "License" -msgstr "许可证" - -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:207 -msgid "Website" -msgstr "网站" - -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:212 -msgid "Update link" -msgstr "更新链接" - -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:260 -msgid "Stop" -msgstr "停止" - -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:262 -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:78 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:313 -msgid "Check for updates" -msgstr "检查更新" - -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:263 -#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:242 -msgid "Update" -msgstr "更新" - -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:268 -#, java-format -msgid "Are you sure you want to delete {0}?" -msgstr "您确定要删除 {0} ?" - -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:270 -msgid "Delete" -msgstr "删除" - -#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:18 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:325 -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:323 -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/ConfigLoggingHandler.java:82 -#, fuzzy -msgid "Log overrides updated" -msgstr "等级外<br>日志项目" - -#: ../java/src/net/i2p/router/web/ConfigLoggingHandler.java:160 -#, fuzzy -msgid "Log configuration saved" -msgstr "插件配置已保存" - -#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 -msgid "" -"Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" -msgstr "" - -#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:49 -msgid "" -"Or put entries in the logger.config file. Example: logger.record.net.i2p." -"router.tunnel=WARN" -msgstr "" - -#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:50 -msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT" -msgstr "" - -#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 -msgid "CRIT" -msgstr "" - -#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 -msgid "DEBUG" -msgstr "" - -#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 -msgid "ERROR" -msgstr "" - -#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 -msgid "INFO" -msgstr "" - -#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 -msgid "WARN" -msgstr "" - -#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:88 -#, fuzzy -msgid "Remove" -msgstr "职能" - -#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:125 -msgid "Select a class to add" -msgstr "" - -#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:204 -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:101 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 -#: ../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:293 -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:107 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260 -#: ../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:387 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:143 -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/ConfigReseedHandler.java:29 -#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:34 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:360 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:516 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:307 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:341 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:352 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:377 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:344 -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 "正在启用笔记本模式" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:244 -msgid "Disabling laptop mode" -msgstr "正在禁用笔记本模式" - -#: ../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:41 -#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:49 -#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:52 -#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:59 -#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:62 -msgid "unknown" -msgstr "未知" - -#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:172 -msgid "bits per second" -msgstr "Bit/s" - -#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:173 -#, java-format -msgid "or {0} bytes per month maximum" -msgstr "或最多 {0} Byte/月(假设始终 7 天 x 24小时开机)" - -#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:20 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:315 -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:317 -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:343 -msgid "Adjust peer 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 "容量值无效" - -#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:17 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 -#, fuzzy -msgid "Save changes and reseed now" -msgstr "保存修改" - -#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:21 -#, fuzzy -msgid "Reseeding is already in progress" -msgstr "创建中" - -#. skip the nonce checking in ReseedHandler -#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:24 -msgid "Starting reseed process" -msgstr "" - -#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:66 -#, fuzzy -msgid "Configuration saved successfully." -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:293 -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:291 -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:295 -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:307 -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:309 -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:323 -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:325 -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:343 -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:351 -msgid "View console on startup" -msgstr "程序启动时显示控制台" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:93 -msgid "Console is to be shown on startup" -msgstr "启动后显示控制台" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:94 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 -msgid "Do not view console on startup" -msgstr "启动后不打开控制台" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96 -msgid "Console is not to be shown on startup" -msgstr "启动后不显示控制台" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:105 -msgid "Service installed" -msgstr "服务已安装" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:107 -msgid "Warning: unable to install the service" -msgstr "警告:无法安装服务" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:113 -msgid "Service removed" -msgstr "服务已卸载" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:115 -msgid "Warning: unable to remove the service" -msgstr "警告:无法卸载服务" - -#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:111 -msgid "Stat filter and location updated successfully to" -msgstr "统计数据过滤器及位置成功更新至" - -#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:113 -msgid "Failed to update the stat filter and location" -msgstr "统计数据过滤器及地址更新失败" - -#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:114 -msgid "" -"Graph list updated, may take up to 60s to be reflected here and on the <a " -"href=\"graphs.jsp\">Graphs Page</a>" -msgstr "" -"曲线图列表已更新,更新后的内容可能需要最多 60s 的时间才能在这里及 <a href=" -"\"graphs.jsp\">统计图表</a>页面中反映出来。" - -#. 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:135 -msgid "Updated settings for all pools." -msgstr "隧道池更新完毕" - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:140 -msgid "Exploratory tunnel configuration saved successfully." -msgstr "探索隧道设置保存成功。" - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 -#: ../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} 跳点" - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:15 -#, java-format -msgid "1 tunnel" -msgid_plural "{0} tunnels" -msgstr[0] "{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("<tr><th></th><th>Inbound</th><th>Outbound</th></tr>\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 "英语" - -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 -msgid "French" -msgstr "法语" - -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 -msgid "German" -msgstr "德语" - -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 -#, fuzzy -msgid "Spanish" -msgstr "西班牙" - -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 -msgid "Dutch" -msgstr "荷兰语" - -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 -#, fuzzy -msgid "Portuguese" -msgstr "葡萄牙" - -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 -msgid "Russian" -msgstr "俄语" - -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 -msgid "Chinese" -msgstr "中文" - -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 -msgid "Swedish" -msgstr "瑞士语" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:85 -msgid "Update available, attempting to download now" -msgstr "有更新可用,正在尝试下载" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:87 -msgid "Update available, click button on left to download" -msgstr "有更新可用,点左侧按钮下载" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:93 -msgid "No update available" -msgstr "无更新" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:101 -msgid "Updating news URL to" -msgstr "正在更新新闻链接至" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:109 -msgid "Updating proxy host to" -msgstr "正在更新代理主机至" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:117 -msgid "Updating proxy port to" -msgstr "正在更新代理端口至" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:130 -msgid "Updating refresh frequency to" -msgstr "正在更新更新频率为" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:137 -msgid "Updating update policy to" -msgstr "正在更新更新策略为" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:146 -msgid "Updating update URLs." -msgstr "正在更新更新链接至" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:155 -msgid "Updating trusted keys." -msgstr "正在更新可信公钥为" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:163 -msgid "Updating unsigned update URL to" -msgstr "正在更新未签名软件链接至" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:88 -#: ../java/src/net/i2p/router/web/GraphHelper.java:167 -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 "仅下载、验证并重启" - -#: ../java/src/net/i2p/router/web/FormHandler.java:174 -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:93 -msgid "Combined bandwidth graph" -msgstr "复合带宽图" - -#. e.g. "statname for 60m" -#: ../java/src/net/i2p/router/web/GraphHelper.java:107 -#, java-format -msgid "{0} for {1}" -msgstr "过去 {1} 统计 {0}" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:146 -msgid "Configure Graph Display" -msgstr "图表显示设置" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:146 -msgid "Select Stats" -msgstr "选择统计项" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:150 -msgid "Periods" -msgstr "周期" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:151 -msgid "Plot averages" -msgstr "事件均值" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:152 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 -msgid "or" -msgstr "或" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:152 -msgid "plot events" -msgstr "事件数量" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:153 -msgid "Image sizes" -msgstr "图像尺寸" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:153 -msgid "width" -msgstr "宽度" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:154 -msgid "height" -msgstr "高度" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:154 -#: ../java/src/net/i2p/router/web/GraphHelper.java:155 -msgid "pixels" -msgstr "像素" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:156 -msgid "Refresh delay" -msgstr "刷新延迟" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:171 -msgid "Redraw" -msgstr "重绘" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:203 -msgid "Graph settings saved" -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/LogsHelper.java:34 -#, fuzzy -msgid "File not found" -msgstr "未找到" - -#: ../java/src/net/i2p/router/web/LogsHelper.java:52 -msgid "No log messages" -msgstr "" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:80 -msgid "Network Database RouterInfo Lookup" -msgstr "网络数据库 RouterInfo 检索" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:95 -#: ../java/strings/Strings.java:68 -msgid "Router" -msgstr "路由器" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:95 -msgid "not found in network database" -msgstr "在网络数据库概况未找到" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:107 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:215 -msgid "Network Database Contents" -msgstr "网络数据库内容" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:108 -msgid "View RouterInfo" -msgstr "浏览 RouterInfo" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:109 -msgid "LeaseSets" -msgstr "赁集" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:131 -msgid "LeaseSet" -msgstr "赁集" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:133 -msgid "Local" -msgstr "本地" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:135 -msgid "Unpublished" -msgstr "未发布" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:136 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143 -msgid "Destination" -msgstr "目标" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:153 -#, java-format -msgid "Expires in {0}" -msgstr "{0} 后过期" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:155 -#, java-format -msgid "Expired {0} ago" -msgstr "{0}前过期" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:167 -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 -msgid "Gateway" -msgstr "网关" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:167 -msgid "Lease" -msgstr "租赁" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:169 -msgid "Tunnel" -msgstr "隧道" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:215 -msgid "View LeaseSets" -msgstr "查看赁集" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217 -msgid "Not initialized" -msgstr "未初始化" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:226 -msgid "Routers" -msgstr "路由器" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:228 -msgid "Show all routers" -msgstr "显示所有路由器" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:230 -msgid "Show all routers with full stats" -msgstr "显示所有路由及统计" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:265 -msgid "Network Database Router Statistics" -msgstr "NetDb路由器统计" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 -msgid "Count" -msgstr "计数" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 -msgid "Transports" -msgstr "传输" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 -msgid "Country" -msgstr "国家" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:342 -msgid "Our info" -msgstr "我方信息" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:344 -msgid "Peer info for" -msgstr "节点信息" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:348 -msgid "Full entry" -msgstr "完整项" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:115 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 -msgid "Hidden" -msgstr "隐身" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 -msgid "Updated" -msgstr "已更新" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:355 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:358 -#, java-format -msgid "{0} ago" -msgstr "{0}前" - -#. shouldnt happen -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:357 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:361 -msgid "Published" -msgstr "发布" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:363 -msgid "Address(es)" -msgstr "地址" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:376 -msgid "cost" -msgstr "开销" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 -msgid "Hidden or starting up" -msgstr "隐身或正在启动" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 -msgid "SSU" -msgstr "" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 -msgid "SSU with introducers" -msgstr "使用中介的SSU连接" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 -msgid "NTCP" -msgstr "" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 -msgid "NTCP and SSU" -msgstr "NTCP 与 SSU" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 -msgid "NTCP and SSU with introducers" -msgstr "使用中介的NTCP与SSU连接" - -#: ../java/src/net/i2p/router/web/NewsFetcher.java:93 -#, java-format -msgid "News last updated {0} ago." -msgstr "新闻更新于{0}前" - -#: ../java/src/net/i2p/router/web/NewsFetcher.java:99 -#, 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:139 -msgid "Downloading plugin" -msgstr "正在下载插件" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:146 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:244 -#, java-format -msgid "{0}B transferred" -msgstr "已传输 {0}B" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:153 -msgid "Plugin downloaded" -msgstr "插件下载完成" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:158 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:345 -#, java-format -msgid "Cannot create plugin directory {0}" -msgstr "无法创建插件目录 {0}" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:167 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:298 -#, java-format -msgid "from {0}" -msgstr "自 {0}" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:177 -#, java-format -msgid "Plugin from {0} is corrupt" -msgstr "由 {0} 获取的插件已损坏。" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:188 -#, java-format -msgid "Plugin from {0} does not contain the required configuration file" -msgstr "由 {0} 获取的插件缺少必要的配置文件" - -#. updateStatus("<b>" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + "</b>"); -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:201 -#, java-format -msgid "Plugin from {0} contains an invalid key" -msgstr "由 {0} 获取的插件签名密钥无效" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:220 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:229 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:238 -#, java-format -msgid "Plugin signature verification of {0} failed" -msgstr "插件 {0} 的签名验证失败。" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:253 -#, java-format -msgid "Plugin from {0} has invalid name or version" -msgstr "从 {0} 获取的插件缺少有效的名称或版本" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:258 -#, java-format -msgid "Plugin {0} has mismatched versions" -msgstr "插件 {0} 的内部版本不符。" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:266 -#, java-format -msgid "This plugin requires I2P version {0} or higher" -msgstr "插件需要I2P版本 {0} 或更高" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:274 -#, java-format -msgid "This plugin requires Java version {0} or higher" -msgstr "插件需要 Java 版本 {0} 或更高" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:282 -msgid "" -"Downloaded plugin is for new installs only, but the plugin is already " -"installed" -msgstr "所下插件包仅用于全新安装,但您已经安装过该插件" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:294 -msgid "Installed plugin does not contain the required configuration file" -msgstr "已安装插件缺少所需的配置文件" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:302 -msgid "Signature of downloaded plugin does not match installed plugin" -msgstr "所下插件的签名(人)与所安装插件的签名不符" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:309 -#, java-format -msgid "Downloaded plugin version {0} is not newer than installed plugin" -msgstr "所下插件版本 {0} 没有已安装插件的版本新" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:316 -#, java-format -msgid "Plugin update requires installed plugin version {0} or higher" -msgstr "插件更新包需要安装插件的版本为 {0} 或更高" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:323 -#, java-format -msgid "Plugin update requires installed plugin version {0} or lower" -msgstr "插件更新包需要安装插件的版本不高于 {0}" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:340 -msgid "Plugin is for upgrades only, but the plugin is not installed" -msgstr "插件更新包包找不到对应的原版插件" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:353 -#, java-format -msgid "Failed to install plugin in {0}" -msgstr "无法将插件安装至目录{0}" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:360 -#, java-format -msgid "Plugin {0} installed, router restart required" -msgstr "插件 {0} 已安装,重启I2P后生效" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:362 -#, java-format -msgid "Plugin {0} installed" -msgstr "插件 {0} 已安装" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:380 -#, java-format -msgid "Plugin {0} installed and started" -msgstr "插件 {0} 已安装并启动" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:383 -#, java-format -msgid "Plugin {0} installed but failed to start, check logs" -msgstr "插件 {0} 已安装但启动失败,请检查日志。" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:385 -#, java-format -msgid "Plugin {0} installed but failed to start" -msgstr "插件 {0} 已安装但启动失败" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:395 -#, 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 "分组(容量)" - -#: ../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:335 -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:339 -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:287 -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 "种子节点与整合节点" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:188 -msgid "Caps" -msgstr "容量" - -#: ../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 "10m响应时间" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195 -msgid "1h Resp. Time" -msgstr "1h响应时间" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196 -msgid "1d Resp. Time" -msgstr "1d响应时间" - -#: ../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 "1h失败率" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 -msgid "1d Fail Rate" -msgstr "1d失败率" - -#: ../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 "由节点描述信息管理器决定" - -#: ../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 "netDb中的容量,与描述信息无关。" - -#. capabilities -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 -#: ../java/strings/Strings.java:81 -msgid "caps" -msgstr "容量" - -#: ../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 "该节点一分钟由单一隧道通过的数据峰值(byte/s)。" - -#: ../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/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:223 -msgid "Bandwidth usage" -msgstr "带宽占用" - -#: ../java/src/net/i2p/router/web/StatSummarizer.java:230 -msgid "Outbound bytes/sec" -msgstr "出站(byte/s)" - -#. def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3); -#: ../java/src/net/i2p/router/web/StatSummarizer.java:232 -msgid "Inbound bytes/sec" -msgstr "入站(byte/s)" - -#: ../java/src/net/i2p/router/web/StatSummarizer.java:235 -#: ../java/src/net/i2p/router/web/StatSummarizer.java:236 -#: ../java/src/net/i2p/router/web/StatSummarizer.java:237 -#: ../java/src/net/i2p/router/web/StatSummarizer.java:238 -msgid "bytes/sec" -msgstr "" - -#: ../java/src/net/i2p/router/web/StatSummarizer.java:235 -msgid "out average" -msgstr "出站平均值" - -#: ../java/src/net/i2p/router/web/StatSummarizer.java:236 -#: ../java/src/net/i2p/router/web/StatSummarizer.java:238 -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:115 -msgid "max" -msgstr "最大" - -#: ../java/src/net/i2p/router/web/StatSummarizer.java:237 -msgid "in average" -msgstr "入站平均值" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:57 -msgid "GO" -msgstr "" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:60 -msgid "Statistics gathered during this router's uptime" -msgstr "路由运行时收集的统计数据" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:63 -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:64 -msgid "These statistics are primarily used for development and debugging." -msgstr "" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:105 -#: ../java/src/net/i2p/router/web/StatsGenerator.java:156 -msgid "No lifetime events" -msgstr "自运行起无事件" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:116 -msgid "frequency" -msgstr "更新频率" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:120 -#, fuzzy -msgid "Rolling average events per period" -msgstr "事件/周期" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:124 -#, fuzzy -msgid "Highest events per period" -msgstr "事件/周期" - -#. if (showAll && (curFreq.getMaxAverageEventsPerPeriod() > 0) && (curFreq.getAverageEventsPerPeriod() > 0) ) { -#. buf.append("(current is "); -#. buf.append(pct(curFreq.getAverageEventsPerPeriod()/curFreq.getMaxAverageEventsPerPeriod())); -#. buf.append(" of max)"); -#. } -#. buf.append(" <i>avg interval between updates:</i> (").append(num(curFreq.getAverageInterval())).append("ms, min "); -#. buf.append(num(curFreq.getMinAverageInterval())).append("ms)"); -#: ../java/src/net/i2p/router/web/StatsGenerator.java:135 -#, fuzzy -msgid "Lifetime average events per period" -msgstr "总平均值" - -#. Display the strict average -#: ../java/src/net/i2p/router/web/StatsGenerator.java:140 -#, fuzzy -msgid "Lifetime average frequency" -msgstr "总平均值" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:168 -msgid "rate" -msgstr "速度" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:170 -#, fuzzy -msgid "Average" -msgstr "入站平均值" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:173 -#, fuzzy -msgid "Highest average" -msgstr "入站平均值" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:202 -#, java-format -msgid "in this period which ended {0} ago." -msgstr "" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:204 -msgid "No events" -msgstr "无事件" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:210 -msgid "Average event count" -msgstr "" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:212 -#, fuzzy -msgid "Events in peak period" -msgstr "事件/周期" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:220 -#, fuzzy -msgid "Graph Data" -msgstr "图表" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:222 -msgid "Graph Event Count" -msgstr "" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:225 -msgid "Export Data as XML" -msgstr "" - -#. Display the strict average -#: ../java/src/net/i2p/router/web/StatsGenerator.java:230 -#, fuzzy -msgid "Lifetime average value" -msgstr "总平均值" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:41 -msgid "I2P Router Help & FAQ" -msgstr "I2P 使用帮助与常见问答" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:43 -msgid "Help & FAQ" -msgstr "" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:55 -msgid "" -"Configure startup of clients and webapps (services); manually start dormant " -"services" -msgstr "设置客户程序及Web程序(服务)的启动;手动启动重要服务" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:57 -msgid "I2P Services" -msgstr "I2P 服务" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:63 -msgid "Manage your I2P hosts file here (I2P domain name resolution)" -msgstr "管理您的 I2P HOST表(I2P域名解析表)" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:65 -msgid "Addressbook" -msgstr "地址簿" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:69 -msgid "Built-in anonymous BitTorrent Client" -msgstr "内建的匿名 BitTorrent 客户端" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:71 -msgid "Torrents" -msgstr "匿名BT" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:75 -msgid "Anonymous webmail client" -msgstr "匿名Web邮件客户端" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:77 -msgid "Webmail" -msgstr "匿名邮箱" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:81 -msgid "Anonymous resident webserver" -msgstr "内置的匿名Web服务器" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:83 -msgid "Webserver" -msgstr "匿名主页服务器" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:91 -msgid "Configure I2P Router" -msgstr "设置 I2P 路由器" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:93 -msgid "I2P Internals" -msgstr "I2P内部设置" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:99 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:384 -msgid "View existing tunnels and tunnel build status" -msgstr "查看现存隧道及隧道的建立状态" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:105 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258 -msgid "Show all current peer connections" -msgstr "显示当前所有的节点连接" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:111 -msgid "Show recent peer performance profiles" -msgstr "显示当前节点的性能记录" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:113 -msgid "Profiles" -msgstr "节点信息" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:117 -msgid "Show list of all known I2P routers" -msgstr "包含所有已知I2P路由器的列表" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:119 -msgid "NetDB" -msgstr "NetDB" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123 -msgid "Health Report" -msgstr "路由器健康状况报告" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:125 -msgid "Logs" -msgstr "日志" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:135 -msgid "Graph router performance" -msgstr "路由性能统计图" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:137 -msgid "Graphs" -msgstr "图表" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141 -msgid "Textual router performance statistics" -msgstr "路由性能文字统计" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:370 -msgid "Local Destinations" -msgstr "本地服务" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:149 -#: ../java/strings/Strings.java:62 -msgid "I2PTunnel" -msgstr "I2P隧道" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164 -msgid "I2P Router Help" -msgstr "I2P路由帮助" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166 -msgid "General" -msgstr "功能概况" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171 -msgid "Local Identity" -msgstr "本地身份" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:175 -msgid "Your unique I2P router identity is" -msgstr "您I2P路由的唯一身份为" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179 -msgid "never reveal it to anyone" -msgstr "切勿将其告诉任何人" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:181 -msgid "show" -msgstr "显示" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192 -msgid "How long we've been running for this session" -msgstr "本次路由运行时间" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195 -msgid "Uptime" -msgstr "运行时间" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 -msgid "" -"Help with configuring your firewall and router for optimal I2P performance" -msgstr "如何正确配置防火墙和(物理)路由器优化I2P性能" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 -msgid "Download" -msgstr "下载" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:240 -msgid "Download Unsigned" -msgstr "下载未签名更新" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266 -msgid "Active" -msgstr "活动节点" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275 -msgid "Fast" -msgstr "快速节点" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:281 -msgid "High capacity" -msgstr "高容量节点" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:293 -msgid "Known" -msgstr "已知节点" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:308 -msgid "Help with firewall configuration" -msgstr "如何配置防火墙" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:310 -msgid "Check NAT/firewall" -msgstr "检查NAT/防火墙" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:330 -msgid "Reseed" -msgstr "补种(搜索节点启动网络)" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:347 -msgid "Configure router bandwidth allocation" -msgstr "设置路由的带宽分配" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:349 -msgid "Bandwidth in/out" -msgstr "带宽(进/出站)" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:369 -msgid "Total" -msgstr "总计" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376 -msgid "Used" -msgstr "已用" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:391 -msgid "Exploratory" -msgstr "探测" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403 -msgid "Participating" -msgstr "共享" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:409 -msgid "Share ratio" -msgstr "共享/占用" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415 -msgid "What's in the router's job queue?" -msgstr "查看路由的作业队列" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 -msgid "Congestion" -msgstr "拥堵" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:422 -msgid "Job lag" -msgstr "作业延迟" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:428 -msgid "Message delay" -msgstr "消息延迟" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:434 -msgid "Tunnel lag" -msgstr "隧道延迟" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440 -msgid "Backlog" -msgstr "积压" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:106 -msgid "ERR-Client Manager I2CP Error - check logs" -msgstr "错误-客户程序管理器I2CP错误 - 请看日志" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:113 -#, java-format -msgid "ERR-Clock Skew of {0}" -msgstr "错误-系统时滞 {0}" - -# 暂不翻译,确定/良好 可能影响按钮的翻译 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:122 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 -msgid "OK" -msgstr "正常" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:123 -msgid "ERR-Private TCP Address" -msgstr "错误-TCP私有地址" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:125 -msgid "ERR-SymmetricNAT" -msgstr "错误-SymmeticNAT" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:128 -msgid "WARN-Firewalled with Inbound TCP Enabled" -msgstr "警告-入站TCP开启但因防火墙受限" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:130 -msgid "WARN-Firewalled and Floodfill" -msgstr "警告-种子节点因防火墙受限" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:132 -msgid "WARN-Firewalled and Fast" -msgstr "警告-快速节点因防火墙受限" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:133 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 -msgid "Firewalled" -msgstr "防火墙限制" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:135 -msgid "" -"ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and " -"restart" -msgstr "" -"错误-UDP端口已占用 - 在高级设置中设置 i2np.udp.internalPort=新端口并重启程序" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:141 -msgid "ERR-No Active Peers, Check Network Connection and Firewall" -msgstr "错误-无活动节点,请检查网络连接及防火墙" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:144 -msgid "ERR-UDP Disabled and Inbound TCP host/port not set" -msgstr "错误-UDP已禁用且TCP入站主机与端口未设置" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:146 -msgid "WARN-Firewalled with UDP Disabled" -msgstr "警告-因防火墙受限且UDP被禁用" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:148 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 -msgid "Testing" -msgstr "测试中" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:370 -msgid "Add/remove/edit & control your client and server tunnels" -msgstr "添加、删除、编辑或控制客户程序隧道和服务隧道" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:382 -msgid "Server" -msgstr "服务" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:386 -msgid "Show tunnels" -msgstr "显示隧道" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:397 -msgid "Leases expired" -msgstr "Lease已过期" - -#. red or yellow light -#: ../java/src/net/i2p/router/web/SummaryHelper.java:397 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:398 -msgid "Rebuilding" -msgstr "正在重建" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:398 -msgid "ago" -msgstr "前" - -#. green light -#: ../java/src/net/i2p/router/web/SummaryHelper.java:401 -msgid "Ready" -msgstr "就绪" - -#. yellow light -#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 -msgid "Building" -msgstr "创建中" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 -msgid "Building tunnels" -msgstr "正在隧道创建" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:410 -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:421 -#: ../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:89 -#, java-format -msgid "events in {0}" -msgstr "事件/{0}" - -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:91 -#, java-format -msgid "averaged for {0}" -msgstr "{0} 平均值" - -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:101 -msgid "Events per period" -msgstr "事件/周期" - -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:114 -msgid "avg" -msgstr "平均" - -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:116 -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:287 -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 "接收" - -#: ../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 "发送" - -#: ../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:142 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:237 -msgid "Updating" -msgstr "正在更新" - -#. Process the .sud/.su2 file -#: ../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:261 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:286 -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:281 -msgid "Restarting" -msgstr "正在重启" - -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:118 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:288 -msgid "Click Restart to install" -msgstr "点击【重启】完成安装" - -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:120 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:290 -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:292 -#, 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:184 -#, fuzzy, java-format -msgid "Updating from {0}" -msgstr "正在更新UDP端口由" - -#: ../java/src/net/i2p/router/web/UpdateHandler.java:253 -#, fuzzy, java-format -msgid "No new version found at {0}" -msgstr "插件 {0} 有更新" - -#: ../java/src/net/i2p/router/web/UpdateHandler.java:281 -msgid "Update verified" -msgstr "更新已验证" - -#: ../java/src/net/i2p/router/web/UpdateHandler.java:307 -#, fuzzy, java-format -msgid "Transfer failed from {0}" -msgstr "数据传输失败" - -#. wars for ConfigClientsHelper -#: ../java/strings/Strings.java:12 -msgid "addressbook" -msgstr "地址簿" - -#: ../java/strings/Strings.java:13 -msgid "i2psnark" -msgstr "匿名BT客户端" - -#: ../java/strings/Strings.java:14 -msgid "i2ptunnel" -msgstr "I2P隧道" - -#: ../java/strings/Strings.java:15 -msgid "susimail" -msgstr "匿名邮箱" - -#: ../java/strings/Strings.java:16 -msgid "susidns" -msgstr "susiDNS" - -#: ../java/strings/Strings.java:17 -msgid "routerconsole" -msgstr "路由控制台" - -#. 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 "匿名主页服务器" - -#: ../java/strings/Strings.java:26 -msgid "I2P webserver (eepsite)" -msgstr "匿名主页服务器(eepsite)" - -#: ../java/strings/Strings.java:27 -msgid "Browser launch at startup" -msgstr "路由器启动时运行浏览器" - -#: ../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 "路由启动时打开控制台" - -#: ../java/strings/Strings.java:37 -msgid "IRC proxy" -msgstr "I2P聊天室" - -#: ../java/strings/Strings.java:38 -msgid "eepsite" -msgstr "匿名网站" - -#: ../java/strings/Strings.java:39 -msgid "I2P webserver" -msgstr "匿名主页服务器" - -#: ../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 "I2P聊天室" - -#. hardcoded in i2psnark -#: ../java/strings/Strings.java:45 -msgid "I2PSnark" -msgstr "I2P Snark" - -#. hardcoded in iMule? -#: ../java/strings/Strings.java:47 -msgid "iMule" -msgstr "" - -#. 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 "加密" - -#: ../java/strings/Strings.java:61 -msgid "i2cp" -msgstr "" - -#: ../java/strings/Strings.java:63 -msgid "InNetPool" -msgstr "" - -#: ../java/strings/Strings.java:64 -msgid "JobQueue" -msgstr "作业队列" - -#: ../java/strings/Strings.java:65 -msgid "NetworkDatabase" -msgstr "网络数据库" - -#: ../java/strings/Strings.java:66 -msgid "ntcp" -msgstr "NTCP" - -#: ../java/strings/Strings.java:69 -msgid "Stream" -msgstr "流" - -#: ../java/strings/Strings.java:70 -msgid "Throttle" -msgstr "门槛" - -#: ../java/strings/Strings.java:71 -msgid "Transport" -msgstr "传输" - -#: ../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 "主机" - -#: ../java/strings/Strings.java:78 -msgid "key" -msgstr "密钥" - -#: ../java/strings/Strings.java:79 -msgid "port" -msgstr "端口" - -#. introducer host -#: ../java/strings/Strings.java:83 -msgid "ihost0" -msgstr "" - -#: ../java/strings/Strings.java:84 -msgid "ihost1" -msgstr "" - -#: ../java/strings/Strings.java:85 -msgid "ihost2" -msgstr "" - -#. introducer port -#: ../java/strings/Strings.java:87 -msgid "iport0" -msgstr "" - -#: ../java/strings/Strings.java:88 -msgid "iport1" -msgstr "" - -#: ../java/strings/Strings.java:89 -msgid "iport2" -msgstr "" - -#. introducer key -#: ../java/strings/Strings.java:91 -msgid "ikey0" -msgstr "" - -#: ../java/strings/Strings.java:92 -msgid "ikey1" -msgstr "" - -#: ../java/strings/Strings.java:93 -msgid "ikey2" -msgstr "" - -#. introducer tag -#: ../java/strings/Strings.java:95 -msgid "itag0" -msgstr "" - -#: ../java/strings/Strings.java:96 -msgid "itag1" -msgstr "" - -#: ../java/strings/Strings.java:97 -msgid "itag2" -msgstr "" - -#. 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:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:217 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:230 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:217 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:227 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:222 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:234 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:215 -msgid "Refresh (s)" -msgstr "刷新(秒)" - -#. ditto -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:221 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:234 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:221 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:231 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:226 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:237 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:219 -msgid "Enable" -msgstr "启用" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:240 -msgid "I2P Network Configuration" -msgstr "I2P 连网设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:298 -msgid "Bandwidth limiter" -msgstr "带宽限制" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:300 -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:304 -msgid "KBps In" -msgstr "KBps 入站" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:318 -msgid "KBps Out" -msgstr "KBps 出站" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:334 -msgid "Share" -msgstr "共享" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:341 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:304 -msgid "NOTE" -msgstr "注意" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:343 -#, java-format -msgid "You have configured I2P to share only {0} KBps." -msgstr "您设置I2P仅共享 {0} KBps" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:346 -msgid "I2P requires at least 12KBps to enable sharing. " -msgstr "I2P 需要至少 12KBps 才能进行共享。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347 -msgid "" -"Please enable sharing (participating in tunnels) by configuring more " -"bandwidth. " -msgstr "请设置更多的带宽以便启用共享功能(加入到其他节点的隧道创建中)。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:348 -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:351 -#, java-format -msgid "You have configured I2P to share {0} KBps." -msgstr "您设置I2P共享 {0} KBps" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:354 -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:358 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:305 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:327 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:403 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:348 -#: ../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:342 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:322 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:365 -msgid "Cancel" -msgstr "取消" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:375 -msgid "IP and Transport Configuration" -msgstr "IP 与传输设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:377 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:395 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:306 -msgid "The default settings will work for most people." -msgstr "默认设置适于大多数人。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:379 -msgid "There is help below." -msgstr "页面下方有帮助信息" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:381 -msgid "UPnP Configuration" -msgstr "UPnP 设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:385 -msgid "Enable UPnP to open firewall ports" -msgstr "启用UPnP以打开防火墙端口" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:387 -msgid "UPnP status" -msgstr "UPnP 统计" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:389 -msgid "IP Configuration" -msgstr "IP 设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:391 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:461 -msgid "Externally reachable hostname or IP address" -msgstr "公网可访问的本机域名或IP" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395 -msgid "Use all auto-detect methods" -msgstr "使用全部自动探测方法" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399 -msgid "Disable UPnP IP address detection" -msgstr "禁用UPnP IP 地址探测" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 -msgid "Ignore local interface IP address" -msgstr "忽略本地接口的 IP 地址" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:407 -msgid "Use SSU IP address detection only" -msgstr "仅使用SSU IP 地址探测" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:411 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 -msgid "Specify hostname or IP" -msgstr "指定主机名或IP" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 -msgid "Select Interface" -msgstr "选择网络接口" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:431 -msgid "Hidden mode - do not publish IP" -msgstr "隐身模式 - 不发布IP" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:433 -msgid "(prevents participating traffic)" -msgstr "(阻止共享流量)" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 -msgid "Action when IP changes" -msgstr "IP改变后应" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:439 -msgid "" -"Laptop mode - Change router identity and UDP port when IP changes for " -"enhanced anonymity" -msgstr "笔记本模式 - IP变化后改变路由身份及UDP端口(拨号用户慎用)" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:441 -msgid "Experimental" -msgstr "试验性" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:443 -msgid "UDP Configuration:" -msgstr "UDP 设置:" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:445 -msgid "UDP port:" -msgstr "UDP端口" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 -msgid "TCP Configuration" -msgstr "TCP 连接设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:465 -msgid "Use auto-detected IP address" -msgstr "使用自动检测得到的 IP 地址" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:467 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499 -msgid "currently" -msgstr "目前" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:471 -msgid "if we are not firewalled" -msgstr "如果没有受到防火墙阻挡" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:475 -msgid "Always use auto-detected IP address (Not firewalled)" -msgstr "总是使用自动探测到的IP地址(没有防火墙限制)" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 -msgid "Disable inbound (Firewalled)" -msgstr "禁止入站连接(受防火墙限制)" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:489 -msgid "Completely disable" -msgstr "完全禁用" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:491 -msgid "" -"(select only if behind a firewall that throttles or blocks outbound TCP)" -msgstr "仅在受到防火墙的流量限制或入站连接限制时使用" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 -msgid "Externally reachable TCP port" -msgstr "公网可访问的TCP端口" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 -msgid "Use the same port configured for UDP" -msgstr "使用与UDP相同的端口" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:505 -msgid "Specify Port" -msgstr "指定端口" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:330 -msgid "Note" -msgstr "注意" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:512 -msgid "Changing these settings will restart your router." -msgstr "修改这些设置将必须重启路由器。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:518 -msgid "Configuration Help" -msgstr "设置帮助" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:520 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 -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:522 -msgid "" -"If you can, please poke a hole in your firewall to allow unsolicited UDP and " -"TCP packets to reach you." -msgstr "如果可能,请在防火墙中添加端口并允许入站UDP/TCP数据包通过。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:524 -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)或借助“SSU中介”进行UDP端口穿" -"透,通过它们也可以中继数据。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:526 -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不能正常工作,或外部防火墙封锁网络。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:528 -msgid "Certain firewalls such as symmetric NATs may not work well with I2P." -msgstr "在某些防火墙下例如Symmetric,I2P可能无法有效利用NAT工作。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:537 -msgid "" -"UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect " -"the external IP address and forward ports." -msgstr "UPnP与公网网关设备(IGD)通讯可以检测外部IP和映射端口。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:539 -msgid "UPnP support is beta, and may not work for any number of reasons" -msgstr "UPnP支持仍在测试阶段,可能由于一些原因无法正常工作。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:541 -msgid "No UPnP-compatible device present" -msgstr "没有发现UPnP兼容设备" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:543 -msgid "UPnP disabled on the device" -msgstr "设备上的UPnP支持已禁用" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:545 -msgid "Software firewall interference with UPnP" -msgstr "软件防火墙阻止UPnP" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:547 -msgid "Bugs in the device's UPnP implementation" -msgstr "设备的UPnP支持有Bug" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:549 -msgid "Multiple firewall/routers in the internet connection path" -msgstr "公网连接中存在多个防火墙/路由器" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:551 -msgid "UPnP device change, reset, or address change" -msgstr "UPnP设备改变、重置或地址迁移" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:553 -msgid "Review the UPnP status here." -msgstr "在这里检查UPnP状态。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 -msgid "" -"UPnP may be enabled or disabled above, but a change requires a router " -"restart to take effect." -msgstr "UPnP 的关闭或开启均需要程序重启后生效。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 -msgid "Hostnames entered above will be published in the network database." -msgstr "上面输入的主机名称将在网络数据库(NetDB)中发布。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 -msgid "They are <b>not private</b>." -msgstr "他们并<b>非私有地址</b>。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 -msgid "" -"Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1." -msgstr "此外,<b>请勿输入如127.0.0.1或192.168.1.1等私有地址</b>" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 -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 "" -"如果您设置了错误的IP地址或主机名称,或NAT/防火墙配置不当,您的网络性能将受到" -"明显影响。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 -msgid "When in doubt, leave the settings at the defaults." -msgstr "如果对设置有疑问,请保留默认设置。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 -msgid "Reachability Help" -msgstr "连通性帮助" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:572 -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:575 -msgid "" -"If there is an error, the <a href=\"logs.jsp\">logs</a> may also help " -"diagnose the problem." -msgstr "如果存在错误,<a href=\"logs.jsp\">日志</a>可以帮助您诊断问题。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 -msgid "Your UDP port does not appear to be firewalled." -msgstr "您的UDP端口似乎一切正常。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 -msgid "Your UDP port appears to be firewalled." -msgstr "您的UDP端口似乎因防火墙而连接受限。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 -msgid "" -"As the firewall detection methods are not 100% reliable, this may " -"occasionally be displayed in error." -msgstr "由于防火墙检测方法并非100%可靠,有时也可能错误地显示此此提示。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587 -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:589 -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也能够正常工作,无需担心。受到防火墙阻隔时,路由器将通" -"过“中介(Introducers)”中继入站连接。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:591 -msgid "" -"However, you will get more participating traffic and help the network more " -"if you can open your firewall(s)." -msgstr "" -"然而,如果您能打开防火墙端口,您才能得到的共享流量,更好的帮助I2P网络。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593 -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:595 -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:599 -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:603 -msgid "" -"The router is not configured to publish its address, therefore it does not " -"expect incoming connections." -msgstr "路由器被设置为禁止发布IP地址,因此并不需要入站连接。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 -msgid "WARN - Firewalled and Fast" -msgstr "警告 - 快速节点,因防火墙受限" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 -msgid "" -"You have configured I2P to share more than 128KBps of bandwidth, but you are " -"firewalled." -msgstr "您设置I2P共享超过128KBps的带宽,但您的连接因防火墙受阻。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 -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可以正常工作,但如果您的确能够分享超过128kps的带宽,打" -"开防火墙端口它能工作的更好帮助网络中其他的人。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 -msgid "WARN - Firewalled and Floodfill" -msgstr "警告 - 种子节点,因防火墙受限" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 -msgid "" -"You have configured I2P to be a floodfill router, but you are firewalled." -msgstr "您已将I2P设置为种子路由,但您的连接已因防火墙受阻。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 -msgid "" -"For best participation as a floodfill router, you should open your firewall." -msgstr "为了种子路由能够更好的参与到I2P网络中,请您的防火墙中打开端口。" - -# 暂不翻译方便反馈 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 -msgid "WARN - Firewalled with Inbound TCP Enabled" -msgstr "警告 - 入站TCP开启,但因防火墙受限" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 -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:621 -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连接,其他路由器节点将无法与您" -"建立连接,造成网络受阻。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 -msgid "Please open your firewall or disable inbound TCP above." -msgstr "请打开您的防火墙端口或禁用上面的入站TCP连接。" - -# 暂不翻译 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 -msgid "WARN - Firewalled with UDP Disabled" -msgstr "警告 - 因防火墙受限,且UDP被禁用" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 -msgid "You have configured inbound TCP, however you have disabled UDP." -msgstr "您设置了使用TCP连接,然而禁用了UDP连接。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 -msgid "" -"You appear to be firewalled on TCP, therefore your router cannot accept " -"inbound connections." -msgstr "您的TCP连接似乎因防火墙受阻,导致您的路由器无法接收入站连接。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:631 -msgid "Please open your firewall or enable UDP." -msgstr "请打开防火墙端口或启用UDP。" - -# 暂不翻译,方便错误反馈 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 -msgid "ERR - Clock Skew" -msgstr "错误 - 系统时滞" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 -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:637 -msgid "Correct your clock setting if this error persists." -msgstr "如果错误持续,请校对您的系统时间。" - -# 暂不翻译,方便错误反馈 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 -msgid "ERR - Private TCP Address" -msgstr "错误 - 私有TCP地址" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 -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一类的内网地" -"址。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 -msgid "Correct the address or disable inbound TCP above." -msgstr "正确设置IP地址或禁用上面的入站TCP连接。" - -# 暂不翻译,方便错误反馈 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 -msgid "ERR - SymmetricNAT" -msgstr "错误 - SymmetricNAT" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 -msgid "I2P detected that you are firewalled by a Symmetric NAT." -msgstr "I2P检测到您受到Symmetic NAT的阻挡。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 -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无法与此类防火墙很好的并存。您可能无法接收入站连接,这会障碍您连入I2P网" -"络。" - -# 暂不翻译,方便问题反馈 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:651 -msgid "" -"ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config " -"and restart" -msgstr "" -"错误 - UDP端口已占用 - 在高级设置中设置 i2np.udp.internalPort=新端口 并重启程" -"序" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 -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:655 -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的端口,如果是,关闭此程序或设置I2P使用不同的" -"端口。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:657 -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:659 -msgid "However, a restart is always required after this error." -msgstr "然而,发生此错误后一般需要重启程序才能解决。" - -# 暂不翻译,方便错误反馈 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 -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:663 -msgid "" -"You have not configured inbound TCP with a hostname and port above, however " -"you have disabled UDP." -msgstr "您没有设置入站TCP的主机名称和端口,同时又关闭了UDP。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:665 -msgid "Therefore your router cannot accept inbound connections." -msgstr "因此您的路由器无法接收入站连接。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:667 -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:669 -msgid "ERR - Client Manager I2CP Error - check logs" -msgstr "错误 - 客户程序管理器 I2CP 错误 - 请看日志" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 -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:673 -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:241 -msgid "I2P Advanced Configuration" -msgstr "I2P 高级设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:301 -msgid "Advanced I2P Configuration" -msgstr "I2P 高级设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:311 -msgid "Some changes may require a restart to take effect." -msgstr "某些设置需要程序重启后生效。" - -#: ../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:243 -msgid "I2P Client Configuration" -msgstr "I2P 客户程序设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:312 -msgid "Client Configuration" -msgstr "客户程序设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:314 -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:318 -msgid "To change other client options, edit the file" -msgstr "修改其他客户端设置请编辑文件" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:325 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:401 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:415 -msgid "All changes require restart to take effect." -msgstr "所有更改均需要程序重启才能生效。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:337 -#, fuzzy -msgid "Advanced Client Interface Configuration" -msgstr "I2P 高级设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:339 -msgid "External I2CP (I2P Client Protocol) Interface Configuration" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 -msgid "Enabled without SSL" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351 -msgid "Enabled with SSL required" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 -msgid "Disabled - Clients outside this Java process may not connect" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:359 -msgid "I2CP Port" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:363 -#, fuzzy -msgid "I2CP Interface" -msgstr "I2P内部设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:379 -#, fuzzy -msgid "Authorization" -msgstr "作者" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:385 -msgid "Require username and password" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:387 -#, fuzzy -msgid "Username" -msgstr "名称" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:391 -msgid "Password" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:397 -msgid "Any changes made here must also be configured in the external client." -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:399 -msgid "Many clients do not support SSL or authorization." -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:407 -msgid "WebApp Configuration" -msgstr "WebApp 设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 -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 Web 程序随客户端“web控制台”一同启动,并与路由运行于同一JVM中。" -"这些Web程序通常可以通过路由器界面直接访问。他们可能是完整的程序 (例如 " -"i2psnark/BT客户端),其他客户端程序的前端或必须单独启动的程序(例如. susidns, " -"i2ptunnel),甚至根本没有Web界面(例如 addressbook)。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:411 -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 "" -"从webapps目录中删除相应的.war文件同样可以禁用Web程序;然而这些 .war 文件和Web" -"程序在更新I2P后还会再次出现,所以推荐在这里通过设置的方法禁用不用的Web程序。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:421 -msgid "Plugin Configuration" -msgstr "插件设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 -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:429 -msgid "Plugin Installation" -msgstr "插件安装" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 -msgid "To install a plugin, enter the download URL:" -msgstr "安装插件前,请输入插件的下载链接:" - -#: ../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:227 -msgid "I2P Keyring Configuration" -msgstr "I2P 钥匙环设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:295 -msgid "The router keyring is used to decrypt encrypted leaseSets." -msgstr "路由的钥匙环被用来解密和加密赁集." - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:298 -msgid "" -"The keyring may contain keys for local or remote encrypted destinations." -msgstr "钥匙环可以包含本地和远程的加密目标(Destination)." - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:308 -msgid "Manual Keyring Addition" -msgstr "手动添加钥匙环" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:310 -msgid "Enter keys for encrypted remote destinations here." -msgstr "在此处添加远程加密目标的密钥。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:313 -msgid "Keys for local destinations must be entered on the" -msgstr "输入本地目标的密钥请到" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:315 -msgid "I2PTunnel page" -msgstr "I2P 隧道页面" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:317 -msgid "Dest. name, hash, or full key" -msgstr "目标(Dest.)名称, HASH, 或完整公钥" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:319 -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:241 -msgid "I2P Logging Configuration" -msgstr "I2P 记录设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 -msgid "Configure I2P Logging Options" -msgstr "设置 I2P 记录选项" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:303 -msgid "Logging filename" -msgstr "日志文件名称" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307 -msgid "(the symbol '@' will be replaced during log rotation)" -msgstr "(日志轮转时符号'@'将被替换)" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:309 -msgid "Log record format" -msgstr "日志记录格式" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 -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:315 -msgid "Log date format" -msgstr "日志日期格式" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 -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:321 -msgid "Max log file size" -msgstr "日志最大体积" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:325 -msgid "Default log level" -msgstr "默认日志等级" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329 -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:331 -msgid "Log level overrides" -msgstr "等级外<br>日志项目" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:335 -#, fuzzy -msgid "New override" -msgstr "等级外<br>日志项目" - -#: ../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:227 -msgid "I2P Peer Configuration" -msgstr "I2P 节点设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:305 -msgid "Manual Peer Controls" -msgstr "手动节点控制" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:307 -msgid "Router Hash" -msgstr "路由器Key(见NetDB)" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:311 -msgid "Manually Ban / Unban a Peer" -msgstr "手动封杀/解封某个节点" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:313 -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:323 -msgid "Adjust Profile Bonuses" -msgstr "调整节点评分" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 -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 "" -"评分(Bonuse)可能为正或为负并影响节点是否评为快速和高容量节点。快速节点用于客" -"户程序通道,高容量节点用于探索隧道。当前评分显示于" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:327 -msgid "profiles page" -msgstr "节点信息页面" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:345 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:251 -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/configreseed_jsp.java:106 -#, fuzzy -msgid "config reseeding" -msgstr "钥匙环设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:240 -#, fuzzy -msgid "I2P Reseeding Configuration" -msgstr "I2P 钥匙环设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:300 -#, fuzzy -msgid "Reseeding Configuration" -msgstr "I2P 钥匙环设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:302 -msgid "" -"Reseeding is the bootstrapping process used to find other routers when you " -"first install I2P, or when your router has too few router references " -"remaining." -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304 -msgid "" -"If reseeding has failed, you should first check your network connection." -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:308 -msgid "" -"Change these only if HTTP is blocked by a restrictive firewall, reseed has " -"failed, and you have access to an HTTP proxy." -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 -#, java-format -msgid "See {0} for instructions on reseeding manually." -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 -msgid "the FAQ" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:312 -msgid "Reseed URL Selection" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 -msgid "Try SSL first then non-SSL" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:324 -msgid "Use SSL only" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:330 -msgid "Use non-SSL only" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:332 -#, fuzzy -msgid "Reseed URLs" -msgstr "补种(搜索节点启动网络)" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:336 -msgid "Enable HTTP proxy (not used for SSL)" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:340 -#, fuzzy -msgid "HTTP Proxy Host" -msgstr "HTTP 代理" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:344 -#, fuzzy -msgid "HTTP Proxy Port" -msgstr "HTTP 代理" - -#: ../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:227 -msgid "I2P Service Configuration" -msgstr "I2P 服务设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:285 -msgid "Shutdown the router" -msgstr "关闭路由器" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:287 -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:289 -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:299 -msgid "" -"If you want the router to restart itself after shutting down, you can choose " -"one of the following." -msgstr "如果你想要路由器关闭后自动重新启动,可以选择下面的选项。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:301 -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 "" -"此功能在如下情况下适用 - 例如当您修改了某些只在启动时读取的设置,例如路由器控" -"制台密码,路由监听接口等。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:303 -msgid "" -"A graceful restart will take a few minutes (but your peers will appreciate " -"your patience), while a hard restart does so immediately." -msgstr "" -"平滑重启可能会等待几分钟的时间(但你的节点一定会感激你的耐心),硬重启可以立即" -"完成。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 -msgid "" -"After tearing down the router, it will wait 1 minute before starting back up " -"again." -msgstr "路由关闭后将等待1分钟再重新启动。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:315 -msgid "Run on startup" -msgstr "启动时运行" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 -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 "" -"这里你可以通过下面的选项来设置开机后 I2P 是否启动 - I2P 将相应的安装或卸载I2P" -"服务。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 -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:329 -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:331 -msgid "" -"You may want to consider shutting down gracefully, as above, then running " -"uninstall_i2p_service_winnt.bat." -msgstr "" -"您可以考虑先平滑关闭路由,待退出后运行 uninstall_i2p_service_winnt.bat。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 -msgid "Debugging" -msgstr "调试" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 -msgid "View the job queue" -msgstr "查看作业队列" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 -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 <a href=" -"\"logs.jsp#servicelogs\">wrapper.log</a>." -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 -msgid "Launch browser on router startup?" -msgstr "路由器启动时运行浏览器?" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 -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 "" -"此Web控制台是I2P的主要设置界面,所以如果您您觉得有必要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:228 -msgid "I2P Stats Configuration" -msgstr "I2P 统计设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302 -msgid "Configure I2P Stat Collection" -msgstr "设置 I2P 统计项" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:304 -msgid "Enable full stats?" -msgstr "启用完整统计?" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:311 -msgid "change requires restart to take effect" -msgstr "设置需要程序重启后才能生效。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:313 -msgid "Stat file" -msgstr "统计文件" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:317 -msgid "Filter" -msgstr "过滤器" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:319 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:328 -msgid "toggle all" -msgstr "全部切换" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:330 -msgid "Log" -msgstr "日志" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:332 -msgid "Graph" -msgstr "图表" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:371 -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:240 -msgid "I2P Tunnel Configuration" -msgstr "I2P 隧道设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:306 -msgid "The default settings work for most people." -msgstr "默认设置适于大多数人。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:310 -msgid "There is a fundamental tradeoff between anonymity and performance." -msgstr "匿名性需要以性能为代价。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:313 -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个跳点的隧道(例如 2跳点 + 0-2跳点,3跳点 + 0-1跳点, 3跳点 + 0-2跳点),或" -"大量常规+大量备用,可能降低性能和稳定性。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:316 -msgid "High CPU and/or high outbound bandwidth usage may result." -msgstr "导致高CPU占用和/或高上行流量。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:319 -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:333 -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:336 -msgid "Client tunnel changes are temporary and are not saved." -msgstr "对客户程序隧道的修改是临时的,将不予保存。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:338 -msgid "To make permanent client tunnel changes see the" -msgstr "要永久性更改客户通道的设置参见" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:340 -msgid "i2ptunnel page" -msgstr "I2P 隧道页面" - -#: ../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:240 -msgid "I2P UI Configuration" -msgstr "I2P 界面设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:292 -msgid "Router Console Theme" -msgstr "路由控制台主题" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:310 -msgid "Theme selection disabled for Internet Explorer, sorry." -msgstr "抱歉,主题功能在InternetExplorer中已禁用。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:312 -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的UserAgent;您需要设置浏览器(或过滤" -"式代理)使用不同的UserAgent,才能访问路由控制台的主题功能。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:316 -msgid "Router Console Language" -msgstr "路由控制台语言" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:320 -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:324 -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:227 -msgid "I2P Update Configuration" -msgstr "I2P 更新设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:303 -msgid "Check for I2P and news updates" -msgstr "检查I2P软件及新闻更新" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:305 -msgid "News & I2P Updates" -msgstr "软件及新闻更新" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:309 -msgid "Update In Progress" -msgstr "更新中" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:317 -msgid "News URL" -msgstr "新闻链接" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:321 -msgid "Refresh frequency" -msgstr "更新频率" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:327 -msgid "Update policy" -msgstr "升级策略" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331 -msgid "Update through the eepProxy?" -msgstr "通过I2P代理更新?" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:335 -msgid "eepProxy host" -msgstr "I2P代理主机" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:339 -msgid "eepProxy port" -msgstr "I2P代理端口" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:343 -msgid "Update URLs" -msgstr "更新链接" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:347 -msgid "Trusted keys" -msgstr "可信公钥" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:351 -msgid "Update with unsigned development builds?" -msgstr "更新包括未签名的开发版?" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:355 -msgid "Unsigned Build URL" -msgstr "未签名软件链接" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 -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:367 -msgid "Save" -msgstr "保存" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:115 -msgid "Internal Error" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:117 -#, fuzzy -msgid "Router Console" -msgstr "I2P 路由控制台" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:121 -#, fuzzy -msgid "Configuration" -msgstr "IP 设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129 -msgid "Sorry! There has been an internal error." -msgstr "" - -#. note to translators - both parameters are URLs -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:133 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:232 -#, java-format -msgid "Please report bugs on {0} or {1}." -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:137 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 -msgid "" -"You may use the username \"guest\" and password \"guest\" if you do not wish " -"to register." -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 -msgid "Please include this information in bug reports" -msgstr "报告问题时请包括以下信息" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:141 -msgid "Error Details" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:143 -#, fuzzy, java-format -msgid "Error {0}" -msgstr "错误 404" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:163 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:228 -#, fuzzy -msgid "I2P Version and Running Environment" -msgstr "I2P 版本及运行环境" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 -msgid "" -"Note that system information, log timestamps, and log messages may provide " -"clues to your location; please review everything you include in a bug report." -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:242 -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:244 -msgid "Error 404" -msgstr "错误 404" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:249 -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:227 -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:226 -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:226 -msgid "I2P Router Logs" -msgstr "I2P 路由器日志" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:281 -msgid "Critical Logs" -msgstr "关键日志" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:285 -msgid "Router Logs" -msgstr "路由器日志" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:291 -msgid "Service (Wrapper) Logs" -msgstr "服务(封装)日志" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:105 -msgid "network database summary" -msgstr "I2P 网络数据库概况" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:226 -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 "Web程序(war)未找到" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:230 -msgid "Web Application Not Running" -msgstr "Web程序(.war)未运行" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:232 -msgid "The requested web application is not running." -msgstr "您所访问的Web程序未启动。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:234 -msgid "" -"Please visit the <a href=\"/configclients.jsp#webapp\">config clients page</" -"a> to start it." -msgstr "" -"请先在<a href=\"/configclients.jsp#webapp\">配置客户端页面</a>中启动它。" - -#: ../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:226 -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:226 -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:243 -msgid "I2P Router Statistics" -msgstr "I2P 路由器统计数据" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:248 -#, java-format -msgid "Disable {0} 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:226 -msgid "I2P Tunnel Summary" -msgstr "I2P 隧道概况" - -#~ msgid "" -#~ "Ensure that nothing blocks outbound HTTP, check <a target=\"_top\" href=" -#~ "\"logs.jsp\">logs</a> and if nothing helps, read the <a target=\"_top\" " -#~ "href=\"http://www.i2p2.de/faq.html\">FAQ</a> about reseeding manually." -#~ msgstr "" -#~ "请保证HTTP通信没有受阻,检查 <a target=\"_top\" href=\"logs.jsp\">日志</" -#~ "a> ,如果问题仍无法解决,请参照 <a target=\"_top\" href=\"http://www.i2p2." -#~ "de/faq.html\">FAQ</a> 进行手动补种。" - -#~ msgid "Last reseed failed fully (failed reading seed URL)." -#~ msgstr "上次补种尝试失败(读取补种URL失败)。" - -#~ msgid "Last reseed failed fully (no routerInfo URLs at seed URL)." -#~ msgstr "上次补种尝试失败(补种服务器未返回任何路由信息URL)。" - -#~ msgid "Last reseed failed partly ({0}% of {1})." -#~ msgstr "上次补种部分失败({0}%失败,共{1})" - -#~ msgid "Last reseed failed ({0}% of {1})." -#~ msgstr "上次补种失败({0}%失败,共{1})" - -#~ msgid "Last reseed failed fully (exception caught)." -#~ msgstr "上次补种失败(exception caught)." - -#~ msgid "Show systray icon" -#~ msgstr "显示托盘图标" - -#~ msgid "System tray icon enabled." -#~ msgstr "系统托盘图标已启用" - -#~ msgid "System tray icon feature not supported on this platform. Sorry!" -#~ msgstr "您的平台不支持系统托盘图标功能" - -#~ msgid "Warning: unable to contact the systray manager" -#~ msgstr "警告:与托盘管理器通讯失败" - -#~ msgid "Hide systray icon" -#~ msgstr "隐藏系统图标" - -#~ msgid "System tray icon disabled." -#~ msgstr "系统托盘已禁用" - -#~ msgid "minute" -#~ msgstr "分钟" - -#~ msgid "minutes" -#~ msgstr "分钟" - -#~ msgid "avg value" -#~ msgstr "均值" - -#~ msgid "events" -#~ msgstr "事件" - -#~ msgid "lifetime average" -#~ msgstr "总平均值" - -#~ msgid "peak average" -#~ msgstr "峰值平均值" - -#~ msgid "Systray integration" -#~ msgstr "使用系统托盘" - -#~ 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 平台允许小程序进驻系统托盘,让你可以查看路由状态" - -#~ msgid "" -#~ "(later on, I2P client applications will be able to integrate their own " -#~ "functionality into the system tray as well)." -#~ msgstr "(以后的 I2P 客户端程序也会将它们的功能集成到系统托盘里)。" - -#~ msgid "" -#~ "If you are on windows, you can either enable or disable that icon here." -#~ msgstr "如果你使用Windows, 可以在这里开启或关闭这个托盘图标。" - -#~ msgid "" -#~ "Please report bugs on <a href=\"http://trac.i2p2.i2p/newticket\">trac." -#~ "i2p2.i2p</a>." -#~ msgstr "" -#~ "如果您发现错误请报告至<a href=\"http://trac.i2p2.i2p/newticket\">trac." -#~ "i2p2.i2p</a>。" - -#~ msgid "hops" -#~ msgstr "跳点" - -#~ msgid "tunnels" -#~ msgstr "隧道" - -#~ msgid "Tunnels in/out" -#~ msgstr "通道(上/下行)" - -#~ msgid "" -#~ "WebApp configuration saved successfully - restart required to take effect." -#~ msgstr "WebApp设置保存成功 - 程序重启后生效" - -#~ msgid "Start Now" -#~ msgstr "立即启动" - -#~ msgid "Show the router's workload, and how it's performing" -#~ msgstr "显示I2P路由器的负载与工作状况" - -#~ msgid "Jobs" -#~ msgstr "作业" - -#~ msgid "This is useful in some situations" -#~ msgstr "重启在某些情况下有用" - -#~ msgid "I2P will install (or remove) a service accordingly." -#~ msgstr "I2P将相应的将自身安装为服务(或卸载服务)。" - -#~ msgid "Expl. + Client" -#~ msgstr "探测+客户" - -#~ msgid "Part. from + to" -#~ msgstr "相邻共享节点" - -#~ msgid "Depth" -#~ msgstr "深度" - -#~ msgid "Addresses" -#~ msgstr "地址" - -#~ msgid "view without" -#~ msgstr "查看不含" - -#~ msgid "view with" -#~ msgstr "查看含" - -#~ msgid "stats" -#~ msgstr "统计" - -#~ msgid "View" -#~ msgstr "查看" - -#~ msgid "Not Failing" -#~ msgstr "标准" - -#~ msgid "" -#~ "If you want the router to restart itself after shutting down, you can " -#~ "choose one of the following. 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. A graceful restart will take a few minutes (but your peers " -#~ "will appreciate your patience), while a hard restart does so " -#~ "immediately. After tearing down the router, it will wait 1 minute before " -#~ "starting back up again." -#~ msgstr "" -#~ "如果你想要路由器关闭后重新启动,可以选择下面的选项。重启在某些情况下有用 " -#~ "- 例如当修改了客户程序仅在启动时读取的设置比如路由器控制界面的密码,监听的" -#~ "接口。平滑重启可能会等待几分钟的时间 (但其他节点一定会感激你的耐心),硬重" -#~ "启可以立即完成。 路由关闭后将等待1分钟再重新启动。" - -#~ msgid "" -#~ "On the windows platform, there is a small application to sit in the " -#~ "system tray, allowing you to view the router's status (later on, I2P " -#~ "client applications will be able to integrate their own functionality " -#~ "into the system tray as well). If you are on windows, you can either " -#~ "enable or disable that icon here." -#~ msgstr "" -#~ "windows 平台允许小程序进驻系统托盘,让你可以查看路由状态,(以后的 I2P 客户" -#~ "端程序也会将它们的功能集成到系统托盘里)。如果你使用Windows, 可以在这里开启" -#~ "或关闭这个托盘图标。" +# 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 <foo@bar>, 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P routerconsole\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-10 09:19+0000\n" +"PO-Revision-Date: \n" +"Last-Translator: \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: Chinese\n" +"X-Poedit-Country: CHINA\n" +"Plural-Forms: nplurals=1; plural=0\n" + +#. NOTE TO TRANSLATORS: Feel free to translate all these as you see fit, there are several options... +#. spaces or not, '.' or not, plural or not. Try not to make it too long, it is used in +#. a lot of tables. +#. milliseconds +#. Note to translators, may be negative or zero, 2999 maximum. +#. {0,number,####} prevents 1234 from being output as 1,234 in the English locale. +#. If you want the digit separator in your locale, translate as {0}. +#. alternates: msec, msecs +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1124 +#, java-format +msgid "1 ms" +msgid_plural "{0,number,####} ms" +msgstr[0] "{0,number,####} 毫秒" + +#. seconds +#. Note to translators: quantity will always be greater than one. +#. alternates: secs, sec. 'seconds' is probably too long. +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1129 +#, java-format +msgid "1 sec" +msgid_plural "{0} sec" +msgstr[0] "{0} 秒" + +#. minutes +#. Note to translators: quantity will always be greater than one. +#. alternates: mins, min. 'minutes' is probably too long. +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1134 +#, java-format +msgid "1 min" +msgid_plural "{0} min" +msgstr[0] "{0} 分钟" + +#. hours +#. Note to translators: quantity will always be greater than one. +#. alternates: hrs, hr., hrs. +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1139 +#, java-format +msgid "1 hour" +msgid_plural "{0} hours" +msgstr[0] "{0} 小时" + +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1141 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313 +msgid "n/a" +msgstr "N/A" + +#. days +#. Note to translators: quantity will always be greater than one. +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1145 +#, java-format +msgid "1 day" +msgid_plural "{0} days" +msgstr[0] "{0} 天" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:122 +#, java-format +msgid "Banned by router hash: {0}" +msgstr "按路由器 HASH 封杀: {0}" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:124 +msgid "Banned by router hash" +msgstr "已按路由 HASH 封杀" + +#. Temporary reason, until the job finishes +#: ../../../router/java/src/net/i2p/router/Blocklist.java:669 +msgid "IP banned" +msgstr "IP封锁" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:739 +#, 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:488 +msgid "Rejecting tunnels" +msgstr "拒绝参与共享隧道" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:105 +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 +msgid "Reseeding" +msgstr "正在补种(引导网络启动)..." + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:128 +#, java-format +msgid "Reseed fetched only 1 router." +msgid_plural "Reseed fetched only {0} routers." +msgstr[0] "网络引导只发现了 {0} 个I2P用户。" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:135 +msgid "Reseed failed." +msgstr "网络引导失败" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:136 +#, java-format +msgid "See {0} for help." +msgstr "帮助参见 {0}。" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:137 +msgid "reseed configuration page" +msgstr "网络引导设置页面" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:239 +msgid "Reseeding: fetching seed URL." +msgstr "正在补种:获取补种连接..." + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281 +#, java-format +msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." +msgstr "正在补种:从补种服务器获取路由信息({0}成功,{1}失败)。" + +#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:512 +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:450 +msgid "Unreachable on any transport" +msgstr "各传输方式均不可达" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:499 +msgid "Router Transport Addresses" +msgstr "路由传输地址" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:504 +#, java-format +msgid "{0} is used for outbound connections only" +msgstr "{0} 仅被用作出站连接" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123 +msgid "Help" +msgstr "帮助" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 +msgid "Your transport connection limits are automatically set based on your configured bandwidth." +msgstr "最大传输连接数会根据您的带宽设置自动调整。" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 +msgid "To override these limits, add the settings i2np.ntcp.maxConnections=nnn and i2np.udp.maxConnections=nnn on the advanced configuration page." +msgstr "要自定义连接数限制,您可以在高级配置页面中使用参数 i2np.ntcp.maxConnections=nnn 及 i2np.udp.maxConnections=nnn 。" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 +msgid "Definitions" +msgstr "定义" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:735 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890 +#: ../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:524 +msgid "The remote peer, identified by router hash" +msgstr "以路由Hash区分的远程节点" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:736 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 +msgid "Dir" +msgstr "类别" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 +msgid "Inbound connection" +msgstr "进站连接" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 +msgid "Outbound connection" +msgstr "出站连接" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 +msgid "They offered to introduce us (help other peers traverse our firewall)" +msgstr "对方节点为中继帮助我方穿越防火墙" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 +msgid "We offered to introduce them (help other peers traverse their firewall)" +msgstr "我方为中继帮助其他节点穿越防火墙" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 +msgid "How long since a packet has been received / sent" +msgstr "最近一次数据传输距现在的时间" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895 +msgid "Idle" +msgstr "空闲" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1900 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 +msgid "In/Out" +msgstr "入/出" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 +msgid "The smoothed inbound / outbound transfer rate (KBytes per second)" +msgstr "进/出站平滑传输率(Kbyte/s)" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +msgid "How long ago this connection was established" +msgstr "连接建立时间" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905 +msgid "Up" +msgstr "寿命" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1907 +msgid "Skew" +msgstr "时滞" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +msgid "The difference between the peer's clock and your own" +msgstr "节点与本地时钟间的时滞" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +msgid "The congestion window, which is how many bytes can be sent without an acknowledgement" +msgstr "拥塞窗口,即每次确认前可发送的字节量" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +msgid "The number of sent messages awaiting acknowledgement" +msgstr "等待确认的已发送数据包数量" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 +msgid "The maximum number of concurrent messages to send" +msgstr "并发消息的最大发送量" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 +msgid "The number of pending sends which exceed congestion window" +msgstr "超过拥塞窗口的待发送数量" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 +msgid "The slow start threshold" +msgstr "慢启动门槛" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 +msgid "The round trip time in milliseconds" +msgstr "往返时间单位毫秒" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 +msgid "Dev" +msgstr "偏差" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +msgid "The standard deviation of the round trip time in milliseconds" +msgstr "环行时间的标准差单位毫秒" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 +msgid "The retransmit timeout in milliseconds" +msgstr "重传输超时时间单位毫秒" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +msgid "Current maximum send packet size / estimated maximum receive packet size (bytes)" +msgstr "当前发送数据包的最大大小/预计接收数据包的最大大小(字节)" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 +msgid "TX" +msgstr "发包" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 +msgid "The total number of packets sent to the peer" +msgstr "向节点发送的数据包总量" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:742 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926 +msgid "RX" +msgstr "接包" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 +msgid "The total number of packets received from the peer" +msgstr "从节点接收到数据包总量" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1929 +msgid "Dup TX" +msgstr "重发包" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +msgid "The total number of packets retransmitted to the peer" +msgstr "向节点发送的重复数据包总量" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1931 +msgid "Dup RX" +msgstr "重接包" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +msgid "The total number of duplicate packets received from the peer" +msgstr "从节点接收到的重复数据包总量" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:409 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:627 +#, java-format +msgid "Excessive clock skew: {0}" +msgstr "严重时滞:{0}" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:730 +msgid "NTCP connections" +msgstr "NTCP连接" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:731 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1886 +msgid "Limit" +msgstr "限制" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 +msgid "Timeout" +msgstr "超时" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:743 +msgid "Out Queue" +msgstr "出队" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:744 +msgid "Backlogged?" +msgstr "积压?" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:758 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1949 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +msgid "Inbound" +msgstr "入站" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1951 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +msgid "Outbound" +msgstr "出站" + +#. buf.append("<tr> <td colspan=\"11\"><hr></td></tr>\n"); +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:807 +msgid "peers" +msgstr "节点" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1885 +msgid "UDP connections" +msgstr "UDP连接" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1892 +msgid "Sort by peer hash" +msgstr "按节点Hash" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 +msgid "Direction/Introduction" +msgstr "方向" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1896 +msgid "Sort by idle inbound" +msgstr "出站空闲" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1898 +msgid "Sort by idle outbound" +msgstr "入站空闲" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1901 +msgid "Sort by inbound rate" +msgstr "按入站速度" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1903 +msgid "Sort by outbound rate" +msgstr "按出站速度" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1906 +msgid "Sort by connection uptime" +msgstr "按连接时间" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1908 +msgid "Sort by clock skew" +msgstr "按时滞" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1911 +msgid "Sort by congestion window" +msgstr "按拥塞窗口" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1913 +msgid "Sort by slow start threshold" +msgstr "按启动门槛" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1916 +msgid "Sort by round trip time" +msgstr "按往返时间" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918 +msgid "Sort by round trip time deviation" +msgstr "按RTT偏差" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1920 +msgid "Sort by retransmission timeout" +msgstr "按重传输超时时间" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1923 +msgid "Sort by outbound maximum transmit unit" +msgstr "按出站最大传输单元" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1925 +msgid "Sort by packets sent" +msgstr "按已发送数据包" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927 +msgid "Sort by packets received" +msgstr "按已接收数据包" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1930 +msgid "Sort by packets retransmitted" +msgstr "按重传数据包" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1932 +msgid "Sort by packets received more than once" +msgstr "按重复数据包" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1953 +msgid "We offered to introduce them" +msgstr "中继客户" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1955 +msgid "They offered to introduce us" +msgstr "中继" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1959 +msgid "Choked" +msgstr "阻塞" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1967 +msgid "1 fail" +msgstr "失败 1 次" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1969 +#, java-format +msgid "{0} fails" +msgstr "失败 {0} 次" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1975 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:162 +msgid "Banned" +msgstr "已封锁" + +#. buf.append("<tr><td colspan=\"16\"><hr></td></tr>\n"); +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2106 +msgid "SUMMARY" +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:525 +msgid "Rejecting tunnels: Request overload" +msgstr "拒绝共享:请求过多" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:550 +msgid "Rejecting tunnels: Connection limit" +msgstr "拒绝共享:连接受限" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:744 +msgid "Dropping tunnel requests: High load" +msgstr "忽略共享请求:高负载" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:753 +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 "Congo" + +#: ../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:35 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:37 +#: ../java/strings/Strings.java:29 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:119 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:233 +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:35 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:335 +msgid "Save Client Configuration" +msgstr "保存客户程序设置" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:39 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:405 +msgid "Save Interface Configuration" +msgstr "保存接口配置" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 +msgid "Save WebApp Configuration" +msgstr "保存 WebApp 设置" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:47 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427 +msgid "Save Plugin Configuration" +msgstr "保存插件配置" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:51 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433 +msgid "Install Plugin" +msgstr "安装插件" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:87 +#, java-format +msgid "Deleted plugin {0}" +msgstr "删除插件 {0}" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:89 +#, java-format +msgid "Error deleting plugin {0}" +msgstr "删除插件 {0} 时发生错误" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:101 +#, java-format +msgid "Stopped plugin {0}" +msgstr "插件 {0} 已停用" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:103 +#, java-format +msgid "Error stopping plugin {0}" +msgstr "停用插件 {0} 时发生错误" + +#. label (IE) +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:255 +msgid "Start" +msgstr "启动" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:143 +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:49 +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:61 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:33 +msgid "Unsupported" +msgstr "未支持的" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:189 +msgid "New client added" +msgstr "新客户端添加完毕" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:193 +msgid "Client configuration saved successfully - restart required to take effect." +msgstr "客户程序设置保存成功 - 程序重启后生效" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 +msgid "Bad client index." +msgstr "客户程序索引无效" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:384 +msgid "Client" +msgstr "客户" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:271 +msgid "started" +msgstr "已启动" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223 +msgid "deleted" +msgstr "已删除" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:240 +msgid "WebApp configuration saved." +msgstr "WebApp 设置已保存" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:256 +msgid "Plugin configuration saved." +msgstr "插件配置已保存" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:271 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +msgid "WebApp" +msgstr "Web程序" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:273 +msgid "Failed to start" +msgstr "启动失败" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:278 +msgid "Failed to find server." +msgstr "服务器或服务程序查找失败。" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:284 +msgid "No plugin URL specified." +msgstr "未指定插件链接" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:294 +#, java-format +msgid "No update URL specified for {0}" +msgstr "{0} 未指定更新链接" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:302 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:307 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:320 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:325 +msgid "Plugin or update download already in progress." +msgstr "插件/更新包的下载正在进行" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:311 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:118 +#, java-format +msgid "Downloading plugin from {0}" +msgstr "正在从 {0} 下载插件" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:329 +#, java-format +msgid "Checking plugin {0} for updates" +msgstr "正在检查插件 {0} 是否存在更新" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:339 +#, java-format +msgid "Started plugin {0}" +msgstr "插件 {0} 已运行" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:341 +#, java-format +msgid "Error starting plugin {0}" +msgstr "插件启动错误 {0}" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 +msgid "Interface configuration saved successfully - restart required to take effect." +msgstr "接口配置保存成功 - I2P重启后生效" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:85 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258 +msgid "Edit" +msgstr "编辑" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:94 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:331 +msgid "Add Client" +msgstr "添加客户端" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 +msgid "Class and arguments" +msgstr "类与参数" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 +msgid "Control" +msgstr "控制项" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 +msgid "Run at Startup?" +msgstr "启动时运行?" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:197 +msgid "Description" +msgstr "描述" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 +msgid "Plugin" +msgstr "插件" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:161 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185 +msgid "Version" +msgstr "版本" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:163 +msgid "Signed by" +msgstr "数字签名者:" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:180 +msgid "Date" +msgstr "日期" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:186 +msgid "Author" +msgstr "作者" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:202 +msgid "License" +msgstr "许可证" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:207 +msgid "Website" +msgstr "网站" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:212 +msgid "Update link" +msgstr "更新链接" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:260 +msgid "Stop" +msgstr "停止" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:262 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:78 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:313 +msgid "Check for updates" +msgstr "检查更新" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:263 +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:242 +msgid "Update" +msgstr "更新" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:268 +#, java-format +msgid "Are you sure you want to delete {0}?" +msgstr "您确定要删除 {0} ?" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:270 +msgid "Delete" +msgstr "删除" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:18 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:325 +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:323 +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/ConfigLoggingHandler.java:82 +msgid "Log overrides updated" +msgstr "日志参数已更新" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHandler.java:160 +msgid "Log configuration saved" +msgstr "日志设置已保存" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 +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:49 +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:50 +msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT" +msgstr "可用的日志等级包括 DEBUG, INFO, WARN, ERROR, CRIT" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +msgid "CRIT" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +msgid "DEBUG" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +msgid "ERROR" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +msgid "INFO" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +msgid "WARN" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:88 +msgid "Remove" +msgstr "删除" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:125 +msgid "Select a class to add" +msgstr "选择要添加的类" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:204 +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:101 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 +#: ../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:293 +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:107 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260 +#: ../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:387 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:143 +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/ConfigReseedHandler.java:29 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:34 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:360 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:516 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:352 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:377 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:344 +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 "正在启用笔记本模式" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:244 +msgid "Disabling laptop mode" +msgstr "正在禁用笔记本模式" + +#: ../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:41 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:49 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:59 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:62 +msgid "unknown" +msgstr "未知" + +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:172 +msgid "bits per second" +msgstr "Bit/s" + +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:173 +#, java-format +msgid "or {0} bytes per month maximum" +msgstr "或最多 {0} Byte/月(假设始终 7 天 x 24小时开机)" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:20 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:315 +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:317 +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:343 +msgid "Adjust peer 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 "容量值无效" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:17 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 +msgid "Save changes and reseed now" +msgstr "保存修改+立刻开始网络引导" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:21 +msgid "Reseeding is already in progress" +msgstr "网络引导中" + +#. skip the nonce checking in ReseedHandler +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:24 +msgid "Starting reseed process" +msgstr "正在开始引导过程" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:66 +msgid "Configuration saved successfully." +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:293 +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:291 +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:295 +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:307 +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:309 +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:323 +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:325 +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:343 +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:351 +msgid "View console on startup" +msgstr "程序启动时显示控制台" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:93 +msgid "Console is to be shown on startup" +msgstr "启动后显示控制台" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:94 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 +msgid "Do not view console on startup" +msgstr "启动后不打开控制台" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96 +msgid "Console is not to be shown on startup" +msgstr "启动后不显示控制台" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:105 +msgid "Service installed" +msgstr "服务已安装" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:107 +msgid "Warning: unable to install the service" +msgstr "警告:无法安装服务" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:113 +msgid "Service removed" +msgstr "服务已卸载" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:115 +msgid "Warning: unable to remove the service" +msgstr "警告:无法卸载服务" + +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:111 +msgid "Stat filter and location updated successfully to" +msgstr "统计数据过滤器及位置成功更新至" + +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:113 +msgid "Failed to update the stat filter and location" +msgstr "统计数据过滤器及地址更新失败" + +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:114 +msgid "Graph list updated, may take up to 60s to be reflected here and on the <a href=\"graphs.jsp\">Graphs Page</a>" +msgstr "曲线图列表已更新,更新后的内容可能需要最多 60s 的时间才能在这里及 <a href=\"graphs.jsp\">统计图表</a>页面中反映出来。" + +#. 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:135 +msgid "Updated settings for all pools." +msgstr "隧道池更新完毕" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:140 +msgid "Exploratory tunnel configuration saved successfully." +msgstr "探索隧道设置保存成功。" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 +#: ../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} 跳点" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:15 +#, java-format +msgid "1 tunnel" +msgid_plural "{0} tunnels" +msgstr[0] "{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("<tr><th></th><th>Inbound</th><th>Outbound</th></tr>\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 "英语" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +msgid "French" +msgstr "法语" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +msgid "German" +msgstr "德语" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +msgid "Spanish" +msgstr "西班牙语" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +msgid "Dutch" +msgstr "荷兰语" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +msgid "Portuguese" +msgstr "葡萄牙语" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +msgid "Russian" +msgstr "俄语" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 +msgid "Chinese" +msgstr "中文" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 +msgid "Swedish" +msgstr "瑞士语" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:85 +msgid "Update available, attempting to download now" +msgstr "有更新可用,正在尝试下载" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:87 +msgid "Update available, click button on left to download" +msgstr "有更新可用,点左侧按钮下载" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:93 +msgid "No update available" +msgstr "无更新" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:101 +msgid "Updating news URL to" +msgstr "正在更新新闻链接至" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:109 +msgid "Updating proxy host to" +msgstr "正在更新代理主机至" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:117 +msgid "Updating proxy port to" +msgstr "正在更新代理端口至" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:130 +msgid "Updating refresh frequency to" +msgstr "正在更新更新频率为" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:137 +msgid "Updating update policy to" +msgstr "正在更新更新策略为" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:146 +msgid "Updating update URLs." +msgstr "正在更新更新链接至" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:155 +msgid "Updating trusted keys." +msgstr "正在更新可信公钥为" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:163 +msgid "Updating unsigned update URL to" +msgstr "正在更新未签名软件链接至" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:88 +#: ../java/src/net/i2p/router/web/GraphHelper.java:167 +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 "仅下载、验证并重启" + +#: ../java/src/net/i2p/router/web/FormHandler.java:174 +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:93 +msgid "Combined bandwidth graph" +msgstr "复合带宽图" + +#. e.g. "statname for 60m" +#: ../java/src/net/i2p/router/web/GraphHelper.java:107 +#, java-format +msgid "{0} for {1}" +msgstr "过去 {1} 统计 {0}" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:146 +msgid "Configure Graph Display" +msgstr "图表显示设置" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:146 +msgid "Select Stats" +msgstr "选择统计项" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:150 +msgid "Periods" +msgstr "周期" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:151 +msgid "Plot averages" +msgstr "事件均值" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:152 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 +msgid "or" +msgstr "或" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:152 +msgid "plot events" +msgstr "事件数量" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:153 +msgid "Image sizes" +msgstr "图像尺寸" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:153 +msgid "width" +msgstr "宽度" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:154 +msgid "height" +msgstr "高度" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:154 +#: ../java/src/net/i2p/router/web/GraphHelper.java:155 +msgid "pixels" +msgstr "像素" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:156 +msgid "Refresh delay" +msgstr "刷新延迟" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:171 +msgid "Redraw" +msgstr "重绘" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:203 +msgid "Graph settings saved" +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/LogsHelper.java:34 +msgid "File not found" +msgstr "文件未找到" + +#: ../java/src/net/i2p/router/web/LogsHelper.java:52 +msgid "No log messages" +msgstr "日志中无消息" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:80 +msgid "Network Database RouterInfo Lookup" +msgstr "网络数据库 RouterInfo 检索" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:95 +#: ../java/strings/Strings.java:68 +msgid "Router" +msgstr "路由器" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:95 +msgid "not found in network database" +msgstr "在网络数据库概况未找到" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:107 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:215 +msgid "Network Database Contents" +msgstr "网络数据库内容" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:108 +msgid "View RouterInfo" +msgstr "浏览 RouterInfo" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:109 +msgid "LeaseSets" +msgstr "赁集" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:131 +msgid "LeaseSet" +msgstr "赁集" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:133 +msgid "Local" +msgstr "本地" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:135 +msgid "Unpublished" +msgstr "未发布" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:136 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143 +msgid "Destination" +msgstr "目标" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:153 +#, java-format +msgid "Expires in {0}" +msgstr "{0} 后过期" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:155 +#, java-format +msgid "Expired {0} ago" +msgstr "{0}前过期" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:167 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 +msgid "Gateway" +msgstr "网关" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:167 +msgid "Lease" +msgstr "租赁" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:169 +msgid "Tunnel" +msgstr "隧道" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:215 +msgid "View LeaseSets" +msgstr "查看赁集" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217 +msgid "Not initialized" +msgstr "未初始化" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:226 +msgid "Routers" +msgstr "路由器" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:228 +msgid "Show all routers" +msgstr "显示所有路由器" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:230 +msgid "Show all routers with full stats" +msgstr "显示所有路由及统计" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:265 +msgid "Network Database Router Statistics" +msgstr "NetDb路由器统计" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 +msgid "Count" +msgstr "计数" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 +msgid "Transports" +msgstr "传输" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 +msgid "Country" +msgstr "国家" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:342 +msgid "Our info" +msgstr "我方信息" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:344 +msgid "Peer info for" +msgstr "节点信息" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:348 +msgid "Full entry" +msgstr "完整项" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:115 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 +msgid "Hidden" +msgstr "隐身" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 +msgid "Updated" +msgstr "已更新" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:355 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:358 +#, java-format +msgid "{0} ago" +msgstr "{0}前" + +#. shouldnt happen +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:357 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:361 +msgid "Published" +msgstr "发布" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:363 +msgid "Address(es)" +msgstr "地址" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:376 +msgid "cost" +msgstr "开销" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +msgid "Hidden or starting up" +msgstr "隐身或正在启动" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +msgid "SSU" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +msgid "SSU with introducers" +msgstr "使用中介的SSU连接" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +msgid "NTCP" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +msgid "NTCP and SSU" +msgstr "NTCP 与 SSU" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +msgid "NTCP and SSU with introducers" +msgstr "使用中介的NTCP与SSU连接" + +#: ../java/src/net/i2p/router/web/NewsFetcher.java:93 +#, java-format +msgid "News last updated {0} ago." +msgstr "新闻更新于{0}前" + +#: ../java/src/net/i2p/router/web/NewsFetcher.java:99 +#, 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:139 +msgid "Downloading plugin" +msgstr "正在下载插件" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:146 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:244 +#, java-format +msgid "{0}B transferred" +msgstr "已传输 {0}B" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:153 +msgid "Plugin downloaded" +msgstr "插件下载完成" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:158 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:345 +#, java-format +msgid "Cannot create plugin directory {0}" +msgstr "无法创建插件目录 {0}" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:167 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:298 +#, java-format +msgid "from {0}" +msgstr "自 {0}" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:177 +#, java-format +msgid "Plugin from {0} is corrupt" +msgstr "由 {0} 获取的插件已损坏。" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:188 +#, java-format +msgid "Plugin from {0} does not contain the required configuration file" +msgstr "由 {0} 获取的插件缺少必要的配置文件" + +#. updateStatus("<b>" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + "</b>"); +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:201 +#, java-format +msgid "Plugin from {0} contains an invalid key" +msgstr "由 {0} 获取的插件签名密钥无效" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:220 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:229 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:238 +#, java-format +msgid "Plugin signature verification of {0} failed" +msgstr "插件 {0} 的签名验证失败。" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:253 +#, java-format +msgid "Plugin from {0} has invalid name or version" +msgstr "从 {0} 获取的插件缺少有效的名称或版本" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:258 +#, java-format +msgid "Plugin {0} has mismatched versions" +msgstr "插件 {0} 的内部版本不符。" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:266 +#, java-format +msgid "This plugin requires I2P version {0} or higher" +msgstr "插件需要I2P版本 {0} 或更高" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:274 +#, java-format +msgid "This plugin requires Java version {0} or higher" +msgstr "插件需要 Java 版本 {0} 或更高" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:282 +msgid "Downloaded plugin is for new installs only, but the plugin is already installed" +msgstr "所下插件包仅用于全新安装,但您已经安装过该插件" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:294 +msgid "Installed plugin does not contain the required configuration file" +msgstr "已安装插件缺少所需的配置文件" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:302 +msgid "Signature of downloaded plugin does not match installed plugin" +msgstr "所下插件的签名(人)与所安装插件的签名不符" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:309 +#, java-format +msgid "Downloaded plugin version {0} is not newer than installed plugin" +msgstr "所下插件版本 {0} 没有已安装插件的版本新" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:316 +#, java-format +msgid "Plugin update requires installed plugin version {0} or higher" +msgstr "插件更新包需要安装插件的版本为 {0} 或更高" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:323 +#, java-format +msgid "Plugin update requires installed plugin version {0} or lower" +msgstr "插件更新包需要安装插件的版本不高于 {0}" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:340 +msgid "Plugin is for upgrades only, but the plugin is not installed" +msgstr "插件更新包包找不到对应的原版插件" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:353 +#, java-format +msgid "Failed to install plugin in {0}" +msgstr "无法将插件安装至目录{0}" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:360 +#, java-format +msgid "Plugin {0} installed, router restart required" +msgstr "插件 {0} 已安装,重启I2P后生效" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:362 +#, java-format +msgid "Plugin {0} installed" +msgstr "插件 {0} 已安装" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:380 +#, java-format +msgid "Plugin {0} installed and started" +msgstr "插件 {0} 已安装并启动" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:383 +#, java-format +msgid "Plugin {0} installed but failed to start, check logs" +msgstr "插件 {0} 已安装但启动失败,请检查日志。" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:385 +#, java-format +msgid "Plugin {0} installed but failed to start" +msgstr "插件 {0} 已安装但启动失败" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:395 +#, 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 "分组(容量)" + +#: ../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:335 +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:339 +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:287 +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 "种子节点与整合节点" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:188 +msgid "Caps" +msgstr "容量" + +#: ../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 "10m响应时间" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195 +msgid "1h Resp. Time" +msgstr "1h响应时间" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196 +msgid "1d Resp. Time" +msgstr "1d响应时间" + +#: ../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 "1h失败率" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 +msgid "1d Fail Rate" +msgstr "1d失败率" + +#: ../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 "由节点描述信息管理器决定" + +#: ../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 "netDb中的容量,与描述信息无关。" + +#. capabilities +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 +#: ../java/strings/Strings.java:81 +msgid "caps" +msgstr "容量" + +#: ../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 "该节点一分钟由单一隧道通过的数据峰值(byte/s)。" + +#: ../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/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:223 +msgid "Bandwidth usage" +msgstr "带宽占用" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:230 +msgid "Outbound bytes/sec" +msgstr "出站(byte/s)" + +#. def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3); +#: ../java/src/net/i2p/router/web/StatSummarizer.java:232 +msgid "Inbound bytes/sec" +msgstr "入站(byte/s)" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:235 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:236 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:237 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:238 +msgid "bytes/sec" +msgstr "byte/s" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:235 +msgid "out average" +msgstr "出站平均值" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:236 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:238 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:115 +msgid "max" +msgstr "最大" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:237 +msgid "in average" +msgstr "入站平均值" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:57 +msgid "GO" +msgstr "执行" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:60 +msgid "Statistics gathered during this router's uptime" +msgstr "路由运行时收集的统计数据" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:63 +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:64 +msgid "These statistics are primarily used for development and debugging." +msgstr "统计主要用于I2P的开发和调试。" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:105 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:156 +msgid "No lifetime events" +msgstr "全程无事件" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:116 +msgid "frequency" +msgstr "更新频率" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:120 +msgid "Rolling average events per period" +msgstr "每周期事件滚动均值" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:124 +msgid "Highest events per period" +msgstr "每周期事件峰值" + +#. if (showAll && (curFreq.getMaxAverageEventsPerPeriod() > 0) && (curFreq.getAverageEventsPerPeriod() > 0) ) { +#. buf.append("(current is "); +#. buf.append(pct(curFreq.getAverageEventsPerPeriod()/curFreq.getMaxAverageEventsPerPeriod())); +#. buf.append(" of max)"); +#. } +#. buf.append(" <i>avg interval between updates:</i> (").append(num(curFreq.getAverageInterval())).append("ms, min "); +#. buf.append(num(curFreq.getMinAverageInterval())).append("ms)"); +#: ../java/src/net/i2p/router/web/StatsGenerator.java:135 +msgid "Lifetime average events per period" +msgstr "全程每周期事件均值" + +#. Display the strict average +#: ../java/src/net/i2p/router/web/StatsGenerator.java:140 +msgid "Lifetime average frequency" +msgstr "全程平均频率" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:168 +msgid "rate" +msgstr "速度" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:170 +msgid "Average" +msgstr "均值" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:173 +msgid "Highest average" +msgstr "最高均值" + +#. breaking the sentence like before makes translation in my language impossible. +#: ../java/src/net/i2p/router/web/StatsGenerator.java:201 +#, java-format +msgid "There were {0} event(s) in this period" +msgstr "本周期共有{0}个事件," + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:203 +#, java-format +msgid " which ended {0} ago." +msgstr "于{0}前结束。" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:205 +msgid "No events" +msgstr "无事件" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:211 +msgid "Average event count" +msgstr "平均事件计数" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:213 +msgid "Events in peak period" +msgstr "事件峰值" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:221 +msgid "Graph Data" +msgstr "图表数据" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:223 +msgid "Graph Event Count" +msgstr "图表事件计数" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:226 +msgid "Export Data as XML" +msgstr "导出数据为XML" + +#. Display the strict average +#: ../java/src/net/i2p/router/web/StatsGenerator.java:231 +msgid "Lifetime average value" +msgstr "全程均值" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:41 +msgid "I2P Router Help & FAQ" +msgstr "I2P 使用帮助与常见问答" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:43 +msgid "Help & FAQ" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:55 +msgid "Configure startup of clients and webapps (services); manually start dormant services" +msgstr "设置客户程序及Web程序(服务)的启动;手动启动重要服务" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:57 +msgid "I2P Services" +msgstr "I2P 服务" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:63 +msgid "Manage your I2P hosts file here (I2P domain name resolution)" +msgstr "管理您的 I2P HOST表(I2P域名解析表)" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:65 +msgid "Addressbook" +msgstr "地址簿" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:69 +msgid "Built-in anonymous BitTorrent Client" +msgstr "内建的匿名 BitTorrent 客户端" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:71 +msgid "Torrents" +msgstr "匿名BT" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:75 +msgid "Anonymous webmail client" +msgstr "匿名Web邮件客户端" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:77 +msgid "Webmail" +msgstr "匿名邮箱" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:81 +msgid "Anonymous resident webserver" +msgstr "内置的匿名Web服务器" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:83 +msgid "Webserver" +msgstr "匿名主页服务器" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:91 +msgid "Configure I2P Router" +msgstr "设置 I2P 路由器" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:93 +msgid "I2P Internals" +msgstr "I2P内部设置" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:99 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:384 +msgid "View existing tunnels and tunnel build status" +msgstr "查看现存隧道及隧道的建立状态" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:105 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258 +msgid "Show all current peer connections" +msgstr "显示当前所有的节点连接" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:111 +msgid "Show recent peer performance profiles" +msgstr "显示当前节点的性能记录" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:113 +msgid "Profiles" +msgstr "节点信息" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:117 +msgid "Show list of all known I2P routers" +msgstr "包含所有已知I2P路由器的列表" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:119 +msgid "NetDB" +msgstr "NetDB" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123 +msgid "Health Report" +msgstr "路由器健康状况报告" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:125 +msgid "Logs" +msgstr "日志" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:135 +msgid "Graph router performance" +msgstr "路由性能统计图" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:137 +msgid "Graphs" +msgstr "图表" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141 +msgid "Textual router performance statistics" +msgstr "路由性能文字统计" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:370 +msgid "Local Destinations" +msgstr "本地服务" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:149 +#: ../java/strings/Strings.java:62 +msgid "I2PTunnel" +msgstr "I2P隧道" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164 +msgid "I2P Router Help" +msgstr "I2P路由帮助" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166 +msgid "General" +msgstr "功能概况" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171 +msgid "Local Identity" +msgstr "本地身份" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:175 +msgid "Your unique I2P router identity is" +msgstr "您I2P路由的唯一身份为" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179 +msgid "never reveal it to anyone" +msgstr "切勿将其告诉任何人" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:181 +msgid "show" +msgstr "显示" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192 +msgid "How long we've been running for this session" +msgstr "本次路由运行时间" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195 +msgid "Uptime" +msgstr "运行时间" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 +msgid "Help with configuring your firewall and router for optimal I2P performance" +msgstr "如何正确配置防火墙和(物理)路由器优化I2P性能" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 +msgid "Download" +msgstr "下载" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:240 +msgid "Download Unsigned" +msgstr "下载未签名更新" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266 +msgid "Active" +msgstr "活动节点" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275 +msgid "Fast" +msgstr "快速节点" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:281 +msgid "High capacity" +msgstr "高容量节点" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:293 +msgid "Known" +msgstr "已知节点" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:308 +msgid "Help with firewall configuration" +msgstr "如何配置防火墙" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:310 +msgid "Check NAT/firewall" +msgstr "检查NAT/防火墙" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:330 +msgid "Reseed" +msgstr "补种(搜索节点启动网络)" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:347 +msgid "Configure router bandwidth allocation" +msgstr "设置路由的带宽分配" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:349 +msgid "Bandwidth in/out" +msgstr "带宽(进/出站)" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:369 +msgid "Total" +msgstr "总计" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376 +msgid "Used" +msgstr "已用" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:391 +msgid "Exploratory" +msgstr "探测" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403 +msgid "Participating" +msgstr "共享" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:409 +msgid "Share ratio" +msgstr "共享/占用" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415 +msgid "What's in the router's job queue?" +msgstr "查看路由的作业队列" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 +msgid "Congestion" +msgstr "拥堵" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:422 +msgid "Job lag" +msgstr "作业延迟" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:428 +msgid "Message delay" +msgstr "消息延迟" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:434 +msgid "Tunnel lag" +msgstr "隧道延迟" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440 +msgid "Backlog" +msgstr "积压" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:106 +msgid "ERR-Client Manager I2CP Error - check logs" +msgstr "错误-客户程序管理器I2CP错误 - 请看日志" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:113 +#, java-format +msgid "ERR-Clock Skew of {0}" +msgstr "错误-系统时滞 {0}" + +# 暂不翻译,确定/良好 可能影响按钮的翻译 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:122 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 +msgid "OK" +msgstr "正常" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:123 +msgid "ERR-Private TCP Address" +msgstr "错误-TCP私有地址" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:125 +msgid "ERR-SymmetricNAT" +msgstr "错误-SymmeticNAT" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:128 +msgid "WARN-Firewalled with Inbound TCP Enabled" +msgstr "警告-入站TCP开启但因防火墙受限" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:130 +msgid "WARN-Firewalled and Floodfill" +msgstr "警告-种子节点因防火墙受限" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:132 +msgid "WARN-Firewalled and Fast" +msgstr "警告-快速节点因防火墙受限" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:133 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 +msgid "Firewalled" +msgstr "防火墙限制" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:135 +msgid "ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" +msgstr "错误-UDP端口已占用 - 在高级设置中设置 i2np.udp.internalPort=新端口并重启程序" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:141 +msgid "ERR-No Active Peers, Check Network Connection and Firewall" +msgstr "错误-无活动节点,请检查网络连接及防火墙" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:144 +msgid "ERR-UDP Disabled and Inbound TCP host/port not set" +msgstr "错误-UDP已禁用且TCP入站主机与端口未设置" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:146 +msgid "WARN-Firewalled with UDP Disabled" +msgstr "警告-因防火墙受限且UDP被禁用" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:148 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 +msgid "Testing" +msgstr "测试中" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:370 +msgid "Add/remove/edit & control your client and server tunnels" +msgstr "添加、删除、编辑或控制客户程序隧道和服务隧道" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:382 +msgid "Server" +msgstr "服务" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:386 +msgid "Show tunnels" +msgstr "显示隧道" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:397 +msgid "Leases expired" +msgstr "Lease已过期" + +#. red or yellow light +#: ../java/src/net/i2p/router/web/SummaryHelper.java:397 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:398 +msgid "Rebuilding" +msgstr "正在重建" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:398 +msgid "ago" +msgstr "前" + +#. green light +#: ../java/src/net/i2p/router/web/SummaryHelper.java:401 +msgid "Ready" +msgstr "就绪" + +#. yellow light +#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 +msgid "Building" +msgstr "创建中" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 +msgid "Building tunnels" +msgstr "正在隧道创建" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:410 +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:421 +#: ../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:89 +#, java-format +msgid "events in {0}" +msgstr "事件/{0}" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:91 +#, java-format +msgid "averaged for {0}" +msgstr "{0} 平均值" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:101 +msgid "Events per period" +msgstr "事件/周期" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:114 +msgid "avg" +msgstr "平均" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:116 +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:287 +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 "接收" + +#: ../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 "发送" + +#: ../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:142 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:237 +msgid "Updating" +msgstr "正在更新" + +#. Process the .sud/.su2 file +#: ../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:261 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:286 +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:281 +msgid "Restarting" +msgstr "正在重启" + +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:118 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:288 +msgid "Click Restart to install" +msgstr "点击【重启】完成安装" + +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:120 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:290 +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:292 +#, 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:184 +#, java-format +msgid "Updating from {0}" +msgstr "正在从 {0} 获取更新" + +#: ../java/src/net/i2p/router/web/UpdateHandler.java:253 +#, java-format +msgid "No new version found at {0}" +msgstr " {0} 上非有发现新版" + +#: ../java/src/net/i2p/router/web/UpdateHandler.java:281 +msgid "Update verified" +msgstr "更新已验证" + +#: ../java/src/net/i2p/router/web/UpdateHandler.java:307 +#, java-format +msgid "Transfer failed from {0}" +msgstr "来在{0}的数据传输失败" + +#. wars for ConfigClientsHelper +#: ../java/strings/Strings.java:12 +msgid "addressbook" +msgstr "地址簿" + +#: ../java/strings/Strings.java:13 +msgid "i2psnark" +msgstr "匿名BT客户端" + +#: ../java/strings/Strings.java:14 +msgid "i2ptunnel" +msgstr "I2P隧道" + +#: ../java/strings/Strings.java:15 +msgid "susimail" +msgstr "匿名邮箱" + +#: ../java/strings/Strings.java:16 +msgid "susidns" +msgstr "susiDNS" + +#: ../java/strings/Strings.java:17 +msgid "routerconsole" +msgstr "路由控制台" + +#. 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 "匿名主页服务器" + +#: ../java/strings/Strings.java:26 +msgid "I2P webserver (eepsite)" +msgstr "匿名主页服务器(eepsite)" + +#: ../java/strings/Strings.java:27 +msgid "Browser launch at startup" +msgstr "路由器启动时运行浏览器" + +#: ../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 "路由启动时打开控制台" + +#: ../java/strings/Strings.java:37 +msgid "IRC proxy" +msgstr "I2P聊天室" + +#: ../java/strings/Strings.java:38 +msgid "eepsite" +msgstr "匿名网站" + +#: ../java/strings/Strings.java:39 +msgid "I2P webserver" +msgstr "匿名主页服务器" + +#: ../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 "I2P聊天室" + +#. hardcoded in i2psnark +#: ../java/strings/Strings.java:45 +msgid "I2PSnark" +msgstr "I2P Snark" + +#. hardcoded in iMule? +#: ../java/strings/Strings.java:47 +msgid "iMule" +msgstr "" + +#. 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 "加密" + +#: ../java/strings/Strings.java:61 +msgid "i2cp" +msgstr "" + +#: ../java/strings/Strings.java:63 +msgid "InNetPool" +msgstr "" + +#: ../java/strings/Strings.java:64 +msgid "JobQueue" +msgstr "作业队列" + +#: ../java/strings/Strings.java:65 +msgid "NetworkDatabase" +msgstr "网络数据库" + +#: ../java/strings/Strings.java:66 +msgid "ntcp" +msgstr "NTCP" + +#: ../java/strings/Strings.java:69 +msgid "Stream" +msgstr "流" + +#: ../java/strings/Strings.java:70 +msgid "Throttle" +msgstr "门槛" + +#: ../java/strings/Strings.java:71 +msgid "Transport" +msgstr "传输" + +#: ../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 "主机" + +#: ../java/strings/Strings.java:78 +msgid "key" +msgstr "密钥" + +#: ../java/strings/Strings.java:79 +msgid "port" +msgstr "端口" + +#. introducer host +#: ../java/strings/Strings.java:83 +msgid "ihost0" +msgstr "" + +#: ../java/strings/Strings.java:84 +msgid "ihost1" +msgstr "" + +#: ../java/strings/Strings.java:85 +msgid "ihost2" +msgstr "" + +#. introducer port +#: ../java/strings/Strings.java:87 +msgid "iport0" +msgstr "" + +#: ../java/strings/Strings.java:88 +msgid "iport1" +msgstr "" + +#: ../java/strings/Strings.java:89 +msgid "iport2" +msgstr "" + +#. introducer key +#: ../java/strings/Strings.java:91 +msgid "ikey0" +msgstr "" + +#: ../java/strings/Strings.java:92 +msgid "ikey1" +msgstr "" + +#: ../java/strings/Strings.java:93 +msgid "ikey2" +msgstr "" + +#. introducer tag +#: ../java/strings/Strings.java:95 +msgid "itag0" +msgstr "" + +#: ../java/strings/Strings.java:96 +msgid "itag1" +msgstr "" + +#: ../java/strings/Strings.java:97 +msgid "itag2" +msgstr "" + +#. 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:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:230 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:215 +msgid "Refresh (s)" +msgstr "刷新(秒)" + +#. ditto +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:231 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:219 +msgid "Enable" +msgstr "启用" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:240 +msgid "I2P Network Configuration" +msgstr "I2P 连网设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:298 +msgid "Bandwidth limiter" +msgstr "带宽限制" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:300 +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:304 +msgid "KBps In" +msgstr "KBps 入站" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:318 +msgid "KBps Out" +msgstr "KBps 出站" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:334 +msgid "Share" +msgstr "共享" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:304 +msgid "NOTE" +msgstr "注意" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:343 +#, java-format +msgid "You have configured I2P to share only {0} KBps." +msgstr "您设置I2P仅共享 {0} KBps" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:346 +msgid "I2P requires at least 12KBps to enable sharing. " +msgstr "I2P 需要至少 12KBps 才能进行共享。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347 +msgid "Please enable sharing (participating in tunnels) by configuring more bandwidth. " +msgstr "请设置更多的带宽以便启用共享功能(加入到其他节点的隧道创建中)。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:348 +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:351 +#, java-format +msgid "You have configured I2P to share {0} KBps." +msgstr "您设置I2P共享 {0} KBps" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:354 +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:358 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:403 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:348 +#: ../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:342 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:365 +msgid "Cancel" +msgstr "取消" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:375 +msgid "IP and Transport Configuration" +msgstr "IP 与传输设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:377 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:306 +msgid "The default settings will work for most people." +msgstr "默认设置适于大多数人。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:379 +msgid "There is help below." +msgstr "页面下方有帮助信息" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:381 +msgid "UPnP Configuration" +msgstr "UPnP 设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:385 +msgid "Enable UPnP to open firewall ports" +msgstr "启用UPnP以打开防火墙端口" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:387 +msgid "UPnP status" +msgstr "UPnP 统计" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:389 +msgid "IP Configuration" +msgstr "IP 设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:391 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:461 +msgid "Externally reachable hostname or IP address" +msgstr "公网可访问的本机域名或IP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395 +msgid "Use all auto-detect methods" +msgstr "使用全部自动探测方法" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399 +msgid "Disable UPnP IP address detection" +msgstr "禁用UPnP IP 地址探测" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 +msgid "Ignore local interface IP address" +msgstr "忽略本地接口的 IP 地址" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:407 +msgid "Use SSU IP address detection only" +msgstr "仅使用SSU IP 地址探测" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:411 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 +msgid "Specify hostname or IP" +msgstr "指定主机名或IP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 +msgid "Select Interface" +msgstr "选择网络接口" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:431 +msgid "Hidden mode - do not publish IP" +msgstr "隐身模式 - 不发布IP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:433 +msgid "(prevents participating traffic)" +msgstr "(阻止共享流量)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 +msgid "Action when IP changes" +msgstr "IP改变后应" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:439 +msgid "Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity" +msgstr "笔记本模式 - IP变化后改变路由身份及UDP端口(拨号用户慎用)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:441 +msgid "Experimental" +msgstr "试验性" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:443 +msgid "UDP Configuration:" +msgstr "UDP 设置:" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:445 +msgid "UDP port:" +msgstr "UDP端口" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 +msgid "TCP Configuration" +msgstr "TCP 连接设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:465 +msgid "Use auto-detected IP address" +msgstr "使用自动检测得到的 IP 地址" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:467 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499 +msgid "currently" +msgstr "目前" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:471 +msgid "if we are not firewalled" +msgstr "如果没有受到防火墙阻挡" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:475 +msgid "Always use auto-detected IP address (Not firewalled)" +msgstr "总是使用自动探测到的IP地址(没有防火墙限制)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 +msgid "Disable inbound (Firewalled)" +msgstr "禁止入站连接(受防火墙限制)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:489 +msgid "Completely disable" +msgstr "完全禁用" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:491 +msgid "(select only if behind a firewall that throttles or blocks outbound TCP)" +msgstr "仅在受到防火墙的流量限制或入站连接限制时使用" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 +msgid "Externally reachable TCP port" +msgstr "公网可访问的TCP端口" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 +msgid "Use the same port configured for UDP" +msgstr "使用与UDP相同的端口" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:505 +msgid "Specify Port" +msgstr "指定端口" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:330 +msgid "Note" +msgstr "注意" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:512 +msgid "Changing these settings will restart your router." +msgstr "修改这些设置将必须重启路由器。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:518 +msgid "Configuration Help" +msgstr "设置帮助" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:520 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 +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:522 +msgid "If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you." +msgstr "如果可能,请在防火墙中添加端口并允许入站UDP/TCP数据包通过。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:524 +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)或借助“SSU中介”进行UDP端口穿透,通过它们也可以中继数据。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:526 +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不能正常工作,或外部防火墙封锁网络。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:528 +msgid "Certain firewalls such as symmetric NATs may not work well with I2P." +msgstr "在某些防火墙下例如Symmetric,I2P可能无法有效利用NAT工作。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:537 +msgid "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports." +msgstr "UPnP与公网网关设备(IGD)通讯可以检测外部IP和映射端口。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:539 +msgid "UPnP support is beta, and may not work for any number of reasons" +msgstr "UPnP支持仍在测试阶段,可能由于一些原因无法正常工作。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:541 +msgid "No UPnP-compatible device present" +msgstr "没有发现UPnP兼容设备" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:543 +msgid "UPnP disabled on the device" +msgstr "设备上的UPnP支持已禁用" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:545 +msgid "Software firewall interference with UPnP" +msgstr "软件防火墙阻止UPnP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:547 +msgid "Bugs in the device's UPnP implementation" +msgstr "设备的UPnP支持有Bug" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:549 +msgid "Multiple firewall/routers in the internet connection path" +msgstr "公网连接中存在多个防火墙/路由器" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:551 +msgid "UPnP device change, reset, or address change" +msgstr "UPnP设备改变、重置或地址迁移" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:553 +msgid "Review the UPnP status here." +msgstr "在这里检查UPnP状态。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 +msgid "UPnP may be enabled or disabled above, but a change requires a router restart to take effect." +msgstr "UPnP 的关闭或开启均需要程序重启后生效。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 +msgid "Hostnames entered above will be published in the network database." +msgstr "上面输入的主机名称将在网络数据库(NetDB)中发布。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 +msgid "They are <b>not private</b>." +msgstr "他们并<b>非私有地址</b>。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 +msgid "Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1." +msgstr "此外,<b>请勿输入如127.0.0.1或192.168.1.1等私有地址</b>" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 +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 "如果您设置了错误的IP地址或主机名称,或NAT/防火墙配置不当,您的网络性能将受到明显影响。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 +msgid "When in doubt, leave the settings at the defaults." +msgstr "如果对设置有疑问,请保留默认设置。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 +msgid "Reachability Help" +msgstr "连通性帮助" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:572 +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:575 +msgid "If there is an error, the <a href=\"logs.jsp\">logs</a> may also help diagnose the problem." +msgstr "如果存在错误,<a href=\"logs.jsp\">日志</a>可以帮助您诊断问题。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 +msgid "Your UDP port does not appear to be firewalled." +msgstr "您的UDP端口似乎一切正常。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 +msgid "Your UDP port appears to be firewalled." +msgstr "您的UDP端口似乎因防火墙而连接受限。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 +msgid "As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error." +msgstr "由于防火墙检测方法并非100%可靠,有时也可能错误地显示此此提示。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587 +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:589 +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也能够正常工作,无需担心。受到防火墙阻隔时,路由器将通过“中介(Introducers)”中继入站连接。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:591 +msgid "However, you will get more participating traffic and help the network more if you can open your firewall(s)." +msgstr "然而,如果您能打开防火墙端口,您才能得到的共享流量,更好的帮助I2P网络。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593 +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:595 +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:599 +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:603 +msgid "The router is not configured to publish its address, therefore it does not expect incoming connections." +msgstr "路由器被设置为禁止发布IP地址,因此并不需要入站连接。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 +msgid "WARN - Firewalled and Fast" +msgstr "警告 - 快速节点,因防火墙受限" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 +msgid "You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled." +msgstr "您设置I2P共享超过128KBps的带宽,但您的连接因防火墙受阻。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 +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可以正常工作,但如果您的确能够分享超过128kps的带宽,打开防火墙端口它能工作的更好帮助网络中其他的人。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 +msgid "WARN - Firewalled and Floodfill" +msgstr "警告 - 种子节点,因防火墙受限" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 +msgid "You have configured I2P to be a floodfill router, but you are firewalled." +msgstr "您已将I2P设置为种子路由,但您的连接已因防火墙受阻。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 +msgid "For best participation as a floodfill router, you should open your firewall." +msgstr "为了种子路由能够更好的参与到I2P网络中,请您的防火墙中打开端口。" + +# 暂不翻译方便反馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 +msgid "WARN - Firewalled with Inbound TCP Enabled" +msgstr "警告 - 入站TCP开启,但因防火墙受限" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 +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:621 +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连接,其他路由器节点将无法与您建立连接,造成网络受阻。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 +msgid "Please open your firewall or disable inbound TCP above." +msgstr "请打开您的防火墙端口或禁用上面的入站TCP连接。" + +# 暂不翻译 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 +msgid "WARN - Firewalled with UDP Disabled" +msgstr "警告 - 因防火墙受限,且UDP被禁用" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 +msgid "You have configured inbound TCP, however you have disabled UDP." +msgstr "您设置了使用TCP连接,然而禁用了UDP连接。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 +msgid "You appear to be firewalled on TCP, therefore your router cannot accept inbound connections." +msgstr "您的TCP连接似乎因防火墙受阻,导致您的路由器无法接收入站连接。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:631 +msgid "Please open your firewall or enable UDP." +msgstr "请打开防火墙端口或启用UDP。" + +# 暂不翻译,方便错误反馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 +msgid "ERR - Clock Skew" +msgstr "错误 - 系统时滞" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 +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:637 +msgid "Correct your clock setting if this error persists." +msgstr "如果错误持续,请校对您的系统时间。" + +# 暂不翻译,方便错误反馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 +msgid "ERR - Private TCP Address" +msgstr "错误 - 私有TCP地址" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 +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一类的内网地址。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 +msgid "Correct the address or disable inbound TCP above." +msgstr "正确设置IP地址或禁用上面的入站TCP连接。" + +# 暂不翻译,方便错误反馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 +msgid "ERR - SymmetricNAT" +msgstr "错误 - SymmetricNAT" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 +msgid "I2P detected that you are firewalled by a Symmetric NAT." +msgstr "I2P检测到您受到Symmetic NAT的阻挡。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 +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无法与此类防火墙很好的并存。您可能无法接收入站连接,这会障碍您连入I2P网络。" + +# 暂不翻译,方便问题反馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:651 +msgid "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" +msgstr "错误 - UDP端口已占用 - 在高级设置中设置 i2np.udp.internalPort=新端口 并重启程序" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 +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:655 +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的端口,如果是,关闭此程序或设置I2P使用不同的端口。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:657 +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:659 +msgid "However, a restart is always required after this error." +msgstr "然而,发生此错误后一般需要重启程序才能解决。" + +# 暂不翻译,方便错误反馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 +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:663 +msgid "You have not configured inbound TCP with a hostname and port above, however you have disabled UDP." +msgstr "您没有设置入站TCP的主机名称和端口,同时又关闭了UDP。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:665 +msgid "Therefore your router cannot accept inbound connections." +msgstr "因此您的路由器无法接收入站连接。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:667 +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:669 +msgid "ERR - Client Manager I2CP Error - check logs" +msgstr "错误 - 客户程序管理器 I2CP 错误 - 请看日志" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 +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:673 +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:241 +msgid "I2P Advanced Configuration" +msgstr "I2P 高级设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:301 +msgid "Advanced I2P Configuration" +msgstr "I2P 高级设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:311 +msgid "Some changes may require a restart to take effect." +msgstr "某些设置需要程序重启后生效。" + +#: ../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:243 +msgid "I2P Client Configuration" +msgstr "I2P 客户程序设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:312 +msgid "Client Configuration" +msgstr "客户程序设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:314 +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:318 +msgid "To change other client options, edit the file" +msgstr "修改其他客户端设置请编辑文件" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:401 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:415 +msgid "All changes require restart to take effect." +msgstr "所有更改均需要程序重启才能生效。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:337 +msgid "Client Interface Configuration (Advacned)" +msgstr "客户端接口设置(高级)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:339 +msgid "External I2CP (I2P Client Protocol) Interface Configuration" +msgstr "外部I2CP接口 (I2P客户协议) 设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 +msgid "Enabled without SSL" +msgstr "启用无需 SSL" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351 +msgid "Enabled with SSL required" +msgstr "启用强制 SSL" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 +msgid "Disabled - Clients outside this Java process may not connect" +msgstr "禁用 - 如果客户端与I2P不运行与同一Java虚拟机中则禁止其连接。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:359 +msgid "I2CP Port" +msgstr "I2CP 端口" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:363 +msgid "I2CP Interface" +msgstr "I2CP接口" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:379 +msgid "Authorization" +msgstr "认证" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:385 +msgid "Require username and password" +msgstr "强制用户名密码登陆" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:387 +msgid "Username" +msgstr "用户名" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:391 +msgid "Password" +msgstr "密码" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:397 +msgid "Any changes made here must also be configured in the external client." +msgstr "对于此处的做出的任何更改,外部客户端程序中也必须做出相应设置。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:399 +msgid "Many clients do not support SSL or authorization." +msgstr "很多客户端程序还不支持SSL或认证。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:407 +msgid "WebApp Configuration" +msgstr "WebApp 设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 +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 Web 程序随客户端“web控制台”一同启动,并与路由运行于同一JVM中。这些Web程序通常可以通过路由器界面直接访问。他们可能是完整的程序 (例如 i2psnark/BT客户端),其他客户端程序的前端或必须单独启动的程序(例如. susidns, i2ptunnel),甚至根本没有Web界面(例如 addressbook)。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:411 +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 "从webapps目录中删除相应的.war文件同样可以禁用Web程序;然而这些 .war 文件和Web程序在更新I2P后还会再次出现,所以推荐在这里通过设置的方法禁用不用的Web程序。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:421 +msgid "Plugin Configuration" +msgstr "插件设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 +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:429 +msgid "Plugin Installation" +msgstr "插件安装" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 +msgid "To install a plugin, enter the download URL:" +msgstr "安装插件前,请输入插件的下载链接:" + +#: ../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:227 +msgid "I2P Keyring Configuration" +msgstr "I2P 钥匙环设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:295 +msgid "The router keyring is used to decrypt encrypted leaseSets." +msgstr "路由的钥匙环被用来解密和加密赁集." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:298 +msgid "The keyring may contain keys for local or remote encrypted destinations." +msgstr "钥匙环可以包含本地和远程的加密目标(Destination)." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:308 +msgid "Manual Keyring Addition" +msgstr "手动添加钥匙环" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:310 +msgid "Enter keys for encrypted remote destinations here." +msgstr "在此处添加远程加密目标的密钥。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:313 +msgid "Keys for local destinations must be entered on the" +msgstr "输入本地目标的密钥请到" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:315 +msgid "I2PTunnel page" +msgstr "I2P 隧道页面" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:317 +msgid "Dest. name, hash, or full key" +msgstr "目标(Dest.)名称, HASH, 或完整公钥" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:319 +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:241 +msgid "I2P Logging Configuration" +msgstr "I2P 记录设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 +msgid "Configure I2P Logging Options" +msgstr "设置 I2P 记录选项" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:303 +msgid "Logging filename" +msgstr "日志文件名称" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307 +msgid "(the symbol '@' will be replaced during log rotation)" +msgstr "(日志轮转时符号'@'将被替换)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:309 +msgid "Log record format" +msgstr "日志记录格式" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 +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:315 +msgid "Log date format" +msgstr "日志日期格式" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 +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:321 +msgid "Max log file size" +msgstr "日志最大体积" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:325 +msgid "Default log level" +msgstr "默认日志等级" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329 +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:331 +msgid "Log level overrides" +msgstr "等级外<br>日志项目" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:335 +msgid "New override" +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:227 +msgid "I2P Peer Configuration" +msgstr "I2P 节点设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:305 +msgid "Manual Peer Controls" +msgstr "手动节点控制" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:307 +msgid "Router Hash" +msgstr "路由器Key(见NetDB)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:311 +msgid "Manually Ban / Unban a Peer" +msgstr "手动封杀/解封某个节点" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:313 +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:323 +msgid "Adjust Profile Bonuses" +msgstr "调整节点评分" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 +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 "评分(Bonuse)可能为正或为负并影响节点是否评为快速和高容量节点。快速节点用于客户程序通道,高容量节点用于探索隧道。当前评分显示于" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:327 +msgid "profiles page" +msgstr "节点信息页面" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:251 +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/configreseed_jsp.java:106 +msgid "config reseeding" +msgstr "设置引导" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:240 +msgid "I2P Reseeding Configuration" +msgstr "I2P 网络引导设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:300 +msgid "Reseeding Configuration" +msgstr "网络引导设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:302 +msgid "Reseeding is the bootstrapping process used to find other routers when you first install I2P, or when your router has too few router references remaining." +msgstr "补种(Reseeding)是一个网络引导(Bootstrip)过程,新用户通过这个过程发现其他I2P用户,很久未上线的老用户在已知的有效节点很少时也会进入引导/补种状态。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304 +msgid "If reseeding has failed, you should first check your network connection." +msgstr "如果网络引导失败请先检查您的网络设置,确定本机网络正常。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:308 +msgid "Change these only if HTTP is blocked by a restrictive firewall, reseed has failed, and you have access to an HTTP proxy." +msgstr "您仅需在防火墙过滤严重,造成网络引导失败时需要使用HTTP代理。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +#, java-format +msgid "See {0} for instructions on reseeding manually." +msgstr "手动引导的方法请参见 {0}" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +msgid "the FAQ" +msgstr " 常见问题解答 " + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:312 +msgid "Reseed URL Selection" +msgstr "引导链接选择" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 +msgid "Try SSL first then non-SSL" +msgstr "先尝试SSL再尝试HTTP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:324 +msgid "Use SSL only" +msgstr "仅使用SSL" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:330 +msgid "Use non-SSL only" +msgstr "仅使用普通HTTP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:332 +msgid "Reseed URLs" +msgstr "网络启动" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:336 +msgid "Enable HTTP proxy (not used for SSL)" +msgstr "使用 HTTP 代理(目前不支持SSL)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:340 +msgid "HTTP Proxy Host" +msgstr "HTTP 代理地址" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:344 +msgid "HTTP Proxy Port" +msgstr "HTTP 代理端口" + +#: ../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:227 +msgid "I2P Service Configuration" +msgstr "I2P 服务设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:285 +msgid "Shutdown the router" +msgstr "关闭路由器" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:287 +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:289 +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:299 +msgid "If you want the router to restart itself after shutting down, you can choose one of the following." +msgstr "如果你想要路由器关闭后自动重新启动,可以选择下面的选项。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:301 +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 "此功能在如下情况下适用 - 例如当您修改了某些只在启动时读取的设置,例如路由器控制台密码,路由监听接口等。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:303 +msgid "A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately." +msgstr "平滑重启可能会等待几分钟的时间(但你的节点一定会感激你的耐心),硬重启可以立即完成。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 +msgid "After tearing down the router, it will wait 1 minute before starting back up again." +msgstr "路由关闭后将等待1分钟再重新启动。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:315 +msgid "Run on startup" +msgstr "启动时运行" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 +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 "这里你可以通过下面的选项来设置开机后 I2P 是否启动 - I2P 将相应的安装或卸载I2P服务。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 +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:329 +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:331 +msgid "You may want to consider shutting down gracefully, as above, then running uninstall_i2p_service_winnt.bat." +msgstr "您可以考虑先平滑关闭路由,待退出后运行 uninstall_i2p_service_winnt.bat。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 +msgid "Debugging" +msgstr "调试" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 +msgid "View the job queue" +msgstr "查看作业队列" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 +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 <a href=\"logs.jsp#servicelogs\">wrapper.log</a>." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 +msgid "Launch browser on router startup?" +msgstr "路由器启动时运行浏览器?" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 +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 "此Web控制台是I2P的主要设置界面,所以如果您您觉得有必要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:228 +msgid "I2P Stats Configuration" +msgstr "I2P 统计设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302 +msgid "Configure I2P Stat Collection" +msgstr "设置 I2P 统计项" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:304 +msgid "Enable full stats?" +msgstr "启用完整统计?" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:311 +msgid "change requires restart to take effect" +msgstr "设置需要程序重启后才能生效。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:313 +msgid "Stat file" +msgstr "统计文件" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:317 +msgid "Filter" +msgstr "过滤器" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:328 +msgid "toggle all" +msgstr "全部切换" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:330 +msgid "Log" +msgstr "日志" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:332 +msgid "Graph" +msgstr "图表" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:371 +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:240 +msgid "I2P Tunnel Configuration" +msgstr "I2P 隧道设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:306 +msgid "The default settings work for most people." +msgstr "默认设置适于大多数人。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:310 +msgid "There is a fundamental tradeoff between anonymity and performance." +msgstr "匿名性需要以性能为代价。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:313 +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个跳点的隧道(例如 2跳点 + 0-2跳点,3跳点 + 0-1跳点, 3跳点 + 0-2跳点),或大量常规+大量备用,可能降低性能和稳定性。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:316 +msgid "High CPU and/or high outbound bandwidth usage may result." +msgstr "导致高CPU占用和/或高上行流量。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:319 +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:333 +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:336 +msgid "Client tunnel changes are temporary and are not saved." +msgstr "对客户程序隧道的修改是临时的,将不予保存。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:338 +msgid "To make permanent client tunnel changes see the" +msgstr "要永久性更改客户通道的设置参见" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:340 +msgid "i2ptunnel page" +msgstr "I2P 隧道页面" + +#: ../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:240 +msgid "I2P UI Configuration" +msgstr "I2P 界面设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:292 +msgid "Router Console Theme" +msgstr "路由控制台主题" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:310 +msgid "Theme selection disabled for Internet Explorer, sorry." +msgstr "抱歉,主题功能在InternetExplorer中已禁用。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:312 +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的UserAgent;您需要设置浏览器(或过滤式代理)使用不同的UserAgent,才能访问路由控制台的主题功能。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:316 +msgid "Router Console Language" +msgstr "路由控制台语言" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:320 +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:324 +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:227 +msgid "I2P Update Configuration" +msgstr "I2P 更新设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:303 +msgid "Check for I2P and news updates" +msgstr "检查I2P软件及新闻更新" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:305 +msgid "News & I2P Updates" +msgstr "软件及新闻更新" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:309 +msgid "Update In Progress" +msgstr "更新中" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:317 +msgid "News URL" +msgstr "新闻链接" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:321 +msgid "Refresh frequency" +msgstr "更新频率" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:327 +msgid "Update policy" +msgstr "升级策略" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331 +msgid "Update through the eepProxy?" +msgstr "通过I2P代理更新?" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:335 +msgid "eepProxy host" +msgstr "I2P代理主机" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:339 +msgid "eepProxy port" +msgstr "I2P代理端口" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:343 +msgid "Update URLs" +msgstr "更新链接" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:347 +msgid "Trusted keys" +msgstr "可信公钥" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:351 +msgid "Update with unsigned development builds?" +msgstr "更新包括未签名的开发版?" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:355 +msgid "Unsigned Build URL" +msgstr "未签名软件链接" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 +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:367 +msgid "Save" +msgstr "保存" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:115 +msgid "Internal Error" +msgstr "内部错误" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:117 +msgid "Router Console" +msgstr "路由控制台" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:121 +msgid "Configuration" +msgstr "设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129 +msgid "Sorry! There has been an internal error." +msgstr "抱歉!程序发生内部错误。" + +#. note to translators - both parameters are URLs +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:133 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:232 +#, java-format +msgid "Please report bugs on {0} or {1}." +msgstr "Bug报告请到 {0} 或 {1}。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 +msgid "You may use the username \"guest\" and password \"guest\" if you do not wish to register." +msgstr "如果您不想注册可以用“guest”作为用户名和密码登陆。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 +msgid "Please include this information in bug reports" +msgstr "报告问题时请包括以下信息" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:141 +msgid "Error Details" +msgstr "错误详情" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:143 +#, java-format +msgid "Error {0}" +msgstr "错误 {0}" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:163 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:228 +msgid "I2P Version and Running Environment" +msgstr "I2P 版本及运行环境" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 +msgid "Note that system information, log timestamps, and log messages may provide clues to your location; please review everything you include in a bug report." +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:242 +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:244 +msgid "Error 404" +msgstr "错误 404" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:249 +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:227 +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:226 +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:226 +msgid "I2P Router Logs" +msgstr "I2P 路由器日志" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:281 +msgid "Critical Logs" +msgstr "关键日志" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:285 +msgid "Router Logs" +msgstr "路由器日志" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:291 +msgid "Service (Wrapper) Logs" +msgstr "服务(封装)日志" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:105 +msgid "network database summary" +msgstr "I2P 网络数据库概况" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:226 +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 "Web程序(war)未找到" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:230 +msgid "Web Application Not Running" +msgstr "Web程序(.war)未运行" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:232 +msgid "The requested web application is not running." +msgstr "您所访问的Web程序未启动。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:234 +msgid "Please visit the <a href=\"/configclients.jsp#webapp\">config clients page</a> to start it." +msgstr "请先在<a href=\"/configclients.jsp#webapp\">配置客户端页面</a>中启动它。" + +#: ../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:226 +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:226 +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:243 +msgid "I2P Router Statistics" +msgstr "I2P 路由器统计数据" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:248 +#, java-format +msgid "Disable {0} 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:226 +msgid "I2P Tunnel Summary" +msgstr "I2P 隧道概况" + +#~ msgid "" +#~ "Ensure that nothing blocks outbound HTTP, check <a target=\"_top\" href=" +#~ "\"logs.jsp\">logs</a> and if nothing helps, read the <a target=\"_top\" " +#~ "href=\"http://www.i2p2.de/faq.html\">FAQ</a> about reseeding manually." +#~ msgstr "" +#~ "请保证HTTP通信没有受阻,检查 <a target=\"_top\" href=\"logs.jsp\">日志</" +#~ "a> ,如果问题仍无法解决,请参照 <a target=\"_top\" href=\"http://www.i2p2." +#~ "de/faq.html\">FAQ</a> 进行手动补种。" +#~ msgid "Last reseed failed fully (failed reading seed URL)." +#~ msgstr "上次补种尝试失败(读取补种URL失败)。" +#~ msgid "Last reseed failed fully (no routerInfo URLs at seed URL)." +#~ msgstr "上次补种尝试失败(补种服务器未返回任何路由信息URL)。" +#~ msgid "Last reseed failed partly ({0}% of {1})." +#~ msgstr "上次补种部分失败({0}%失败,共{1})" +#~ msgid "Last reseed failed ({0}% of {1})." +#~ msgstr "上次补种失败({0}%失败,共{1})" +#~ msgid "Last reseed failed fully (exception caught)." +#~ msgstr "上次补种失败(exception caught)." +#~ msgid "Show systray icon" +#~ msgstr "显示托盘图标" +#~ msgid "System tray icon enabled." +#~ msgstr "系统托盘图标已启用" +#~ msgid "System tray icon feature not supported on this platform. Sorry!" +#~ msgstr "您的平台不支持系统托盘图标功能" +#~ msgid "Warning: unable to contact the systray manager" +#~ msgstr "警告:与托盘管理器通讯失败" +#~ msgid "Hide systray icon" +#~ msgstr "隐藏系统图标" +#~ msgid "System tray icon disabled." +#~ msgstr "系统托盘已禁用" +#~ msgid "minute" +#~ msgstr "分钟" +#~ msgid "minutes" +#~ msgstr "分钟" +#~ msgid "avg value" +#~ msgstr "均值" +#~ msgid "events" +#~ msgstr "事件" +#~ msgid "lifetime average" +#~ msgstr "总平均值" +#~ msgid "peak average" +#~ msgstr "峰值平均值" +#~ msgid "Systray integration" +#~ msgstr "使用系统托盘" +#~ 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 平台允许小程序进驻系统托盘,让你可以查看路由状态" +#~ msgid "" +#~ "(later on, I2P client applications will be able to integrate their own " +#~ "functionality into the system tray as well)." +#~ msgstr "(以后的 I2P 客户端程序也会将它们的功能集成到系统托盘里)。" +#~ msgid "" +#~ "If you are on windows, you can either enable or disable that icon here." +#~ msgstr "如果你使用Windows, 可以在这里开启或关闭这个托盘图标。" +#~ msgid "" +#~ "Please report bugs on <a href=\"http://trac.i2p2.i2p/newticket\">trac." +#~ "i2p2.i2p</a>." +#~ msgstr "" +#~ "如果您发现错误请报告至<a href=\"http://trac.i2p2.i2p/newticket\">trac." +#~ "i2p2.i2p</a>。" +#~ msgid "hops" +#~ msgstr "跳点" +#~ msgid "tunnels" +#~ msgstr "隧道" +#~ msgid "Tunnels in/out" +#~ msgstr "通道(上/下行)" +#~ msgid "" +#~ "WebApp configuration saved successfully - restart required to take effect." +#~ msgstr "WebApp设置保存成功 - 程序重启后生效" +#~ msgid "Start Now" +#~ msgstr "立即启动" +#~ msgid "Show the router's workload, and how it's performing" +#~ msgstr "显示I2P路由器的负载与工作状况" +#~ msgid "Jobs" +#~ msgstr "作业" +#~ msgid "This is useful in some situations" +#~ msgstr "重启在某些情况下有用" +#~ msgid "I2P will install (or remove) a service accordingly." +#~ msgstr "I2P将相应的将自身安装为服务(或卸载服务)。" +#~ msgid "Expl. + Client" +#~ msgstr "探测+客户" +#~ msgid "Part. from + to" +#~ msgstr "相邻共享节点" +#~ msgid "Depth" +#~ msgstr "深度" +#~ msgid "Addresses" +#~ msgstr "地址" +#~ msgid "view without" +#~ msgstr "查看不含" +#~ msgid "view with" +#~ msgstr "查看含" +#~ msgid "stats" +#~ msgstr "统计" +#~ msgid "View" +#~ msgstr "查看" +#~ msgid "Not Failing" +#~ msgstr "标准" +#~ msgid "" +#~ "If you want the router to restart itself after shutting down, you can " +#~ "choose one of the following. 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. A graceful restart will take a few minutes (but your peers " +#~ "will appreciate your patience), while a hard restart does so " +#~ "immediately. After tearing down the router, it will wait 1 minute before " +#~ "starting back up again." +#~ msgstr "" +#~ "如果你想要路由器关闭后重新启动,可以选择下面的选项。重启在某些情况下有用 " +#~ "- 例如当修改了客户程序仅在启动时读取的设置比如路由器控制界面的密码,监听的" +#~ "接口。平滑重启可能会等待几分钟的时间 (但其他节点一定会感激你的耐心),硬重" +#~ "启可以立即完成。 路由关闭后将等待1分钟再重新启动。" +#~ msgid "" +#~ "On the windows platform, there is a small application to sit in the " +#~ "system tray, allowing you to view the router's status (later on, I2P " +#~ "client applications will be able to integrate their own functionality " +#~ "into the system tray as well). If you are on windows, you can either " +#~ "enable or disable that icon here." +#~ msgstr "" +#~ "windows 平台允许小程序进驻系统托盘,让你可以查看路由状态,(以后的 I2P 客户" +#~ "端程序也会将它们的功能集成到系统托盘里)。如果你使用Windows, 可以在这里开启" +#~ "或关闭这个托盘图标。" + From 59a16cb6892a14f6d3dcb787e8647af809649121 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 10 Feb 2011 15:17:36 +0000 Subject: [PATCH 170/463] tweak --- installer/resources/readme/readme.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer/resources/readme/readme.html b/installer/resources/readme/readme.html index e6cfe69a8..176f79d8b 100644 --- a/installer/resources/readme/readme.html +++ b/installer/resources/readme/readme.html @@ -89,7 +89,7 @@ If you're behind a prohibitive firewall but have unrestricted outbound access, I make sure your browser's proxy is set to access http traffic (<i>not</i> https, <i>not</i> socks) via <code>127.0.0.1 port 4444</code>. If you need some help, there's <a href="http://www.i2p2.i2p/htproxyports.html" target="_blank">a guide</a> to configuring your browser for I2P use, also <a href="http://www.i2p2.de/htproxyports.html" target="_blank">available</a> on the normal web. </li> <li class="tidylist"><b>Check Your Logs</b><br><a href="/logs">Logs</a> may help resolve a problem. You may wish to paste excerpts in a <a href="http://forum.i2p/viewforum.php?f=10" target="_blank">forum</a> for help, or perhaps <a href="http://paste.i2p2.i2p/" target="_blank">paste</a> it instead and reference the link on IRC for help.</li> - <li class="tidylist"><b>Verify Java is Up to Date</b><br>Ensure your Java is up to date [version 1.6 recommended and required for some features]. If you don't have Java installed, you probably want some implementation of the JRE (<a href="https://secure.wikimedia.org/wikipedia/en/wiki/JRE" target="_blank">Java Runtime Engine</a>); if you're a developer, the <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Java_SDK" target="_blank">SDK</a> may also be of interest, and possibly <a href="http://ant.apache.org/" target="_blank">Apache Ant</a> which we use to build the I2P Java binaries. + <li class="tidylist"><b>Verify Java is Up to Date</b><br>Ensure your Java is up to date [version 1.6 recommended and required for some features]. If you don't have Java installed, you probably want some implementation of the JRE (<a href="https://secure.wikimedia.org/wikipedia/en/wiki/JRE" target="_blank">Java Runtime Environment</a>); if you're a developer, the <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Java_SDK" target="_blank">SDK</a> may also be of interest, and possibly <a href="http://ant.apache.org/" target="_blank">Apache Ant</a> which we use to build the I2P Java binaries. </li> <li class="tidylist"><b>Problems running on Legacy Hardware</b><br>[Linux/Unix/Solaris] If you can't start the router with <code>i2p/i2prouter start</code> try the <code>runplain.sh</code> script in the same directory. Root privileges are usually not required to run I2P. If you need to compile the <a href="http://www.i2p2.i2p/jbigi.html" target="_blank">jBigi library</a> (which is necessary in rare cases), consult appropriate documentation, visit the forums, or come pay a visit to our <a href="irc://127.0.0.1:6668/i2p-dev">IRC developer channel</a>. From 5eb511b0bf978c8d82ef188ab608eb262252b719 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 10 Feb 2011 15:20:05 +0000 Subject: [PATCH 171/463] * Streaming: Don't use iter.remove() on a COWAS --- .../java/src/net/i2p/client/streaming/MessageHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/streaming/java/src/net/i2p/client/streaming/MessageHandler.java b/apps/streaming/java/src/net/i2p/client/streaming/MessageHandler.java index a94b1a4da..632b904b7 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/MessageHandler.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/MessageHandler.java @@ -81,8 +81,8 @@ class MessageHandler implements I2PSessionListener { for (Iterator<I2PSocketManager.DisconnectListener> iter = _listeners.iterator(); iter.hasNext(); ) { I2PSocketManager.DisconnectListener lsnr = iter.next(); lsnr.sessionDisconnected(); - iter.remove(); } + _listeners.clear(); } /** From fc38d54bcbd5fb49263b80af7706598991fc52a5 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 10 Feb 2011 15:21:23 +0000 Subject: [PATCH 172/463] * I2CP: Correctly close internal connections on the router side when closed by the client, was causing massive memory leak for internal clients using lots of sessions (thanks sponge) --- core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java b/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java index 55b29b310..13c82cc6b 100644 --- a/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java +++ b/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java @@ -42,10 +42,12 @@ public class QueuedI2CPMessageReader extends I2CPMessageReader { I2CPMessage msg = null; try { msg = in.take(); - if (msg.getType() == PoisonI2CPMessage.MESSAGE_TYPE) + if (msg.getType() == PoisonI2CPMessage.MESSAGE_TYPE) { + _listener.disconnected(QueuedI2CPMessageReader.this); cancelRunner(); - else + } else { _listener.messageReceived(QueuedI2CPMessageReader.this, msg); + } } catch (InterruptedException ie) {} } // ??? unused From e68fbc0243f121060fc61da81bc9e5337f15668f Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 10 Feb 2011 17:08:10 +0000 Subject: [PATCH 173/463] remove debug nulling, was causing NPE at session close --- core/java/src/net/i2p/data/i2cp/I2CPMessageReader.java | 3 --- .../src/net/i2p/internal/QueuedI2CPMessageReader.java | 8 +------- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/core/java/src/net/i2p/data/i2cp/I2CPMessageReader.java b/core/java/src/net/i2p/data/i2cp/I2CPMessageReader.java index 99990e0b5..39633881e 100644 --- a/core/java/src/net/i2p/data/i2cp/I2CPMessageReader.java +++ b/core/java/src/net/i2p/data/i2cp/I2CPMessageReader.java @@ -197,9 +197,6 @@ public class I2CPMessageReader { } } _stream = null; - _listener = null; - _reader = null; - _readerThread = null; } } } diff --git a/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java b/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java index 13c82cc6b..86f82241b 100644 --- a/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java +++ b/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java @@ -11,13 +11,11 @@ import net.i2p.util.I2PThread; * @since 0.8.3 */ public class QueuedI2CPMessageReader extends I2CPMessageReader { - private /* final */ I2CPMessageQueue in; + private final I2CPMessageQueue in; public QueuedI2CPMessageReader(I2CPMessageQueue in, I2CPMessageEventListener lsnr) { super(lsnr); this.in = in; - _reader = null; - _readerThread = null; _reader = new QueuedI2CPMessageReaderRunner(); _readerThread = new I2PThread(_reader, "I2CP Internal Reader " + (++__readerId), true); } @@ -61,10 +59,6 @@ public class QueuedI2CPMessageReader extends I2CPMessageReader { } } } - super.run(); // Since we are dead, this will do some clean up, nothing else :-) - in = null; - _readerThread = null; - _reader = null; } } } From 29028342b4c8a12ee0654527bf5660cbc688c091 Mon Sep 17 00:00:00 2001 From: mathiasdm <mathiasdm@mail.i2p> Date: Thu, 10 Feb 2011 17:09:18 +0000 Subject: [PATCH 174/463] Extra test to check if headers with the same key are maintained. --- .../net/i2p/i2ptunnel/I2PTunnelHTTPServer.java | 2 +- .../i2p/i2ptunnel/I2PTunnelHTTPServerTest.java | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java index bafa0387c..4e8fdf6c9 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java @@ -365,7 +365,7 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer { } } - private static String formatHeaders(Map<String, List<String>> headers, StringBuilder command) { + protected static String formatHeaders(Map<String, List<String>> headers, StringBuilder command) { StringBuilder buf = new StringBuilder(command.length() + headers.size() * 64); buf.append(command.toString().trim()).append("\r\n"); for (Iterator<String> iter = headers.keySet().iterator(); iter.hasNext(); ) { diff --git a/apps/i2ptunnel/java/test/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java b/apps/i2ptunnel/java/test/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java index f35787e55..8cd7cf322 100644 --- a/apps/i2ptunnel/java/test/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java +++ b/apps/i2ptunnel/java/test/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java @@ -41,5 +41,21 @@ public class I2PTunnelHTTPServerTest extends TestCase { assertEquals(headers.size(), 1); assertEquals(headers.get("someHeader").size(), 2); } + + public void testDuplicateHeadersFormat() throws IOException { + String headerString = "GET /something HTTP/1.1\r\n"; + headerString += "abc: def\r\n"; + headerString += "abc: blaaah\r\n"; + headerString += "manamana: toe toe toedoedoe\r\n"; + headerString += "\r\n"; + InputStream in = fillInputStream(headerString); + StringBuilder builder = new StringBuilder(128); + Map<String, List<String>> headers = I2PTunnelHTTPServer.readHeaders(in, builder, new String[0], null); + String result = I2PTunnelHTTPServer.formatHeaders(headers, builder); + int first = result.indexOf("abc"); + assertTrue(first >= 0); + int second = result.indexOf("abc", first); + assertTrue(second >= 0); + } } From 03bc4fc133bde149df604bcc4b5e955c7a1f5535 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 10 Feb 2011 17:09:29 +0000 Subject: [PATCH 175/463] change shared client default to false for newly created clients --- apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java | 2 +- 1 file changed, 1 insertion(+), 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 2184b434f..63f119bca 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java @@ -115,7 +115,7 @@ public class EditBean extends IndexBean { if (tun != null) return "true".equalsIgnoreCase(tun.getSharedClient()); else - return true; + return false; } public boolean shouldDelay(int tunnel) { From ae9c160734726565d41428bd49f31bcfc9d5de1d Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 10 Feb 2011 17:12:15 +0000 Subject: [PATCH 176/463] * i2psnark: - Improved magnet link parsing, use tr parameter if present --- .../java/src/org/klomp/snark/Snark.java | 19 ++++++-- .../src/org/klomp/snark/SnarkManager.java | 16 +++++-- .../src/org/klomp/snark/TrackerClient.java | 21 +++++---- .../org/klomp/snark/web/I2PSnarkServlet.java | 46 +++++++++++++++---- history.txt | 9 ++++ .../src/net/i2p/router/RouterVersion.java | 2 +- 6 files changed, 89 insertions(+), 24 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/Snark.java b/apps/i2psnark/java/src/org/klomp/snark/Snark.java index 98bcd4eed..1908a1193 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Snark.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Snark.java @@ -254,6 +254,7 @@ public class Snark private boolean stopped; private byte[] id; private byte[] infoHash; + private String additionalTrackerURL; private final I2PSnarkUtil _util; private final PeerCoordinatorSet _peerCoordinatorSet; private String trackerProblems; @@ -453,9 +454,10 @@ public class Snark * * @param torrent a fake name for now (not a file name) * @param ih 20-byte info hash + * @param trackerURL may be null * @since 0.8.4 */ - public Snark(I2PSnarkUtil util, String torrent, byte[] ih, + public Snark(I2PSnarkUtil util, String torrent, byte[] ih, String trackerURL, CompleteListener complistener, PeerCoordinatorSet peerCoordinatorSet, ConnectionAcceptor connectionAcceptor, boolean start, String rootDir) { @@ -465,6 +467,7 @@ public class Snark acceptor = connectionAcceptor; this.torrent = torrent; this.infoHash = ih; + this.additionalTrackerURL = trackerURL; this.rootDataDir = rootDir; stopped = true; id = generateID(); @@ -535,7 +538,7 @@ public class Snark acceptor = new ConnectionAcceptor(_util, serversocket, new PeerAcceptor(coordinator)); } // TODO pass saved closest DHT nodes to the tracker? or direct to the coordinator? - trackerclient = new TrackerClient(_util, meta, coordinator, this); + trackerclient = new TrackerClient(_util, meta, additionalTrackerURL, coordinator, this); } stopped = false; @@ -564,11 +567,13 @@ public class Snark fatal("Could not reopen storage", ioe); } } - TrackerClient newClient = new TrackerClient(_util, meta, coordinator, this); + TrackerClient newClient = new TrackerClient(_util, meta, additionalTrackerURL, coordinator, this); if (!trackerclient.halted()) trackerclient.halt(); trackerclient = newClient; trackerclient.start(); + } else { + debug("NOT starting TrackerClient???", NOTICE); } } /** @@ -825,6 +830,14 @@ public class Snark return true; } + /** + * @return trackerURL string from magnet-mode constructor, may be null + * @since 0.8.4 + */ + public String getTrackerURL() { + return additionalTrackerURL; + } + /** * Sets debug, ip and torrent variables then creates a Snark * instance. Calls usage(), which terminates the program, if diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index f0f7a1f54..29c6a1ed2 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -643,11 +643,15 @@ public class SnarkManager implements Snark.CompleteListener { * * @param name hex or b32 name from the magnet link * @param ih 20 byte info hash + * @param trackerURL may be null + * @param udpateStatus should we add this magnet to the config file, + * to save it across restarts, in case we don't get + * the metadata before shutdown? * @throws RuntimeException via Snark.fatal() * @since 0.8.4 */ - public void addMagnet(String name, byte[] ih, boolean updateStatus) { - Snark torrent = new Snark(_util, name, ih, this, + public void addMagnet(String name, byte[] ih, String trackerURL, boolean updateStatus) { + Snark torrent = new Snark(_util, name, ih, trackerURL, this, _peerCoordinatorSet, _connectionAcceptor, false, getDataDir().getPath()); @@ -1151,6 +1155,10 @@ public class SnarkManager implements Snark.CompleteListener { saveTorrentStatus(meta, storage.getBitField(), null); // no file priorities String name = (new File(getDataDir(), storage.getBaseName() + ".torrent")).getAbsolutePath(); try { + // put the announce URL in the file + String announce = snark.getTrackerURL(); + if (announce != null) + meta = meta.reannounce(announce); synchronized (_snarks) { locked_writeMetaInfo(meta, name); // put it in the list under the new name @@ -1183,9 +1191,9 @@ public class SnarkManager implements Snark.CompleteListener { String b64 = k.substring(PROP_META_MAGNET_PREFIX.length()); b64 = b64.replace('$', '='); byte[] ih = Base64.decode(b64); - // ignore value + // ignore value - TODO put tracker URL in value if (ih != null && ih.length == 20) - addMagnet("Magnet: " + I2PSnarkUtil.toHex(ih), ih, false); + addMagnet("Magnet: " + I2PSnarkUtil.toHex(ih), ih, null, false); // else remove from config? } } diff --git a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java index c8f1cd6c9..ad4cdae39 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java +++ b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java @@ -65,6 +65,7 @@ public class TrackerClient extends I2PAppThread private I2PSnarkUtil _util; private final MetaInfo meta; + private final String additionalTrackerURL; private final PeerCoordinator coordinator; private final Snark snark; private final int port; @@ -76,8 +77,10 @@ public class TrackerClient extends I2PAppThread /** * @param meta null if in magnet mode + * @param additionalTrackerURL may be null, from the ?tr= param in magnet mode, otherwise ignored */ - public TrackerClient(I2PSnarkUtil util, MetaInfo meta, PeerCoordinator coordinator, Snark snark) + public TrackerClient(I2PSnarkUtil util, MetaInfo meta, String additionalTrackerURL, + PeerCoordinator coordinator, Snark snark) { super(); // Set unique name. @@ -85,13 +88,11 @@ public class TrackerClient extends I2PAppThread setName("TrackerClient " + id.substring(id.length() - 12)); _util = util; this.meta = meta; + this.additionalTrackerURL = additionalTrackerURL; this.coordinator = coordinator; this.snark = snark; this.port = 6881; //(port == -1) ? 9 : port; - - stop = false; - started = false; } @Override @@ -138,17 +139,21 @@ public class TrackerClient extends I2PAppThread // todo: check for b32 matches as well trackers = new ArrayList(2); String primary = null; - if (meta != null) { + if (meta != null) primary = meta.getAnnounce(); + else if (additionalTrackerURL != null) + primary = additionalTrackerURL; + if (primary != null) { if (isValidAnnounce(primary)) { - trackers.add(new Tracker(meta.getAnnounce(), true)); + trackers.add(new Tracker(primary, true)); _log.debug("Announce: [" + primary + "] infoHash: " + infoHash); } else { _log.warn("Skipping invalid or non-i2p announce: " + primary); } - } - if (primary == null) + } else { + _log.warn("No primary announce"); primary = ""; + } List tlist = _util.getOpenTrackers(); if (tlist != null) { for (int i = 0; i < tlist.size(); i++) { diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 0b15de790..a3d77a814 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -65,7 +65,8 @@ public class I2PSnarkServlet extends Default { public static final String PROP_CONFIG_FILE = "i2psnark.configFile"; /** BEP 9 */ - private static final String MAGNET = "magnet:?xt=urn:btih:"; + private static final String MAGNET = "magnet:"; + private static final String MAGNET_FULL = MAGNET + "?xt=urn:btih:"; /** http://sponge.i2p/files/maggotspec.txt */ private static final String MAGGOT = "maggot://"; @@ -1406,13 +1407,22 @@ public class I2PSnarkServlet extends Default { private void addMagnet(String url) { String ihash; String name; + String trackerURL = null; if (url.startsWith(MAGNET)) { - ihash = url.substring(MAGNET.length()).trim(); - int amp = ihash.indexOf('&'); - if (amp >= 0) - ihash = ihash.substring(0, amp); + // magnet:?xt=urn:btih:0691e40aae02e552cfcb57af1dca56214680c0c5&tr=http://tracker2.postman.i2p/announce.php + String xt = getParam("xt", url); + if (xt == null || !xt.startsWith("urn:btih:")) { + _manager.addMessage(_("Invalid magnet URL {0}", url)); + return; + } + ihash = xt.substring("urn:btih:".length()); + trackerURL = getParam("tr", url); name = "Magnet " + ihash; + String dn = getParam("dn", url); + if (dn != null) + name += " (" + Storage.filterName(dn) + ')'; } else if (url.startsWith(MAGGOT)) { + // maggot://0691e40aae02e552cfcb57af1dca56214680c0c5:0b557bbdf8718e95d352fbe994dec3a383e2ede7 ihash = url.substring(MAGGOT.length()).trim(); int col = ihash.indexOf(':'); if (col >= 0) @@ -1439,7 +1449,27 @@ public class I2PSnarkServlet extends Default { _manager.addMessage(_("Invalid info hash in magnet URL {0}", url)); return; } - _manager.addMagnet(name, ih, true); + _manager.addMagnet(name, ih, trackerURL, true); + } + + private static String getParam(String key, String uri) { + int idx = uri.indexOf('?' + key + '='); + if (idx >= 0) { + idx += key.length() + 2; + } else { + idx = uri.indexOf('&' + key + '='); + if (idx >= 0) + idx += key.length() + 2; + } + if (idx < 0 || idx > uri.length()) + return null; + String rv = uri.substring(idx); + idx = rv.indexOf('&'); + if (idx >= 0) + rv = rv.substring(0, idx); + else + rv = rv.trim(); + return rv; } /** copied from ConfigTunnelsHelper */ @@ -1644,8 +1674,8 @@ public class I2PSnarkServlet extends Default { String hex = I2PSnarkUtil.toHex(snark.getInfoHash()); buf.append("<br>").append(toImg("magnet", _("Magnet link"))).append(" <a href=\"") - .append(MAGNET).append(hex).append("\">") - .append(MAGNET).append(hex).append("</a>"); + .append(MAGNET_FULL).append(hex).append("\">") + .append(MAGNET_FULL).append(hex).append("</a>"); // We don't have the hash of the torrent file //buf.append("<br>").append(_("Maggot link")).append(": <a href=\"").append(MAGGOT).append(hex).append(':').append(hex).append("\">") // .append(MAGGOT).append(hex).append(':').append(hex).append("</a>"); diff --git a/history.txt b/history.txt index ce975c687..3cee76c48 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,12 @@ +2011-02-10 zzz + * I2CP: Correctly close internal connections on the router side + when closed by the client, was causing massive memory leak + for internal clients using lots of sessions (thanks sponge) + * i2psnark: + - Improved magnet link parsing, use tr parameter if present + * i2ptunnel: Change shared clients default for new clients to false + * Streaming: Don't use iter.remove() on a COWAS + 2011-02-09 sponge * BOB: fixup delivery in config, adds config file versioning. * I2CP: Fix most of the I2CP leaks. Two leaks remain, but they are small. diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 4e28a2c8d..c10128fe6 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 = 5; + public final static long BUILD = 6; /** for example "-test" */ public final static String EXTRA = ""; From 8d15bb4a38eea9db49cd06224babf8919e28f0be Mon Sep 17 00:00:00 2001 From: sponge <sponge@mail.i2p> Date: Thu, 10 Feb 2011 19:47:30 +0000 Subject: [PATCH 177/463] I2CP: fix NPE in QueuedClientConnectionRunner --- history.txt | 3 +++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- .../net/i2p/router/client/QueuedClientConnectionRunner.java | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/history.txt b/history.txt index 3cee76c48..bbdeb990b 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,6 @@ +2011-02-10 sponge + * I2CP: fix NPE in QueuedClientConnectionRunner + 2011-02-10 zzz * I2CP: Correctly close internal connections on the router side when closed by the client, was causing massive memory leak diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index c10128fe6..fecba78d6 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 = 6; + public final static long BUILD = 7; /** for example "-test" */ public final static String EXTRA = ""; diff --git a/router/java/src/net/i2p/router/client/QueuedClientConnectionRunner.java b/router/java/src/net/i2p/router/client/QueuedClientConnectionRunner.java index 61c37c1f5..aac9b68e0 100644 --- a/router/java/src/net/i2p/router/client/QueuedClientConnectionRunner.java +++ b/router/java/src/net/i2p/router/client/QueuedClientConnectionRunner.java @@ -17,7 +17,7 @@ import net.i2p.util.Log; * @since 0.8.3 */ class QueuedClientConnectionRunner extends ClientConnectionRunner { - private /* final */ I2CPMessageQueue queue; + private final I2CPMessageQueue queue; /** * Create a new runner with the given queues @@ -46,7 +46,7 @@ class QueuedClientConnectionRunner extends ClientConnectionRunner { void stopRunning() { super.stopRunning(); queue.close(); - queue = null; + // queue = null; } /** From 1ad005ec6f5b7e60ce4b6c4f793fd42b90871eb8 Mon Sep 17 00:00:00 2001 From: sponge <sponge@mail.i2p> Date: Thu, 10 Feb 2011 20:47:17 +0000 Subject: [PATCH 178/463] Minor spelling corrections in comments, no new code. --- apps/BOB/src/net/i2p/BOB/DoCMDS.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/BOB/src/net/i2p/BOB/DoCMDS.java b/apps/BOB/src/net/i2p/BOB/DoCMDS.java index 81c29cc03..e070826d0 100644 --- a/apps/BOB/src/net/i2p/BOB/DoCMDS.java +++ b/apps/BOB/src/net/i2p/BOB/DoCMDS.java @@ -107,7 +107,7 @@ public class DoCMDS implements Runnable { private static final String C_visit = "visit"; private static final String C_zap = "zap"; - /* all the coomands available, plus description */ + /* all the commands available, plus description */ private static final String C_ALL[][] = { {C_help, C_help + " <command> * Get help on a command."}, {C_clear, C_clear + " * Clear the current nickname out of the list."}, @@ -962,7 +962,7 @@ public class DoCMDS implements Runnable { } catch (Exception e) { break die; } -// Finally say OK. + // Finally say OK. out.println("OK Nickname set to " + Arg); } @@ -1472,7 +1472,7 @@ public class DoCMDS implements Runnable { } // die out.print("ERROR A really bad error just happened, "); } // quit -// Say goodbye. + // Say goodbye. out.println("OK Bye!"); From 8ec3e58e273667d765785116e88af7e63f1e3ea9 Mon Sep 17 00:00:00 2001 From: sponge <sponge@mail.i2p> Date: Fri, 11 Feb 2011 11:07:33 +0000 Subject: [PATCH 179/463] I2PTunnel: fix NPE in I2PTunnelConnectClient --- .../java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java | 3 +++ history.txt | 3 +++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java index 70265a154..9cf28171f 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java @@ -169,6 +169,9 @@ public class I2PTunnelConnectClient extends I2PTunnelHTTPClientBase implements R // Use this rather than BufferedReader because we can't have readahead, // since we are passing the stream on to I2PTunnelRunner line = DataHelper.readLine(in); + if(line == null) { + line = ''; // prevent NPE, Is this what we need to do? + } line = line.trim(); if (_log.shouldLog(Log.DEBUG)) _log.debug(getPrefix(requestId) + "Line=[" + line + "]"); diff --git a/history.txt b/history.txt index bbdeb990b..ce552f5a9 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,6 @@ +2011-02-11 sponge + * I2PTunnel: fix NPE in I2PTunnelConnectClient + 2011-02-10 sponge * I2CP: fix NPE in QueuedClientConnectionRunner 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 dd2c5067aa0b585b0f3bc3e8b0200b041254a61a Mon Sep 17 00:00:00 2001 From: sponge <sponge@mail.i2p> Date: Fri, 11 Feb 2011 11:12:19 +0000 Subject: [PATCH 180/463] I2PTunnel: fix my own stupid bug in I2PTunnelConnectClient --- .../java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java | 2 +- router/java/src/net/i2p/router/RouterVersion.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java index 9cf28171f..455c170ba 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java @@ -170,7 +170,7 @@ public class I2PTunnelConnectClient extends I2PTunnelHTTPClientBase implements R // since we are passing the stream on to I2PTunnelRunner line = DataHelper.readLine(in); if(line == null) { - line = ''; // prevent NPE, Is this what we need to do? + line = ""; // prevent NPE, Is this what we need to do? } line = line.trim(); if (_log.shouldLog(Log.DEBUG)) 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 447156734463a3059af5a429b6cfa5f7c15e090f Mon Sep 17 00:00:00 2001 From: mathiasdm <mathiasdm@mail.i2p> Date: Fri, 11 Feb 2011 19:12:19 +0000 Subject: [PATCH 181/463] Fixed headless issue, added -8. --- .../src/net/i2p/desktopgui/Main.java | 19 +++----- .../i2p/router/web/RouterConsoleRunner.java | 44 ++++++++++++++++++- build.xml | 1 + history.txt | 4 ++ .../src/net/i2p/router/RouterVersion.java | 2 +- 5 files changed, 56 insertions(+), 14 deletions(-) diff --git a/apps/desktopgui/src/net/i2p/desktopgui/Main.java b/apps/desktopgui/src/net/i2p/desktopgui/Main.java index 03aa216b6..8cd1ea707 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/Main.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/Main.java @@ -55,19 +55,14 @@ public class Main { * Main method launching the application. */ public static void beginStartup(String[] args) { - boolean wasHeadless = Boolean.valueOf(System.getProperty("java.awt.headless")).booleanValue(); - if(wasHeadless) { - System.setProperty("java.awt.headless", "false"); - } - boolean headless_check = true; try { - // X permissions error is a java.lang.InternalError (a Throwable) - GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); - headless_check = ge.isHeadlessInstance(); - } catch (Throwable t) {} - if (wasHeadless) - System.setProperty("java.awt.headless", "true"); - if (headless_check) { + String headless = RouterManager.getRouterContext().getProperty("router.isHeadless"); + boolean isHeadless = Boolean.parseBoolean(headless); + if(isHeadless) { + return; + } + } + catch(Exception e) { return; } try { diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java index ada49d0aa..9f280ef2a 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -1,6 +1,7 @@ package net.i2p.router.web; import java.util.ArrayList; +import java.awt.GraphicsEnvironment; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; @@ -54,10 +55,51 @@ public class RouterConsoleRunner { private static final String DEFAULT_WEBAPPS_DIR = "./webapps/"; private static final String USAGE = "Bad RouterConsoleRunner arguments, check clientApp.0.args in your clients.config file! " + "Usage: [[port host[,host]] [-s sslPort [host[,host]]] [webAppsDir]]"; + private static final String PROP_HEADLESS = "router.isHeadless"; static { System.setProperty("org.mortbay.http.Version.paranoid", "true"); - System.setProperty("java.awt.headless", "true"); + + //Check if we are in a headless environment, set properties accordingly + List<RouterContext> contexts = RouterContext.listContexts(); + if(contexts != null && contexts.size() > 0) { + RouterContext context = contexts.get(0); + String headless = context.getProperty(PROP_HEADLESS); + if(headless == null) { + /* + * Let's check if we are in a headless environment. + * We do this by setting headless to false + * and trying to get the graphics environment. + * If this fails, we should be headless. + */ + System.setProperty("java.awt.headless", "false"); + try { + GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); + ge.isHeadlessInstance(); + context.setProperty(PROP_HEADLESS, "false"); + } + catch(InternalError e) { + context.setProperty(PROP_HEADLESS, "true"); + } + context.router().setConfigSetting(PROP_HEADLESS, context.getProperty(PROP_HEADLESS)); + context.router().saveConfig(); + context.router().shutdown(0); + } + boolean isHeadless = true; + try { + isHeadless = Boolean.parseBoolean(headless); + } + catch(Exception e) { + //Incorrect setting, let's choose headless for safety + isHeadless = true; + } + if(isHeadless) { + System.setProperty("java.awt.headless", "true"); + } + else { + System.setProperty("java.awt.headless", "false"); + } + } } /** diff --git a/build.xml b/build.xml index 20616d1c2..f2413e090 100644 --- a/build.xml +++ b/build.xml @@ -97,6 +97,7 @@ </target> <target name="buildDesktopGui" depends="buildCore, buildrouter" > + <ant dir="apps/desktopgui" target="clean" /> <ant dir="apps/desktopgui" target="jar" /> </target> diff --git a/history.txt b/history.txt index bbdeb990b..a11f78bbd 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,7 @@ +2011-02-11 Mathiasdm + * routerconsole: fixed graphs using jrobin; and headless issue + in general: no more switches between headless and non-headless. + 2011-02-10 sponge * I2CP: fix NPE in QueuedClientConnectionRunner 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 f11a5432338ff503c8e26a3817d1ed8fcda8b2cf Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Fri, 11 Feb 2011 23:59:10 +0000 Subject: [PATCH 182/463] * Clock: Cleanups and javadocs * EepGet: Cleanups and javadocs * Reseed: Use the reseeder as a clock source --- .../i2p/client/streaming/I2PSocketEepGet.java | 1 - .../src/net/i2p/router/web/NewsFetcher.java | 45 +----------- .../i2p/router/web/UnsignedUpdateHandler.java | 3 +- .../src/net/i2p/router/web/UpdateHandler.java | 3 +- core/java/src/net/i2p/time/Timestamper.java | 18 ++--- core/java/src/net/i2p/util/Clock.java | 13 +++- core/java/src/net/i2p/util/EepGet.java | 41 +++++------ .../java/src/net/i2p/router/RouterClock.java | 18 +++-- .../i2p/router/networkdb/reseed/Reseeder.java | 70 ++++++++++++++++--- .../transport/CommSystemFacadeImpl.java | 2 +- .../router/transport/ntcp/EstablishState.java | 4 +- .../router/transport/udp/PacketHandler.java | 2 +- .../src/net/i2p/router/util/RFC822Date.java | 51 ++++++++++++++ 13 files changed, 169 insertions(+), 102 deletions(-) create mode 100644 router/java/src/net/i2p/router/util/RFC822Date.java diff --git a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketEepGet.java b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketEepGet.java index 834c52160..d68270bc6 100644 --- a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketEepGet.java +++ b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketEepGet.java @@ -59,7 +59,6 @@ public class I2PSocketEepGet extends EepGet { // public EepGet(I2PAppContext ctx, boolean shouldProxy, String proxyHost, int proxyPort, int numRetries, long minSize, long maxSize, String outputFile, OutputStream outputStream, String url, boolean allowCaching, String etag, String postData) { super(ctx, false, null, -1, numRetries, minSize, maxSize, outputFile, outputStream, url, true, null, null); _socketManager = mgr; - _log = ctx.logManager().getLog(I2PSocketEepGet.class); } /** diff --git a/apps/routerconsole/java/src/net/i2p/router/web/NewsFetcher.java b/apps/routerconsole/java/src/net/i2p/router/web/NewsFetcher.java index adb238077..562c3e7ca 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/NewsFetcher.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/NewsFetcher.java @@ -3,11 +3,9 @@ package net.i2p.router.web; import java.io.File; import java.io.FileInputStream; import java.io.IOException; -import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; -import java.util.Locale; import net.i2p.I2PAppContext; import net.i2p.crypto.TrustedUpdate; @@ -15,6 +13,7 @@ import net.i2p.data.DataHelper; import net.i2p.router.Router; import net.i2p.router.RouterContext; import net.i2p.router.RouterVersion; +import net.i2p.router.util.RFC822Date; import net.i2p.util.EepGet; import net.i2p.util.EepHead; import net.i2p.util.FileUtil; @@ -73,7 +72,7 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener { if (_lastFetch == 0) _lastFetch = _lastUpdated; if (_lastModified == null) - _lastModified = to822Date(_lastFetch); + _lastModified = RFC822Date.to822Date(_lastFetch); } else { _lastUpdated = 0; _lastFetch = 0; @@ -212,7 +211,7 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener { String lastmod = get.getLastModified(); if (lastmod != null) { if (!(_context.isRouterContext())) return; - long modtime = parse822Date(lastmod); + long modtime = RFC822Date.parse822Date(lastmod); if (modtime <= 0) return; String lastUpdate = _context.getProperty(UpdateHandler.PROP_LAST_UPDATE_TIME); if (lastUpdate == null) { @@ -251,44 +250,6 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener { handler.update(); } - /** - * http://jimyjoshi.com/blog/2007/08/rfc822dateparsinginjava.html - * Apparently public domain - * Probably don't need all of these... - */ - private static final SimpleDateFormat rfc822DateFormats[] = new SimpleDateFormat[] { - new SimpleDateFormat("EEE, d MMM yy HH:mm:ss z", Locale.US), - new SimpleDateFormat("EEE, d MMM yy HH:mm z", Locale.US), - new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z", Locale.US), - new SimpleDateFormat("EEE, d MMM yyyy HH:mm z", Locale.US), - new SimpleDateFormat("d MMM yy HH:mm z", Locale.US), - new SimpleDateFormat("d MMM yy HH:mm:ss z", Locale.US), - new SimpleDateFormat("d MMM yyyy HH:mm z", Locale.US), - new SimpleDateFormat("d MMM yyyy HH:mm:ss z", Locale.US) - }; - - /** - * new Date(String foo) is deprecated, so let's do this the hard way - * - * @param s non-null - * @return -1 on failure - */ - public static long parse822Date(String s) { - for (int i = 0; i < rfc822DateFormats.length; i++) { - try { - Date date = rfc822DateFormats[i].parse(s); - if (date != null) - return date.getTime(); - } catch (ParseException pe) {} - } - return -1; - } - - /** @since 0.8.2 */ - private static String to822Date(long t) { - return (new SimpleDateFormat("d MMM yyyy HH:mm:ss z", Locale.US)).format(new Date(t)); - } - private static final String VERSION_STRING = "version=\"" + RouterVersion.VERSION + "\""; private static final String VERSION_PREFIX = "version=\""; private void checkForUpdates() { diff --git a/apps/routerconsole/java/src/net/i2p/router/web/UnsignedUpdateHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/UnsignedUpdateHandler.java index 8fcbd65c0..5a52ee883 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/UnsignedUpdateHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/UnsignedUpdateHandler.java @@ -4,6 +4,7 @@ import java.io.File; import net.i2p.router.Router; import net.i2p.router.RouterContext; +import net.i2p.router.util.RFC822Date; import net.i2p.util.EepGet; import net.i2p.util.FileUtil; import net.i2p.util.I2PAppThread; @@ -101,7 +102,7 @@ public class UnsignedUpdateHandler extends UpdateHandler { String lastmod = _get.getLastModified(); long modtime = 0; if (lastmod != null) - modtime = NewsFetcher.parse822Date(lastmod); + modtime = RFC822Date.parse822Date(lastmod); if (modtime <= 0) modtime = _context.clock().now(); _context.router().setConfigSetting(PROP_LAST_UPDATE_TIME, "" + modtime); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/UpdateHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/UpdateHandler.java index 174704ba6..423b9e52a 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/UpdateHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/UpdateHandler.java @@ -15,6 +15,7 @@ import net.i2p.data.DataHelper; import net.i2p.router.Router; import net.i2p.router.RouterContext; import net.i2p.router.RouterVersion; +import net.i2p.router.util.RFC822Date; import net.i2p.util.EepGet; import net.i2p.util.I2PAppThread; import net.i2p.util.Log; @@ -271,7 +272,7 @@ public class UpdateHandler { String lastmod = _get.getLastModified(); long modtime = 0; if (lastmod != null) - modtime = NewsFetcher.parse822Date(lastmod); + modtime = RFC822Date.parse822Date(lastmod); if (modtime <= 0) modtime = _context.clock().now(); _context.router().setConfigSetting(PROP_LAST_UPDATE_TIME, "" + modtime); diff --git a/core/java/src/net/i2p/time/Timestamper.java b/core/java/src/net/i2p/time/Timestamper.java index a84882215..2c798bab6 100644 --- a/core/java/src/net/i2p/time/Timestamper.java +++ b/core/java/src/net/i2p/time/Timestamper.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.StringTokenizer; +import java.util.concurrent.CopyOnWriteArrayList; import net.i2p.I2PAppContext; import net.i2p.util.I2PThread; @@ -56,7 +57,7 @@ public class Timestamper implements Runnable { public Timestamper(I2PAppContext ctx, UpdateListener lsnr, boolean daemon) { // moved here to prevent problems with synchronized statements. _servers = new ArrayList(3); - _listeners = new ArrayList(1); + _listeners = new CopyOnWriteArrayList(); // Don't bother starting a thread if we are disabled. // This means we no longer check every 5 minutes to see if we got enabled, // so the property must be set at startup. @@ -92,24 +93,16 @@ public class Timestamper implements Runnable { public boolean getIsDisabled() { return _disabled; } public void addListener(UpdateListener lsnr) { - synchronized (_listeners) { _listeners.add(lsnr); - } } public void removeListener(UpdateListener lsnr) { - synchronized (_listeners) { _listeners.remove(lsnr); - } } public int getListenerCount() { - synchronized (_listeners) { return _listeners.size(); - } } public UpdateListener getListener(int index) { - synchronized (_listeners) { return _listeners.get(index); - } } private void startTimestamper() { @@ -257,11 +250,8 @@ public class Timestamper implements Runnable { */ private void stampTime(long now, int stratum) { long before = _context.clock().now(); - synchronized (_listeners) { - for (int i = 0; i < _listeners.size(); i++) { - UpdateListener lsnr = _listeners.get(i); - lsnr.setNow(now, stratum); - } + for (UpdateListener lsnr : _listeners) { + lsnr.setNow(now, stratum); } if (_log.shouldLog(Log.DEBUG)) _log.debug("Stamped the time as " + now + " (delta=" + (now-before) + ")"); diff --git a/core/java/src/net/i2p/util/Clock.java b/core/java/src/net/i2p/util/Clock.java index 80696fc95..ee43af44c 100644 --- a/core/java/src/net/i2p/util/Clock.java +++ b/core/java/src/net/i2p/util/Clock.java @@ -49,14 +49,22 @@ public class Clock implements Timestamper.UpdateListener { /** if the clock skewed changes by less than this, ignore the update (so we don't slide all over the place) */ public final static long MIN_OFFSET_CHANGE = 5 * 1000; + /** + * Specify how far away from the "correct" time the computer is - a positive + * value means that the system time is slow, while a negative value means the system time is fast. + * + * @param offsetMs the delta from System.currentTimeMillis() (NOT the delta from now()) + */ public void setOffset(long offsetMs) { setOffset(offsetMs, false); } /** * Specify how far away from the "correct" time the computer is - a positive - * value means that we are slow, while a negative value means we are fast. + * value means that the system time is slow, while a negative value means the system time is fast. * Warning - overridden in RouterClock + * + * @param offsetMs the delta from System.currentTimeMillis() (NOT the delta from now()) */ public void setOffset(long offsetMs, boolean force) { if (false) return; @@ -101,6 +109,9 @@ public class Clock implements Timestamper.UpdateListener { fireOffsetChanged(delta); } + /* + * @return the current delta from System.currentTimeMillis() in milliseconds + */ public long getOffset() { return _offset; } diff --git a/core/java/src/net/i2p/util/EepGet.java b/core/java/src/net/i2p/util/EepGet.java index 3ad84e6bb..24155e59e 100644 --- a/core/java/src/net/i2p/util/EepGet.java +++ b/core/java/src/net/i2p/util/EepGet.java @@ -28,21 +28,21 @@ import net.i2p.util.InternalSocket; * Bug: a malformed url http://example.i2p (no trailing '/') fails cryptically */ public class EepGet { - protected I2PAppContext _context; - protected Log _log; - protected boolean _shouldProxy; - private String _proxyHost; - private int _proxyPort; - protected int _numRetries; - private long _minSize; // minimum and maximum acceptable response size, -1 signifies unlimited, - private long _maxSize; // applied both against whole responses and chunks - protected String _outputFile; - protected OutputStream _outputStream; + protected final I2PAppContext _context; + protected final Log _log; + protected final boolean _shouldProxy; + private final String _proxyHost; + private final int _proxyPort; + protected final int _numRetries; + private final long _minSize; // minimum and maximum acceptable response size, -1 signifies unlimited, + private final long _maxSize; // applied both against whole responses and chunks + protected final String _outputFile; + protected final OutputStream _outputStream; /** url we were asked to fetch */ - protected String _url; + protected final String _url; /** the URL we actually fetch from (may differ from the _url in case of redirect) */ protected String _actualURL; - private String _postData; + private final String _postData; private boolean _allowCaching; protected final List<StatusListener> _listeners; @@ -106,7 +106,7 @@ public class EepGet { String outputFile, OutputStream outputStream, String url, boolean allowCaching, String etag, String lastModified, String postData) { _context = ctx; - _log = ctx.logManager().getLog(EepGet.class); + _log = ctx.logManager().getLog(getClass()); _shouldProxy = (proxyHost != null) && (proxyHost.length() > 0) && (proxyPort > 0) && shouldProxy; _proxyHost = proxyHost; _proxyPort = proxyPort; @@ -118,13 +118,7 @@ public class EepGet { _url = url; _actualURL = url; _postData = postData; - _alreadyTransferred = 0; - _bytesTransferred = 0; _bytesRemaining = -1; - _currentAttempt = 0; - _transferFailed = false; - _headersRead = false; - _aborted = false; _fetchHeaderTimeout = CONNECT_TIMEOUT; _listeners = new ArrayList(1); _etag = etag; @@ -255,9 +249,9 @@ public class EepGet { public void attempting(String url); } protected class CLIStatusListener implements StatusListener { - private int _markSize; - private int _lineSize; - private long _startedOn; + private final int _markSize; + private final int _lineSize; + private final long _startedOn; private long _written; private long _previousWritten; private long _discarded; @@ -271,9 +265,6 @@ public class EepGet { public CLIStatusListener(int markSize, int lineSize) { _markSize = markSize; _lineSize = lineSize; - _written = 0; - _previousWritten = 0; - _discarded = 0; _lastComplete = _context.clock().now(); _startedOn = _lastComplete; _firstTime = true; diff --git a/router/java/src/net/i2p/router/RouterClock.java b/router/java/src/net/i2p/router/RouterClock.java index fd15d7db3..3f7b62960 100644 --- a/router/java/src/net/i2p/router/RouterClock.java +++ b/router/java/src/net/i2p/router/RouterClock.java @@ -24,7 +24,7 @@ public class RouterClock extends Clock { * All of this is @since 0.7.12 */ private static final long MAX_SLEW = 50; - private static final int DEFAULT_STRATUM = 8; + public static final int DEFAULT_STRATUM = 8; private static final int WORST_STRATUM = 16; /** the max NTP Timestamper delay is 30m right now, make this longer than that */ private static final long MIN_DELAY_FOR_WORSE_STRATUM = 45*60*1000; @@ -44,20 +44,27 @@ public class RouterClock extends Clock { /** * Specify how far away from the "correct" time the computer is - a positive - * value means that we are slow, while a negative value means we are fast. + * value means that the system time is slow, while a negative value means the system time is fast. * + * @param offsetMs the delta from System.currentTimeMillis() (NOT the delta from now()) */ @Override public void setOffset(long offsetMs, boolean force) { setOffset(offsetMs, force, DEFAULT_STRATUM); } - /** @since 0.7.12 */ + /** + * @since 0.7.12 + * @param offsetMs the delta from System.currentTimeMillis() (NOT the delta from now()) + */ private void setOffset(long offsetMs, int stratum) { setOffset(offsetMs, false, stratum); } - /** @since 0.7.12 */ + /** + * @since 0.7.12 + * @param offsetMs the delta from System.currentTimeMillis() (NOT the delta from now()) + */ private void setOffset(long offsetMs, boolean force, int stratum) { long delta = offsetMs - _offset; if (!force) { @@ -91,7 +98,7 @@ public class RouterClock extends Clock { } // If so configured, check sanity of proposed clock offset - if (Boolean.valueOf(_contextRC.getProperty("router.clockOffsetSanityCheck","true")).booleanValue() && + if (_contextRC.getBooleanPropertyDefaultTrue("router.clockOffsetSanityCheck") && _alreadyChanged) { // Try calculating peer clock skew @@ -192,6 +199,7 @@ public class RouterClock extends Clock { /* * How far we still have to slew, for diagnostics * @since 0.7.12 + * @deprecated for debugging only */ public long getDeltaOffset() { return _desiredOffset - _offset; diff --git a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java index 4c4c2ce91..93933aa51 100644 --- a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java +++ b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java @@ -14,7 +14,10 @@ import java.util.Set; import java.util.StringTokenizer; import net.i2p.I2PAppContext; +import net.i2p.data.DataHelper; +import net.i2p.router.RouterClock; import net.i2p.router.RouterContext; +import net.i2p.router.util.RFC822Date; import net.i2p.util.EepGet; import net.i2p.util.I2PAppThread; import net.i2p.util.Log; @@ -34,6 +37,7 @@ import net.i2p.util.Translate; * the router log, and the wrapper log. */ public class Reseeder { + /** FIXME don't keep a static reference, store _isRunning some other way */ private static ReseedRunner _reseedRunner; private final RouterContext _context; private final Log _log; @@ -46,6 +50,10 @@ public class Reseeder { /** * NOTE - URLs in both the standard and SSL groups should use the same hostname and path, * so the reseed process will not download from both. + * + * NOTE - Each seedURL must be a directory, it must end with a '/', + * it can't end with 'index.html', for example. Both because of how individual file + * URLs are constructed, and because SSLEepGet doesn't follow redirects. */ public static final String DEFAULT_SEED_URL = "http://a.netdb.i2p2.de/,http://c.netdb.i2p2.de/," + @@ -98,13 +106,13 @@ public class Reseeder { private String _proxyHost; private int _proxyPort; private SSLEepGet.SSLState _sslState; + private int _gotDate; + private long _attemptStarted; + private static final int MAX_DATE_SETS = 2; public ReseedRunner() { - _isRunning = false; - System.clearProperty(PROP_ERROR); - System.setProperty(PROP_STATUS, _("Reseeding")); - System.setProperty(PROP_INPROGRESS, "true"); } + public boolean isRunning() { return _isRunning; } /* @@ -113,6 +121,11 @@ public class Reseeder { */ public void run() { _isRunning = true; + System.clearProperty(PROP_ERROR); + System.setProperty(PROP_STATUS, _("Reseeding")); + System.setProperty(PROP_INPROGRESS, "true"); + _attemptStarted = 0; + _gotDate = 0; _sslState = null; // start fresh if (_context.getBooleanProperty(PROP_PROXY_ENABLE)) { _proxyHost = _context.getProperty(PROP_PROXY_HOST); @@ -152,8 +165,48 @@ public class Reseeder { public void bytesTransferred(long alreadyTransferred, int currentWrite, long bytesTransferred, long bytesRemaining, String url) {} public void transferComplete(long alreadyTransferred, long bytesTransferred, long bytesRemaining, String url, String outputFile, boolean notModified) {} public void transferFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt) {} - public void headerReceived(String url, int attemptNum, String key, String val) {} - public void attempting(String url) {} + + /** + * Use the Date header as a backup time source + */ + public void headerReceived(String url, int attemptNum, String key, String val) { + // We do this more than once, because + // the first SSL handshake may take a while, and it may take the server + // a while to render the index page. + if (_gotDate < MAX_DATE_SETS && "date".equalsIgnoreCase(key) && _attemptStarted > 0) { + long timeRcvd = System.currentTimeMillis(); + long serverTime = RFC822Date.parse822Date(val); + if (serverTime > 0) { + // add 500ms since it's 1-sec resolution, and add half the RTT + long now = serverTime + 500 + ((timeRcvd - _attemptStarted) / 2); + long offset = now - _context.clock().now(); + if (_context.clock().getUpdatedSuccessfully()) { + // 2nd time better than the first + if (_gotDate > 0) + _context.clock().setNow(now, RouterClock.DEFAULT_STRATUM - 2); + else + _context.clock().setNow(now, RouterClock.DEFAULT_STRATUM - 1); + if (_log.shouldLog(Log.WARN)) + _log.warn("Reseed adjusting clock by " + + DataHelper.formatDuration(Math.abs(offset))); + } else { + // No peers or NTP yet, this is probably better than the peer average will be for a while + // default stratum - 1, so the peer average is a worse stratum + _context.clock().setNow(now, RouterClock.DEFAULT_STRATUM - 1); + _log.logAlways(Log.WARN, "NTP failure, Reseed adjusting clock by " + + DataHelper.formatDuration(Math.abs(offset))); + } + _gotDate++; + } + } + } + + /** save the start time */ + public void attempting(String url) { + if (_gotDate < MAX_DATE_SETS) + _attemptStarted = System.currentTimeMillis(); + } + // End of EepGet status listeners /** @@ -235,7 +288,8 @@ public class Reseeder { **/ private int reseedOne(String seedURL, boolean echoStatus) { try { - final long timeLimit = _context.clock().now() + MAX_TIME_PER_HOST; + // Don't use context clock as we may be adjusting the time + final long timeLimit = System.currentTimeMillis() + MAX_TIME_PER_HOST; System.setProperty(PROP_STATUS, _("Reseeding: fetching seed URL.")); System.err.println("Reseeding from " + seedURL); URL dir = new URL(seedURL); @@ -275,7 +329,7 @@ public class Reseeder { int errors = 0; // 200 max from one URL for (Iterator<String> iter = urlList.iterator(); - iter.hasNext() && fetched < 200 && _context.clock().now() < timeLimit; ) { + iter.hasNext() && fetched < 200 && System.currentTimeMillis() < timeLimit; ) { try { System.setProperty(PROP_STATUS, _("Reseeding: fetching router info from seed URL ({0} successful, {1} errors).", fetched, errors)); diff --git a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java index d7849d532..780a25d6b 100644 --- a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java +++ b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java @@ -509,7 +509,7 @@ public class CommSystemFacadeImpl extends CommSystemFacade { buf.append("<tt>"); boolean found = _context.netDb().lookupRouterInfoLocally(peer) != null; if (found) - buf.append("<a title=\"").append(_("NetDb entry")).append("\" href=\"netdb.jsp?r=").append(h).append("\">"); + buf.append("<a title=\"").append(_("NetDb entry")).append("\" href=\"netdb?r=").append(h).append("\">"); buf.append(h); if (found) buf.append("</a>"); 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 d6109c640..3dfc1b893 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java +++ b/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java @@ -399,7 +399,7 @@ class EstablishState { _context.clock().setOffset(1000 * (_tsB - _tsA), true); _tsA = _tsB; if (diff != 0) - _log.error("NTP failure, NTCP adjusting clock by " + DataHelper.formatDuration(diff)); + _log.logAlways(Log.WARN, "NTP failure, NTCP adjusting clock by " + DataHelper.formatDuration(diff)); } else if (diff >= Router.CLOCK_FUDGE_FACTOR) { _context.statManager().addRateData("ntcp.invalidOutboundSkew", diff, 0); _transport.markReachable(_con.getRemotePeer().calculateHash(), false); @@ -617,7 +617,7 @@ class EstablishState { _context.clock().setOffset(1000 * (_tsB - tsA), true); tsA = _tsB; if (diff != 0) - _log.error("NTP failure, NTCP adjusting clock by " + DataHelper.formatDuration(diff)); + _log.logAlways(Log.WARN, "NTP failure, NTCP adjusting clock by " + DataHelper.formatDuration(diff)); } else if (diff >= Router.CLOCK_FUDGE_FACTOR) { _context.statManager().addRateData("ntcp.invalidInboundSkew", diff, 0); _transport.markReachable(alice.calculateHash(), true); diff --git a/router/java/src/net/i2p/router/transport/udp/PacketHandler.java b/router/java/src/net/i2p/router/transport/udp/PacketHandler.java index 230c1b792..ffbcf48ac 100644 --- a/router/java/src/net/i2p/router/transport/udp/PacketHandler.java +++ b/router/java/src/net/i2p/router/transport/udp/PacketHandler.java @@ -473,7 +473,7 @@ class PacketHandler { // so we have to wait for NTCP to do it _context.clock().setOffset(0 - skew, true); if (skew != 0) - _log.error("NTP failure, UDP adjusting clock by " + DataHelper.formatDuration(Math.abs(skew))); + _log.logAlways(Log.WARN, "NTP failure, UDP adjusting clock by " + DataHelper.formatDuration(Math.abs(skew))); } if (skew > GRACE_PERIOD) { diff --git a/router/java/src/net/i2p/router/util/RFC822Date.java b/router/java/src/net/i2p/router/util/RFC822Date.java new file mode 100644 index 000000000..6635bca8c --- /dev/null +++ b/router/java/src/net/i2p/router/util/RFC822Date.java @@ -0,0 +1,51 @@ +package net.i2p.router.util; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; + +/** + * Moved from NewsFetcher + * @since 0.8.5 + */ +public abstract class RFC822Date { + + /** + * http://jimyjoshi.com/blog/2007/08/rfc822dateparsinginjava.html + * Apparently public domain + * Probably don't need all of these... + */ + private static final SimpleDateFormat rfc822DateFormats[] = new SimpleDateFormat[] { + new SimpleDateFormat("EEE, d MMM yy HH:mm:ss z", Locale.US), + new SimpleDateFormat("EEE, d MMM yy HH:mm z", Locale.US), + new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z", Locale.US), + new SimpleDateFormat("EEE, d MMM yyyy HH:mm z", Locale.US), + new SimpleDateFormat("d MMM yy HH:mm z", Locale.US), + new SimpleDateFormat("d MMM yy HH:mm:ss z", Locale.US), + new SimpleDateFormat("d MMM yyyy HH:mm z", Locale.US), + new SimpleDateFormat("d MMM yyyy HH:mm:ss z", Locale.US) + }; + + /** + * new Date(String foo) is deprecated, so let's do this the hard way + * + * @param s non-null + * @return -1 on failure + */ + public static long parse822Date(String s) { + for (int i = 0; i < rfc822DateFormats.length; i++) { + try { + Date date = rfc822DateFormats[i].parse(s); + if (date != null) + return date.getTime(); + } catch (ParseException pe) {} + } + return -1; + } + + /** @since 0.8.2 */ + public static String to822Date(long t) { + return (new SimpleDateFormat("d MMM yyyy HH:mm:ss z", Locale.US)).format(new Date(t)); + } +} From 2d260a80fa4ab499a8441484d50c3028bf5069b1 Mon Sep 17 00:00:00 2001 From: walking <walking@mail.i2p> Date: Sat, 12 Feb 2011 10:50:58 +0000 Subject: [PATCH 183/463] fix msgbundle under windows --- apps/routerconsole/java/build.xml | 10 ++++------ apps/routerconsole/java/bundle-messages.sh | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/apps/routerconsole/java/build.xml b/apps/routerconsole/java/build.xml index 6e7d765aa..fdb976fbe 100644 --- a/apps/routerconsole/java/build.xml +++ b/apps/routerconsole/java/build.xml @@ -86,9 +86,8 @@ <exec executable="sh" osfamily="mac" failifexecutionfails="false" > <arg value="./bundle-messages.sh" /> </exec> - <exec executable="cmd" osfamily="windows" failifexecutionfails="false" > - <arg value="/c" /> - <arg value="bundle-messages.bat" /> + <exec executable="sh" osfamily="windows" failifexecutionfails="false" > + <arg value="./bundle-messages.sh" /> </exec> <!-- jar again to get the latest messages_*.class files --> <jar destfile="./build/routerconsole.jar" basedir="./build/obj" includes="**/*.class" update="true" /> @@ -106,9 +105,8 @@ <arg value="./bundle-messages.sh" /> <arg value="-p" /> </exec> - <exec executable="cmd" osfamily="windows" failifexecutionfails="true" > - <arg value="/c" /> - <arg value="bundle-messages.bat" /> + <exec executable="sh" osfamily="windows" failifexecutionfails="true" > + <arg value="./bundle-messages.sh" /> <arg value="-p" /> </exec> </target> diff --git a/apps/routerconsole/java/bundle-messages.sh b/apps/routerconsole/java/bundle-messages.sh index dd422bf06..c7ceed5d5 100755 --- a/apps/routerconsole/java/bundle-messages.sh +++ b/apps/routerconsole/java/bundle-messages.sh @@ -18,6 +18,17 @@ then POUPDATE=1 fi +# on windows, one must specify the path of commnad find +# since windows has its own retarded version of find. +if which find|grep -q -i windows ; then + export PATH=.:/bin:/usr/local/bin:$PATH +fi +# Fast mode - update ondemond +echo Placing a file named messages_{LangCode}.only in locale folder, +echo will limit .po file update to the language specified by {LangCode}. +LG2=$(find ../locale -iname messages_*.only|tail -1) +[ LG2 ] && LG2=${LG2#../locale/messages_} && LG2=${LG2%.only} + # # generate strings/Countries.java from ../../../installer/resources/countries.txt # @@ -53,6 +64,11 @@ do # get language LG=${i#../locale/messages_} LG=${LG%.po} + + # skip, if specified + if [ $LG2 ]; then + [ $LG != $LG2 ] && continue || echo INFO: Language update is set to [$LG2] only. + fi if [ "$POUPDATE" = "1" ] then From 93045c2a8d1cbb5e6fb70746fc104e19e1b7f972 Mon Sep 17 00:00:00 2001 From: walking <walking@mail.i2p> Date: Sat, 12 Feb 2011 11:30:21 +0000 Subject: [PATCH 184/463] make windoz msg bundling suck less --- apps/desktopgui/build.xml | 12 +++------ apps/desktopgui/bundle-messages.sh | 17 ++++++++++++- apps/i2psnark/java/bmsg.sh | 17 ------------- apps/i2psnark/java/build.xml | 14 +++++------ apps/i2psnark/java/bundle-messages.bat | 28 --------------------- apps/i2psnark/java/bundle-messages.sh | 16 ++++++++++++ apps/i2ptunnel/java/bmsg.sh | 17 ------------- apps/i2ptunnel/java/build.xml | 14 +++++------ apps/i2ptunnel/java/bundle-messages.bat | 28 --------------------- apps/i2ptunnel/java/bundle-messages.sh | 16 ++++++++++++ apps/routerconsole/java/bmsg.sh | 17 ------------- apps/routerconsole/java/build.xml | 6 ++--- apps/routerconsole/java/bundle-messages.bat | 28 --------------------- apps/susidns/src/bmsg.sh | 17 ------------- apps/susidns/src/build.xml | 14 +++++------ apps/susidns/src/bundle-messages.bat | 28 --------------------- apps/susidns/src/bundle-messages.sh | 16 ++++++++++++ 17 files changed, 89 insertions(+), 216 deletions(-) delete mode 100644 apps/i2psnark/java/bmsg.sh delete mode 100644 apps/i2psnark/java/bundle-messages.bat delete mode 100644 apps/i2ptunnel/java/bmsg.sh delete mode 100644 apps/i2ptunnel/java/bundle-messages.bat delete mode 100644 apps/routerconsole/java/bmsg.sh delete mode 100644 apps/routerconsole/java/bundle-messages.bat delete mode 100644 apps/susidns/src/bmsg.sh delete mode 100644 apps/susidns/src/bundle-messages.bat diff --git a/apps/desktopgui/build.xml b/apps/desktopgui/build.xml index e4af84393..f5de9ff4f 100644 --- a/apps/desktopgui/build.xml +++ b/apps/desktopgui/build.xml @@ -45,10 +45,8 @@ <exec executable="sh" osfamily="mac" failifexecutionfails="true" > <arg value="./bundle-messages.sh" /> </exec> - <exec executable="cmd" osfamily="windows" failifexecutionfails="true" > - <arg value="/c" /> - <!-- no leading ./ here, windoz complains about it. --> - <arg value="bundle-messages.bat" /> + <exec executable="sh" osfamily="windows" failifexecutionfails="true" > + <arg value="./bundle-messages.sh" /> </exec> <jar basedir="${build}" destfile="${dist}/${jar}"> <manifest> @@ -82,10 +80,8 @@ <arg value="./bundle-messages.sh" /> <arg value="-p" /> </exec> - <exec executable="cmd" osfamily="windows" failifexecutionfails="true" > - <arg value="/c" /> - <!-- no leading ./ here, windoz complains about it. --> - <arg value="bundle-messages.bat" /> + <exec executable="sh" osfamily="windows" failifexecutionfails="true" > + <arg value="./bundle-messages.sh" /> <arg value="-p" /> </exec> </target> diff --git a/apps/desktopgui/bundle-messages.sh b/apps/desktopgui/bundle-messages.sh index 4762e9a8b..acd52a353 100644 --- a/apps/desktopgui/bundle-messages.sh +++ b/apps/desktopgui/bundle-messages.sh @@ -19,6 +19,17 @@ then POUPDATE=1 fi +# on windows, one must specify the path of commnad find +# since windows has its own retarded version of find. +if which find|grep -q -i windows ; then + export PATH=.:/bin:/usr/local/bin:$PATH +fi +# Fast mode - update ondemond +echo Placing a file named messages_{LangCode}.only in locale folder, +echo will limit .po file update to the language specified by {LangCode}. +LG2=$(find locale -iname messages_*.only|tail -1) +[ LG2 ] && LG2=${LG2#locale/messages_} && LG2=${LG2%.only} + # add ../java/ so the refs will work in the po file JPATHS="src" for i in locale/messages_*.po @@ -26,6 +37,11 @@ do # get language LG=${i#locale/messages_} LG=${LG%.po} + + # skip, if specified + if [ $LG2 ]; then + [ $LG != $LG2 ] && continue || echo INFO: Language update is set to [$LG2] only. + fi if [ "$POUPDATE" = "1" ] then @@ -33,7 +49,6 @@ do find $JPATHS -name *.java -newer $i > $TMPFILE fi - echo $LG if [ -s build/net/i2p/desktopgui/messages_$LG.class -a \ build/net/i2p/desktopgui/messages_$LG.class -nt $i -a \ ! -s $TMPFILE ] diff --git a/apps/i2psnark/java/bmsg.sh b/apps/i2psnark/java/bmsg.sh deleted file mode 100644 index b9d294b32..000000000 --- a/apps/i2psnark/java/bmsg.sh +++ /dev/null @@ -1,17 +0,0 @@ -# -# Update messages_xx.po and messages_xx.class files, -# from both java and jsp sources. -# Requires installed programs xgettext, msgfmt, msgmerge, and find. -# zzz - public domain -# - -## launching sh.exe with -login parameter will open a shell with the current path always pointing to \bin\ -## need to cd into our orignal path - where we call sh.exe from. - -cd $CALLFROM -## echo $PWD - -## except this everything is the same with bundle-message.sh -## walking - public domain :-D - -source bundle-messages.sh $PARAS \ No newline at end of file diff --git a/apps/i2psnark/java/build.xml b/apps/i2psnark/java/build.xml index 90f5cd6fe..2fbc2f507 100644 --- a/apps/i2psnark/java/build.xml +++ b/apps/i2psnark/java/build.xml @@ -59,15 +59,14 @@ <target name="bundle" depends="compile"> <!-- Update the messages_*.po files. We need to supply the bat file for windows, and then change the fail property to true --> - <exec executable="sh" osfamily="unix" failifexecutionfails="false" > + <exec executable="sh" osfamily="unix" failifexecutionfails="true" > <arg value="./bundle-messages.sh" /> </exec> - <exec executable="sh" osfamily="mac" failifexecutionfails="false" > + <exec executable="sh" osfamily="mac" failifexecutionfails="true" > <arg value="./bundle-messages.sh" /> </exec> - <exec executable="cmd" osfamily="windows" failifexecutionfails="false" > - <arg value="/c" /> - <arg value="bundle-messages.bat" /> + <exec executable="sh" osfamily="windows" failifexecutionfails="true" > + <arg value="./bundle-messages.sh" /> </exec> </target> @@ -81,9 +80,8 @@ <arg value="./bundle-messages.sh" /> <arg value="-p" /> </exec> - <exec executable="cmd" osfamily="windows" failifexecutionfails="true" > - <arg value="/c" /> - <arg value="bundle-messages.bat" /> + <exec executable="sh" osfamily="windows" failifexecutionfails="true" > + <arg value="./bundle-messages.sh" /> <arg value="-p" /> </exec> </target> diff --git a/apps/i2psnark/java/bundle-messages.bat b/apps/i2psnark/java/bundle-messages.bat deleted file mode 100644 index cb72cc5d1..000000000 --- a/apps/i2psnark/java/bundle-messages.bat +++ /dev/null @@ -1,28 +0,0 @@ -@echo off -set Callfrom=%cd% -set Paras=%1 - -rem before calling make sure you have msys and mingw 's "bin" path -rem in your current searching path -rem type "set path" to check -if not exist ..\locale\*.only goto updateALL - -rem put a messages_xx.only(eg messages_zh.only) into locale folder -rem this script will only touch the po file(eg zh) you specified, leaving other po files untact. -echo [tip] Puting a messages_{LangCode}.only (eg messages_zh.only) -echo into locale folder will restrict the PO file update -echo process to your choosen language ONLY. -for %%i in (..\locale\*.only) do set PO=%%~ni -echo [info] %PO%.only found, will ONLY update file : %PO%.po -for %%i in (..\locale\*.po) do if not %%~ni==%PO% ren %%i %%~ni.po- - -call sh --login %cd%\bmsg.sh - -for %%i in (..\locale\*.po-) do if not %%~ni==%PO% ren %%i %%~ni.po -goto end - -:updateALL -call sh --login %cd%\bmsg.sh - -:end -echo End of Message Bundling \ No newline at end of file diff --git a/apps/i2psnark/java/bundle-messages.sh b/apps/i2psnark/java/bundle-messages.sh index c09aa811f..d5d116ac3 100755 --- a/apps/i2psnark/java/bundle-messages.sh +++ b/apps/i2psnark/java/bundle-messages.sh @@ -18,6 +18,17 @@ then POUPDATE=1 fi +# on windows, one must specify the path of commnad find +# since windows has its own retarded version of find. +if which find|grep -q -i windows ; then + export PATH=.:/bin:/usr/local/bin:$PATH +fi +# Fast mode - update ondemond +echo Placing a file named messages_{LangCode}.only in locale folder, +echo will limit .po file update to the language specified by {LangCode}. +LG2=$(find ../locale -iname messages_*.only|tail -1) +[ LG2 ] && LG2=${LG2#../locale/messages_} && LG2=${LG2%.only} + # add ../java/ so the refs will work in the po file JPATHS="../java/src" for i in ../locale/messages_*.po @@ -26,6 +37,11 @@ do LG=${i#../locale/messages_} LG=${LG%.po} + # skip, if specified + if [ $LG2 ]; then + [ $LG != $LG2 ] && continue || echo INFO: Language update is set to [$LG2] only. + fi + if [ "$POUPDATE" = "1" ] then # make list of java files newer than the .po file diff --git a/apps/i2ptunnel/java/bmsg.sh b/apps/i2ptunnel/java/bmsg.sh deleted file mode 100644 index b9d294b32..000000000 --- a/apps/i2ptunnel/java/bmsg.sh +++ /dev/null @@ -1,17 +0,0 @@ -# -# Update messages_xx.po and messages_xx.class files, -# from both java and jsp sources. -# Requires installed programs xgettext, msgfmt, msgmerge, and find. -# zzz - public domain -# - -## launching sh.exe with -login parameter will open a shell with the current path always pointing to \bin\ -## need to cd into our orignal path - where we call sh.exe from. - -cd $CALLFROM -## echo $PWD - -## except this everything is the same with bundle-message.sh -## walking - public domain :-D - -source bundle-messages.sh $PARAS \ No newline at end of file diff --git a/apps/i2ptunnel/java/build.xml b/apps/i2ptunnel/java/build.xml index 163de6696..6ff511100 100644 --- a/apps/i2ptunnel/java/build.xml +++ b/apps/i2ptunnel/java/build.xml @@ -48,15 +48,14 @@ <target name="bundle" depends="compile, precompilejsp"> <!-- Update the messages_*.po files. We need to supply the bat file for windows, and then change the fail property to true --> - <exec executable="sh" osfamily="unix" failifexecutionfails="false" > + <exec executable="sh" osfamily="unix" failifexecutionfails="true" > <arg value="./bundle-messages.sh" /> </exec> - <exec executable="sh" osfamily="mac" failifexecutionfails="false" > + <exec executable="sh" osfamily="mac" failifexecutionfails="true" > <arg value="./bundle-messages.sh" /> </exec> - <exec executable="cmd" osfamily="windows" failifexecutionfails="false" > - <arg value="/c" /> - <arg value="bundle-messages.bat" /> + <exec executable="sh" osfamily="windows" failifexecutionfails="true" > + <arg value="./bundle-messages.sh" /> </exec> </target> @@ -70,9 +69,8 @@ <arg value="./bundle-messages.sh" /> <arg value="-p" /> </exec> - <exec executable="cmd" osfamily="windows" failifexecutionfails="true" > - <arg value="/c" /> - <arg value="bundle-messages.bat" /> + <exec executable="sh" osfamily="windows" failifexecutionfails="true" > + <arg value="./bundle-messages.sh" /> <arg value="-p" /> </exec> </target> diff --git a/apps/i2ptunnel/java/bundle-messages.bat b/apps/i2ptunnel/java/bundle-messages.bat deleted file mode 100644 index 20b42773b..000000000 --- a/apps/i2ptunnel/java/bundle-messages.bat +++ /dev/null @@ -1,28 +0,0 @@ -@echo off -set Callfrom=%cd% -set Paras=%1 - -rem before calling make sure you have msys and mingw 's "bin" path -rem in your current searching path -rem type "set path" to check -if not exist ..\locale\*.only goto updateALL - -rem put a messages_xx.only(eg messages_zh.only) into locale folder -rem this script will only touch the po file(eg zh) you specified, leaving other po files untact. -echo [tip] Puting a messages_{LangCode}.only (eg messages_zh.only) -echo into locale folder will restrict the PO file update -echo process to your choosen language ONLY. -for %%i in (..\locale\*.only) do set PO=%%~ni -echo [info] %PO%.po found, will ONLY update file : %PO%.po -for %%i in (..\locale\*.po) do if not %%~ni==%PO% ren %%i %%~ni.po- - -call sh --login %cd%\bmsg.sh - -for %%i in (..\locale\*.po-) do if not %%~ni==%PO% ren %%i %%~ni.po -goto end - -:updateALL -call sh --login %cd%\bmsg.sh - -:end -echo End of Message Bundling \ No newline at end of file diff --git a/apps/i2ptunnel/java/bundle-messages.sh b/apps/i2ptunnel/java/bundle-messages.sh index 236b0ad01..6b3f09dbd 100755 --- a/apps/i2ptunnel/java/bundle-messages.sh +++ b/apps/i2ptunnel/java/bundle-messages.sh @@ -18,6 +18,17 @@ then POUPDATE=1 fi +# on windows, one must specify the path of commnad find +# since windows has its own retarded version of find. +if which find|grep -q -i windows ; then + export PATH=.:/bin:/usr/local/bin:$PATH +fi +# Fast mode - update ondemond +echo Placing a file named messages_{LangCode}.only in locale folder, +echo will limit .po file update to the language specified by {LangCode}. +LG2=$(find ../locale -iname messages_*.only|tail -1) +[ LG2 ] && LG2=${LG2#../locale/messages_} && LG2=${LG2%.only} + # add ../java/ so the refs will work in the po file JPATHS="../java/src ../jsp/WEB-INF" for i in ../locale/messages_*.po @@ -26,6 +37,11 @@ do LG=${i#../locale/messages_} LG=${LG%.po} + # skip, if specified + if [ $LG2 ]; then + [ $LG != $LG2 ] && continue || echo INFO: Language update is set to [$LG2] only. + fi + if [ "$POUPDATE" = "1" ] then # make list of java files newer than the .po file diff --git a/apps/routerconsole/java/bmsg.sh b/apps/routerconsole/java/bmsg.sh deleted file mode 100644 index b9d294b32..000000000 --- a/apps/routerconsole/java/bmsg.sh +++ /dev/null @@ -1,17 +0,0 @@ -# -# Update messages_xx.po and messages_xx.class files, -# from both java and jsp sources. -# Requires installed programs xgettext, msgfmt, msgmerge, and find. -# zzz - public domain -# - -## launching sh.exe with -login parameter will open a shell with the current path always pointing to \bin\ -## need to cd into our orignal path - where we call sh.exe from. - -cd $CALLFROM -## echo $PWD - -## except this everything is the same with bundle-message.sh -## walking - public domain :-D - -source bundle-messages.sh $PARAS \ No newline at end of file diff --git a/apps/routerconsole/java/build.xml b/apps/routerconsole/java/build.xml index fdb976fbe..413521586 100644 --- a/apps/routerconsole/java/build.xml +++ b/apps/routerconsole/java/build.xml @@ -80,13 +80,13 @@ <!-- Update the messages_*.po files. We need to supply the bat file for windows, and then change the fail property to true --> - <exec executable="sh" osfamily="unix" failifexecutionfails="false" > + <exec executable="sh" osfamily="unix" failifexecutionfails="true" > <arg value="./bundle-messages.sh" /> </exec> - <exec executable="sh" osfamily="mac" failifexecutionfails="false" > + <exec executable="sh" osfamily="mac" failifexecutionfails="true" > <arg value="./bundle-messages.sh" /> </exec> - <exec executable="sh" osfamily="windows" failifexecutionfails="false" > + <exec executable="sh" osfamily="windows" failifexecutionfails="true" > <arg value="./bundle-messages.sh" /> </exec> <!-- jar again to get the latest messages_*.class files --> diff --git a/apps/routerconsole/java/bundle-messages.bat b/apps/routerconsole/java/bundle-messages.bat deleted file mode 100644 index cb72cc5d1..000000000 --- a/apps/routerconsole/java/bundle-messages.bat +++ /dev/null @@ -1,28 +0,0 @@ -@echo off -set Callfrom=%cd% -set Paras=%1 - -rem before calling make sure you have msys and mingw 's "bin" path -rem in your current searching path -rem type "set path" to check -if not exist ..\locale\*.only goto updateALL - -rem put a messages_xx.only(eg messages_zh.only) into locale folder -rem this script will only touch the po file(eg zh) you specified, leaving other po files untact. -echo [tip] Puting a messages_{LangCode}.only (eg messages_zh.only) -echo into locale folder will restrict the PO file update -echo process to your choosen language ONLY. -for %%i in (..\locale\*.only) do set PO=%%~ni -echo [info] %PO%.only found, will ONLY update file : %PO%.po -for %%i in (..\locale\*.po) do if not %%~ni==%PO% ren %%i %%~ni.po- - -call sh --login %cd%\bmsg.sh - -for %%i in (..\locale\*.po-) do if not %%~ni==%PO% ren %%i %%~ni.po -goto end - -:updateALL -call sh --login %cd%\bmsg.sh - -:end -echo End of Message Bundling \ No newline at end of file diff --git a/apps/susidns/src/bmsg.sh b/apps/susidns/src/bmsg.sh deleted file mode 100644 index b9d294b32..000000000 --- a/apps/susidns/src/bmsg.sh +++ /dev/null @@ -1,17 +0,0 @@ -# -# Update messages_xx.po and messages_xx.class files, -# from both java and jsp sources. -# Requires installed programs xgettext, msgfmt, msgmerge, and find. -# zzz - public domain -# - -## launching sh.exe with -login parameter will open a shell with the current path always pointing to \bin\ -## need to cd into our orignal path - where we call sh.exe from. - -cd $CALLFROM -## echo $PWD - -## except this everything is the same with bundle-message.sh -## walking - public domain :-D - -source bundle-messages.sh $PARAS \ No newline at end of file diff --git a/apps/susidns/src/build.xml b/apps/susidns/src/build.xml index 8244d37cf..ad20ad49a 100644 --- a/apps/susidns/src/build.xml +++ b/apps/susidns/src/build.xml @@ -80,15 +80,14 @@ <target name="bundle" depends="compile, precompilejsp"> <!-- Update the messages_*.po files. We need to supply the bat file for windows, and then change the fail property to true --> - <exec executable="sh" osfamily="unix" failifexecutionfails="false" > + <exec executable="sh" osfamily="unix" failifexecutionfails="true" > <arg value="./bundle-messages.sh" /> </exec> - <exec executable="sh" osfamily="mac" failifexecutionfails="false" > + <exec executable="sh" osfamily="mac" failifexecutionfails="true" > <arg value="./bundle-messages.sh" /> </exec> - <exec executable="cmd" osfamily="windows" failifexecutionfails="false" > - <arg value="/c" /> - <arg value="bundle-messages.bat" /> + <exec executable="sh" osfamily="windows" failifexecutionfails="true" > + <arg value="./bundle-messages.sh" /> </exec> </target> @@ -102,9 +101,8 @@ <arg value="./bundle-messages.sh" /> <arg value="-p" /> </exec> - <exec executable="cmd" osfamily="windows" failifexecutionfails="true" > - <arg value="/c" /> - <arg value="bundle-messages.bat" /> + <exec executable="sh" osfamily="windows" failifexecutionfails="true" > + <arg value="./bundle-messages.sh" /> <arg value="-p" /> </exec> </target> diff --git a/apps/susidns/src/bundle-messages.bat b/apps/susidns/src/bundle-messages.bat deleted file mode 100644 index cb72cc5d1..000000000 --- a/apps/susidns/src/bundle-messages.bat +++ /dev/null @@ -1,28 +0,0 @@ -@echo off -set Callfrom=%cd% -set Paras=%1 - -rem before calling make sure you have msys and mingw 's "bin" path -rem in your current searching path -rem type "set path" to check -if not exist ..\locale\*.only goto updateALL - -rem put a messages_xx.only(eg messages_zh.only) into locale folder -rem this script will only touch the po file(eg zh) you specified, leaving other po files untact. -echo [tip] Puting a messages_{LangCode}.only (eg messages_zh.only) -echo into locale folder will restrict the PO file update -echo process to your choosen language ONLY. -for %%i in (..\locale\*.only) do set PO=%%~ni -echo [info] %PO%.only found, will ONLY update file : %PO%.po -for %%i in (..\locale\*.po) do if not %%~ni==%PO% ren %%i %%~ni.po- - -call sh --login %cd%\bmsg.sh - -for %%i in (..\locale\*.po-) do if not %%~ni==%PO% ren %%i %%~ni.po -goto end - -:updateALL -call sh --login %cd%\bmsg.sh - -:end -echo End of Message Bundling \ No newline at end of file diff --git a/apps/susidns/src/bundle-messages.sh b/apps/susidns/src/bundle-messages.sh index b1cd377b3..3d0aa9d37 100755 --- a/apps/susidns/src/bundle-messages.sh +++ b/apps/susidns/src/bundle-messages.sh @@ -18,6 +18,17 @@ then POUPDATE=1 fi +# on windows, one must specify the path of commnad find +# since windows has its own retarded version of find. +if which find|grep -q -i windows ; then + export PATH=.:/bin:/usr/local/bin:$PATH +fi +# Fast mode - update ondemond +echo Placing a file named messages_{LangCode}.only in locale folder, +echo will limit .po file update to the language specified by {LangCode}. +LG2=$(find ../locale -iname messages_*.only|tail -1) +[ LG2 ] && LG2=${LG2#../locale/messages_} && LG2=${LG2%.only} + # add ../src/ so the refs will work in the po file JPATHS="../src/java/ ../src/tmp/" for i in ../locale/messages_*.po @@ -26,6 +37,11 @@ do LG=${i#../locale/messages_} LG=${LG%.po} + # skip, if specified + if [ $LG2 ]; then + [ $LG != $LG2 ] && continue || echo INFO: Language update is set to [$LG2] only. + fi + if [ "$POUPDATE" = "1" ] then # make list of java files newer than the .po file From bf6b81f85a18a81592f384890265424cf40dcbdc Mon Sep 17 00:00:00 2001 From: walking <walking@mail.i2p> Date: Sat, 12 Feb 2011 11:36:38 +0000 Subject: [PATCH 185/463] translation fix --- apps/routerconsole/locale/messages_zh.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/routerconsole/locale/messages_zh.po b/apps/routerconsole/locale/messages_zh.po index 8e283ab8e..d1826802a 100644 --- a/apps/routerconsole/locale/messages_zh.po +++ b/apps/routerconsole/locale/messages_zh.po @@ -144,7 +144,7 @@ msgstr "拒绝参与共享隧道" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:105 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 msgid "Reseeding" -msgstr "正在补种(引导网络启动)..." +msgstr "网络引导" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:128 #, java-format From 93010923f07c79624d807191c5cbdbfb652e78c6 Mon Sep 17 00:00:00 2001 From: walking <walking@mail.i2p> Date: Sat, 12 Feb 2011 11:58:31 +0000 Subject: [PATCH 186/463] minor wording --- apps/i2ptunnel/jsp/editServer.jsp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/i2ptunnel/jsp/editServer.jsp b/apps/i2ptunnel/jsp/editServer.jsp index 4f45b8667..3849c8609 100644 --- a/apps/i2ptunnel/jsp/editServer.jsp +++ b/apps/i2ptunnel/jsp/editServer.jsp @@ -374,7 +374,7 @@ <div class="rowItem"> <div id="optionsField" class="rowItem"> - <label><%=intl._("Inbound connection limits (0 to disable)")%><br><%=intl._("Per client")%>:</label> + <label><%=intl._("Inbound connection limits (0=unlimited)")%><br><%=intl._("Per client")%>:</label> </div> <div id="portField" class="rowItem"> <label><%=intl._("Per minute")%>:</label> @@ -405,7 +405,7 @@ </div> <div class="rowItem"> <div id="optionsField" class="rowItem"> - <label><%=intl._("Max concurrent connections (0 to disable)")%>:</label> + <label><%=intl._("Max concurrent connections (0=unlimited)")%>:</label> </div> <div id="portField" class="rowItem"> <input type="text" id="port" name="maxStreams" value="<%=editBean.getMaxStreams(curTunnel)%>" class="freetext" /> From 8781f89820ab4a4044608a8f7f7838d766930d28 Mon Sep 17 00:00:00 2001 From: walking <walking@mail.i2p> Date: Sat, 12 Feb 2011 12:12:04 +0000 Subject: [PATCH 187/463] update translation --- apps/desktopgui/locale/messages_zh.po | 81 ++--- apps/i2psnark/locale/messages_zh.po | 405 ++++++++++++----------- apps/i2ptunnel/locale/messages_zh.po | 58 ++-- apps/routerconsole/locale/messages_zh.po | 7 +- 4 files changed, 279 insertions(+), 272 deletions(-) diff --git a/apps/desktopgui/locale/messages_zh.po b/apps/desktopgui/locale/messages_zh.po index e5221b720..1aed8c46d 100644 --- a/apps/desktopgui/locale/messages_zh.po +++ b/apps/desktopgui/locale/messages_zh.po @@ -1,40 +1,41 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: src/net/i2p/desktopgui/ExternalTrayManager.java:23 -msgid "Start I2P" -msgstr "启动 I2P" - -#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 -msgid "I2P is starting!" -msgstr "正在启动 I2P !" - -#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 -msgid "Starting" -msgstr "正在启动" - -#: src/net/i2p/desktopgui/InternalTrayManager.java:25 -msgid "Launch I2P Browser" -msgstr "正在启动I2P浏览器" - -#: src/net/i2p/desktopgui/InternalTrayManager.java:49 -msgid "Restart I2P" -msgstr "重启 I2P" - -#: src/net/i2p/desktopgui/InternalTrayManager.java:67 -msgid "Stop I2P" -msgstr "停止 I2P" - -#~ msgid "Browser not found" -#~ msgstr "Browser niet gevonden" -#~ msgid "The default browser for your system was not found." -#~ msgstr "De standaard webbrowser voor je systeem werd niet gevonden." - +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-12 11:40+0000\n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:23 +msgid "Start I2P" +msgstr "启动 I2P" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 +msgid "I2P is starting!" +msgstr "正在启动 I2P !" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 +msgid "Starting" +msgstr "正在启动" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:25 +msgid "Launch I2P Browser" +msgstr "正在启动I2P浏览器" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:49 +msgid "Restart I2P" +msgstr "重启 I2P" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:67 +msgid "Stop I2P" +msgstr "停止 I2P" + +#~ msgid "Browser not found" +#~ msgstr "Browser niet gevonden" + +#~ msgid "The default browser for your system was not found." +#~ msgstr "De standaard webbrowser voor je systeem werd niet gevonden." diff --git a/apps/i2psnark/locale/messages_zh.po b/apps/i2psnark/locale/messages_zh.po index fb29b8f7a..dfca408cd 100644 --- a/apps/i2psnark/locale/messages_zh.po +++ b/apps/i2psnark/locale/messages_zh.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-10 09:12+0000\n" -"PO-Revision-Date: 2011-02-10 17:14+0800\n" +"POT-Creation-Date: 2011-02-12 11:39+0000\n" +"PO-Revision-Date: 2011-02-12 20:08+0800\n" "Last-Translator: \n" "Language-Team: foo <foo@bar>\n" "MIME-Version: 1.0\n" @@ -128,9 +128,9 @@ msgstr "无法打开 \"{0}\"" #. TODO - if the existing one is a magnet, delete it and add the metainfo instead? #: ../java/src/org/klomp/snark/SnarkManager.java:586 -#: ../java/src/org/klomp/snark/SnarkManager.java:657 -#: ../java/src/org/klomp/snark/SnarkManager.java:712 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1924 +#: ../java/src/org/klomp/snark/SnarkManager.java:661 +#: ../java/src/org/klomp/snark/SnarkManager.java:716 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "具有相同Hash链接的种子已在下载中:{0}" @@ -153,7 +153,7 @@ msgid "Torrent in \"{0}\" is invalid" msgstr "无效种子 \"{0}\" " #: ../java/src/org/klomp/snark/SnarkManager.java:624 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1947 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1977 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "错误: 内存不足,无法为 {0} 创建种子。" @@ -168,717 +168,722 @@ msgstr "已添加并启动种子:\"{0}\"" msgid "Torrent added: \"{0}\"" msgstr "已添加种子:\"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:488 +#: ../java/src/org/klomp/snark/SnarkManager.java:672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:489 #, java-format msgid "Fetching {0}" msgstr "正在获取{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:671 +#: ../java/src/org/klomp/snark/SnarkManager.java:675 #, java-format msgid "We have no saved peers and no other torrents are running. Fetch of {0} will not succeed until you start another torrent." msgstr "程序还不知道其他客户端的存在,目前也没有其他种子正在运行。在您启动其他种子前文件 {0} 无法成功下载。" -#: ../java/src/org/klomp/snark/SnarkManager.java:675 +#: ../java/src/org/klomp/snark/SnarkManager.java:679 #, java-format msgid "Adding {0}" msgstr "正在添加{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:722 -#: ../java/src/org/klomp/snark/SnarkManager.java:745 -#: ../java/src/org/klomp/snark/SnarkManager.java:1166 +#: ../java/src/org/klomp/snark/SnarkManager.java:726 +#: ../java/src/org/klomp/snark/SnarkManager.java:749 +#: ../java/src/org/klomp/snark/SnarkManager.java:1174 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "无法复制种子文件到{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:968 +#: ../java/src/org/klomp/snark/SnarkManager.java:972 #, java-format msgid "Too many files in \"{0}\" ({1}), deleting it!" msgstr "\"{0}\" ({1}) 含有太多文件,删除之!" -#: ../java/src/org/klomp/snark/SnarkManager.java:970 +#: ../java/src/org/klomp/snark/SnarkManager.java:974 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" msgstr "种子文件 \"{0}\" 不以 \".torrent\"结尾,正在删除!" -#: ../java/src/org/klomp/snark/SnarkManager.java:972 +#: ../java/src/org/klomp/snark/SnarkManager.java:976 #, java-format msgid "No pieces in \"{0}\", deleting it!" msgstr "\"{0}\" 中没有数据片,删除之!" -#: ../java/src/org/klomp/snark/SnarkManager.java:974 +#: ../java/src/org/klomp/snark/SnarkManager.java:978 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!" msgstr "\"{0}\" 中文件分片太多,限额为{1},删除之!" -#: ../java/src/org/klomp/snark/SnarkManager.java:976 +#: ../java/src/org/klomp/snark/SnarkManager.java:980 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B), deleting it." msgstr "\"{0}\" ({1}B) 中文件分片过大,删除之。" -#: ../java/src/org/klomp/snark/SnarkManager.java:977 +#: ../java/src/org/klomp/snark/SnarkManager.java:981 #, java-format msgid "Limit is {0}B" msgstr "限额为 {0}B" -#: ../java/src/org/klomp/snark/SnarkManager.java:985 +#: ../java/src/org/klomp/snark/SnarkManager.java:989 #, java-format msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" msgstr "目前不支持大于{0}B 的种子,正在删除\"{1}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1001 +#: ../java/src/org/klomp/snark/SnarkManager.java:1005 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "错误:无法删除种子{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1022 -#: ../java/src/org/klomp/snark/SnarkManager.java:1040 +#: ../java/src/org/klomp/snark/SnarkManager.java:1026 +#: ../java/src/org/klomp/snark/SnarkManager.java:1044 #, java-format msgid "Torrent stopped: \"{0}\"" msgstr "种子已停止:\"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1061 +#: ../java/src/org/klomp/snark/SnarkManager.java:1065 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "种子已删除:\"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1069 +#: ../java/src/org/klomp/snark/SnarkManager.java:1073 #, java-format msgid "Adding torrents in {0}" msgstr "{0} 分钟内完成添加" -#: ../java/src/org/klomp/snark/SnarkManager.java:1118 +#: ../java/src/org/klomp/snark/SnarkManager.java:1122 #, java-format msgid "Download finished: {0}" msgstr "下载已完成: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1162 +#: ../java/src/org/klomp/snark/SnarkManager.java:1170 #, java-format msgid "Metainfo received for {0}" msgstr "已获得 {0} 的 Metainfo" -#: ../java/src/org/klomp/snark/SnarkManager.java:1163 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:523 +#: ../java/src/org/klomp/snark/SnarkManager.java:1171 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:524 #, java-format msgid "Starting up torrent {0}" msgstr "正在启动种子{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1217 +#: ../java/src/org/klomp/snark/SnarkManager.java:1225 msgid "Unable to connect to I2P!" msgstr "无法连接至I2P!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1223 +#: ../java/src/org/klomp/snark/SnarkManager.java:1231 #, java-format msgid "Unable to add {0}" msgstr "添加{0}失败" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:204 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:205 msgid "I2PSnark - Anonymous BitTorrent Client" msgstr "I2PSnark - 匿名BitTorrent客户端" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:218 msgid "Torrents" msgstr "种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:220 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:227 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1007 msgid "I2PSnark" -msgstr "" +msgstr "I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:224 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:225 msgid "Refresh page" msgstr "刷新页面" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:229 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:230 msgid "Forum" msgstr "论坛" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:283 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1668 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1698 msgid "Status" msgstr "状态" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:289 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:292 msgid "Hide Peers" msgstr "隐藏用户" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:296 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:298 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:299 msgid "Show Peers" msgstr "显示用户" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:305 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1592 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1608 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1622 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1638 msgid "Torrent" msgstr "种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:309 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310 msgid "Estimated time remaining" msgstr "预计剩余时间" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:312 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:313 msgid "ETA" msgstr "预计剩余时间" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317 msgid "Downloaded" msgstr "已下载" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:319 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:320 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 msgid "RX" msgstr "已接收" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:323 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:324 msgid "Uploaded" msgstr "已上传" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:326 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:343 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344 msgid "TX" msgstr "已发送" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:331 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:332 msgid "Down Rate" msgstr "下载速度" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:336 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:345 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:337 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 msgid "Rate" msgstr "速度" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:341 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342 msgid "Up Rate" msgstr "上传速度" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:363 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:364 msgid "Stop all torrents and the I2P tunnel" msgstr "停止全部种子及I2P隧道" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:366 msgid "Stop All" msgstr "停止全部" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:374 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:375 msgid "Start all torrents and the I2P tunnel" msgstr "启动全部种子及I2P隧道" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377 msgid "Start All" msgstr "启动全部" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:395 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:396 msgid "No torrents loaded." msgstr "未载入任何种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:400 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:401 msgid "Totals" msgstr "总计" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" msgstr[0] "{0}个种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:406 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" msgstr[0] "{0}个已连接用户" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:494 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:495 #, java-format msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" msgstr "无效链接 - 链接必须以“http://”,“{0}”或“{1}”开头" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:542 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:543 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 #, java-format msgid "Magnet deleted: {0}" msgstr "Magnet 已删除:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:550 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:551 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:576 #, java-format msgid "Torrent file deleted: {0}" msgstr "种子文件已删除:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:581 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:591 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:592 #, java-format msgid "Data file deleted: {0}" msgstr "数据文件已删除:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 #, java-format msgid "Data file could not be deleted: {0}" msgstr "无法删除数据文件:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:602 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 #, java-format msgid "Data dir deleted: {0}" msgstr "数据文件夹已删除:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:636 msgid "Error creating torrent - you must select a tracker" msgstr "创建种子时发生错误 - 您必须选择一个Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:651 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:652 #, java-format msgid "Torrent created for \"{0}\"" msgstr "种子创建成功\"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:654 #, java-format msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\"" msgstr "多数I2PTracker需要用户在做种前注册新种子 - 请在启动 \"{0}\"前到所使用的Tracker进行注册。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:656 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "创建种子时发生错误 \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:658 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:659 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "无法为不存在的数据文件创建种子:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:661 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:662 msgid "Error creating torrent - you must enter a file or directory" msgstr "创建种子时发生错误 - 必须指定文件或文件夹" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:665 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "正在停用所有种子并关闭I2P隧道。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:675 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676 msgid "I2P tunnel closed." msgstr "I2P隧道已关闭" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:678 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:679 msgid "Opening the I2P tunnel and starting all torrents." msgstr "正在打开I2P隧道并启动所有种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:806 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:802 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:807 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:813 msgid "Tracker Error" msgstr "Tracker错误" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:820 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:824 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:832 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:841 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:805 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:825 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:842 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:846 #, java-format msgid "1 peer" msgid_plural "{0} peers" msgstr[0] "{0}个用户" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:817 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:818 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823 msgid "Seeding" msgstr "正做种" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:826 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1614 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:827 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1644 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 msgid "Complete" msgstr "完成" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:829 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:830 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:835 msgid "OK" msgstr "确定" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:844 msgid "Stalled" msgstr "等待" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:847 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:850 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:848 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:851 msgid "No Peers" msgstr "没有用户" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:853 msgid "Stopped" msgstr "已停用" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:863 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:864 msgid "Torrent details" msgstr "种子详情" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:864 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1139 msgid "Info" msgstr "信息" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:878 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:879 msgid "View files" msgstr "浏览文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:880 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:881 msgid "Open file" msgstr "打开文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:892 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1755 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:893 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1785 msgid "Open" msgstr "打开" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:938 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:939 msgid "Stop the torrent" msgstr "停止种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:940 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:941 msgid "Stop" msgstr "停止" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:949 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:950 msgid "Start the torrent" msgstr "启动种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:951 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:952 msgid "Start" msgstr "启动" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:961 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:962 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "取消下载任务并删除对应种子文件。" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:966 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 #, java-format msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?" msgstr "您确定要删除文件“{0}.torrent”(下载的数据文件不会被删除)?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970 msgid "Remove" msgstr "移除" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:979 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:980 msgid "Delete the .torrent file and the associated data file(s)" msgstr "删除种子及所下载的文件" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:984 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985 #, java-format msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?" msgstr "您确定要删除种子“{0}”(下载的数据文件会一并被删除)?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:988 msgid "Delete" msgstr "删除" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1021 msgid "Unknown" msgstr "未知" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1033 msgid "Seed" msgstr "种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1056 msgid "Uninteresting (The peer has no pieces we need)" msgstr "无需要部分" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1058 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "拒绝请求" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1078 msgid "Uninterested (We have no pieces the peer needs)" msgstr "无需要部分" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1080 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "拒绝请求" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1137 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 #, java-format msgid "Details at {0} tracker" msgstr "Tracker {0} 上的详细信息" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1167 msgid "Add Torrent" msgstr "添加种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1168 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1169 msgid "From URL" msgstr "从URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1171 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1172 msgid "Torrent file must originate from an I2P-based tracker" msgstr "种子文件必须来在I2P内网中的Tracker服务器。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1177 msgid "Add torrent" msgstr "添加种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1179 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "您也可以将.torrent文件复制到: {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1182 msgid "Removing a .torrent will cause it to stop." msgstr "删除种子文件将导致该下载任务中止。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1204 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1205 msgid "Create Torrent" msgstr "创建种子" #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208 msgid "Data to seed" msgstr "做种数据" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1211 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1212 msgid "File or directory to seed (must be within the specified path)" msgstr "做种文件或文件夹(必须下面为Snark指定的文件夹中)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1213 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1633 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1214 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 msgid "Tracker" msgstr "Tracker服务器" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1215 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1216 msgid "Select a tracker" msgstr "选择一个Tracker" #. out.write(_("Open trackers and DHT only")); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1221 msgid "Open trackers only" msgstr "仅通过 Open Tracker发布链接" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1235 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1236 msgid "or" msgstr "或" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1238 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1239 msgid "Specify custom tracker announce URL" msgstr "指定Open Tracker发布链接" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1241 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 msgid "Create torrent" msgstr "创建种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1259 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1398 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1399 msgid "Configuration" msgstr "设置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264 msgid "Data directory" msgstr "数据文件夹" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1265 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1266 msgid "Edit i2psnark.config and restart to change" msgstr "编辑 i2psnark.config 并重启Snark后生效" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1269 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1270 msgid "Auto start" msgstr "自动启动" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1273 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1274 msgid "If checked, automatically start torrents that are added" msgstr "选中后Snark将自动启动已添加的所有种子。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1278 msgid "Theme" msgstr "主题" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 msgid "Startup delay" msgstr "启动延迟" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1292 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1293 msgid "minutes" msgstr "分" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317 msgid "Total uploader limit" msgstr "限制总上传种子数为" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1319 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320 msgid "peers" msgstr "用户" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1323 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1324 msgid "Up bandwidth limit" msgstr "上传带宽限制" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1326 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1327 msgid "Half available bandwidth recommended." msgstr "推荐设置为可用带宽的一半。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1328 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1329 msgid "View or change router bandwidth" msgstr "浏览或修改路由器带宽" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1332 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333 msgid "Use open trackers also" msgstr "同时使用OpenTracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1336 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1337 msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file" msgstr "选择后在OpenTracker及种子文件中的Tracker上同时发布。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1340 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 msgid "Open tracker announce URLs" msgstr "Open Tracker发布链接" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1352 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 msgid "Inbound Settings" msgstr "入站设置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359 msgid "Outbound Settings" msgstr "出站设置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1367 msgid "I2CP host" msgstr "I2CP主机" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1371 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1372 msgid "I2CP port" msgstr "I2CP端口" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1384 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1385 msgid "I2CP options" msgstr "I2CP选项" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1389 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1390 msgid "Save configuration" msgstr "保存设置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1439 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 +#, java-format +msgid "Invalid magnet URL {0}" +msgstr "磁性链接 {0} 无效" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1449 #, java-format msgid "Invalid info hash in magnet URL {0}" msgstr "magnet磁性链接“{0}”中的hash信息有误。" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1449 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479 #, java-format msgid "1 hop" msgid_plural "{0} hops" msgstr[0] "{0}跳" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1450 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1480 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" msgstr[0] "{0}隧道" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1612 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1642 msgid "Completion" msgstr "完成" #. else unknown -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1616 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1646 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1695 msgid "Size" msgstr "大小" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1621 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1651 msgid "Files" msgstr "文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1623 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1653 msgid "Pieces" msgstr "分块数量" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1624 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1654 msgid "Piece size" msgstr "分块大小" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1646 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1676 msgid "Magnet link" msgstr "Magnet磁性链接" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1702 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1693 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1732 msgid "Directory" msgstr "文件夹" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1702 msgid "Priority" msgstr "优先级" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1677 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1707 msgid "Up to higher level directory" msgstr "上一层文件夹" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1707 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1737 msgid "Torrent not found?" msgstr "种子未找到" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1746 msgid "File not found in torrent?" msgstr "种子中没有发现文件?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1729 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 msgid "complete" msgstr "完成" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1730 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1760 msgid "bytes remaining" msgstr "剩余字节数" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1811 msgid "High" msgstr "高" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1786 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816 msgid "Normal" msgstr "普通" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1791 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1821 msgid "Skip" msgstr "跳过" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1800 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1830 msgid "Save priorities" msgstr "保存优先级" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1915 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 #, java-format msgid "Torrent fetched from {0}" msgstr "从{0}获取种子成功" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1937 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967 #, java-format msgid "Torrent already running: {0}" msgstr "种子已启动:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1969 #, java-format msgid "Torrent already in the queue: {0}" msgstr "种子排队中:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1975 #, java-format msgid "Torrent at {0} was not valid" msgstr "{0}的种子中有错误" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1952 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1982 #, java-format msgid "Torrent was not retrieved from {0}" msgstr "从{0}获得种子失败" diff --git a/apps/i2ptunnel/locale/messages_zh.po b/apps/i2ptunnel/locale/messages_zh.po index b98971df0..72508653a 100644 --- a/apps/i2ptunnel/locale/messages_zh.po +++ b/apps/i2ptunnel/locale/messages_zh.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2ptunnel\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-10 09:13+0000\n" -"PO-Revision-Date: 2011-02-10 17:14+0800\n" +"POT-Creation-Date: 2011-02-12 12:06+0000\n" +"PO-Revision-Date: 2011-02-12 20:07+0800\n" "Last-Translator: \n" "Language-Team: foo <foo@bar>\n" "MIME-Version: 1.0\n" @@ -390,7 +390,7 @@ msgid "Port" msgstr "端口" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:406 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479 msgid "Reduce tunnel quantity when idle" msgstr "空闲时缩减隧道数量" @@ -402,18 +402,18 @@ msgstr "空闲时缩减隧道数量" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:472 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:419 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:483 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481 msgid "Enable" msgstr "启用" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:412 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:487 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:485 msgid "Reduced tunnel count" msgstr "削减后的隧道数量" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:416 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:436 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:491 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:489 msgid "Idle minutes" msgstr "空闲时间(分钟)" @@ -474,27 +474,27 @@ msgid "Jump URL List" msgstr "跳转服务列表" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:508 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:527 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525 msgid "Custom options" msgstr "自定义选项" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:512 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:529 msgid "NOTE: If tunnel is currently running, most changes will not take effect until tunnel is stopped and restarted." msgstr "注意:如果当前隧道已经启动,设置需要【停止】并重新【启动】相应隧道后才能生效。" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:514 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:533 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531 msgid "Cancel" msgstr "取消" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:518 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535 msgid "Delete" msgstr "删除" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:520 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:539 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537 msgid "Save" msgstr "保存" @@ -547,7 +547,7 @@ msgid "Generate" msgstr "生成" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:523 msgid "(Tunnel must be stopped first)" msgstr "(必须先停止隧道)" @@ -568,70 +568,68 @@ msgid "Access List" msgstr "访问列表" # disable=>noLimit -#. out.print(intl._("Inbound connection limits (0 to disable)")); -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:452 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451 msgid "Inbound connection limits (0=unlimited)" msgstr "入站连接限制(0=无限制)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:454 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453 msgid "Per client" msgstr "按客户端" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:456 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455 msgid "Per minute" msgstr "按分钟" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:460 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459 msgid "Per hour" msgstr "按小时" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:464 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463 msgid "Per day" msgstr "按天" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:468 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467 msgid "Total" msgstr "总数" # disable=>noLimit -#. out.print(intl._("Max concurrent connections (0 to disable)")); -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:477 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475 msgid "Max concurrent connections (0=unlimited)" msgstr "最大并发连接数(0=无限制)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493 msgid "New Certificate type" msgstr "新建证书类型" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:497 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495 msgid "None" msgstr "无" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:501 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499 msgid "Hashcash (effort)" msgstr "Hashcash (强度)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505 msgid "Hashcash Calc Time" msgstr "Hashcash 计算时间" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507 msgid "Estimate" msgstr "估算" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:511 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509 msgid "Hidden" msgstr "隐藏" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:515 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513 msgid "Signed (signed by)" msgstr "签名(签名者)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519 msgid "Modify Certificate" msgstr "修改证书" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:523 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521 msgid "Modify" msgstr "修改" diff --git a/apps/routerconsole/locale/messages_zh.po b/apps/routerconsole/locale/messages_zh.po index d1826802a..d239aff0f 100644 --- a/apps/routerconsole/locale/messages_zh.po +++ b/apps/routerconsole/locale/messages_zh.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-10 09:19+0000\n" +"POT-Creation-Date: 2011-02-12 11:39+0000\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -3165,6 +3165,7 @@ msgstr "最高均值" msgid "There were {0} event(s) in this period" msgstr "本周期共有{0}个事件," +#. buf.append(' '); #: ../java/src/net/i2p/router/web/StatsGenerator.java:203 #, java-format msgid " which ended {0} ago." @@ -4626,7 +4627,7 @@ msgid "All changes require restart to take effect." msgstr "所有更改均需要程序重启才能生效。" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:337 -msgid "Client Interface Configuration (Advacned)" +msgid "Advanced Client Interface Configuration" msgstr "客户端接口设置(高级)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:339 @@ -5345,6 +5346,8 @@ msgstr "隧道概况" msgid "I2P Tunnel Summary" msgstr "I2P 隧道概况" +#~ msgid "Client Interface Configuration (Advacned)" +#~ msgstr "客户端接口设置(高级)" #~ msgid "" #~ "Ensure that nothing blocks outbound HTTP, check <a target=\"_top\" href=" #~ "\"logs.jsp\">logs</a> and if nothing helps, read the <a target=\"_top\" " From 50cb4074d1b87b2a218f2551f9ddaef6df9c3dc6 Mon Sep 17 00:00:00 2001 From: walking <walking@mail.i2p> Date: Sat, 12 Feb 2011 16:52:17 +0000 Subject: [PATCH 188/463] changed to utf8 --- apps/desktopgui/locale/messages_nl.po | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/desktopgui/locale/messages_nl.po b/apps/desktopgui/locale/messages_nl.po index 23a5c4b94..0fc405358 100644 --- a/apps/desktopgui/locale/messages_nl.po +++ b/apps/desktopgui/locale/messages_nl.po @@ -8,6 +8,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" +# NL #: src/net/i2p/desktopgui/ExternalTrayManager.java:23 msgid "Start I2P" From 6aaa6cd95984b2c460bbcab8f5376e583c855045 Mon Sep 17 00:00:00 2001 From: walking <walking@mail.i2p> Date: Sat, 12 Feb 2011 16:54:48 +0000 Subject: [PATCH 189/463] just spoted something that went really wrong --- apps/desktopgui/locale/messages_nl.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/desktopgui/locale/messages_nl.po b/apps/desktopgui/locale/messages_nl.po index 0fc405358..ad390cb62 100644 --- a/apps/desktopgui/locale/messages_nl.po +++ b/apps/desktopgui/locale/messages_nl.po @@ -6,7 +6,7 @@ msgstr "" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" # NL From 3c7aa6fcab6c7a0e022ec5c3bb66080635a2df83 Mon Sep 17 00:00:00 2001 From: duck <duck@mail.i2p> Date: Sun, 13 Feb 2011 13:00:05 +0000 Subject: [PATCH 190/463] Add missing plural forms for Dutch and French I2PSnark translation files. Use the real apostrophe (single quote) character U+2019 to resolve msgfmt -c errors. --- apps/i2psnark/locale/messages_fr.po | 17 +++++++++-------- apps/i2psnark/locale/messages_nl.po | 1 + 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/apps/i2psnark/locale/messages_fr.po b/apps/i2psnark/locale/messages_fr.po index e7981f282..8b7dd7bf5 100644 --- a/apps/i2psnark/locale/messages_fr.po +++ b/apps/i2psnark/locale/messages_fr.po @@ -15,6 +15,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n>1\n" "X-Poedit-Language: French\n" #: ../java/src/org/klomp/snark/SnarkManager.java:94 @@ -35,17 +36,17 @@ msgstr "La limite minimale agrégée des uploaders est : {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:310 #, java-format msgid "Up BW limit changed to {0}KBps" -msgstr "La limite d'upload modifiée : {0} Ko/s" +msgstr "La limite d’upload modifiée : {0} Ko/s" #: ../java/src/org/klomp/snark/SnarkManager.java:312 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" -msgstr "La limite minimale d'upload est {0} Ko/s" +msgstr "La limite minimale d’upload est {0} Ko/s" #: ../java/src/org/klomp/snark/SnarkManager.java:324 #, java-format msgid "Startup delay limit changed to {0} minutes" -msgstr "Delais de démarrage modifié : {0] minutes" +msgstr "Delais de démarrage modifié : {0} minutes" #: ../java/src/org/klomp/snark/SnarkManager.java:371 msgid "I2CP and tunnel changes will take effect after stopping all torrents" @@ -122,13 +123,13 @@ msgstr "Erreur de connexion à I2P - Vérifiez vos paramètres I2CP!" #: ../java/src/org/klomp/snark/SnarkManager.java:506 #, java-format msgid "Error: Could not add the torrent {0}" -msgstr "Erreur : Impossible d'ajouter le torrent : {0}" +msgstr "Erreur : Impossible d’ajouter le torrent : {0}" #. catch this here so we don't try do delete it below #: ../java/src/org/klomp/snark/SnarkManager.java:528 #, java-format msgid "Cannot open \"{0}\"" -msgstr "Impossible d'ouvrir: \"{0}\"" +msgstr "Impossible d’ouvrir: \"{0}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:541 #, java-format @@ -217,7 +218,7 @@ msgstr "Impossible de se connecter à I2P!" #: ../java/src/org/klomp/snark/SnarkManager.java:886 #, java-format msgid "Unable to add {0}" -msgstr "Impossible d'ajouter {0}" +msgstr "Impossible d’ajouter {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:185 msgid "I2PSnark - Anonymous BitTorrent Client" @@ -394,7 +395,7 @@ msgstr "Torrent créé pour \"{0}\"" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:605 #, java-format msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\"" -msgstr "De nombreux trackers I2P nécessitent d'enregistrer les nouveaux torrents avant de seeder - faites-le avant de démarrer \"{0}\"!" +msgstr "De nombreux trackers I2P nécessitent d’enregistrer les nouveaux torrents avant de seeder - faites-le avant de démarrer \"{0}\"!" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:607 #, java-format @@ -805,7 +806,7 @@ msgstr "Le torrent {0} n'est pas valide" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1764 #, java-format msgid "Torrent was not retrieved from {0}" -msgstr "Le torrent n'a pas été reçu par {0}" +msgstr "Le torrent n’a pas été reçu par {0}" #~ msgid "size: {0}B" #~ msgstr "Taille: {0}Octets" diff --git a/apps/i2psnark/locale/messages_nl.po b/apps/i2psnark/locale/messages_nl.po index 3314d8071..e3cb3147d 100644 --- a/apps/i2psnark/locale/messages_nl.po +++ b/apps/i2psnark/locale/messages_nl.po @@ -15,6 +15,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" "X-Poedit-Language: Dutch\n" #: ../java/src/org/klomp/snark/SnarkManager.java:94 From 5e96b862813b9d21d57e46032178888e26ba850e Mon Sep 17 00:00:00 2001 From: duck <duck@mail.i2p> Date: Sun, 13 Feb 2011 13:42:44 +0000 Subject: [PATCH 191/463] Add source language (English) --- apps/desktopgui/locale/messages_en.po | 42 + apps/i2psnark/locale/messages_en.po | 908 ++++ apps/i2ptunnel/locale/messages_en.po | 779 +++ apps/routerconsole/locale/messages_en.po | 5525 ++++++++++++++++++++++ apps/susidns/locale/messages_en.po | 480 ++ 5 files changed, 7734 insertions(+) create mode 100644 apps/desktopgui/locale/messages_en.po create mode 100644 apps/i2psnark/locale/messages_en.po create mode 100644 apps/i2ptunnel/locale/messages_en.po create mode 100644 apps/routerconsole/locale/messages_en.po create mode 100644 apps/susidns/locale/messages_en.po diff --git a/apps/desktopgui/locale/messages_en.po b/apps/desktopgui/locale/messages_en.po new file mode 100644 index 000000000..46cd8b26e --- /dev/null +++ b/apps/desktopgui/locale/messages_en.po @@ -0,0 +1,42 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the desktopgui package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo <foo@bar>, 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P desktopgui\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-13 11:54+0000\n" +"PO-Revision-Date: 2010-06-15 14:09+0100\n" +"Last-Translator: duck <duck@mail.i2p>\n" +"Language-Team: duck <duck@mail.i2p>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:23 +msgid "Start I2P" +msgstr "" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 +msgid "I2P is starting!" +msgstr "" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 +msgid "Starting" +msgstr "" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:25 +msgid "Launch I2P Browser" +msgstr "" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:49 +msgid "Restart I2P" +msgstr "" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:67 +msgid "Stop I2P" +msgstr "" diff --git a/apps/i2psnark/locale/messages_en.po b/apps/i2psnark/locale/messages_en.po new file mode 100644 index 000000000..415a69bc4 --- /dev/null +++ b/apps/i2psnark/locale/messages_en.po @@ -0,0 +1,908 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the i2psnark package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo <foo@bar>, 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P i2psnark\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-13 11:54+0000\n" +"PO-Revision-Date: 2010-06-15 14:09+0100\n" +"Last-Translator: duck <duck@mail.i2p>\n" +"Language-Team: duck <duck@mail.i2p>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ../java/src/org/klomp/snark/SnarkManager.java:307 +#, java-format +msgid "Total uploaders limit changed to {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:309 +#, java-format +msgid "Minimum total uploaders limit is {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:321 +#, java-format +msgid "Up BW limit changed to {0}KBps" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:323 +#, java-format +msgid "Minimum up bandwidth limit is {0}KBps" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:335 +#, java-format +msgid "Startup delay changed to {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:386 +msgid "I2CP and tunnel changes will take effect after stopping all torrents" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:393 +msgid "Disconnecting old I2CP destination" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:397 +#, java-format +msgid "I2CP settings changed to {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:402 +msgid "" +"Unable to connect with the new settings, reverting to the old I2CP settings" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:406 +msgid "Unable to reconnect with the old settings!" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:408 +msgid "Reconnected on the new I2CP destination" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:418 +#, java-format +msgid "I2CP listener restarted for \"{0}\"" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:429 +msgid "Enabled autostart" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:431 +msgid "Disabled autostart" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:437 +msgid "Enabled open trackers - torrent restart required to take effect." +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:439 +msgid "Disabled open trackers - torrent restart required to take effect." +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:447 +msgid "Open Tracker list changed - torrent restart required to take effect." +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:454 +#, java-format +msgid "{0} theme loaded, return to main i2psnark page to view." +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:461 +msgid "Configuration unchanged." +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:471 +#, java-format +msgid "Unable to save the config to {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:536 +msgid "Connecting to I2P" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:539 +msgid "Error connecting to I2P - check your I2CP settings!" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:548 +#, java-format +msgid "Error: Could not add the torrent {0}" +msgstr "" + +#. catch this here so we don't try do delete it below +#: ../java/src/org/klomp/snark/SnarkManager.java:570 +#, java-format +msgid "Cannot open \"{0}\"" +msgstr "" + +#. TODO - if the existing one is a magnet, delete it and add the metainfo instead? +#: ../java/src/org/klomp/snark/SnarkManager.java:586 +#: ../java/src/org/klomp/snark/SnarkManager.java:661 +#: ../java/src/org/klomp/snark/SnarkManager.java:716 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954 +#, java-format +msgid "Torrent with this info hash is already running: {0}" +msgstr "" + +#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); +#: ../java/src/org/klomp/snark/SnarkManager.java:593 +#, java-format +msgid "" +"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers " +"only." +msgstr "" + +#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); +#: ../java/src/org/klomp/snark/SnarkManager.java:598 +#, java-format +msgid "" +"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is " +"enabled before starting this torrent." +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:619 +#, java-format +msgid "Torrent in \"{0}\" is invalid" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:624 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1977 +#, java-format +msgid "ERROR - Out of memory, cannot create torrent from {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:635 +#, java-format +msgid "Torrent added and started: \"{0}\"" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:637 +#, java-format +msgid "Torrent added: \"{0}\"" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:489 +#, java-format +msgid "Fetching {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:675 +#, java-format +msgid "" +"We have no saved peers and no other torrents are running. Fetch of {0} will " +"not succeed until you start another torrent." +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:679 +#, java-format +msgid "Adding {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:726 +#: ../java/src/org/klomp/snark/SnarkManager.java:749 +#: ../java/src/org/klomp/snark/SnarkManager.java:1174 +#, java-format +msgid "Failed to copy torrent file to {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:972 +#, java-format +msgid "Too many files in \"{0}\" ({1}), deleting it!" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:974 +#, java-format +msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:976 +#, java-format +msgid "No pieces in \"{0}\", deleting it!" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:978 +#, java-format +msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:980 +#, java-format +msgid "Pieces are too large in \"{0}\" ({1}B), deleting it." +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:981 +#, java-format +msgid "Limit is {0}B" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:989 +#, java-format +msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1005 +#, java-format +msgid "Error: Could not remove the torrent {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1026 +#: ../java/src/org/klomp/snark/SnarkManager.java:1044 +#, java-format +msgid "Torrent stopped: \"{0}\"" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1065 +#, java-format +msgid "Torrent removed: \"{0}\"" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1073 +#, java-format +msgid "Adding torrents in {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1122 +#, java-format +msgid "Download finished: {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1170 +#, java-format +msgid "Metainfo received for {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1171 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:524 +#, java-format +msgid "Starting up torrent {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1225 +msgid "Unable to connect to I2P!" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1231 +#, java-format +msgid "Unable to add {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:205 +msgid "I2PSnark - Anonymous BitTorrent Client" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:218 +msgid "Torrents" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1007 +msgid "I2PSnark" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:225 +msgid "Refresh page" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:230 +msgid "Forum" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1698 +msgid "Status" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:292 +msgid "Hide Peers" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:299 +msgid "Show Peers" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1622 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1638 +msgid "Torrent" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310 +msgid "Estimated time remaining" +msgstr "" + +#. Translators: Please keep short or translate as " " +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:313 +msgid "ETA" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317 +msgid "Downloaded" +msgstr "" + +#. Translators: Please keep short or translate as " " +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:320 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +msgid "RX" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:324 +msgid "Uploaded" +msgstr "" + +#. Translators: Please keep short or translate as " " +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344 +msgid "TX" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:332 +msgid "Down Rate" +msgstr "" + +#. Translators: Please keep short or translate as " " +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:337 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 +msgid "Rate" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342 +msgid "Up Rate" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:364 +msgid "Stop all torrents and the I2P tunnel" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:366 +msgid "Stop All" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:375 +msgid "Start all torrents and the I2P tunnel" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377 +msgid "Start All" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:396 +msgid "No torrents loaded." +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:401 +msgid "Totals" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403 +#, java-format +msgid "1 torrent" +msgid_plural "{0} torrents" +msgstr[0] "" +msgstr[1] "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:406 +#, java-format +msgid "1 connected peer" +msgid_plural "{0} connected peers" +msgstr[0] "" +msgstr[1] "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:495 +#, java-format +msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:543 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 +#, java-format +msgid "Magnet deleted: {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:551 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:576 +#, java-format +msgid "Torrent file deleted: {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:592 +#, java-format +msgid "Data file deleted: {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#, java-format +msgid "Data file could not be deleted: {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 +#, java-format +msgid "Data dir deleted: {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:636 +msgid "Error creating torrent - you must select a tracker" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:652 +#, java-format +msgid "Torrent created for \"{0}\"" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:654 +#, java-format +msgid "" +"Many I2P trackers require you to register new torrents before seeding - " +"please do so before starting \"{0}\"" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:656 +#, java-format +msgid "Error creating a torrent for \"{0}\"" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:659 +#, java-format +msgid "Cannot create a torrent for the nonexistent data: {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:662 +msgid "Error creating torrent - you must enter a file or directory" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:665 +msgid "Stopping all torrents and closing the I2P tunnel." +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676 +msgid "I2P tunnel closed." +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:679 +msgid "Opening the I2P tunnel and starting all torrents." +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:802 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:807 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:813 +msgid "Tracker Error" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:805 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:825 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:842 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:846 +#, java-format +msgid "1 peer" +msgid_plural "{0} peers" +msgstr[0] "" +msgstr[1] "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:818 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823 +msgid "Seeding" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:827 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1644 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +msgid "Complete" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:830 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:835 +msgid "OK" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:844 +msgid "Stalled" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:848 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:851 +msgid "No Peers" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:853 +msgid "Stopped" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:864 +msgid "Torrent details" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1139 +msgid "Info" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:879 +msgid "View files" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:881 +msgid "Open file" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:893 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1785 +msgid "Open" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:939 +msgid "Stop the torrent" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:941 +msgid "Stop" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:950 +msgid "Start the torrent" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:952 +msgid "Start" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:962 +msgid "Remove the torrent from the active list, deleting the .torrent file" +msgstr "" + +#. Can't figure out how to escape double quotes inside the onclick string. +#. Single quotes in translate strings with parameters must be doubled. +#. Then the remaining single quite must be escaped +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#, java-format +msgid "" +"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded " +"data will not be deleted) ?" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970 +msgid "Remove" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:980 +msgid "Delete the .torrent file and the associated data file(s)" +msgstr "" + +#. Can't figure out how to escape double quotes inside the onclick string. +#. Single quotes in translate strings with parameters must be doubled. +#. Then the remaining single quite must be escaped +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985 +#, java-format +msgid "" +"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " +"data?" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:988 +msgid "Delete" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1021 +msgid "Unknown" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1033 +msgid "Seed" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1056 +msgid "Uninteresting (The peer has no pieces we need)" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1058 +msgid "Choked (The peer is not allowing us to request pieces)" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1078 +msgid "Uninterested (We have no pieces the peer needs)" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1080 +msgid "Choking (We are not allowing the peer to request pieces)" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 +#, java-format +msgid "Details at {0} tracker" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1167 +msgid "Add Torrent" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1169 +msgid "From URL" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1172 +msgid "Torrent file must originate from an I2P-based tracker" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1177 +msgid "Add torrent" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 +#, java-format +msgid "You can also copy .torrent files to: {0}." +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1182 +msgid "Removing a .torrent will cause it to stop." +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1205 +msgid "Create Torrent" +msgstr "" + +#. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n"); +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208 +msgid "Data to seed" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1212 +msgid "File or directory to seed (must be within the specified path)" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1214 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 +msgid "Tracker" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1216 +msgid "Select a tracker" +msgstr "" + +#. out.write(_("Open trackers and DHT only")); +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1221 +msgid "Open trackers only" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1236 +msgid "or" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1239 +msgid "Specify custom tracker announce URL" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 +msgid "Create torrent" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1399 +msgid "Configuration" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264 +msgid "Data directory" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1266 +msgid "Edit i2psnark.config and restart to change" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1270 +msgid "Auto start" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1274 +msgid "If checked, automatically start torrents that are added" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1278 +msgid "Theme" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +msgid "Startup delay" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1293 +msgid "minutes" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317 +msgid "Total uploader limit" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320 +msgid "peers" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1324 +msgid "Up bandwidth limit" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1327 +msgid "Half available bandwidth recommended." +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1329 +msgid "View or change router bandwidth" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333 +msgid "Use open trackers also" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1337 +msgid "" +"If checked, announce torrents to open trackers as well as the tracker listed " +"in the torrent file" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 +msgid "Open tracker announce URLs" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 +msgid "Inbound Settings" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359 +msgid "Outbound Settings" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1367 +msgid "I2CP host" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1372 +msgid "I2CP port" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1385 +msgid "I2CP options" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1390 +msgid "Save configuration" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 +#, java-format +msgid "Invalid magnet URL {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1449 +#, java-format +msgid "Invalid info hash in magnet URL {0}" +msgstr "" + +#. * dummies for translation +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479 +#, java-format +msgid "1 hop" +msgid_plural "{0} hops" +msgstr[0] "" +msgstr[1] "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1480 +#, java-format +msgid "1 tunnel" +msgid_plural "{0} tunnels" +msgstr[0] "" +msgstr[1] "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1642 +msgid "Completion" +msgstr "" + +#. else unknown +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1646 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1695 +msgid "Size" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1651 +msgid "Files" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1653 +msgid "Pieces" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1654 +msgid "Piece size" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1676 +msgid "Magnet link" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1693 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1732 +msgid "Directory" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1702 +msgid "Priority" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1707 +msgid "Up to higher level directory" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1737 +msgid "Torrent not found?" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1746 +msgid "File not found in torrent?" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 +msgid "complete" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1760 +msgid "bytes remaining" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1811 +msgid "High" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816 +msgid "Normal" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1821 +msgid "Skip" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1830 +msgid "Save priorities" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 +#, java-format +msgid "Torrent fetched from {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967 +#, java-format +msgid "Torrent already running: {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1969 +#, java-format +msgid "Torrent already in the queue: {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1975 +#, java-format +msgid "Torrent at {0} was not valid" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1982 +#, java-format +msgid "Torrent was not retrieved from {0}" +msgstr "" diff --git a/apps/i2ptunnel/locale/messages_en.po b/apps/i2ptunnel/locale/messages_en.po new file mode 100644 index 000000000..bfbc08888 --- /dev/null +++ b/apps/i2ptunnel/locale/messages_en.po @@ -0,0 +1,779 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the i2ptunnel package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo <foo@bar>, 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P i2ptunnel\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-13 19:26+0000\n" +"PO-Revision-Date: 2010-06-15 14:09+0100\n" +"Last-Translator: duck <duck@mail.i2p>\n" +"Language-Team: duck <duck@mail.i2p>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474 +#, java-format +msgid "" +"To visit the destination in your host database, click <a href=\"{0}\">here</" +"a>. To visit the conflicting addresshelper destination, click <a href=\"{1}" +"\">here</a>." +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931 +msgid "" +"Click a link below to look for an address helper by using a \"jump\" service:" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336 +msgid "internal" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:171 +msgid "" +"Invalid form submission, probably because you used the 'back' or 'reload' " +"button on your browser. Please resubmit." +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218 +msgid "Configuration reloaded for all tunnels" +msgstr "" + +#. and give them something to look at in any case +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:230 +msgid "Starting tunnel" +msgstr "" + +#. and give them something to look at in any case +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:243 +msgid "Stopping tunnel" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:311 +msgid "Configuration changes saved" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314 +msgid "Failed to save configuration" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398 +msgid "New Tunnel" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418 +msgid "Standard client" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419 +msgid "HTTP client" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420 +msgid "IRC client" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:421 +msgid "Standard server" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:422 +msgid "HTTP server" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:423 +msgid "SOCKS 4/4a/5 proxy" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:424 +msgid "SOCKS IRC proxy" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:425 +msgid "CONNECT/SSL/HTTPS proxy" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:426 +msgid "IRC server" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:427 +msgid "Streamr client" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:428 +msgid "Streamr server" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:429 +msgid "HTTP bidir" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290 +msgid "Host not set" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:521 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:272 +msgid "Port not set" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:73 +msgid "I2P Tunnel Manager - Edit Client Tunnel" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:93 +msgid "Edit proxy settings" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:101 +msgid "New proxy settings" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:112 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:112 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:107 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:121 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:242 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:257 +msgid "Name" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:116 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:116 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:246 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:279 +msgid "Type" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:120 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:120 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:386 +msgid "Description" +msgstr "" + +#: ../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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:130 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:132 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:162 +msgid "Access Point" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:150 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:192 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:153 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:167 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:213 +msgid "required" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:159 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:178 +msgid "Reachable by" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:180 +msgid "Outproxies" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:187 +msgid "Tunnel Destination" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:199 +msgid "name or destination" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202 +msgid "b32 not recommended" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208 +msgid "Shared Client" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:212 +msgid "" +"(Share tunnels with other clients and irc/httpclients? Change requires " +"restart of client proxy)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:124 +msgid "Auto Start" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:128 +msgid "(Check the Box for 'YES')" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:243 +msgid "Advanced networking options" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224 +msgid "" +"(NOTE: when this client proxy is configured to share tunnels, then these " +"options are for all the shared proxy clients!)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245 +msgid "Tunnel Options" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:247 +msgid "Length" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:254 +msgid "0 hop tunnel (low anonymity, low latency)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:258 +msgid "1 hop tunnel (medium anonymity, medium latency)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:262 +msgid "2 hop tunnel (high anonymity, high latency)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:266 +msgid "3 hop tunnel (very high anonymity, poor performance)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:256 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:275 +msgid "hop tunnel (very poor performance)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:261 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:280 +msgid "Variance" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:268 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:287 +msgid "0 hop variance (no randomisation, consistant performance)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:272 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:291 +msgid "" +"+ 0-1 hop variance (medium additive randomisation, subtractive performance)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295 +msgid "" +"+ 0-2 hop variance (high additive randomisation, subtractive performance)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:299 +msgid "+/- 0-1 hop variance (standard randomisation, standard performance)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:284 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:303 +msgid "+/- 0-2 hop variance (not recommended)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:315 +msgid "hop variance" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:320 +msgid "Count" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:327 +msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:331 +msgid "" +"2 inbound, 2 outbound tunnels (standard bandwidth usage, standard " +"reliability)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335 +msgid "" +"3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:344 +msgid "tunnels" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349 +msgid "Backup Count" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:356 +msgid "0 backup tunnels (0 redundancy, no added resource usage)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:360 +msgid "1 backup tunnel each direction (low redundancy, low resource usage)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364 +msgid "" +"2 backup tunnels each direction (medium redundancy, medium resource usage)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:349 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:368 +msgid "3 backup tunnels each direction (high redundancy, high resource usage)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:358 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377 +msgid "backup tunnels" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:384 +msgid "Profile" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:372 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:391 +msgid "interactive connection" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:376 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:395 +msgid "bulk connection (downloads/websites/BT)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:378 +msgid "Delay Connect" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:382 +msgid "for request/response connections" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399 +msgid "Router I2CP Address" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401 +msgid "Host" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:396 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:148 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:244 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:266 +msgid "Port" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:406 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479 +msgid "Reduce tunnel quantity when idle" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:408 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:422 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:430 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:442 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:452 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:472 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:419 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481 +msgid "Enable" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:412 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:485 +msgid "Reduced tunnel count" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:416 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:489 +msgid "Idle minutes" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420 +msgid "Close tunnels when idle" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:426 +msgid "New Keys on Reopen" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435 +msgid "Disable" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440 +msgid "Delay tunnel open until required" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:450 +msgid "Persistent private key" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:456 +msgid "File" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:460 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:220 +msgid "Local destination" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464 +msgid "(if known)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:470 +msgid "Local Authorization" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490 +msgid "Username" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:480 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:494 +msgid "Password" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484 +msgid "Outproxy Authorization" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502 +msgid "Jump URL List" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:508 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525 +msgid "Custom options" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:512 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:529 +msgid "" +"NOTE: If tunnel is currently running, most changes will not take effect " +"until tunnel is stopped and restarted." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:514 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531 +msgid "Cancel" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535 +msgid "Delete" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:520 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537 +msgid "Save" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:73 +msgid "I2P Tunnel Manager - Edit Server Tunnel" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:93 +msgid "Edit server settings" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:101 +msgid "New server settings" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:199 +msgid "Website name" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:203 +msgid "(leave blank for outproxies)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:208 +msgid "Private key file" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:230 +msgid "Add to local addressbook" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:237 +msgid "Hostname Signature" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417 +msgid "Encrypt Leaseset" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423 +msgid "Encryption Key" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427 +msgid "Generate New Key" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429 +msgid "Generate" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:523 +msgid "(Tunnel must be stopped first)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433 +msgid "Restricted Access List" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439 +msgid "Whitelist" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443 +msgid "Blacklist" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447 +msgid "Access List" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451 +msgid "Inbound connection limits (0=unlimited)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453 +msgid "Per client" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455 +msgid "Per minute" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459 +msgid "Per hour" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463 +msgid "Per day" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467 +msgid "Total" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475 +msgid "Max concurrent connections (0=unlimited)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493 +msgid "New Certificate type" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495 +msgid "None" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499 +msgid "Hashcash (effort)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505 +msgid "Hashcash Calc Time" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507 +msgid "Estimate" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509 +msgid "Hidden" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513 +msgid "Signed (signed by)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519 +msgid "Modify Certificate" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521 +msgid "Modify" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:71 +msgid "I2P Tunnel Manager - List" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:83 +msgid "Status Messages" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:87 +msgid "Refresh" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:91 +msgid "Stop All" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:95 +msgid "Start All" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:99 +msgid "Restart All" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:103 +msgid "Reload Config" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:105 +msgid "I2P Server Tunnels" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:109 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:130 +msgid "Points at" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:111 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:153 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:157 +msgid "Preview" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:113 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:177 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:250 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:297 +msgid "Status" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:163 +msgid "Base32 Address" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:171 +msgid "No Preview" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:184 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:304 +msgid "Starting..." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:191 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:205 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:339 +msgid "Stop" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:198 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:332 +msgid "Running" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:212 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:346 +msgid "Stopped" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:353 +msgid "Start" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:234 +msgid "New server tunnel" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:396 +msgid "Standard" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:238 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:398 +msgid "Create" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:240 +msgid "I2P Client Tunnels" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:248 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:283 +msgid "Interface" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:318 +msgid "Standby" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:363 +msgid "Outproxy" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:367 +msgid "Destination" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:381 +msgid "none" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394 +msgid "New client tunnel" +msgstr "" diff --git a/apps/routerconsole/locale/messages_en.po b/apps/routerconsole/locale/messages_en.po new file mode 100644 index 000000000..3df6fe73c --- /dev/null +++ b/apps/routerconsole/locale/messages_en.po @@ -0,0 +1,5525 @@ +# 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 <foo@bar>, 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P routerconsole\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-13 13:34+0000\n" +"PO-Revision-Date: 2010-06-15 14:09+0100\n" +"Last-Translator: duck <duck@mail.i2p>\n" +"Language-Team: duck <duck@mail.i2p>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#. NOTE TO TRANSLATORS: Feel free to translate all these as you see fit, there are several options... +#. spaces or not, '.' or not, plural or not. Try not to make it too long, it is used in +#. a lot of tables. +#. milliseconds +#. Note to translators, may be negative or zero, 2999 maximum. +#. {0,number,####} prevents 1234 from being output as 1,234 in the English locale. +#. If you want the digit separator in your locale, translate as {0}. +#. alternates: msec, msecs +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1124 +#, java-format +msgid "1 ms" +msgid_plural "{0,number,####} ms" +msgstr[0] "" +msgstr[1] "" + +#. seconds +#. Note to translators: quantity will always be greater than one. +#. alternates: secs, sec. 'seconds' is probably too long. +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1129 +#, java-format +msgid "1 sec" +msgid_plural "{0} sec" +msgstr[0] "" +msgstr[1] "" + +#. minutes +#. Note to translators: quantity will always be greater than one. +#. alternates: mins, min. 'minutes' is probably too long. +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1134 +#, java-format +msgid "1 min" +msgid_plural "{0} min" +msgstr[0] "" +msgstr[1] "" + +#. hours +#. Note to translators: quantity will always be greater than one. +#. alternates: hrs, hr., hrs. +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1139 +#, java-format +msgid "1 hour" +msgid_plural "{0} hours" +msgstr[0] "" +msgstr[1] "" + +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1141 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313 +msgid "n/a" +msgstr "" + +#. days +#. Note to translators: quantity will always be greater than one. +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1145 +#, java-format +msgid "1 day" +msgid_plural "{0} days" +msgstr[0] "" +msgstr[1] "" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:122 +#, java-format +msgid "Banned by router hash: {0}" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:124 +msgid "Banned by router hash" +msgstr "" + +#. Temporary reason, until the job finishes +#: ../../../router/java/src/net/i2p/router/Blocklist.java:669 +msgid "IP banned" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:739 +#, java-format +msgid "IP banned by blocklist.txt entry {0}" +msgstr "" + +#: ../../../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:488 +msgid "Rejecting tunnels" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:105 +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 +msgid "Reseeding" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:128 +#, java-format +msgid "Reseed fetched only 1 router." +msgid_plural "Reseed fetched only {0} routers." +msgstr[0] "" +msgstr[1] "" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:135 +msgid "Reseed failed." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:136 +#, java-format +msgid "See {0} for help." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:137 +msgid "reseed configuration page" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:239 +msgid "Reseeding: fetching seed URL." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281 +#, java-format +msgid "" +"Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:512 +msgid "NetDb entry" +msgstr "" + +#. 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:450 +msgid "Unreachable on any transport" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:499 +msgid "Router Transport Addresses" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:504 +#, java-format +msgid "{0} is used for outbound connections only" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123 +msgid "Help" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 +msgid "" +"Your transport connection limits are automatically set based on your " +"configured bandwidth." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 +msgid "" +"To override these limits, add the settings i2np.ntcp.maxConnections=nnn and " +"i2np.udp.maxConnections=nnn on the advanced configuration page." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 +msgid "Definitions" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:735 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890 +#: ../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:524 +msgid "The remote peer, identified by router hash" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:736 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 +msgid "Dir" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 +msgid "Inbound connection" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 +msgid "Outbound connection" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 +msgid "They offered to introduce us (help other peers traverse our firewall)" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 +msgid "We offered to introduce them (help other peers traverse their firewall)" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 +msgid "How long since a packet has been received / sent" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895 +msgid "Idle" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1900 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 +msgid "In/Out" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 +msgid "The smoothed inbound / outbound transfer rate (KBytes per second)" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +msgid "How long ago this connection was established" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905 +msgid "Up" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1907 +msgid "Skew" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +msgid "The difference between the peer's clock and your own" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +msgid "" +"The congestion window, which is how many bytes can be sent without an " +"acknowledgement" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +msgid "The number of sent messages awaiting acknowledgement" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 +msgid "The maximum number of concurrent messages to send" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 +msgid "The number of pending sends which exceed congestion window" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 +msgid "The slow start threshold" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 +msgid "The round trip time in milliseconds" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 +msgid "Dev" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +msgid "The standard deviation of the round trip time in milliseconds" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 +msgid "The retransmit timeout in milliseconds" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +msgid "" +"Current maximum send packet size / estimated maximum receive packet size " +"(bytes)" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 +msgid "TX" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 +msgid "The total number of packets sent to the peer" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:742 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926 +msgid "RX" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 +msgid "The total number of packets received from the peer" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1929 +msgid "Dup TX" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +msgid "The total number of packets retransmitted to the peer" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1931 +msgid "Dup RX" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +msgid "The total number of duplicate packets received from the peer" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:409 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:627 +#, java-format +msgid "Excessive clock skew: {0}" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:730 +msgid "NTCP connections" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:731 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1886 +msgid "Limit" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 +msgid "Timeout" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:743 +msgid "Out Queue" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:744 +msgid "Backlogged?" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:758 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1949 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +msgid "Inbound" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1951 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +msgid "Outbound" +msgstr "" + +#. buf.append("<tr> <td colspan=\"11\"><hr></td></tr>\n"); +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:807 +msgid "peers" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1885 +msgid "UDP connections" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1892 +msgid "Sort by peer hash" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 +msgid "Direction/Introduction" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1896 +msgid "Sort by idle inbound" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1898 +msgid "Sort by idle outbound" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1901 +msgid "Sort by inbound rate" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1903 +msgid "Sort by outbound rate" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1906 +msgid "Sort by connection uptime" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1908 +msgid "Sort by clock skew" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1911 +msgid "Sort by congestion window" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1913 +msgid "Sort by slow start threshold" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1916 +msgid "Sort by round trip time" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918 +msgid "Sort by round trip time deviation" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1920 +msgid "Sort by retransmission timeout" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1923 +msgid "Sort by outbound maximum transmit unit" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1925 +msgid "Sort by packets sent" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927 +msgid "Sort by packets received" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1930 +msgid "Sort by packets retransmitted" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1932 +msgid "Sort by packets received more than once" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1953 +msgid "We offered to introduce them" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1955 +msgid "They offered to introduce us" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1959 +msgid "Choked" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1967 +msgid "1 fail" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1969 +#, java-format +msgid "{0} fails" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1975 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:162 +msgid "Banned" +msgstr "" + +#. buf.append("<tr><td colspan=\"16\"><hr></td></tr>\n"); +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2106 +msgid "SUMMARY" +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:525 +msgid "Rejecting tunnels: Request overload" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:550 +msgid "Rejecting tunnels: Connection limit" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:744 +msgid "Dropping tunnel requests: High load" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:753 +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:35 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:37 +#: ../java/strings/Strings.java:29 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:119 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:233 +msgid "I2P Router Console" +msgstr "" + +#: ../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:35 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:335 +msgid "Save Client Configuration" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:39 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:405 +msgid "Save Interface Configuration" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 +msgid "Save WebApp Configuration" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:47 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427 +msgid "Save Plugin Configuration" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:51 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433 +msgid "Install Plugin" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:87 +#, java-format +msgid "Deleted plugin {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:89 +#, java-format +msgid "Error deleting plugin {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:101 +#, java-format +msgid "Stopped plugin {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:103 +#, java-format +msgid "Error stopping plugin {0}" +msgstr "" + +#. label (IE) +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:255 +msgid "Start" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:143 +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:49 +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:61 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:33 +msgid "Unsupported" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:189 +msgid "New client added" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:193 +msgid "" +"Client configuration saved successfully - restart required to take effect." +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 +msgid "Bad client index." +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:384 +msgid "Client" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:271 +msgid "started" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223 +msgid "deleted" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:240 +msgid "WebApp configuration saved." +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:256 +msgid "Plugin configuration saved." +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:271 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +msgid "WebApp" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:273 +msgid "Failed to start" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:278 +msgid "Failed to find server." +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:284 +msgid "No plugin URL specified." +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:294 +#, java-format +msgid "No update URL specified for {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:302 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:307 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:320 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:325 +msgid "Plugin or update download already in progress." +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:311 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:118 +#, java-format +msgid "Downloading plugin from {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:329 +#, java-format +msgid "Checking plugin {0} for updates" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:339 +#, java-format +msgid "Started plugin {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:341 +#, java-format +msgid "Error starting plugin {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 +msgid "" +"Interface configuration saved successfully - restart required to take effect." +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:85 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258 +msgid "Edit" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:94 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:331 +msgid "Add Client" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 +msgid "Class and arguments" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 +msgid "Control" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 +msgid "Run at Startup?" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:197 +msgid "Description" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 +msgid "Plugin" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:161 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185 +msgid "Version" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:163 +msgid "Signed by" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:180 +msgid "Date" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:186 +msgid "Author" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:202 +msgid "License" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:207 +msgid "Website" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:212 +msgid "Update link" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:260 +msgid "Stop" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:262 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:78 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:313 +msgid "Check for updates" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:263 +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:242 +msgid "Update" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:268 +#, java-format +msgid "Are you sure you want to delete {0}?" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:270 +msgid "Delete" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:18 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:325 +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:323 +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/ConfigLoggingHandler.java:82 +msgid "Log overrides updated" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHandler.java:160 +msgid "Log configuration saved" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 +msgid "" +"Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:49 +msgid "" +"Or put entries in the logger.config file. Example: logger.record.net.i2p." +"router.tunnel=WARN" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:50 +msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +msgid "CRIT" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +msgid "DEBUG" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +msgid "ERROR" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +msgid "INFO" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +msgid "WARN" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:88 +msgid "Remove" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:125 +msgid "Select a class to add" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:204 +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:101 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 +#: ../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:293 +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:107 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260 +#: ../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:387 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:143 +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/ConfigReseedHandler.java:29 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:34 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:360 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:516 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:352 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:377 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:344 +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 "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:171 +msgid "Disabling TCP completely" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:175 +msgid "Updating inbound TCP address to" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:179 +msgid "Disabling inbound TCP" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:181 +msgid "Updating inbound TCP address to auto" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:190 +msgid "Updating inbound TCP port to" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:193 +msgid "Updating inbound TCP port to auto" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:205 +msgid "Updating UDP port from" +msgstr "" + +#: ../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 "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:234 +msgid "Disabling UPnP, restart required to take effect" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:242 +msgid "Enabling laptop mode" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:244 +msgid "Disabling laptop mode" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:250 +msgid "Requiring SSU introducers" +msgstr "" + +#. 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:41 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:49 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:59 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:62 +msgid "unknown" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:172 +msgid "bits per second" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:173 +#, java-format +msgid "or {0} bytes per month maximum" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:20 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:315 +msgid "Ban peer until restart" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:23 +#, java-format +msgid "Manually banned via {0}" +msgstr "" + +#: ../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:317 +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:343 +msgid "Adjust peer 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 "" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:17 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 +msgid "Save changes and reseed now" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:21 +msgid "Reseeding is already in progress" +msgstr "" + +#. skip the nonce checking in ReseedHandler +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:24 +msgid "Starting reseed process" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:66 +msgid "Configuration saved successfully." +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:293 +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 "" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:70 +#, java-format +msgid "Restart in {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:53 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:291 +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:295 +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:307 +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:309 +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:323 +msgid "Run I2P on startup" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:82 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 +msgid "Don't run I2P on startup" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:84 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:343 +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:351 +msgid "View console on startup" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:93 +msgid "Console is to be shown on startup" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:94 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 +msgid "Do not view console on startup" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96 +msgid "Console is not to be shown on startup" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:105 +msgid "Service installed" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:107 +msgid "Warning: unable to install the service" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:113 +msgid "Service removed" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:115 +msgid "Warning: unable to remove the service" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:111 +msgid "Stat filter and location updated successfully to" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:113 +msgid "Failed to update the stat filter and location" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:114 +msgid "" +"Graph list updated, may take up to 60s to be reflected here and on the <a " +"href=\"graphs.jsp\">Graphs Page</a>" +msgstr "" + +#. 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:135 +msgid "Updated settings for all pools." +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:140 +msgid "Exploratory tunnel configuration saved successfully." +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 +#: ../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] "" +msgstr[1] "" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:15 +#, java-format +msgid "1 tunnel" +msgid_plural "{0} tunnels" +msgstr[0] "" +msgstr[1] "" + +#: ../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 "" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74 +msgid "ANONYMITY WARNING - Settings include 1-hop tunnels." +msgstr "" + +#: ../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("<tr><th></th><th>Inbound</th><th>Outbound</th></tr>\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 "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +msgid "French" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +msgid "German" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +msgid "Spanish" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +msgid "Dutch" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +msgid "Portuguese" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +msgid "Russian" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 +msgid "Chinese" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 +msgid "Swedish" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:85 +msgid "Update available, attempting to download now" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:87 +msgid "Update available, click button on left to download" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:93 +msgid "No update available" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:101 +msgid "Updating news URL to" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:109 +msgid "Updating proxy host to" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:117 +msgid "Updating proxy port to" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:130 +msgid "Updating refresh frequency to" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:137 +msgid "Updating update policy to" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:146 +msgid "Updating update URLs." +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:155 +msgid "Updating trusted keys." +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:163 +msgid "Updating unsigned update URL to" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:88 +#: ../java/src/net/i2p/router/web/GraphHelper.java:167 +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 "" + +#: ../java/src/net/i2p/router/web/FormHandler.java:174 +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:93 +msgid "Combined bandwidth graph" +msgstr "" + +#. e.g. "statname for 60m" +#: ../java/src/net/i2p/router/web/GraphHelper.java:107 +#, java-format +msgid "{0} for {1}" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:146 +msgid "Configure Graph Display" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:146 +msgid "Select Stats" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:150 +msgid "Periods" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:151 +msgid "Plot averages" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:152 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 +msgid "or" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:152 +msgid "plot events" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:153 +msgid "Image sizes" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:153 +msgid "width" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:154 +msgid "height" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:154 +#: ../java/src/net/i2p/router/web/GraphHelper.java:155 +msgid "pixels" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:156 +msgid "Refresh delay" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:171 +msgid "Redraw" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:203 +msgid "Graph settings saved" +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/LogsHelper.java:34 +msgid "File not found" +msgstr "" + +#: ../java/src/net/i2p/router/web/LogsHelper.java:52 +msgid "No log messages" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:80 +msgid "Network Database RouterInfo Lookup" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:95 +#: ../java/strings/Strings.java:68 +msgid "Router" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:95 +msgid "not found in network database" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:107 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:215 +msgid "Network Database Contents" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:108 +msgid "View RouterInfo" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:109 +msgid "LeaseSets" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:131 +msgid "LeaseSet" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:133 +msgid "Local" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:135 +msgid "Unpublished" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:136 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143 +msgid "Destination" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:153 +#, java-format +msgid "Expires in {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:155 +#, java-format +msgid "Expired {0} ago" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:167 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 +msgid "Gateway" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:167 +msgid "Lease" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:169 +msgid "Tunnel" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:215 +msgid "View LeaseSets" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217 +msgid "Not initialized" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:226 +msgid "Routers" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:228 +msgid "Show all routers" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:230 +msgid "Show all routers with full stats" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:265 +msgid "Network Database Router Statistics" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 +msgid "Count" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 +msgid "Transports" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 +msgid "Country" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:342 +msgid "Our info" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:344 +msgid "Peer info for" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:348 +msgid "Full entry" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:115 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 +msgid "Hidden" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 +msgid "Updated" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:355 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:358 +#, java-format +msgid "{0} ago" +msgstr "" + +#. shouldnt happen +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:357 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:361 +msgid "Published" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:363 +msgid "Address(es)" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:376 +msgid "cost" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +msgid "Hidden or starting up" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +msgid "SSU" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +msgid "SSU with introducers" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +msgid "NTCP" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +msgid "NTCP and SSU" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +msgid "NTCP and SSU with introducers" +msgstr "" + +#: ../java/src/net/i2p/router/web/NewsFetcher.java:93 +#, java-format +msgid "News last updated {0} ago." +msgstr "" + +#: ../java/src/net/i2p/router/web/NewsFetcher.java:99 +#, java-format +msgid "News last checked {0} ago." +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:77 +#, java-format +msgid "Cannot check, plugin {0} is not installed" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:129 +#, java-format +msgid "Checking for update of plugin {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:154 +#, java-format +msgid "New plugin version {0} is available" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:156 +#, java-format +msgid "No new version is available for plugin {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:165 +#, java-format +msgid "Update check failed for plugin {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:139 +msgid "Downloading plugin" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:146 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:244 +#, java-format +msgid "{0}B transferred" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:153 +msgid "Plugin downloaded" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:158 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:345 +#, java-format +msgid "Cannot create plugin directory {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:167 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:298 +#, java-format +msgid "from {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:177 +#, java-format +msgid "Plugin from {0} is corrupt" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:188 +#, java-format +msgid "Plugin from {0} does not contain the required configuration file" +msgstr "" + +#. updateStatus("<b>" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + "</b>"); +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:201 +#, java-format +msgid "Plugin from {0} contains an invalid key" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:220 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:229 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:238 +#, java-format +msgid "Plugin signature verification of {0} failed" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:253 +#, java-format +msgid "Plugin from {0} has invalid name or version" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:258 +#, java-format +msgid "Plugin {0} has mismatched versions" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:266 +#, java-format +msgid "This plugin requires I2P version {0} or higher" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:274 +#, java-format +msgid "This plugin requires Java version {0} or higher" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:282 +msgid "" +"Downloaded plugin is for new installs only, but the plugin is already " +"installed" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:294 +msgid "Installed plugin does not contain the required configuration file" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:302 +msgid "Signature of downloaded plugin does not match installed plugin" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:309 +#, java-format +msgid "Downloaded plugin version {0} is not newer than installed plugin" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:316 +#, java-format +msgid "Plugin update requires installed plugin version {0} or higher" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:323 +#, java-format +msgid "Plugin update requires installed plugin version {0} or lower" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:340 +msgid "Plugin is for upgrades only, but the plugin is not installed" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:353 +#, java-format +msgid "Failed to install plugin in {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:360 +#, java-format +msgid "Plugin {0} installed, router restart required" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:362 +#, java-format +msgid "Plugin {0} installed" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:380 +#, java-format +msgid "Plugin {0} installed and started" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:383 +#, java-format +msgid "Plugin {0} installed but failed to start, check logs" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:385 +#, java-format +msgid "Plugin {0} installed but failed to start" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:395 +#, java-format +msgid "Failed to download plugin from {0}" +msgstr "" + +#: ../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 "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:75 +#, java-format +msgid "Hiding {0} older profiles." +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:77 +#, java-format +msgid "Hiding {0} standard profiles." +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:82 +msgid "Groups (Caps)" +msgstr "" + +#: ../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:335 +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:339 +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:287 +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 "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:188 +msgid "Caps" +msgstr "" + +#: ../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 "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195 +msgid "1h Resp. Time" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196 +msgid "1d Resp. Time" +msgstr "" + +#: ../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 "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 +msgid "1d Fail Rate" +msgstr "" + +#: ../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 "" + +#: ../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 "" + +#. capabilities +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 +#: ../java/strings/Strings.java:81 +msgid "caps" +msgstr "" + +#: ../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 "" + +#: ../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/ShitlistRenderer.java:57 +#, java-format +msgid "Temporary ban expiring in {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:59 +#, java-format +msgid "Banned until restart or in {0}" +msgstr "" + +#: ../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:223 +msgid "Bandwidth usage" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:230 +msgid "Outbound bytes/sec" +msgstr "" + +#. def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3); +#: ../java/src/net/i2p/router/web/StatSummarizer.java:232 +msgid "Inbound bytes/sec" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:235 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:236 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:237 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:238 +msgid "bytes/sec" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:235 +msgid "out average" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:236 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:238 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:115 +msgid "max" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:237 +msgid "in average" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:57 +msgid "GO" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:60 +msgid "Statistics gathered during this router's uptime" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:63 +msgid "" +"The data gathered is quantized over a 1 minute period, so should just be " +"used as an estimate." +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:64 +msgid "These statistics are primarily used for development and debugging." +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:105 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:156 +msgid "No lifetime events" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:116 +msgid "frequency" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:120 +msgid "Rolling average events per period" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:124 +msgid "Highest events per period" +msgstr "" + +#. if (showAll && (curFreq.getMaxAverageEventsPerPeriod() > 0) && (curFreq.getAverageEventsPerPeriod() > 0) ) { +#. buf.append("(current is "); +#. buf.append(pct(curFreq.getAverageEventsPerPeriod()/curFreq.getMaxAverageEventsPerPeriod())); +#. buf.append(" of max)"); +#. } +#. buf.append(" <i>avg interval between updates:</i> (").append(num(curFreq.getAverageInterval())).append("ms, min "); +#. buf.append(num(curFreq.getMinAverageInterval())).append("ms)"); +#: ../java/src/net/i2p/router/web/StatsGenerator.java:135 +msgid "Lifetime average events per period" +msgstr "" + +#. Display the strict average +#: ../java/src/net/i2p/router/web/StatsGenerator.java:140 +msgid "Lifetime average frequency" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:168 +msgid "rate" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:170 +msgid "Average" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:173 +msgid "Highest average" +msgstr "" + +#. breaking the sentence like before makes translation in my language impossible. +#: ../java/src/net/i2p/router/web/StatsGenerator.java:201 +#, java-format +msgid "There were {0} event(s) in this period" +msgstr "" + +#. buf.append(' '); +#: ../java/src/net/i2p/router/web/StatsGenerator.java:203 +#, java-format +msgid " which ended {0} ago." +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:205 +msgid "No events" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:211 +msgid "Average event count" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:213 +msgid "Events in peak period" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:221 +msgid "Graph Data" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:223 +msgid "Graph Event Count" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:226 +msgid "Export Data as XML" +msgstr "" + +#. Display the strict average +#: ../java/src/net/i2p/router/web/StatsGenerator.java:231 +msgid "Lifetime average value" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:41 +msgid "I2P Router Help & FAQ" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:43 +msgid "Help & FAQ" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:55 +msgid "" +"Configure startup of clients and webapps (services); manually start dormant " +"services" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:57 +msgid "I2P Services" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:63 +msgid "Manage your I2P hosts file here (I2P domain name resolution)" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:65 +msgid "Addressbook" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:69 +msgid "Built-in anonymous BitTorrent Client" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:71 +msgid "Torrents" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:75 +msgid "Anonymous webmail client" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:77 +msgid "Webmail" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:81 +msgid "Anonymous resident webserver" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:83 +msgid "Webserver" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:91 +msgid "Configure I2P Router" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:93 +msgid "I2P Internals" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:99 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:384 +msgid "View existing tunnels and tunnel build status" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:105 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258 +msgid "Show all current peer connections" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:111 +msgid "Show recent peer performance profiles" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:113 +msgid "Profiles" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:117 +msgid "Show list of all known I2P routers" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:119 +msgid "NetDB" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123 +msgid "Health Report" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:125 +msgid "Logs" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:135 +msgid "Graph router performance" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:137 +msgid "Graphs" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141 +msgid "Textual router performance statistics" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:370 +msgid "Local Destinations" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:149 +#: ../java/strings/Strings.java:62 +msgid "I2PTunnel" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164 +msgid "I2P Router Help" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166 +msgid "General" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171 +msgid "Local Identity" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:175 +msgid "Your unique I2P router identity is" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179 +msgid "never reveal it to anyone" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:181 +msgid "show" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192 +msgid "How long we've been running for this session" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195 +msgid "Uptime" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 +msgid "" +"Help with configuring your firewall and router for optimal I2P performance" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 +msgid "Download" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:240 +msgid "Download Unsigned" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266 +msgid "Active" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275 +msgid "Fast" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:281 +msgid "High capacity" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:293 +msgid "Known" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:308 +msgid "Help with firewall configuration" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:310 +msgid "Check NAT/firewall" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:330 +msgid "Reseed" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:347 +msgid "Configure router bandwidth allocation" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:349 +msgid "Bandwidth in/out" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:369 +msgid "Total" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376 +msgid "Used" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:391 +msgid "Exploratory" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403 +msgid "Participating" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:409 +msgid "Share ratio" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415 +msgid "What's in the router's job queue?" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 +msgid "Congestion" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:422 +msgid "Job lag" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:428 +msgid "Message delay" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:434 +msgid "Tunnel lag" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440 +msgid "Backlog" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:106 +msgid "ERR-Client Manager I2CP Error - check logs" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:113 +#, java-format +msgid "ERR-Clock Skew of {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:122 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 +msgid "OK" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:123 +msgid "ERR-Private TCP Address" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:125 +msgid "ERR-SymmetricNAT" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:128 +msgid "WARN-Firewalled with Inbound TCP Enabled" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:130 +msgid "WARN-Firewalled and Floodfill" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:132 +msgid "WARN-Firewalled and Fast" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:133 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 +msgid "Firewalled" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:135 +msgid "" +"ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and " +"restart" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:141 +msgid "ERR-No Active Peers, Check Network Connection and Firewall" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:144 +msgid "ERR-UDP Disabled and Inbound TCP host/port not set" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:146 +msgid "WARN-Firewalled with UDP Disabled" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:148 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 +msgid "Testing" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:370 +msgid "Add/remove/edit & control your client and server tunnels" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:382 +msgid "Server" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:386 +msgid "Show tunnels" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:397 +msgid "Leases expired" +msgstr "" + +#. red or yellow light +#: ../java/src/net/i2p/router/web/SummaryHelper.java:397 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:398 +msgid "Rebuilding" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:398 +msgid "ago" +msgstr "" + +#. green light +#: ../java/src/net/i2p/router/web/SummaryHelper.java:401 +msgid "Ready" +msgstr "" + +#. yellow light +#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 +msgid "Building" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 +msgid "Building tunnels" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:410 +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:421 +#: ../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:89 +#, java-format +msgid "events in {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:91 +#, java-format +msgid "averaged for {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:101 +msgid "Events per period" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:114 +msgid "avg" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:116 +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:287 +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 "" + +#: ../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 "" + +#: ../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:142 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:237 +msgid "Updating" +msgstr "" + +#. Process the .sud/.su2 file +#: ../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:261 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:286 +msgid "Update downloaded" +msgstr "" + +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:91 +#, java-format +msgid "Unsigned update file from {0} is corrupt" +msgstr "" + +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:111 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:281 +msgid "Restarting" +msgstr "" + +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:118 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:288 +msgid "Click Restart to install" +msgstr "" + +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:120 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:290 +msgid "Click Shutdown and restart to install" +msgstr "" + +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:121 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:292 +#, java-format +msgid "Version {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:126 +#, java-format +msgid "Failed copy to {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/UpdateHandler.java:184 +#, java-format +msgid "Updating from {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/UpdateHandler.java:253 +#, java-format +msgid "No new version found at {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/UpdateHandler.java:281 +msgid "Update verified" +msgstr "" + +#: ../java/src/net/i2p/router/web/UpdateHandler.java:307 +#, java-format +msgid "Transfer failed from {0}" +msgstr "" + +#. wars for ConfigClientsHelper +#: ../java/strings/Strings.java:12 +msgid "addressbook" +msgstr "" + +#: ../java/strings/Strings.java:13 +msgid "i2psnark" +msgstr "" + +#: ../java/strings/Strings.java:14 +msgid "i2ptunnel" +msgstr "" + +#: ../java/strings/Strings.java:15 +msgid "susimail" +msgstr "" + +#: ../java/strings/Strings.java:16 +msgid "susidns" +msgstr "" + +#: ../java/strings/Strings.java:17 +msgid "routerconsole" +msgstr "" + +#. 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 "" + +#: ../java/strings/Strings.java:24 +msgid "Application tunnels" +msgstr "" + +#: ../java/strings/Strings.java:25 +msgid "My eepsite web server" +msgstr "" + +#: ../java/strings/Strings.java:26 +msgid "I2P webserver (eepsite)" +msgstr "" + +#: ../java/strings/Strings.java:27 +msgid "Browser launch at startup" +msgstr "" + +#: ../java/strings/Strings.java:28 +msgid "BOB application bridge" +msgstr "" + +#: ../java/strings/Strings.java:30 +msgid "Open Router Console in web browser at startup" +msgstr "" + +#: ../java/strings/Strings.java:37 +msgid "IRC proxy" +msgstr "" + +#: ../java/strings/Strings.java:38 +msgid "eepsite" +msgstr "" + +#: ../java/strings/Strings.java:39 +msgid "I2P webserver" +msgstr "" + +#: ../java/strings/Strings.java:40 +msgid "HTTP Proxy" +msgstr "" + +#. older names for pre-0.7.4 installs +#: ../java/strings/Strings.java:42 +msgid "eepProxy" +msgstr "" + +#: ../java/strings/Strings.java:43 +msgid "ircProxy" +msgstr "" + +#. hardcoded in i2psnark +#: ../java/strings/Strings.java:45 +msgid "I2PSnark" +msgstr "" + +#. hardcoded in iMule? +#: ../java/strings/Strings.java:47 +msgid "iMule" +msgstr "" + +#. 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 "" + +#: ../java/strings/Strings.java:61 +msgid "i2cp" +msgstr "" + +#: ../java/strings/Strings.java:63 +msgid "InNetPool" +msgstr "" + +#: ../java/strings/Strings.java:64 +msgid "JobQueue" +msgstr "" + +#: ../java/strings/Strings.java:65 +msgid "NetworkDatabase" +msgstr "" + +#: ../java/strings/Strings.java:66 +msgid "ntcp" +msgstr "" + +#: ../java/strings/Strings.java:69 +msgid "Stream" +msgstr "" + +#: ../java/strings/Strings.java:70 +msgid "Throttle" +msgstr "" + +#: ../java/strings/Strings.java:71 +msgid "Transport" +msgstr "" + +#: ../java/strings/Strings.java:73 +msgid "udp" +msgstr "" + +#. parameters in transport addresses (netdb.jsp) +#. may or may not be worth translating +#: ../java/strings/Strings.java:77 +msgid "host" +msgstr "" + +#: ../java/strings/Strings.java:78 +msgid "key" +msgstr "" + +#: ../java/strings/Strings.java:79 +msgid "port" +msgstr "" + +#. introducer host +#: ../java/strings/Strings.java:83 +msgid "ihost0" +msgstr "" + +#: ../java/strings/Strings.java:84 +msgid "ihost1" +msgstr "" + +#: ../java/strings/Strings.java:85 +msgid "ihost2" +msgstr "" + +#. introducer port +#: ../java/strings/Strings.java:87 +msgid "iport0" +msgstr "" + +#: ../java/strings/Strings.java:88 +msgid "iport1" +msgstr "" + +#: ../java/strings/Strings.java:89 +msgid "iport2" +msgstr "" + +#. introducer key +#: ../java/strings/Strings.java:91 +msgid "ikey0" +msgstr "" + +#: ../java/strings/Strings.java:92 +msgid "ikey1" +msgstr "" + +#: ../java/strings/Strings.java:93 +msgid "ikey2" +msgstr "" + +#. introducer tag +#: ../java/strings/Strings.java:95 +msgid "itag0" +msgstr "" + +#: ../java/strings/Strings.java:96 +msgid "itag1" +msgstr "" + +#: ../java/strings/Strings.java:97 +msgid "itag2" +msgstr "" + +#. 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:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:230 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:215 +msgid "Refresh (s)" +msgstr "" + +#. ditto +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:231 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:219 +msgid "Enable" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:240 +msgid "I2P Network Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:298 +msgid "Bandwidth limiter" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:300 +msgid "" +"I2P will work best if you configure your rates to match the speed of your " +"internet connection." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:304 +msgid "KBps In" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:318 +msgid "KBps Out" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:334 +msgid "Share" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:304 +msgid "NOTE" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:343 +#, java-format +msgid "You have configured I2P to share only {0} KBps." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:346 +msgid "I2P requires at least 12KBps to enable sharing. " +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347 +msgid "" +"Please enable sharing (participating in tunnels) by configuring more " +"bandwidth. " +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:348 +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:351 +#, java-format +msgid "You have configured I2P to share {0} KBps." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:354 +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:358 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:403 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:348 +#: ../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:342 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:365 +msgid "Cancel" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:375 +msgid "IP and Transport Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:377 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:306 +msgid "The default settings will work for most people." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:379 +msgid "There is help below." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:381 +msgid "UPnP Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:385 +msgid "Enable UPnP to open firewall ports" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:387 +msgid "UPnP status" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:389 +msgid "IP Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:391 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:461 +msgid "Externally reachable hostname or IP address" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395 +msgid "Use all auto-detect methods" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399 +msgid "Disable UPnP IP address detection" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 +msgid "Ignore local interface IP address" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:407 +msgid "Use SSU IP address detection only" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:411 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 +msgid "Specify hostname or IP" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 +msgid "Select Interface" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:431 +msgid "Hidden mode - do not publish IP" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:433 +msgid "(prevents participating traffic)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 +msgid "Action when IP changes" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:439 +msgid "" +"Laptop mode - Change router identity and UDP port when IP changes for " +"enhanced anonymity" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:441 +msgid "Experimental" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:443 +msgid "UDP Configuration:" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:445 +msgid "UDP port:" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 +msgid "TCP Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:465 +msgid "Use auto-detected IP address" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:467 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499 +msgid "currently" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:471 +msgid "if we are not firewalled" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:475 +msgid "Always use auto-detected IP address (Not firewalled)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 +msgid "Disable inbound (Firewalled)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:489 +msgid "Completely disable" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:491 +msgid "" +"(select only if behind a firewall that throttles or blocks outbound TCP)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 +msgid "Externally reachable TCP port" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 +msgid "Use the same port configured for UDP" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:505 +msgid "Specify Port" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:330 +msgid "Note" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:512 +msgid "Changing these settings will restart your router." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:518 +msgid "Configuration Help" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:520 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 +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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:522 +msgid "" +"If you can, please poke a hole in your firewall to allow unsolicited UDP and " +"TCP packets to reach you." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:524 +msgid "" +"If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole " +"punching with \"SSU introductions\" to relay traffic." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:526 +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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:528 +msgid "Certain firewalls such as symmetric NATs may not work well with I2P." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:537 +msgid "" +"UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect " +"the external IP address and forward ports." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:539 +msgid "UPnP support is beta, and may not work for any number of reasons" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:541 +msgid "No UPnP-compatible device present" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:543 +msgid "UPnP disabled on the device" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:545 +msgid "Software firewall interference with UPnP" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:547 +msgid "Bugs in the device's UPnP implementation" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:549 +msgid "Multiple firewall/routers in the internet connection path" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:551 +msgid "UPnP device change, reset, or address change" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:553 +msgid "Review the UPnP status here." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 +msgid "" +"UPnP may be enabled or disabled above, but a change requires a router " +"restart to take effect." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 +msgid "Hostnames entered above will be published in the network database." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 +msgid "They are <b>not private</b>." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 +msgid "" +"Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 +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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 +msgid "When in doubt, leave the settings at the defaults." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 +msgid "Reachability Help" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:572 +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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575 +msgid "" +"If there is an error, the <a href=\"logs.jsp\">logs</a> may also help " +"diagnose the problem." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 +msgid "Your UDP port does not appear to be firewalled." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 +msgid "Your UDP port appears to be firewalled." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 +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:587 +msgid "" +"However, if it appears consistently, you should check whether both your " +"external and internal firewalls are open for your port." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:589 +msgid "" +"I2P will work fine when firewalled, there is no reason for concern. When " +"firewalled, the router uses \"introducers\" to relay inbound connections." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:591 +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:593 +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:595 +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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 +msgid "The router is currently testing whether your UDP port is firewalled." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603 +msgid "" +"The router is not configured to publish its address, therefore it does not " +"expect incoming connections." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 +msgid "WARN - Firewalled and Fast" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 +msgid "" +"You have configured I2P to share more than 128KBps of bandwidth, but you are " +"firewalled." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 +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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 +msgid "WARN - Firewalled and Floodfill" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 +msgid "" +"You have configured I2P to be a floodfill router, but you are firewalled." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 +msgid "" +"For best participation as a floodfill router, you should open your firewall." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 +msgid "WARN - Firewalled with Inbound TCP Enabled" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 +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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 +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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 +msgid "Please open your firewall or disable inbound TCP above." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 +msgid "WARN - Firewalled with UDP Disabled" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 +msgid "You have configured inbound TCP, however you have disabled UDP." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 +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:631 +msgid "Please open your firewall or enable UDP." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 +msgid "ERR - Clock Skew" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 +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:637 +msgid "Correct your clock setting if this error persists." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 +msgid "ERR - Private TCP Address" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 +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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 +msgid "Correct the address or disable inbound TCP above." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 +msgid "ERR - SymmetricNAT" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 +msgid "I2P detected that you are firewalled by a Symmetric NAT." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 +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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:651 +msgid "" +"ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config " +"and restart" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 +msgid "I2P was unable to bind to port 8887 or other configured port." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:655 +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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:657 +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:659 +msgid "However, a restart is always required after this error." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 +msgid "ERR - UDP Disabled and Inbound TCP host/port not set" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:663 +msgid "" +"You have not configured inbound TCP with a hostname and port above, however " +"you have disabled UDP." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:665 +msgid "Therefore your router cannot accept inbound connections." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:667 +msgid "Please configure a TCP host and port above or enable UDP." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:669 +msgid "ERR - Client Manager I2CP Error - check logs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 +msgid "This is usually due to a port 7654 conflict. Check the logs to verify." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:673 +msgid "" +"Do you have another I2P instance running? Stop the conflicting program and " +"restart I2P." +msgstr "" + +#: ../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:241 +msgid "I2P Advanced Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:301 +msgid "Advanced I2P Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:311 +msgid "Some changes may require a restart to take effect." +msgstr "" + +#: ../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:243 +msgid "I2P Client Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:312 +msgid "Client Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:314 +msgid "" +"The Java clients listed below are started by the router and run in the same " +"JVM." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:318 +msgid "To change other client options, edit the file" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:401 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:415 +msgid "All changes require restart to take effect." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:337 +msgid "Advanced Client Interface Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:339 +msgid "External I2CP (I2P Client Protocol) Interface Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 +msgid "Enabled without SSL" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351 +msgid "Enabled with SSL required" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 +msgid "Disabled - Clients outside this Java process may not connect" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:359 +msgid "I2CP Port" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:363 +msgid "I2CP Interface" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:379 +msgid "Authorization" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:385 +msgid "Require username and password" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:387 +msgid "Username" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:391 +msgid "Password" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:397 +msgid "Any changes made here must also be configured in the external client." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:399 +msgid "Many clients do not support SSL or authorization." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:407 +msgid "WebApp Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 +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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:411 +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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:421 +msgid "Plugin Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 +msgid "The plugins listed below are started by the webConsole client." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:429 +msgid "Plugin Installation" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 +msgid "To install a plugin, enter the download URL:" +msgstr "" + +#: ../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:227 +msgid "I2P Keyring Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:295 +msgid "The router keyring is used to decrypt encrypted leaseSets." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:298 +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:308 +msgid "Manual Keyring Addition" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:310 +msgid "Enter keys for encrypted remote destinations here." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:313 +msgid "Keys for local destinations must be entered on the" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:315 +msgid "I2PTunnel page" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:317 +msgid "Dest. name, hash, or full key" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:319 +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:241 +msgid "I2P Logging Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 +msgid "Configure I2P Logging Options" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:303 +msgid "Logging filename" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307 +msgid "(the symbol '@' will be replaced during log rotation)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:309 +msgid "Log record format" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 +msgid "" +"(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:315 +msgid "Log date format" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 +msgid "" +"('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' " +"= millisecond)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:321 +msgid "Max log file size" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:325 +msgid "Default log level" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329 +msgid "" +"(DEBUG and INFO are not recommended defaults, as they will drastically slow " +"down your router)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:331 +msgid "Log level overrides" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:335 +msgid "New override" +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:227 +msgid "I2P Peer Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:305 +msgid "Manual Peer Controls" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:307 +msgid "Router Hash" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:311 +msgid "Manually Ban / Unban a Peer" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:313 +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:323 +msgid "Adjust Profile Bonuses" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 +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:327 +msgid "profiles page" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:251 +msgid "Banned Peers" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:366 +msgid "Banned IPs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:106 +msgid "config reseeding" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:240 +msgid "I2P Reseeding Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:300 +msgid "Reseeding Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:302 +msgid "" +"Reseeding is the bootstrapping process used to find other routers when you " +"first install I2P, or when your router has too few router references " +"remaining." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304 +msgid "" +"If reseeding has failed, you should first check your network connection." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:308 +msgid "" +"Change these only if HTTP is blocked by a restrictive firewall, reseed has " +"failed, and you have access to an HTTP proxy." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +#, java-format +msgid "See {0} for instructions on reseeding manually." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +msgid "the FAQ" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:312 +msgid "Reseed URL Selection" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 +msgid "Try SSL first then non-SSL" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:324 +msgid "Use SSL only" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:330 +msgid "Use non-SSL only" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:332 +msgid "Reseed URLs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:336 +msgid "Enable HTTP proxy (not used for SSL)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:340 +msgid "HTTP Proxy Host" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:344 +msgid "HTTP Proxy Port" +msgstr "" + +#: ../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:227 +msgid "I2P Service Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:285 +msgid "Shutdown the router" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:287 +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:289 +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:299 +msgid "" +"If you want the router to restart itself after shutting down, you can choose " +"one of the following." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:301 +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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:303 +msgid "" +"A graceful restart will take a few minutes (but your peers will appreciate " +"your patience), while a hard restart does so immediately." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 +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:315 +msgid "Run on startup" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 +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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 +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:329 +msgid "" +"If you are running I2P as service right now, removing it will shut down your " +"router immediately." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:331 +msgid "" +"You may want to consider shutting down gracefully, as above, then running " +"uninstall_i2p_service_winnt.bat." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 +msgid "Debugging" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 +msgid "View the job queue" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 +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 <a href=" +"\"logs.jsp#servicelogs\">wrapper.log</a>." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 +msgid "Launch browser on router startup?" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 +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 "" + +#: ../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:228 +msgid "I2P Stats Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302 +msgid "Configure I2P Stat Collection" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:304 +msgid "Enable full stats?" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:311 +msgid "change requires restart to take effect" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:313 +msgid "Stat file" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:317 +msgid "Filter" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:328 +msgid "toggle all" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:330 +msgid "Log" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:332 +msgid "Graph" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:371 +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:240 +msgid "I2P Tunnel Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:306 +msgid "The default settings work for most people." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:310 +msgid "There is a fundamental tradeoff between anonymity and performance." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:313 +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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:316 +msgid "High CPU and/or high outbound bandwidth usage may result." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:319 +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:333 +msgid "" +"Exploratory tunnel setting changes are stored in the router.config file." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:336 +msgid "Client tunnel changes are temporary and are not saved." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:338 +msgid "To make permanent client tunnel changes see the" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:340 +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:240 +msgid "I2P UI Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:292 +msgid "Router Console Theme" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:310 +msgid "Theme selection disabled for Internet Explorer, sorry." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:312 +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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:316 +msgid "Router Console Language" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:320 +msgid "" +"Please contribute to the router console translation project! Contact the " +"developers on IRC #i2p to help." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:324 +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:227 +msgid "I2P Update Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:303 +msgid "Check for I2P and news updates" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:305 +msgid "News & I2P Updates" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:309 +msgid "Update In Progress" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:317 +msgid "News URL" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:321 +msgid "Refresh frequency" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:327 +msgid "Update policy" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331 +msgid "Update through the eepProxy?" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:335 +msgid "eepProxy host" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:339 +msgid "eepProxy port" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:343 +msgid "Update URLs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:347 +msgid "Trusted keys" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:351 +msgid "Update with unsigned development builds?" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:355 +msgid "Unsigned Build URL" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 +msgid "" +"I2P updates are disabled because you do not have write permission for the " +"install directory." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:367 +msgid "Save" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:115 +msgid "Internal Error" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:117 +msgid "Router Console" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:121 +msgid "Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129 +msgid "Sorry! There has been an internal error." +msgstr "" + +#. note to translators - both parameters are URLs +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:133 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:232 +#, java-format +msgid "Please report bugs on {0} or {1}." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 +msgid "" +"You may use the username \"guest\" and password \"guest\" if you do not wish " +"to register." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 +msgid "Please include this information in bug reports" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:141 +msgid "Error Details" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:143 +#, java-format +msgid "Error {0}" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:163 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:228 +msgid "I2P Version and Running Environment" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 +msgid "" +"Note that system information, log timestamps, and log messages may provide " +"clues to your location; please review everything you include in a bug report." +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:242 +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:244 +msgid "Error 404" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:249 +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:227 +msgid "I2P Performance Graphs" +msgstr "" + +#: ../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:226 +msgid "I2P Router Job Queue" +msgstr "" + +#: ../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:226 +msgid "I2P Router Logs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:281 +msgid "Critical Logs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:285 +msgid "Router Logs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:291 +msgid "Service (Wrapper) Logs" +msgstr "" + +#: ../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:226 +msgid "I2P Network Database Summary" +msgstr "" + +#: ../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:230 +msgid "Web Application Not Running" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:232 +msgid "The requested web application is not running." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:234 +msgid "" +"Please visit the <a href=\"/configclients.jsp#webapp\">config clients page</" +"a> 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:226 +msgid "I2P Network Peers" +msgstr "" + +#: ../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:226 +msgid "I2P Network Peer Profiles" +msgstr "" + +#: ../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:243 +msgid "I2P Router Statistics" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:248 +#, java-format +msgid "Disable {0} Refresh" +msgstr "" + +#: ../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:226 +msgid "I2P Tunnel Summary" +msgstr "" diff --git a/apps/susidns/locale/messages_en.po b/apps/susidns/locale/messages_en.po new file mode 100644 index 000000000..df26745b7 --- /dev/null +++ b/apps/susidns/locale/messages_en.po @@ -0,0 +1,480 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the susidns package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo <foo@bar>, 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P susidns\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-13 11:54+0000\n" +"PO-Revision-Date: 2010-06-15 14:09+0100\n" +"Last-Translator: duck <duck@mail.i2p>\n" +"Language-Team: duck <duck@mail.i2p>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:200 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:193 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:197 +msgid "Search" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:204 +msgid "Search within filtered list" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206 +msgid "Filtered list" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:210 +msgid "no matches" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:213 +msgid "Addressbook" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:215 +msgid "contains no entries" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:217 +msgid "contains 1 entry" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:219 +#, java-format +msgid "contains {0} entries" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:229 +#, java-format +msgid "Showing {0} of {1}" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:368 +msgid "Add" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:265 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:366 +msgid "Replace" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264 +#, java-format +msgid "Host name {0} is already in addressbook, unchanged." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266 +#, java-format +msgid "" +"Host name {0} is already in addressbook with a different destination. Click " +"\"Replace\" to overwrite." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278 +#, java-format +msgid "Destination added for {0}." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:280 +#, java-format +msgid "Destination changed for {0}." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:285 +msgid "Invalid Base 64 destination." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:289 +msgid "Please enter a host name and destination" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:293 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314 +msgid "Delete Selected" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:303 +#, java-format +msgid "Destination {0} deleted." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305 +#, java-format +msgid "{0} destinations deleted." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:311 +msgid "Addressbook saved." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:314 +msgid "ERROR: Could not write addressbook file." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319 +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151 +msgid "" +"Invalid form submission, probably because you used the \"back\" or \"reload" +"\" button on your browser. Please resubmit." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:130 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:130 +msgid "Save" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:141 +msgid "Configuration saved." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:128 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:128 +msgid "Reload" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:144 +msgid "Configuration reloaded." +msgstr "" + +#. Yes this is a hack. +#. No it doesn't work on a text-mode browser. +#. Fetching from the addressbook servlet +#. with the correct parameters will kick off a +#. config reload and fetch. +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:139 +msgid "" +"Subscriptions saved, updating addressbook from subscription sources now." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143 +msgid "Subscriptions saved." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147 +msgid "Subscriptions reloaded." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145 +msgid "addressbook" +msgstr "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:163 +msgid "Filter" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:166 +msgid "all" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:177 +msgid "Current filter" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:182 +msgid "clear filter" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:224 +msgid "Name" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:226 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:362 +msgid "Destination" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:257 +msgid "Mark for deletion" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:279 +msgid "address helper link" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:312 +msgid "Cancel" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345 +msgid "This addressbook is empty." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:356 +msgid "Add new destination" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:358 +msgid "Hostname" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:132 +msgid "Hints" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134 +msgid "" +"File and directory paths here are relative to the addressbook's working " +"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P" +"\\addressbook\\ (Windows)." +msgstr "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142 +msgid "" +"Use the private addressbook for private destinations, these are not " +"published." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144 +msgid "Options" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146 +msgid "File containing the list of subscriptions URLs (no need to change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148 +msgid "Update interval in hours" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150 +msgid "" +"Your public hosts.txt file (choose a path within your webserver document " +"root)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152 +msgid "Your hosts.txt (don't change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:154 +msgid "Your personal addressbook, these hosts will be published" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:156 +msgid "Your private addressbook, it is never published" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158 +msgid "Port for your eepProxy (no need to change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160 +msgid "Hostname for your eepProxy (no need to change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162 +msgid "Whether to update the published addressbook" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164 +msgid "" +"File containing the etags header from the fetched subscription URLs (no need " +"to change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:166 +msgid "" +"File containing the modification timestamp for each fetched subscription URL " +"(no need to change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168 +msgid "File to log activity to (change to /dev/null if you like)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:91 +msgid "Introduction" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:109 +msgid "What is the addressbook?" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:111 +msgid "The addressbook application is part of your i2p installation." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113 +msgid "" +"It regularly updates your hosts.txt file from distributed sources or " +"\"subscriptions\"." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115 +msgid "" +"In the default configuration, the addressbook is only subscribed to www.i2p2." +"i2p." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117 +msgid "" +"Subscribing to additional sites is easy, just add them to your <a href=" +"\"subscriptions.jsp\">subscriptions</a> file." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:119 +msgid "" +"For more information on naming in i2p, see <a href=\"http://www.i2p2.i2p/" +"naming.html\">the overview on www.i2p2.i2p</a>." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121 +msgid "How does the addressbook work?" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123 +msgid "" +"The addressbook application regularly polls your subscriptions and merges " +"their content into your \"router\" addressbook, stored in the hosts.txt file." +msgstr "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132 +msgid "The subscription file contains a list of i2p URLs." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134 +msgid "" +"The addressbook application regularly checks this list for new eepsites." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136 +msgid "Those URLs refer to published hosts.txt files." +msgstr "" + +#: ../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 "" + +#: ../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 "" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142 +msgid "See the FAQ for a list of subscription URLs." +msgstr "" From 0fef251efb391e684025ebb08b62bfe2b87a5d90 Mon Sep 17 00:00:00 2001 From: duck <duck@mail.i2p> Date: Sun, 13 Feb 2011 14:31:38 +0000 Subject: [PATCH 192/463] Transifex translation configuration Project URL: http://www.transifex.net/projects/p/I2P/ This is an evaluation of using this open translation platform. --- .tx/config | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 .tx/config diff --git a/.tx/config b/.tx/config new file mode 100644 index 000000000..b8009fb43 --- /dev/null +++ b/.tx/config @@ -0,0 +1,46 @@ +[I2P.i2ptunnel] +source_file = apps/i2ptunnel/locale/messages_en.po +source_lang = en +trans.de = apps/i2ptunnel/locale/messages_de.po +trans.nl = apps/i2ptunnel/locale/messages_nl.po +trans.ru = apps/i2ptunnel/locale/messages_ru.po +trans.zh_CN = apps/i2ptunnel/locale/messages_zh.po + +[I2P.routerconsole] +source_file = apps/routerconsole/locale/messages_en.po +source_lang = en +trans.de = apps/routerconsole/locale/messages_de.po +trans.es = apps/routerconsole/locale/messages_es.po +trans.fr = apps/routerconsole/locale/messages_fr.po +trans.nl = apps/routerconsole/locale/messages_nl.po +trans.ru = apps/routerconsole/locale/messages_ru.po +trans.zh_CN = apps/routerconsole/locale/messages_zh.po + +[I2P.susidns] +source_file = apps/susidns/locale/messages_en.po +source_lang = en +trans.de = apps/susidns/locale/messages_de.po +trans.nl = apps/susidns/locale/messages_nl.po +trans.ru = apps/susidns/locale/messages_ru.po +trans.zh_CN = apps/susidns/locale/messages_zh.po + +[I2P.i2psnark] +source_file = apps/i2psnark/locale/messages_en.po +source_lang = en +trans.de = apps/i2psnark/locale/messages_de.po +trans.es = apps/i2psnark/locale/messages_es.po +trans.fr = apps/i2psnark/locale/messages_fr.po +trans.nl = apps/i2psnark/locale/messages_nl.po +trans.pt = apps/i2psnark/locale/messages_pt.po +trans.ru = apps/i2psnark/locale/messages_ru.po +trans.zh_CN = apps/i2psnark/locale/messages_zh.po + +[I2P.desktopgui] +source_file = apps/desktopgui/locale/messages_en.po +source_lang = en +trans.nl = apps/desktopgui/locale/messages_nl.po +trans.zh_CN = apps/desktopgui/locale/messages_zh.po + +[main] +host = http://www.transifex.net + From a75b2ccf154c9d0a1b139f17360dd9b331fcd97f Mon Sep 17 00:00:00 2001 From: duck <duck@mail.i2p> Date: Sun, 13 Feb 2011 17:11:53 +0000 Subject: [PATCH 193/463] Don't create an english bundle. Add missing desktopgui dependency. --- apps/desktopgui/bundle-messages.sh | 20 ++++++++++++-------- apps/i2psnark/java/bundle-messages.sh | 20 ++++++++++++-------- apps/i2ptunnel/java/bundle-messages.sh | 20 ++++++++++++-------- apps/routerconsole/java/bundle-messages.sh | 20 ++++++++++++-------- apps/susidns/src/bundle-messages.sh | 20 ++++++++++++-------- build.xml | 2 +- 6 files changed, 61 insertions(+), 41 deletions(-) diff --git a/apps/desktopgui/bundle-messages.sh b/apps/desktopgui/bundle-messages.sh index acd52a353..29713209e 100644 --- a/apps/desktopgui/bundle-messages.sh +++ b/apps/desktopgui/bundle-messages.sh @@ -95,15 +95,19 @@ do touch $i fi - echo "Generating ${CLASS}_$LG ResourceBundle..." + if [ "$LG" != "en" ] + then + # only generate for non-source language + echo "Generating ${CLASS}_$LG ResourceBundle..." - # convert to class files in build - msgfmt --java --statistics -r $CLASS -l $LG -d build $i - if [ $? -ne 0 ] - then - echo 'Warning - msgfmt failed, not updating translations' - break - fi + # convert to class files in build + msgfmt --java --statistics -r $CLASS -l $LG -d build $i + if [ $? -ne 0 ] + then + echo 'Warning - msgfmt failed, not updating translations' + break + fi + fi done rm -f $TMPFILE # todo: return failure diff --git a/apps/i2psnark/java/bundle-messages.sh b/apps/i2psnark/java/bundle-messages.sh index d5d116ac3..2a6a82470 100755 --- a/apps/i2psnark/java/bundle-messages.sh +++ b/apps/i2psnark/java/bundle-messages.sh @@ -86,15 +86,19 @@ do touch $i fi - echo "Generating ${CLASS}_$LG ResourceBundle..." + if [ "$LG" != "en" ] + then + # only generate for non-source language + echo "Generating ${CLASS}_$LG ResourceBundle..." - # convert to class files in build/obj - msgfmt --java --statistics -r $CLASS -l $LG -d build/obj $i - if [ $? -ne 0 ] - then - echo 'Warning - msgfmt failed, not updating translations' - break - fi + # convert to class files in build/obj + msgfmt --java --statistics -r $CLASS -l $LG -d build/obj $i + if [ $? -ne 0 ] + then + echo 'Warning - msgfmt failed, not updating translations' + break + fi + fi done rm -f $TMPFILE # todo: return failure diff --git a/apps/i2ptunnel/java/bundle-messages.sh b/apps/i2ptunnel/java/bundle-messages.sh index 6b3f09dbd..2ee9eba7b 100755 --- a/apps/i2ptunnel/java/bundle-messages.sh +++ b/apps/i2ptunnel/java/bundle-messages.sh @@ -88,15 +88,19 @@ do touch $i fi - echo "Generating ${CLASS}_$LG ResourceBundle..." + if [ "$LG" != "en" ] + then + # only generate for non-source language + echo "Generating ${CLASS}_$LG ResourceBundle..." - # convert to class files in build/obj - msgfmt --java --statistics -r $CLASS -l $LG -d ../jsp/WEB-INF/classes $i - if [ $? -ne 0 ] - then - echo 'Warning - msgfmt failed, not updating translations' - break - fi + # convert to class files in build/obj + msgfmt --java --statistics -r $CLASS -l $LG -d ../jsp/WEB-INF/classes $i + if [ $? -ne 0 ] + then + echo 'Warning - msgfmt failed, not updating translations' + break + fi + fi done rm -f $TMPFILE # todo: return failure diff --git a/apps/routerconsole/java/bundle-messages.sh b/apps/routerconsole/java/bundle-messages.sh index c7ceed5d5..7bc06577c 100755 --- a/apps/routerconsole/java/bundle-messages.sh +++ b/apps/routerconsole/java/bundle-messages.sh @@ -122,15 +122,19 @@ do touch $i fi - echo "Generating ${CLASS}_$LG ResourceBundle..." + if [ "$LG" != "en" ] + then + # only generate for non-source language + echo "Generating ${CLASS}_$LG ResourceBundle..." - # convert to class files in build/obj - msgfmt --java --statistics -r $CLASS -l $LG -d build/obj $i - if [ $? -ne 0 ] - then - echo 'Warning - msgfmt failed, not updating translations' - break - fi + # convert to class files in build/obj + msgfmt --java --statistics -r $CLASS -l $LG -d build/obj $i + if [ $? -ne 0 ] + then + echo 'Warning - msgfmt failed, not updating translations' + break + fi + fi done rm -f $TMPFILE # todo: return failure diff --git a/apps/susidns/src/bundle-messages.sh b/apps/susidns/src/bundle-messages.sh index 3d0aa9d37..1e6d7db19 100755 --- a/apps/susidns/src/bundle-messages.sh +++ b/apps/susidns/src/bundle-messages.sh @@ -88,15 +88,19 @@ do touch $i fi - echo "Generating ${CLASS}_$LG ResourceBundle..." + if [ "$LG" != "en" ] + then + # only generate for non-source language + echo "Generating ${CLASS}_$LG ResourceBundle..." - # convert to class files in build/obj - msgfmt --java --statistics -r $CLASS -l $LG -d WEB-INF/classes $i - if [ $? -ne 0 ] - then - echo 'Warning - msgfmt failed, not updating translations' - break - fi + # convert to class files in build/obj + msgfmt --java --statistics -r $CLASS -l $LG -d WEB-INF/classes $i + if [ $? -ne 0 ] + then + echo 'Warning - msgfmt failed, not updating translations' + break + fi + fi done rm -f $TMPFILE # todo: return failure diff --git a/build.xml b/build.xml index f2413e090..d95ad3765 100644 --- a/build.xml +++ b/build.xml @@ -201,7 +201,7 @@ <copy file="apps/addressbook/dist/addressbook.war" todir="build/" /> </target> <!-- the apps need to compile the jsps to poupdate --> - <target name="poupdate" depends="buildRouter, buildStreaming, buildSystray, buildJetty" > + <target name="poupdate" depends="buildRouter, buildStreaming, buildSystray, buildJetty, buildDesktopGui" > <ant dir="apps/routerconsole/java/" target="poupdate" /> <ant dir="apps/i2psnark/java/" target="poupdate" /> <ant dir="apps/i2ptunnel/java/" target="poupdate" /> From 2e84134938c67fb48ceb324ad310992a89132335 Mon Sep 17 00:00:00 2001 From: duck <duck@mail.i2p> Date: Sun, 13 Feb 2011 17:53:41 +0000 Subject: [PATCH 194/463] Update Dutch translations --- apps/i2psnark/locale/messages_nl.po | 559 ++++++----- apps/i2ptunnel/locale/messages_nl.po | 56 +- apps/routerconsole/locale/messages_nl.po | 1136 +++++++--------------- 3 files changed, 713 insertions(+), 1038 deletions(-) diff --git a/apps/i2psnark/locale/messages_nl.po b/apps/i2psnark/locale/messages_nl.po index e3cb3147d..fbe033a9f 100644 --- a/apps/i2psnark/locale/messages_nl.po +++ b/apps/i2psnark/locale/messages_nl.po @@ -6,406 +6,459 @@ # msgid "" msgstr "" -"Project-Id-Version: I2P i2psnark\n" +"Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-20 19:26+0000\n" -"PO-Revision-Date: 2010-06-15 09:07+0100\n" -"Last-Translator: duck <duck@mail.i2p>\n" -"Language-Team: duck <duck@mail.i2p>, monkeybrains <monkeybrains@mail.i2p>\n" +"POT-Creation-Date: 2011-02-13 17:44+0000\n" +"PO-Revision-Date: 2011-02-13 17:41+0000\n" +"Last-Translator: ducki2p <ducki2p@gmail.com>\n" +"Language-Team: Dutch <>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -"X-Poedit-Language: Dutch\n" -#: ../java/src/org/klomp/snark/SnarkManager.java:94 -#, java-format -msgid "Adding torrents in {0} minutes" -msgstr "Torrents toevoegen in {0} minuten" - -#: ../java/src/org/klomp/snark/SnarkManager.java:296 +#: ../java/src/org/klomp/snark/SnarkManager.java:307 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "Totale uploaders limiet gewijzigd in {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:298 +#: ../java/src/org/klomp/snark/SnarkManager.java:309 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "Minimum totale uploaders limiet is {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:310 +#: ../java/src/org/klomp/snark/SnarkManager.java:321 #, 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:312 +#: ../java/src/org/klomp/snark/SnarkManager.java:323 #, 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:324 +#: ../java/src/org/klomp/snark/SnarkManager.java:335 #, java-format -msgid "Startup delay limit changed to {0} minutes" -msgstr "Startup vertragings limiet gewijzigd in {0} minuten" +msgid "Startup delay changed to {0}" +msgstr "Opstartvertraging gewijzigd in {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:371 +#: ../java/src/org/klomp/snark/SnarkManager.java:386 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:378 +#: ../java/src/org/klomp/snark/SnarkManager.java:393 msgid "Disconnecting old I2CP destination" msgstr "Oude I2CP destination wordt afgesloten" -#: ../java/src/org/klomp/snark/SnarkManager.java:382 +#: ../java/src/org/klomp/snark/SnarkManager.java:397 #, java-format msgid "I2CP settings changed to {0}" msgstr "I2CP instellingen gewijzigd in {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:386 +#: ../java/src/org/klomp/snark/SnarkManager.java:402 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:390 +#: ../java/src/org/klomp/snark/SnarkManager.java:406 msgid "Unable to reconnect with the old settings!" msgstr "Kan niet opnieuw verbinden met de oude instellingen!" -#: ../java/src/org/klomp/snark/SnarkManager.java:392 +#: ../java/src/org/klomp/snark/SnarkManager.java:408 msgid "Reconnected on the new I2CP destination" msgstr "Opnieuw verbonden met de nieuwe I2CP destination" -#: ../java/src/org/klomp/snark/SnarkManager.java:403 +#: ../java/src/org/klomp/snark/SnarkManager.java:418 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "I2CP listener herstart voor \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:414 +#: ../java/src/org/klomp/snark/SnarkManager.java:429 msgid "Enabled autostart" msgstr "Autostart ingeschakeld" -#: ../java/src/org/klomp/snark/SnarkManager.java:416 +#: ../java/src/org/klomp/snark/SnarkManager.java:431 msgid "Disabled autostart" msgstr "Autostart uitgeschakeld" -#: ../java/src/org/klomp/snark/SnarkManager.java:422 +#: ../java/src/org/klomp/snark/SnarkManager.java:437 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "Open Trackers ingeschakeld - torrent herstart nodig." -#: ../java/src/org/klomp/snark/SnarkManager.java:424 +#: ../java/src/org/klomp/snark/SnarkManager.java:439 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "Open Trackers uitgeschakeld - torrent herstart nodig." -#: ../java/src/org/klomp/snark/SnarkManager.java:431 +#: ../java/src/org/klomp/snark/SnarkManager.java:447 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:438 +#: ../java/src/org/klomp/snark/SnarkManager.java:454 #, java-format msgid "{0} theme loaded, return to main i2psnark page to view." msgstr "" "{0} thema geladen, ga naar de hoofd i2psnark pagina om deze te bekijken." -#: ../java/src/org/klomp/snark/SnarkManager.java:445 +#: ../java/src/org/klomp/snark/SnarkManager.java:461 msgid "Configuration unchanged." msgstr "Configuratie ongewijzigd." -#: ../java/src/org/klomp/snark/SnarkManager.java:455 +#: ../java/src/org/klomp/snark/SnarkManager.java:471 #, 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:494 +#: ../java/src/org/klomp/snark/SnarkManager.java:536 msgid "Connecting to I2P" msgstr "Verbinden met I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:497 +#: ../java/src/org/klomp/snark/SnarkManager.java:539 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:506 +#: ../java/src/org/klomp/snark/SnarkManager.java:548 #, 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:528 +#: ../java/src/org/klomp/snark/SnarkManager.java:570 #, java-format msgid "Cannot open \"{0}\"" msgstr "Kan \"{0}\" niet openen" -#: ../java/src/org/klomp/snark/SnarkManager.java:541 +#. TODO - if the existing one is a magnet, delete it and add the metainfo instead? +#: ../java/src/org/klomp/snark/SnarkManager.java:586 +#: ../java/src/org/klomp/snark/SnarkManager.java:661 +#: ../java/src/org/klomp/snark/SnarkManager.java:716 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954 +#, java-format +msgid "Torrent with this info hash is already running: {0}" +msgstr "Torrent met deze info hash is al actief: {0}" + +#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); +#: ../java/src/org/klomp/snark/SnarkManager.java:593 #, java-format msgid "" -"Warning - Ignoring non-i2p tracker in \"{0}\", will announce to i2p open " -"trackers only" +"Warning - No I2P trackers 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" +"Waarschuwing - Niet-I2P trackers in \"{0}\", zal alleen aankondigen bij I2P " +"open trackers." -#: ../java/src/org/klomp/snark/SnarkManager.java:543 +#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); +#: ../java/src/org/klomp/snark/SnarkManager.java:598 #, java-format msgid "" -"Warning - Ignoring non-i2p tracker in \"{0}\", and open trackers are " -"disabled, you must enable open trackers before starting the torrent!" +"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is " +"enabled before starting this 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!" +"Waarschuwing - Niet-I2P Trackers gevonden in \"{0}\". Zorg ervoor dat Open " +"Tracker is ingeschakeld voordat je deze torrent start." -#: ../java/src/org/klomp/snark/SnarkManager.java:563 +#: ../java/src/org/klomp/snark/SnarkManager.java:619 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "Torrent in \"{0}\" is ongeldig" -#: ../java/src/org/klomp/snark/SnarkManager.java:578 +#: ../java/src/org/klomp/snark/SnarkManager.java:624 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1977 +#, java-format +msgid "ERROR - Out of memory, cannot create torrent from {0}" +msgstr "ERROR - Geen geheugen meer, kan geen torrent maken van {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:635 #, java-format msgid "Torrent added and started: \"{0}\"" msgstr "Torrent toegevoegd en gestart: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:580 +#: ../java/src/org/klomp/snark/SnarkManager.java:637 #, java-format msgid "Torrent added: \"{0}\"" msgstr "Torrent toegevoegd: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:734 +#: ../java/src/org/klomp/snark/SnarkManager.java:672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:489 +#, java-format +msgid "Fetching {0}" +msgstr "Downloaden {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:675 +#, java-format +msgid "" +"We have no saved peers and no other torrents are running. Fetch of {0} will " +"not succeed until you start another torrent." +msgstr "" +"We hebben geen opgeslagen peers en er zijn geen andere torrents actief. Het " +"ophalen van {0} zal niet lukken totdat je een andere torrent start." + +#: ../java/src/org/klomp/snark/SnarkManager.java:679 +#, java-format +msgid "Adding {0}" +msgstr "Toevoegen van {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:726 +#: ../java/src/org/klomp/snark/SnarkManager.java:749 +#: ../java/src/org/klomp/snark/SnarkManager.java:1174 +#, java-format +msgid "Failed to copy torrent file to {0}" +msgstr "Kan het torrent bestand niet kopieren naar {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:972 #, 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:736 +#: ../java/src/org/klomp/snark/SnarkManager.java:974 #, 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:738 +#: ../java/src/org/klomp/snark/SnarkManager.java:976 #, java-format msgid "No pieces in \"{0}\", deleting it!" msgstr "Geen stukken in \"{0}\", wordt verwijderd!" -#: ../java/src/org/klomp/snark/SnarkManager.java:740 +#: ../java/src/org/klomp/snark/SnarkManager.java:978 #, 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:742 +#: ../java/src/org/klomp/snark/SnarkManager.java:980 #, 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:743 +#: ../java/src/org/klomp/snark/SnarkManager.java:981 #, java-format msgid "Limit is {0}B" msgstr "Limiet is {0}B" -#: ../java/src/org/klomp/snark/SnarkManager.java:751 +#: ../java/src/org/klomp/snark/SnarkManager.java:989 #, 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:767 +#: ../java/src/org/klomp/snark/SnarkManager.java:1005 #, 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:794 +#: ../java/src/org/klomp/snark/SnarkManager.java:1026 +#: ../java/src/org/klomp/snark/SnarkManager.java:1044 #, java-format msgid "Torrent stopped: \"{0}\"" msgstr "Torrent gestopt: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:814 +#: ../java/src/org/klomp/snark/SnarkManager.java:1065 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "Torrent verwijderd: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:852 +#: ../java/src/org/klomp/snark/SnarkManager.java:1073 +#, java-format +msgid "Adding torrents in {0}" +msgstr "Toevoegen van torrents in {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1122 #, java-format msgid "Download finished: {0}" msgstr "Download gereed: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:880 +#: ../java/src/org/klomp/snark/SnarkManager.java:1170 +#, java-format +msgid "Metainfo received for {0}" +msgstr "Metainfo ontvangen voor {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1171 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:524 +#, java-format +msgid "Starting up torrent {0}" +msgstr "Starten met torrent {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1225 msgid "Unable to connect to I2P!" msgstr "Kan niet verbinden met I2P!" -#: ../java/src/org/klomp/snark/SnarkManager.java:886 +#: ../java/src/org/klomp/snark/SnarkManager.java:1231 #, java-format msgid "Unable to add {0}" msgstr "Kan {0} niet toevoegen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:196 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:205 msgid "I2PSnark - Anonymous BitTorrent Client" msgstr "I2PSnark - Anonieme BitTorrent Client" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:209 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:218 msgid "Torrents" msgstr "Torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:212 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:219 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1003 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1007 msgid "I2PSnark" msgstr "I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:216 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:225 msgid "Refresh page" msgstr "Ververs pagina" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:230 msgid "Forum" msgstr "Forum" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:275 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1698 msgid "Status" msgstr "Status" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:281 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:292 msgid "Hide Peers" msgstr "Verberg Peers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:288 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:299 msgid "Show Peers" msgstr "Toon Peers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1622 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1638 msgid "Torrent" msgstr "Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:301 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310 msgid "Estimated time remaining" msgstr "Schatting resterende tijd" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:304 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:313 msgid "ETA" msgstr "ETA" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:308 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317 msgid "Downloaded" msgstr "Gedownload" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:320 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 msgid "RX" msgstr "RX" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:315 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:324 msgid "Uploaded" msgstr "Geupload" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:318 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344 msgid "TX" msgstr "TX" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:323 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:332 msgid "Down Rate" msgstr "Down Snelheid" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:328 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:337 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 msgid "Rate" msgstr "Rato" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342 msgid "Up Rate" msgstr "Up Snelheid" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:355 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:364 msgid "Stop all torrents and the I2P tunnel" msgstr "Stop alle torrents en de I2P tunnel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:366 msgid "Stop All" msgstr "Stop Alle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:375 msgid "Start all torrents and the I2P tunnel" msgstr "Start alle torrents en de I2P tunnel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377 msgid "Start All" msgstr "Start Alle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:387 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:396 msgid "No torrents loaded." msgstr "Geen torrents geladen." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:392 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:401 msgid "Totals" msgstr "Totalen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:394 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403 #, 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:397 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:406 #, 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:480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:495 #, java-format -msgid "Fetching {0}" -msgstr "Downloaden {0}" +msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" +msgstr "Ongeldige URL: moet beginnen met \"http://\", \"{0}\", of \"{1}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:484 -msgid "Invalid URL - must start with http://" -msgstr "Ongeldige URL - moet beginnen met http://" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:515 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:543 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 #, java-format -msgid "Starting up torrent {0}" -msgstr "Starten met torrent {0}" +msgid "Magnet deleted: {0}" +msgstr "Magnet verwijderd: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:553 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:551 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:576 #, java-format msgid "Torrent file deleted: {0}" msgstr "Torrent bestand verwijderd: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:559 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:592 #, java-format msgid "Data file deleted: {0}" msgstr "Data bestand verwijderd: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:561 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 #, 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:580 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 #, java-format msgid "Data dir deleted: {0}" msgstr "Data directory verwijderd: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:636 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:628 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:652 #, java-format msgid "Torrent created for \"{0}\"" msgstr "Torrent gemaakt voor \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:654 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " @@ -414,88 +467,89 @@ 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:633 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:656 #, 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:636 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:659 #, 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:639 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:662 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:642 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:665 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:653 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676 msgid "I2P tunnel closed." msgstr "I2P tunnel gesloten." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:656 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:679 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:785 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:796 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:802 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:807 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:813 msgid "Tracker Error" msgstr "Tracker Fout" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:788 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:816 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:820 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:805 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:825 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:829 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:842 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:846 #, 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:801 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:806 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:818 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823 msgid "Seeding" msgstr "Seeding" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1559 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:827 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1644 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 msgid "Complete" msgstr "Voltooid" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:813 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:818 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:830 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:835 msgid "OK" msgstr "OK" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:827 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:844 msgid "Stalled" msgstr "Vastgelopen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:831 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:848 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:851 msgid "No Peers" msgstr "Geen Peers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:853 msgid "Stopped" msgstr "Gestopt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:863 -#, java-format -msgid "Details at {0} tracker" -msgstr "Details op de {0} tracker" - #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:864 +msgid "Torrent details" +msgstr "Torrent details" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1139 msgid "Info" msgstr "Info" @@ -507,28 +561,28 @@ msgstr "Bekijk bestanden" msgid "Open file" msgstr "Open bestand" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:891 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:893 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1785 msgid "Open" msgstr "Open" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:935 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:939 msgid "Stop the torrent" msgstr "Stop de torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:937 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:941 msgid "Stop" msgstr "Stop" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:947 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:950 msgid "Start the torrent" msgstr "Start de torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:949 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:952 msgid "Start" msgstr "Start" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:962 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "" "Verwijder de torrent van de actieve lijst, het .torrent bestand wordt " @@ -537,7 +591,7 @@ msgstr "" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:964 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded " @@ -546,18 +600,18 @@ 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:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970 msgid "Remove" msgstr "Weghalen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:976 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:980 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:981 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " @@ -566,151 +620,162 @@ msgstr "" "Weet je zeker dat je de torrent \\''{0}\\'' en alle gedownloade data wilt " "verwijderen?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:984 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:988 msgid "Delete" msgstr "Verwijderen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1017 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1021 msgid "Unknown" msgstr "Onbekend" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1027 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1033 msgid "Seed" msgstr "Seed" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1045 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1056 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:1047 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1058 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:1061 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1078 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:1063 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1080 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:1118 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 +#, java-format +msgid "Details at {0} tracker" +msgstr "Details op de {0} tracker" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1167 msgid "Add Torrent" msgstr "Torrent Toevoegen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1120 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1169 msgid "From URL" msgstr "Van URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1123 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1172 msgid "Torrent file must originate from an I2P-based tracker" msgstr "Torrent bestand moet vaan een I2P tracker komen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1128 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1177 msgid "Add torrent" msgstr "Torrent toevoegen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1131 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "Je kan ook .torrent bestanden kopieren naar: {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1133 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1182 msgid "Removing a .torrent will cause it to stop." msgstr "Verwijderen van een .torrent zorgt dat deze stopt." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1157 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1205 msgid "Create Torrent" msgstr "Creëer Torrent" #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208 msgid "Data to seed" msgstr "Data om te seeden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1164 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1212 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:1166 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1214 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 msgid "Tracker" msgstr "Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1168 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1216 msgid "Select a tracker" msgstr "Selecteer een tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181 +#. out.write(_("Open trackers and DHT only")); +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1221 +msgid "Open trackers only" +msgstr "Alleen Open trackers" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1236 msgid "or" msgstr "of" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1184 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1239 msgid "Specify custom tracker announce URL" msgstr "Specificeer aangepaste tracker aankondigings URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1187 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 msgid "Create torrent" msgstr "Creëer torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1206 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1399 msgid "Configuration" msgstr "Configuratie" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264 msgid "Data directory" msgstr "Data directory" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1266 msgid "Edit i2psnark.config and restart to change" msgstr "Bewerk i2psnark.config en herstart de wijziging" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1216 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1270 msgid "Auto start" msgstr "Auto start" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1274 msgid "If checked, automatically start torrents that are added" msgstr "Indien aangevinkt, start toegevoegde torrents automatisch" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1224 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1278 msgid "Theme" msgstr "Thema" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 msgid "Startup delay" msgstr "Startup vertraging" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1239 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1293 msgid "minutes" msgstr "minuten" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317 msgid "Total uploader limit" msgstr "Totale uploader limiet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1266 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320 msgid "peers" msgstr "peers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1270 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1324 msgid "Up bandwidth limit" msgstr "Up bandbreedte limiet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1273 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1327 msgid "Half available bandwidth recommended." msgstr "Helft van beschikbare bandbreedte aanbevolen." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1275 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1329 msgid "View or change router bandwidth" msgstr "Bekijk of wijzig router bandbreedte" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333 msgid "Use open trackers also" msgstr "Gebruik ook open trackers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1337 msgid "" "If checked, announce torrents to open trackers as well as the tracker listed " "in the torrent file" @@ -718,123 +783,151 @@ msgstr "" "Indien aangevinkt, kondig torrents ook aan bij de tracker uit het torrent " "bestand" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 msgid "Open tracker announce URLs" msgstr "Open tracker aankondigings URLs" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1299 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 msgid "Inbound Settings" msgstr "Inkomende Instellingen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1305 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359 msgid "Outbound Settings" msgstr "Uitgaande Instellingen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1367 msgid "I2CP host" msgstr "I2CP host" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1372 msgid "I2CP port" msgstr "I2CP poort" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1329 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1385 msgid "I2CP options" msgstr "I2CP opties" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1390 msgid "Save configuration" msgstr "Configuratie opslaan" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 +#, java-format +msgid "Invalid magnet URL {0}" +msgstr "Ongeldige magnet URL {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1449 +#, java-format +msgid "Invalid info hash in magnet URL {0}" +msgstr "Ongeldige info hash in magnet URL {0}" + #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479 #, 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:1352 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1480 #, 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:1506 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1642 +msgid "Completion" +msgstr "Voltooiing" + +#. else unknown +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1646 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1695 msgid "Size" msgstr "Grootte" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1513 -msgid "Priority" -msgstr "Prioriteit" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1651 +msgid "Files" +msgstr "Bestanden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1518 -msgid "Up to higher level directory" -msgstr "Naar bovenliggende directory" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1653 +msgid "Pieces" +msgstr "Stukken" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1654 +msgid "Piece size" +msgstr "Stukgrootte" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1676 +msgid "Magnet link" +msgstr "Magnet link" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1693 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1732 msgid "Directory" msgstr "Directory" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1548 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1702 +msgid "Priority" +msgstr "Prioriteit" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1707 +msgid "Up to higher level directory" +msgstr "Naar bovenliggende directory" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1737 msgid "Torrent not found?" msgstr "Torrent niet gevonden?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1556 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1746 msgid "File not found in torrent?" msgstr "Bestand niet gevonden in torrent?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1569 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 msgid "complete" msgstr "voltooid" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1570 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1760 msgid "bytes remaining" msgstr "bytes resterend" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1621 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1811 msgid "High" msgstr "Hoog" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1626 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816 msgid "Normal" msgstr "Normaal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1631 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1821 msgid "Skip" msgstr "Overslaan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1830 msgid "Save priorities" msgstr "Prioriteiten opslaan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 #, java-format msgid "Torrent fetched from {0}" msgstr "Torrent gedownload van {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967 #, java-format msgid "Torrent already running: {0}" msgstr "Torrent draait al: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1774 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1969 #, 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:1781 -#, java-format -msgid "Failed to copy torrent file to {0}" -msgstr "Kan het torrent bestand niet kopieren naar {0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1785 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1975 #, java-format msgid "Torrent at {0} was not valid" msgstr "Torrent op {0} was niet geldig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1790 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1982 #, 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 index e9aed277f..e7fe4894f 100644 --- a/apps/i2ptunnel/locale/messages_nl.po +++ b/apps/i2ptunnel/locale/messages_nl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2ptunnel\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-20 19:26+0000\n" +"POT-Creation-Date: 2011-02-13 17:44+0000\n" "PO-Revision-Date: 2010-06-15 14:09+0100\n" "Last-Translator: duck <duck@mail.i2p>\n" "Language-Team: duck <duck@mail.i2p>, monkeybrains <monkeybrains@mail.i2p>\n" @@ -40,7 +40,7 @@ msgstr "" msgid "internal" msgstr "intern" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:170 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:171 msgid "" "Invalid form submission, probably because you used the 'back' or 'reload' " "button on your browser. Please resubmit." @@ -48,78 +48,86 @@ msgstr "" "Ongeldige formulier verzonden, waarschijnlijk doordat je de 'back' of " "'reload' button van je browser hebt gebruikt. Verzend opnieuw." -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:217 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218 msgid "Configuration reloaded for all tunnels" msgstr "Configuratie van alle tunnels opnieuw geladen" #. and give them something to look at in any case -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:229 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:230 msgid "Starting tunnel" msgstr "Opstarten van tunnel" #. and give them something to look at in any case -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:242 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:243 msgid "Stopping tunnel" msgstr "Stoppen van tunnel" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:389 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:311 +msgid "Configuration changes saved" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314 +msgid "Failed to save configuration" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398 msgid "New Tunnel" msgstr "Nieuwe Tunnel" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:409 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418 msgid "Standard client" msgstr "Standaard client" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:410 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419 msgid "HTTP client" msgstr "HTTP client" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:411 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420 msgid "IRC client" msgstr "IRC client" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:412 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:421 msgid "Standard server" msgstr "Standaard server" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:413 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:422 msgid "HTTP server" msgstr "HTTP server" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:414 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:423 msgid "SOCKS 4/4a/5 proxy" msgstr "SOCKS 4/4a/5 proxy" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:415 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:424 msgid "SOCKS IRC proxy" msgstr "SOCKS IRC proxy" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:416 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:425 msgid "CONNECT/SSL/HTTPS proxy" msgstr "CONNECT/SSL/HTTPS proxy" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:417 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:426 msgid "IRC server" msgstr "IRC server" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:427 msgid "Streamr client" msgstr "Streamr client" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:428 msgid "Streamr server" msgstr "Streamr server" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:429 msgid "HTTP bidir" msgstr "HTTP bidir" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:508 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290 msgid "Host not set" msgstr "Host niet opgegeven" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:512 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:521 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:272 msgid "Port not set" msgstr "Poort niet opgegeven" @@ -604,8 +612,8 @@ msgid "Access List" msgstr "Toegangslijst" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451 -msgid "Inbound connection limits (0 to disable)" -msgstr "Inkomende connectie limieten (0 om uit te schakelen)" +msgid "Inbound connection limits (0=unlimited)" +msgstr "Inkomende connectie limieten (0=onbeperkt)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453 msgid "Per client" @@ -628,8 +636,8 @@ msgid "Total" msgstr "Totaal" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475 -msgid "Max concurrent connections (0 to disable)" -msgstr "Maximum gelijktijdige connecties (0 om uit te schakelen)" +msgid "Max concurrent connections (0=unlimited)" +msgstr "Maximum gelijktijdige connecties (0=onbeperkt)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493 msgid "New Certificate type" diff --git a/apps/routerconsole/locale/messages_nl.po b/apps/routerconsole/locale/messages_nl.po index 27e8e5544..3e05adfb5 100644 --- a/apps/routerconsole/locale/messages_nl.po +++ b/apps/routerconsole/locale/messages_nl.po @@ -3,27 +3,30 @@ # This file is distributed under the same license as the routerconsole package. # To contribute translations, see http://www.i2p2.de/newdevelopers # foo <foo@bar>, 2009. -# +# msgid "" msgstr "" -"Project-Id-Version: I2P routerconsole\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-20 19:26+0000\n" -"PO-Revision-Date: 2010-07-04 15:04+0100\n" -"Last-Translator: duck <duck@mail.i2p>\n" -"Language-Team: duck <duck@mail.i2p>, monkeybrains <monkeybrains@mail.i2p>\n" +"Project-Id-Version: I2P\n" +"Report-Msgid-Bugs-To: http://trac.i2p2.de/\n" +"POT-Creation-Date: 2011-02-13 13:34+0000\n" +"PO-Revision-Date: 2011-02-13 17:41+0000\n" +"Last-Translator: ducki2p <ducki2p@gmail.com>\n" +"Language-Team: Dutch <>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -"X-Poedit-Language: Dutch\n" -#. NOTE TO TRANSLATORS: Feel free to translate all these as you see fit, there are several options... -#. spaces or not, '.' or not, plural or not. Try not to make it too long, it is used in +#. NOTE TO TRANSLATORS: Feel free to translate all these as you see fit, there +#. are several options... +#. spaces or not, '.' or not, plural or not. Try not to make it too long, it +#. is used in #. a lot of tables. #. milliseconds #. Note to translators, may be negative or zero, 2999 maximum. -#. {0,number,####} prevents 1234 from being output as 1,234 in the English locale. +#. {0,number,####} prevents 1234 from being output as 1,234 in the English +#. locale. #. If you want the digit separator in your locale, translate as {0}. #. alternates: msec, msecs #: ../../../core/java/src/net/i2p/data/DataHelper.java:1124 @@ -77,21 +80,21 @@ msgid_plural "{0} days" msgstr[0] "1 dag" msgstr[1] "{0} dagen" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:126 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:122 #, java-format msgid "Banned by router hash: {0}" msgstr "Verbannen wegens router hash: {0}" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:128 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:124 msgid "Banned by router hash" msgstr "Verbannen wegens router hash" #. Temporary reason, until the job finishes -#: ../../../router/java/src/net/i2p/router/Blocklist.java:673 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:669 msgid "IP banned" msgstr "IP verbannen" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:743 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:739 #, java-format msgid "IP banned by blocklist.txt entry {0}" msgstr "IP verbannen wegens blocklist.txt item {0}" @@ -105,7 +108,8 @@ msgid "Rejecting tunnels: High message delay" msgstr "Tunnels geweigerd: Hoge bericht vertraging" #. hard to do {0} from here -#. setTunnelStatus("Rejecting " + (100 - (int) probAccept*100) + "% of tunnels: High number of requests"); +#. 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 "Meeste tunnels geweigerd: Hoog aantal aanvragen" @@ -122,13 +126,15 @@ msgid "Rejecting tunnels: Bandwidth limit" msgstr "Tunnels geweigerd: Bandbreedte limiet" #. hard to do {0} from here -#. setTunnelStatus("Rejecting " + ((int)(100.0*probReject)) + "% of tunnels: Bandwidth limit"); +#. 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 "Meeste tunnels geweigerd: Bandbreedte limiet" #. hard to do {0} from here -#. setTunnelStatus("Accepting " + (100-(int)(100.0*probReject)) + "% of tunnels"); +#. setTunnelStatus("Accepting " + (100-(int)(100.0*probReject)) + "% of +#. tunnels"); #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:375 msgid "Accepting most tunnels" msgstr "Meeste tunnels geaccepteerd" @@ -139,98 +145,89 @@ msgstr "Tunnels geaccepteerd" #. NPE, too early #. if (_context.router().getRouterInfo().getBandwidthTier().equals("K")) -#. setTunnelStatus("Not expecting tunnel requests: Advertised bandwidth too low"); +#. setTunnelStatus("Not expecting tunnel requests: Advertised bandwidth too +#. low"); #. else #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:488 msgid "Rejecting tunnels" msgstr "Tunnels geweigerd" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:98 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:105 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 msgid "Reseeding" msgstr "Reseeden" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:121 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:128 #, java-format msgid "Reseed fetched only 1 router." msgid_plural "Reseed fetched only {0} routers." msgstr[0] "Reseed heeft slechts 1 router opgehaald." msgstr[1] "Reseed heeft slechts {0} routers opgehaald." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:128 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:135 msgid "Reseed failed." msgstr "Reseed gefaald" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:129 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:136 #, java-format msgid "See {0} for help." msgstr "Zie {0} voor hulp." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:130 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:137 msgid "reseed configuration page" msgstr "reseed configuratie pagina" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:231 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:239 msgid "Reseeding: fetching seed URL." msgstr "Reseed: opvragen seed URL." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:272 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281 #, 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/transport/CommSystemFacadeImpl.java:513 +#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:512 msgid "NetDb entry" msgstr "NetDd item" -#. This used to be "no common transports" but it is almost always no transports at all +#. 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 "Geen transport (verborgen of aan het opstarten?)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:452 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:450 msgid "Unreachable on any transport" msgstr "Onbereikbaar op alle transports" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:501 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:499 msgid "Router Transport Addresses" msgstr "Router Transport Adressen" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:506 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:504 #, java-format msgid "{0} is used for outbound connections only" msgstr "{0} is alleen gebruikt voor uitgaande connecties" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:520 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:518 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123 msgid "Help" msgstr "Help" +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 +msgid "Your transport connection limits are automatically set based on your configured bandwidth." +msgstr "De limieten van je transport verbinding zijn automatisch ingesteld gebaseerd op de geconfigureerde bandbreedte." + #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 -msgid "" -"Your transport connection limits are automatically set based on your " -"configured bandwidth." -msgstr "" -"De limieten van je transport verbinding zijn automatisch ingesteld gebaseerd " -"op de geconfigureerde bandbreedte." +msgid "To override these limits, add the settings i2np.ntcp.maxConnections=nnn and i2np.udp.maxConnections=nnn on the advanced configuration page." +msgstr "Om deze limieten te overschrijven, voeg dan de instelling i2np.ntcp.maxConnections=nnn en i2np.udp.maxConnections=nnn toe aan de geavanceerde configuratie pagina." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 -msgid "" -"To override these limits, add the settings i2np.ntcp.maxConnections=nnn and " -"i2np.udp.maxConnections=nnn on the advanced configuration page." -msgstr "" -"Om deze limieten te overschrijven, voeg dan de instelling i2np.ntcp." -"maxConnections=nnn en i2np.udp.maxConnections=nnn toe aan de geavanceerde " -"configuratie pagina." - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 msgid "Definitions" msgstr "Definities" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:735 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24 @@ -242,164 +239,149 @@ msgstr "Definities" msgid "Peer" msgstr "Peer" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 msgid "The remote peer, identified by router hash" msgstr "De remote peer, geïdentificeerd door de router hash" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:527 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:736 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 msgid "Dir" msgstr "Richting" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 msgid "Inbound connection" msgstr "Inkomende connectie" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 msgid "Outbound connection" msgstr "Uitgaande connectie" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 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:534 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 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:535 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "How long since a packet has been received / sent" msgstr "Hoe lang sinds een pakket ontvangen / verstuurd is" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895 msgid "Idle" msgstr "Idle" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1900 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "In/Out" msgstr "In/Uit" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 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:537 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 msgid "How long ago this connection was established" msgstr "Hoe lang sinds deze connectie is gemaakt" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905 msgid "Up" msgstr "Up" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1907 msgid "Skew" msgstr "Afwijking" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 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:539 -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:537 +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:540 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 msgid "The number of sent messages awaiting acknowledgement" msgstr "Het aantal verzonden berichten, wachtend op bevestiging" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 msgid "The maximum number of concurrent messages to send" msgstr "Het maximum aantal berichten om gelijktijdig te verzenden" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 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:543 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 msgid "The slow start threshold" msgstr "De vertraagde-start drempel" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 msgid "The round trip time in milliseconds" msgstr "De rondgangstijd in milliseconden" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 msgid "Dev" msgstr "SD" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 msgid "The standard deviation of the round trip time in milliseconds" msgstr "De standaarddeviatie van de rondgangstijd in milliseconden" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 msgid "The retransmit timeout in milliseconds" msgstr "De herzend time-out in milliseconden" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 -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:545 +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:548 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 msgid "TX" msgstr "TX" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 msgid "The total number of packets sent to the peer" msgstr "Het totaal aantal pakketten verzonden aan de peer" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:742 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926 msgid "RX" msgstr "RX" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 msgid "The total number of packets received from the peer" msgstr "Het totaal aantal ontvangen pakketten van de peer" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1929 msgid "Dup TX" msgstr "Dup TX" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 msgid "The total number of packets retransmitted to the peer" msgstr "Het totaal aantal pakketten dat opnieuw is verzonden aan de peer" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1931 msgid "Dup RX" msgstr "Dup RX" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 msgid "The total number of duplicate packets received from the peer" msgstr "Het totaal aantal pakketten dat dubbel is ontvangen van de peer" @@ -581,7 +563,8 @@ msgid "Dropping tunnel requests: Queue time" msgstr "Negeer tunnel aanvragen: Wachttijd" #. 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!! +#. 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 "Andorra" @@ -1526,12 +1509,8 @@ 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:35 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:335 @@ -1596,10 +1575,8 @@ msgid "New client added" msgstr "Nieuwe client toegevoegd" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:193 -msgid "" -"Client configuration saved successfully - restart required to take effect." -msgstr "" -"Client configuratie succesvol opgeslagen - herstart nodig." +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:207 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 @@ -1682,10 +1659,8 @@ msgid "Error starting plugin {0}" msgstr "Fout bij starten plugin {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 -msgid "" -"Interface configuration saved successfully - restart required to take effect." -msgstr "" -"Interface configuratie succesvol opgeslagen - herstart nodig." +msgid "Interface configuration saved successfully - restart required to take effect." +msgstr "Interface configuratie succesvol opgeslagen - herstart nodig." #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:85 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258 @@ -1832,19 +1807,12 @@ msgid "Log configuration saved" msgstr "Log configuratie opgeslagen" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 -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:49 -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:50 msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT" @@ -2010,7 +1978,8 @@ msgstr "Laptop modes uitgeschakeld" msgid "Requiring SSU introducers" msgstr "SSU introducers nodig" -#. There's a few changes that don't really require restart (e.g. enabling inbound TCP) +#. 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" @@ -2211,79 +2180,51 @@ msgid "Rekeying after graceful shutdown" msgstr "Hersleuteling na gecontrolleerde stop" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:80 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 msgid "Run I2P on startup" msgstr "Start I2P bij opstarten" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:82 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 msgid "Don't run I2P on startup" msgstr "Start I2P niet bij opstarten" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:84 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:355 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:343 msgid "Dump threads" msgstr "Dump threads" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:91 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 -msgid "Show systray icon" -msgstr "Toon systray icon" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96 -msgid "System tray icon enabled." -msgstr "System tray icon ingeschakeld." - -#: ../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 "System tray icon feature not ondersteund op dit platform. Sorry!" - -#: ../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 "Waarschuwing: kan geen verbinding maken met de systray manager" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:103 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 -msgid "Hide systray icon" -msgstr "Verberg systray icon" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:108 -msgid "System tray icon disabled." -msgstr "System tray icon uitgeschakeld." - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:115 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:351 msgid "View console on startup" msgstr "Toon console na opstarten" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:117 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:93 msgid "Console is to be shown on startup" msgstr "Console wordt getoond na opstarten" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:118 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:365 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:94 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 msgid "Do not view console on startup" msgstr "Toon console niet na opstarten" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:120 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96 msgid "Console is not to be shown on startup" msgstr "De console wordt niet getoond na opstarten" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:129 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:105 msgid "Service installed" msgstr "Service geinstalleerd" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:131 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:107 msgid "Warning: unable to install the service" msgstr "Waarschuwing: kan de service niet installeren" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:137 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:113 msgid "Service removed" msgstr "Service verwijderd" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:139 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:115 msgid "Warning: unable to remove the service" msgstr "Waarschuwing: kan de service niet verwijderen" @@ -2296,14 +2237,11 @@ 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:114 -msgid "" -"Graph list updated, may take up to 60s to be reflected here and on the <a " -"href=\"graphs.jsp\">Graphs Page</a>" -msgstr "" -"Grafiek lijst geupdate, kan 60s duren voordat dit op deze plek en de <a href=" -"\"graphs.jsp\">Grafiek Pagina</a> door komt" +msgid "Graph list updated, may take up to 60s to be reflected here and on the <a href=\"graphs.jsp\">Graphs Page</a>" +msgstr "Grafiek lijst geupdate, kan 60s duren voordat dit op deze plek en de <a href=\"graphs.jsp\">Grafiek Pagina</a> door komt" -#. the count isn't really correct anyway, since we don't check for actual changes +#. 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:135 msgid "Updated settings for all pools." @@ -2315,12 +2253,8 @@ msgstr "Exploratory tunnel configuratie succesvol opgeslagen." #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 #: ../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 @@ -2502,12 +2436,8 @@ msgid "Download, verify, and restart" msgstr "Download, controlleer en herstart" #: ../java/src/net/i2p/router/web/FormHandler.java:174 -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:93 msgid "Combined bandwidth graph" @@ -2537,7 +2467,7 @@ msgstr "Teken gemiddelden" #: ../java/src/net/i2p/router/web/GraphHelper.java:152 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:333 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 msgid "or" msgstr "of" @@ -2802,135 +2732,128 @@ msgstr "Downloaden van plugin" msgid "{0}B transferred" msgstr "{0}B ontvangen" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:152 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:153 msgid "Plugin downloaded" msgstr "Plugin gedownload" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:157 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:344 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:158 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:345 #, java-format msgid "Cannot create plugin directory {0}" msgstr "Kan plugin directory {0} niet maken" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:166 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:167 #: ../java/src/net/i2p/router/web/UpdateHandler.java:298 #, java-format msgid "from {0}" msgstr "van {0}" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:176 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:177 #, java-format msgid "Plugin from {0} is corrupt" msgstr "Plugin van {0} is corrupt" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:187 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:188 #, java-format msgid "Plugin from {0} does not contain the required configuration file" msgstr "Plugin van {0} bevat niet het vereiste configuratie bestand" -#. updateStatus("<b>" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + "</b>"); -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:200 +#. updateStatus("<b>" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' +#. + signer + "</b>"); +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:201 #, 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:219 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:228 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:237 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:220 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:229 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:238 #, java-format msgid "Plugin signature verification of {0} failed" msgstr "Plugin handtekening verificatie van {0} gefaald" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:252 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:253 #, 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:257 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:258 #, 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:265 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:266 #, 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:273 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:274 #, 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:281 -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:282 +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:293 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:294 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:301 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:302 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:308 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:309 #, 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:315 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:316 #, 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:322 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:323 #, 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:339 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:340 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:352 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:353 #, java-format msgid "Failed to install plugin in {0}" msgstr "Installatie van plugin in {0} gefaald" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:359 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:360 #, 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:361 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:362 #, java-format msgid "Plugin {0} installed" msgstr "Plugin {0} geïnstalleerd" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:379 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:380 #, java-format msgid "Plugin {0} installed and started" msgstr "Plugin {0} geïnstalleerd en gestart" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:382 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:383 #, 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:384 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:385 #, 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:394 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:395 #, java-format msgid "Failed to download plugin from {0}" msgstr "Kan de plugin niet downloaden van {0}" @@ -3113,12 +3036,8 @@ 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" @@ -3130,8 +3049,7 @@ 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?" @@ -3163,7 +3081,8 @@ msgstr "Verbanning tot volgende herstart of in {0}" msgid "unban now" msgstr "Hef verbanning nu op" -#. Note to translators: all runtime zh translation disabled in this file, no font available in RRD +#. Note to translators: all runtime zh translation disabled in this file, no +#. font available in RRD #: ../java/src/net/i2p/router/web/StatSummarizer.java:223 msgid "Bandwidth usage" msgstr "Bandbreedte gebruik" @@ -3207,17 +3126,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:63 -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:64 msgid "These statistics are primarily used for development and debugging." -msgstr "" -"Deze statistieken worden primair gebruikt voor ontwikkeling en debugging." +msgstr "Deze statistieken worden primair gebruikt voor ontwikkeling en debugging." #: ../java/src/net/i2p/router/web/StatsGenerator.java:105 #: ../java/src/net/i2p/router/web/StatsGenerator.java:156 @@ -3236,12 +3150,14 @@ msgstr "Voortschrijdend gemiddelde gebeurtenissen per periode" msgid "Highest events per period" msgstr "Hoogste gebeurtenissen per periode" -#. if (showAll && (curFreq.getMaxAverageEventsPerPeriod() > 0) && (curFreq.getAverageEventsPerPeriod() > 0) ) { +#. if (showAll && (curFreq.getMaxAverageEventsPerPeriod() > 0) && +#. (curFreq.getAverageEventsPerPeriod() > 0) ) { #. buf.append("(current is "); #. buf.append(pct(curFreq.getAverageEventsPerPeriod()/curFreq.getMaxAverageEventsPerPeriod())); #. buf.append(" of max)"); #. } -#. buf.append(" <i>avg interval between updates:</i> (").append(num(curFreq.getAverageInterval())).append("ms, min "); +#. buf.append(" <i>avg interval between updates:</i> +#. (").append(num(curFreq.getAverageInterval())).append("ms, min "); #. buf.append(num(curFreq.getMinAverageInterval())).append("ms)"); #: ../java/src/net/i2p/router/web/StatsGenerator.java:135 msgid "Lifetime average events per period" @@ -3264,37 +3180,45 @@ msgstr "Gemiddelde" msgid "Highest average" msgstr "Hoogste gemiddelde" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:202 +#. breaking the sentence like before makes translation in my language +#. impossible. +#: ../java/src/net/i2p/router/web/StatsGenerator.java:201 #, java-format -msgid "in this period which ended {0} ago." -msgstr "in deze periode welke {0} geleden eindigde." +msgid "There were {0} event(s) in this period" +msgstr "Er waren {0} event(s) in deze periode" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:204 +#. buf.append(' '); +#: ../java/src/net/i2p/router/web/StatsGenerator.java:203 +#, java-format +msgid " which ended {0} ago." +msgstr "die {0} geleden eindigde." + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:205 msgid "No events" msgstr "Geen gebeurtenissen" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:210 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:211 msgid "Average event count" msgstr "Gemiddeld aantal gebeurtenissen" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:212 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:213 msgid "Events in peak period" msgstr "Gebeurtenissen in piek periode" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:220 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:221 msgid "Graph Data" msgstr "Grafiek Data" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:222 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:223 msgid "Graph Event Count" msgstr "Grafiek Aantal Gebeurtenissen" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:225 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:226 msgid "Export Data as XML" msgstr "Exporteer Data als XML" #. Display the strict average -#: ../java/src/net/i2p/router/web/StatsGenerator.java:230 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:231 msgid "Lifetime average value" msgstr "Levenslange gemiddelde waarde" @@ -3307,12 +3231,8 @@ msgid "Help & FAQ" msgstr "Hulp & FAQ" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:55 -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" +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:57 msgid "I2P Services" @@ -3447,11 +3367,8 @@ msgid "Uptime" msgstr "Uptime" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 -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" +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:231 msgid "Download" @@ -3581,9 +3498,7 @@ msgid "Firewalled" msgstr "Firewall" #: ../java/src/net/i2p/router/web/SummaryHelper.java:135 -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:141 @@ -3605,8 +3520,7 @@ msgstr "Testen" #: ../java/src/net/i2p/router/web/SummaryHelper.java:370 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:382 msgid "Server" @@ -3657,7 +3571,8 @@ msgstr "geen" msgid "shared clients" msgstr "gedeelde clients" -#. Note to translators: all runtime zh translation disabled in this file, no font available in RRD +#. Note to translators: all runtime zh translation disabled in this file, no +#. font available in RRD #: ../java/src/net/i2p/router/web/SummaryRenderer.java:89 #, java-format msgid "events in {0}" @@ -4126,7 +4041,8 @@ msgstr "Met hoeveel peers communiceren we actief" msgid "config networking" msgstr "configureer netwerk" -#. We have intl defined when this is included, but not when compiled standalone. +#. 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:216 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:217 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:216 @@ -4201,12 +4117,8 @@ msgid "Bandwidth limiter" msgstr "Bandbreedte beperker" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:300 -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:304 msgid "KBps In" @@ -4236,19 +4148,12 @@ 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:347 -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:348 -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:351 #, java-format @@ -4256,12 +4161,8 @@ 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:354 -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:358 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514 @@ -4351,12 +4252,8 @@ msgid "Action when IP changes" msgstr "Actie wanneer IP wijzigd" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:439 -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:441 msgid "Experimental" @@ -4400,11 +4297,8 @@ msgid "Completely disable" msgstr "Schakel volledig uit" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:491 -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:493 msgid "Externally reachable TCP port" @@ -4419,7 +4313,7 @@ msgid "Specify Port" msgstr "Specificeer Poort" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:330 msgid "Note" msgstr "Opmerking" @@ -4434,52 +4328,28 @@ msgstr "Configuratie Help" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:520 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 -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:522 -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:524 -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:526 -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:528 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:537 -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:539 msgid "UPnP support is beta, and may not work for any number of reasons" @@ -4514,37 +4384,24 @@ msgid "Review the UPnP status here." msgstr "Bekijk de UPnP status hier." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 -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:557 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:559 msgid "They are <b>not private</b>." msgstr "Deze zijn <b>niet privé</b>." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 -msgid "" -"Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1." -msgstr "" -"Tevens, <b>vul geen privé IP addres in</b> zoals 127.0.0.1 of 192.168.1.1." +msgid "Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1." +msgstr "Tevens, <b>vul geen privé IP addres in</b> zoals 127.0.0.1 of 192.168.1.1." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 -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:565 msgid "When in doubt, leave the settings at the defaults." @@ -4555,23 +4412,12 @@ msgid "Reachability Help" msgstr "Bereikbaarheids Help" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:572 -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:575 -msgid "" -"If there is an error, the <a href=\"logs.jsp\">logs</a> may also help " -"diagnose the problem." -msgstr "" -"Indien er een fout is zijn de <a href=\"logs.jsp\">logs</a> mogelijk hulpvol " -"om het probleem te onderzoeken." +msgid "If there is an error, the <a href=\"logs.jsp\">logs</a> may also help diagnose the problem." +msgstr "Indien er een fout is zijn de <a href=\"logs.jsp\">logs</a> mogelijk hulpvol om het probleem te onderzoeken." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 msgid "Your UDP port does not appear to be firewalled." @@ -4582,129 +4428,72 @@ 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:585 -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:587 -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:589 -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:591 -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:593 -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:595 -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:599 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:603 -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:605 msgid "WARN - Firewalled and Fast" msgstr "WARN - Firewall en Snel" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 -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:609 -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:611 msgid "WARN - Firewalled and Floodfill" msgstr "WARN - Firewall en Floodfill" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 -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:615 -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:617 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:619 -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:621 -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:623 msgid "Please open your firewall or disable inbound TCP above." @@ -4719,12 +4508,8 @@ 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:629 -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:631 msgid "Please open your firewall or enable UDP." @@ -4735,12 +4520,8 @@ msgid "ERR - Clock Skew" msgstr "ERR - Klok Afwijking" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 -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:637 msgid "Correct your clock setting if this error persists." @@ -4751,12 +4532,8 @@ msgid "ERR - Private TCP Address" msgstr "ERR - Privaat TCP Adres" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 -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:643 msgid "Correct the address or disable inbound TCP above." @@ -4768,46 +4545,27 @@ msgstr "ERR - SymmetricNAT" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 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:649 -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:651 -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:653 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:655 -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:657 -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:659 msgid "However, a restart is always required after this error." @@ -4818,12 +4576,8 @@ 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:663 -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:665 msgid "Therefore your router cannot accept inbound connections." @@ -4839,17 +4593,11 @@ msgstr "ERR - Client Manager I2CP Fout - controlleer logs" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 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:673 -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" @@ -4880,12 +4628,8 @@ msgid "Client Configuration" msgstr "Client Configuratie" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:314 -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:318 msgid "To change other client options, edit the file" @@ -4954,33 +4698,12 @@ msgid "WebApp Configuration" msgstr "WebApp Configuratie" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 -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:411 -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:421 msgid "Plugin Configuration" @@ -5008,16 +4731,11 @@ msgstr "I2P Sleutelbos Configuratie" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:295 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:298 -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:308 msgid "Manual Keyring Addition" @@ -5068,23 +4786,16 @@ msgid "Log record format" msgstr "Log regel formaat" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 -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:315 msgid "Log date format" msgstr "Log datum formaat" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 -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:321 msgid "Max log file size" @@ -5095,12 +4806,8 @@ msgid "Default log level" msgstr "Standaard log niveau" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329 -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:331 msgid "Log level overrides" @@ -5131,8 +4838,7 @@ 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:313 -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:323 @@ -5140,17 +4846,8 @@ msgid "Adjust Profile Bonuses" msgstr "Aanpassing van Profiel Bonussen" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 -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:327 msgid "profiles page" @@ -5178,28 +4875,16 @@ msgid "Reseeding Configuration" msgstr "Reseeden Configuratie" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:302 -msgid "" -"Reseeding is the bootstrapping process used to find other routers when you " -"first install I2P, or when your router has too few router references " -"remaining." -msgstr "" -"Reseeden is het opstart proces dat gebruikt wordt om andere routers te vinden " -"wanneer je I2P voor het eerst installeert, of wanneer je router te weinig " -"router referenties heeft." +msgid "Reseeding is the bootstrapping process used to find other routers when you first install I2P, or when your router has too few router references remaining." +msgstr "Reseeden is het opstart proces dat gebruikt wordt om andere routers te vinden wanneer je I2P voor het eerst installeert, of wanneer je router te weinig router referenties heeft." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304 -msgid "" -"If reseeding has failed, you should first check your network connection." -msgstr "" -"Wanneer reseeden heeft gefaald moet je eerst je netwerkverbinding controlleren." +msgid "If reseeding has failed, you should first check your network connection." +msgstr "Wanneer reseeden heeft gefaald moet je eerst je netwerkverbinding controlleren." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:308 -msgid "" -"Change these only if HTTP is blocked by a restrictive firewall, reseed has " -"failed, and you have access to an HTTP proxy." -msgstr "" -"Wijzig deze alleen wanneer HTTP geblokkeerd is door een beperkende firewall, " -"reseeden heeft gefaald en je toegang hebt tot een HTTP proxy." +msgid "Change these only if HTTP is blocked by a restrictive firewall, reseed has failed, and you have access to an HTTP proxy." +msgstr "Wijzig deze alleen wanneer HTTP geblokkeerd is door een beperkende firewall, reseeden heeft gefaald en je toegang hebt tot een HTTP proxy." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 #, java-format @@ -5255,140 +4940,68 @@ msgid "Shutdown the router" msgstr "Stop de router" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:287 -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:289 -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:299 -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:301 -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:303 -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:305 -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:315 -msgid "Systray integration" -msgstr "Systray integratie" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 -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:319 -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:321 -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:327 msgid "Run on startup" msgstr "Aan bij opstarten" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 +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:319 +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:329 -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 "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:331 -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 " +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:341 -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:343 -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:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 msgid "Debugging" msgstr "Debugging" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 msgid "View the job queue" msgstr "Bekijk de taak wachtrij" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 -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 <a href=" -"\"logs.jsp#servicelogs\">wrapper.log</a>." -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 <a href=" -"\"logs.jsp#servicelogs\">wrapper.log</a>." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 +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 <a href=\"logs.jsp#servicelogs\">wrapper.log</a>." +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 <a href=\"logs.jsp#servicelogs\">wrapper.log</a>." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 msgid "Launch browser on router startup?" msgstr "Start browser bij opstarten router?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:361 -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/configservice_jsp.java:349 +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" @@ -5452,14 +5065,8 @@ 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:313 -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:316 msgid "High CPU and/or high outbound bandwidth usage may result." @@ -5467,15 +5074,11 @@ msgstr "CPU gebruik en/of uitgaand bandbreedte kan toenemen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:319 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:333 -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:336 msgid "Client tunnel changes are temporary and are not saved." @@ -5506,26 +5109,16 @@ 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:312 -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:316 msgid "Router Console Language" msgstr "Router Console Taal" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:320 -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:324 msgid "Apply" @@ -5592,12 +5185,8 @@ msgid "Unsigned Build URL" msgstr "Niet-ondertekende Build URL" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 -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:367 msgid "Save" @@ -5628,12 +5217,8 @@ msgstr "Rapporteer bugs op {0} of {1}." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:137 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 -msgid "" -"You may use the username \"guest\" and password \"guest\" if you do not wish " -"to register." -msgstr "" -"Indien je niet wilt registreren kan je de username \"guest\" en wachtwoord " -"\"guest\" gebruiken." +msgid "You may use the username \"guest\" and password \"guest\" if you do not wish to register." +msgstr "Indien je niet wilt registreren kan je de username \"guest\" en wachtwoord \"guest\" gebruiken." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 @@ -5656,22 +5241,15 @@ msgstr "I2P Versie en Omgevingsinformatie" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 -msgid "" -"Note that system information, log timestamps, and log messages may provide " -"clues to your location; please review everything you include in a bug report." -msgstr "" -"Merk op dat systeem informatie, log timestamps en log berichten mogelijk " -"aanwijzingen kunnen geven over je lokatie; controlleer daarom alles dat je " -"in een bug report opneemt." +msgid "Note that system information, log timestamps, and log messages may provide clues to your location; please review everything you include in a bug report." +msgstr "Merk op dat systeem informatie, log timestamps en log berichten mogelijk aanwijzingen kunnen geven over je lokatie; controlleer daarom alles dat je in een bug report opneemt." #: ../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:242 -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:244 @@ -5743,12 +5321,8 @@ 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:234 -msgid "" -"Please visit the <a href=\"/configclients.jsp#webapp\">config clients page</" -"a> to start it." -msgstr "" -"Bezoek de <a href=\"/configclients.jsp#webapp\">config clients pagina</a> om " -"het te starten." +msgid "Please visit the <a href=\"/configclients.jsp#webapp\">config clients page</a> to start it." +msgstr "Bezoek de <a href=\"/configclients.jsp#webapp\">config clients pagina</a> om het te starten." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:105 msgid "peer connections" From 41d81773402a5a6c08af45f2d64e1314c3cd6c76 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 13 Feb 2011 20:26:56 +0000 Subject: [PATCH 195/463] * Connect Client: Minor NPE fix cleanup --- .../java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java index 455c170ba..1014a986b 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java @@ -170,7 +170,7 @@ public class I2PTunnelConnectClient extends I2PTunnelHTTPClientBase implements R // since we are passing the stream on to I2PTunnelRunner line = DataHelper.readLine(in); if(line == null) { - line = ""; // prevent NPE, Is this what we need to do? + break; } line = line.trim(); if (_log.shouldLog(Log.DEBUG)) From 1f702f1eb1dc3384797f4e6dc0a64e18797b375b Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 13 Feb 2011 20:28:46 +0000 Subject: [PATCH 196/463] * JobQueue: Prevet NPE at shutdown (thanks liberty) --- router/java/src/net/i2p/router/JobQueue.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/router/java/src/net/i2p/router/JobQueue.java b/router/java/src/net/i2p/router/JobQueue.java index 86c050b08..70a1b3bfe 100644 --- a/router/java/src/net/i2p/router/JobQueue.java +++ b/router/java/src/net/i2p/router/JobQueue.java @@ -227,10 +227,14 @@ public class JobQueue { } public long getMaxLag() { + // first job is the one that has been waiting the longest Job j = _readyJobs.peek(); if (j == null) return 0; - // first job is the one that has been waiting the longest - long startAfter = j.getTiming().getStartAfter(); + JobTiming jt = j.getTiming(); + // PoisonJob timing is null, prevent NPE at shutdown + if (jt == null) + return 0; + long startAfter = jt.getStartAfter(); return _context.clock().now() - startAfter; } From 38bfca1d653ba7349ddd5d52b25c07975a77197a Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 13 Feb 2011 20:29:59 +0000 Subject: [PATCH 197/463] * GeoIP: Prevent startup NPE (ticket #413, thanks RN) --- .../java/src/net/i2p/router/RouterContext.java | 17 +++++++++++++++-- .../src/net/i2p/router/transport/GeoIP.java | 7 ++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/router/java/src/net/i2p/router/RouterContext.java b/router/java/src/net/i2p/router/RouterContext.java index d57c62635..ee891b230 100644 --- a/router/java/src/net/i2p/router/RouterContext.java +++ b/router/java/src/net/i2p/router/RouterContext.java @@ -6,6 +6,7 @@ import java.util.Properties; import net.i2p.I2PAppContext; import net.i2p.data.Hash; +import net.i2p.data.RouterInfo; import net.i2p.internal.InternalClientManager; import net.i2p.router.client.ClientManagerFacadeImpl; import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade; @@ -170,8 +171,20 @@ public class RouterContext extends I2PAppContext { /** what router is this context working for? */ public Router router() { return _router; } - /** convenience method for querying the router's ident */ - public Hash routerHash() { return _router.getRouterInfo().getIdentity().getHash(); } + + /** + * Convenience method for getting the router hash. + * Equivalent to context.router().getRouterInfo().getIdentity().getHash() + * @return may be null if called very early + */ + public Hash routerHash() { + if (_router == null) + return null; + RouterInfo ri = _router.getRouterInfo(); + if (ri == null) + return null; + return ri.getIdentity().getHash(); + } /** * How are we coordinating clients for the router? diff --git a/router/java/src/net/i2p/router/transport/GeoIP.java b/router/java/src/net/i2p/router/transport/GeoIP.java index 1406460ee..1593487cf 100644 --- a/router/java/src/net/i2p/router/transport/GeoIP.java +++ b/router/java/src/net/i2p/router/transport/GeoIP.java @@ -16,6 +16,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicBoolean; import net.i2p.data.DataHelper; +import net.i2p.data.Hash; import net.i2p.router.RouterContext; import net.i2p.util.ConcurrentHashSet; import net.i2p.util.Log; @@ -251,7 +252,11 @@ class GeoIP { */ private void updateOurCountry() { String oldCountry = _context.router().getConfigSetting(PROP_IP_COUNTRY); - String country = _context.commSystem().getCountry(_context.routerHash()); + Hash ourHash = _context.routerHash(); + // we should always have a RouterInfo by now, but we had one report of an NPE here + if (ourHash == null) + return; + String country = _context.commSystem().getCountry(ourHash); if (country != null && !country.equals(oldCountry)) { _context.router().setConfigSetting(PROP_IP_COUNTRY, country); _context.router().saveConfig(); From 854998832df92fb52ed29b8e0139aac6251ee1fc Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 13 Feb 2011 20:36:43 +0000 Subject: [PATCH 198/463] * NetDB: Prevent ExpireLeaseJob NPE (thanks sponge) --- history.txt | 6 +++++ .../src/net/i2p/router/RouterVersion.java | 2 +- .../networkdb/kademlia/ExpireLeasesJob.java | 26 +++++++++---------- .../networkdb/kademlia/ExpireRoutersJob.java | 20 +++++++------- 4 files changed, 29 insertions(+), 25 deletions(-) diff --git a/history.txt b/history.txt index 415d544e8..550bf5304 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,9 @@ +2011-02-13 zzz + * Connect Client: Minor NPE fix cleanup + * JobQueue: Prevet NPE at shutdown (thanks liberty) + * GeoIP: Prevent startup NPE (ticket #413, thanks RN) + * NetDB: Prevent ExpireLeaseJob NPE (thanks sponge) + 2011-02-11 Mathiasdm * routerconsole: fixed graphs using jrobin; and headless issue in general: no more switches between headless and non-headless. diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index f2522cd4e..7ca1a3ec2 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 = 9; + public final static long BUILD = 10; /** for example "-test" */ public final static String EXTRA = ""; diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/ExpireLeasesJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/ExpireLeasesJob.java index 59d8fc429..6ea401d66 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/ExpireLeasesJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/ExpireLeasesJob.java @@ -9,7 +9,7 @@ package net.i2p.router.networkdb.kademlia; */ import java.util.HashSet; -import java.util.Iterator; +import java.util.Map; import java.util.Set; import net.i2p.data.DatabaseEntry; @@ -27,8 +27,8 @@ import net.i2p.util.Log; * */ class ExpireLeasesJob extends JobImpl { - private Log _log; - private KademliaNetworkDatabaseFacade _facade; + private final Log _log; + private final KademliaNetworkDatabaseFacade _facade; private final static long RERUN_DELAY_MS = 1*60*1000; @@ -39,11 +39,11 @@ class ExpireLeasesJob extends JobImpl { } public String getName() { return "Expire Lease Sets Job"; } + public void runJob() { - Set toExpire = selectKeysToExpire(); + Set<Hash> toExpire = selectKeysToExpire(); _log.info("Leases to expire: " + toExpire); - for (Iterator iter = toExpire.iterator(); iter.hasNext(); ) { - Hash key = (Hash)iter.next(); + for (Hash key : toExpire) { _facade.fail(key); //_log.info("Lease " + key + " is expiring, so lets look for it again", new Exception("Expire and search")); //_facade.lookupLeaseSet(key, null, null, RERUN_DELAY_MS); @@ -57,17 +57,15 @@ class ExpireLeasesJob extends JobImpl { * don't have any leases that haven't yet passed, even with the CLOCK_FUDGE_FACTOR) * */ - private Set selectKeysToExpire() { - Set keys = _facade.getDataStore().getKeys(); - Set toExpire = new HashSet(128); - for (Iterator iter = keys.iterator(); iter.hasNext(); ) { - Hash key = (Hash)iter.next(); - DatabaseEntry obj = _facade.getDataStore().get(key); + private Set<Hash> selectKeysToExpire() { + Set<Hash> toExpire = new HashSet(128); + for (Map.Entry<Hash, DatabaseEntry> entry : _facade.getDataStore().getMapEntries()) { + DatabaseEntry obj = entry.getValue(); if (obj.getType() == DatabaseEntry.KEY_TYPE_LEASESET) { LeaseSet ls = (LeaseSet)obj; if (!ls.isCurrent(Router.CLOCK_FUDGE_FACTOR)) - toExpire.add(key); - else + toExpire.add(entry.getKey()); + else if (_log.shouldLog(Log.DEBUG)) _log.debug("Lease " + ls.getDestination().calculateHash() + " is current, no need to expire"); } } diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/ExpireRoutersJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/ExpireRoutersJob.java index 1d7de0138..60bfb6e3a 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/ExpireRoutersJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/ExpireRoutersJob.java @@ -9,7 +9,6 @@ package net.i2p.router.networkdb.kademlia; */ import java.util.Collections; -import java.util.Iterator; import java.util.Set; import net.i2p.data.Hash; @@ -28,8 +27,8 @@ import net.i2p.util.Log; * */ class ExpireRoutersJob extends JobImpl { - private Log _log; - private KademliaNetworkDatabaseFacade _facade; + private final Log _log; + private final KademliaNetworkDatabaseFacade _facade; /** rerun fairly often, so the fails don't queue up too many netdb searches at once */ private final static long RERUN_DELAY_MS = 120*1000; @@ -41,11 +40,13 @@ class ExpireRoutersJob extends JobImpl { } public String getName() { return "Expire Routers Job"; } + public void runJob() { - Set toExpire = selectKeysToExpire(); - _log.info("Routers to expire (drop and try to refetch): " + toExpire); - for (Iterator iter = toExpire.iterator(); iter.hasNext(); ) { - Hash key = (Hash)iter.next(); + // this always returns an empty set (see below) + Set<Hash> toExpire = selectKeysToExpire(); + if (_log.shouldLog(Log.INFO)) + _log.info("Routers to expire (drop and try to refetch): " + toExpire); + for (Hash key : toExpire) { _facade.fail(key); } _facade.queueForExploration(toExpire); @@ -61,9 +62,8 @@ class ExpireRoutersJob extends JobImpl { * * @return nothing for now */ - private Set selectKeysToExpire() { - for (Iterator iter = _facade.getAllRouters().iterator(); iter.hasNext(); ) { - Hash key = (Hash)iter.next(); + private Set<Hash> selectKeysToExpire() { + for (Hash key : _facade.getAllRouters()) { // Don't expire anybody we are connected to if (!getContext().commSystem().isEstablished(key)) { // This does a _facade.validate() and fail() which is sufficient... From d15f682b17e1ad8c9a734837c9f87fc528b492b1 Mon Sep 17 00:00:00 2001 From: duck <duck@mail.i2p> Date: Sun, 13 Feb 2011 20:41:26 +0000 Subject: [PATCH 199/463] #348 i2psnark french typo --- apps/i2psnark/locale/messages_fr.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/i2psnark/locale/messages_fr.po b/apps/i2psnark/locale/messages_fr.po index 8b7dd7bf5..52b20ccda 100644 --- a/apps/i2psnark/locale/messages_fr.po +++ b/apps/i2psnark/locale/messages_fr.po @@ -506,7 +506,7 @@ msgstr "Arrêter" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:921 msgid "Start the torrent" -msgstr "Arrêter le torrent" +msgstr "Démarrer le torrent" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:923 msgid "Start" From 33701195b14de07191ee43de57ab931a015008e9 Mon Sep 17 00:00:00 2001 From: dev <dev@welterde.de> Date: Mon, 14 Feb 2011 16:16:20 +0000 Subject: [PATCH 200/463] minor changes to some tests --- core/java/test/net/i2p/stat/RateTest.java | 3 ++- .../java/test/net/i2p/stat/{SizeTest.java => SizeMeasure.java} | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) rename core/java/test/net/i2p/stat/{SizeTest.java => SizeMeasure.java} (98%) diff --git a/core/java/test/net/i2p/stat/RateTest.java b/core/java/test/net/i2p/stat/RateTest.java index 471e7bb8f..7aae82cd1 100644 --- a/core/java/test/net/i2p/stat/RateTest.java +++ b/core/java/test/net/i2p/stat/RateTest.java @@ -1,5 +1,6 @@ package net.i2p.stat; +import java.io.ByteArrayInputStream; import java.util.Properties; import junit.framework.TestCase; @@ -19,7 +20,7 @@ public class RateTest extends TestCase { byte data[] = buf.toString().getBytes(); Properties props = new Properties(); - props.load(new java.io.ByteArrayInputStream(data)); + props.load(new ByteArrayInputStream(data)); Rate r = new Rate(props, "rate.test", true); diff --git a/core/java/test/net/i2p/stat/SizeTest.java b/core/java/test/net/i2p/stat/SizeMeasure.java similarity index 98% rename from core/java/test/net/i2p/stat/SizeTest.java rename to core/java/test/net/i2p/stat/SizeMeasure.java index aaf157c1a..7bb162604 100644 --- a/core/java/test/net/i2p/stat/SizeTest.java +++ b/core/java/test/net/i2p/stat/SizeMeasure.java @@ -1,6 +1,6 @@ package net.i2p.stat; -public class SizeTest { +public class SizeMeasure { public static void main(String args[]) { testRateSize(100); //117KB testRateSize(100000); // 4.5MB From 271f330cdd69d49aea09cd7e3009aaeca7baf81b Mon Sep 17 00:00:00 2001 From: dev <dev@welterde.de> Date: Mon, 14 Feb 2011 16:37:23 +0000 Subject: [PATCH 201/463] add another totally useful test --- .../net/i2p/data/SimpleDataStructureTest.java | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 core/java/test/net/i2p/data/SimpleDataStructureTest.java diff --git a/core/java/test/net/i2p/data/SimpleDataStructureTest.java b/core/java/test/net/i2p/data/SimpleDataStructureTest.java new file mode 100644 index 000000000..4cf823342 --- /dev/null +++ b/core/java/test/net/i2p/data/SimpleDataStructureTest.java @@ -0,0 +1,96 @@ +package net.i2p.data; +/* + * 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.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; + +import junit.framework.TestCase; + +/** + * Test harness for the simple data structure + * + * @author welterde + */ +public class SimpleDataStructureTest extends TestCase { + + public void testSetDataImmutable() throws Exception { + // create new test subject + TestStruct struct = new TestStruct(); + + // try to set null object.. should not fail.. + struct.setData(null); + + // set data to something + struct.setData(new byte[3]); + + // now setting it to null should fail + try { + struct.setData(null); + fail("Should not have allowed us to change this.."); + } catch(RuntimeException exc) { + // all good + } + + // setting it to something non-null should fail as well. + try { + struct.setData(new byte[3]); + fail("Should not have allowed us to change this.."); + } catch(RuntimeException exc) { + // all good + } + } + + public void testReadBytesImmutable() throws Exception { + // create new test subject + TestStruct struct = new TestStruct(); + + // load some data using setData + struct.setData(new byte[3]); + + // now try to load via readBytes + try { + struct.readBytes(null); + fail("blah blah blah.."); + } catch(RuntimeException exc) { + // all good + } + } + + public void testToBase64Safe() throws Exception { + // create new test subject + TestStruct struct = new TestStruct(); + + // now try to get the Base64.. should not throw an exception, but should not be an empty string either + assertNull(struct.toBase64()); + } + + public void testCalculateHashSafe() throws Exception { + // create new test subject + TestStruct struct = new TestStruct(); + + // now try to get the hash.. should not throw an exception + assertNull(struct.calculateHash()); + } + + public void testHashCodeSafe() throws Exception { + // create new test subject + TestStruct struct = new TestStruct(); + + // just make sure it doesn't explode in our face + struct.hashCode(); + } + + public class TestStruct extends SimpleDataStructure { + public int length() { + return 3; + } + } + +} \ No newline at end of file From a6686cbed425991304dbb94194afe7b7af74aba9 Mon Sep 17 00:00:00 2001 From: mathiasdm <mathiasdm@mail.i2p> Date: Mon, 14 Feb 2011 17:12:12 +0000 Subject: [PATCH 202/463] Fix headless issue without reboot. --- .../src/net/i2p/desktopgui/Main.java | 3 +- .../i2p/router/web/RouterConsoleRunner.java | 57 ++++--------------- history.txt | 3 + .../src/net/i2p/router/RouterVersion.java | 2 +- 4 files changed, 18 insertions(+), 47 deletions(-) diff --git a/apps/desktopgui/src/net/i2p/desktopgui/Main.java b/apps/desktopgui/src/net/i2p/desktopgui/Main.java index 8cd1ea707..993970e30 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/Main.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/Main.java @@ -56,9 +56,10 @@ public class Main { */ public static void beginStartup(String[] args) { try { - String headless = RouterManager.getRouterContext().getProperty("router.isHeadless"); + String headless = System.getProperty("java.awt.headless"); boolean isHeadless = Boolean.parseBoolean(headless); if(isHeadless) { + log.warn("Headless environment: not starting desktopgui!"); return; } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java index 9f280ef2a..fe53abdb1 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -55,50 +55,17 @@ public class RouterConsoleRunner { private static final String DEFAULT_WEBAPPS_DIR = "./webapps/"; private static final String USAGE = "Bad RouterConsoleRunner arguments, check clientApp.0.args in your clients.config file! " + "Usage: [[port host[,host]] [-s sslPort [host[,host]]] [webAppsDir]]"; - private static final String PROP_HEADLESS = "router.isHeadless"; static { System.setProperty("org.mortbay.http.Version.paranoid", "true"); //Check if we are in a headless environment, set properties accordingly - List<RouterContext> contexts = RouterContext.listContexts(); - if(contexts != null && contexts.size() > 0) { - RouterContext context = contexts.get(0); - String headless = context.getProperty(PROP_HEADLESS); - if(headless == null) { - /* - * Let's check if we are in a headless environment. - * We do this by setting headless to false - * and trying to get the graphics environment. - * If this fails, we should be headless. - */ - System.setProperty("java.awt.headless", "false"); - try { - GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); - ge.isHeadlessInstance(); - context.setProperty(PROP_HEADLESS, "false"); - } - catch(InternalError e) { - context.setProperty(PROP_HEADLESS, "true"); - } - context.router().setConfigSetting(PROP_HEADLESS, context.getProperty(PROP_HEADLESS)); - context.router().saveConfig(); - context.router().shutdown(0); - } - boolean isHeadless = true; - try { - isHeadless = Boolean.parseBoolean(headless); - } - catch(Exception e) { - //Incorrect setting, let's choose headless for safety - isHeadless = true; - } - if(isHeadless) { - System.setProperty("java.awt.headless", "true"); - } - else { - System.setProperty("java.awt.headless", "false"); - } + String headless = "java.awt.headless"; + if(GraphicsEnvironment.isHeadless()) { + System.setProperty(headless, "true"); + } + else { + System.setProperty(headless, "false"); } } @@ -359,13 +326,13 @@ public class RouterConsoleRunner { } try { - //TODO: move away from routerconsole into a separate application. - //ApplicationManager? - VersionComparator v = new VersionComparator(); - if(v.compare(System.getProperty("java.runtime.version"), "1.6") >= 0) { + //TODO: move away from routerconsole into a separate application. + //ApplicationManager? + VersionComparator v = new VersionComparator(); + if(v.compare(System.getProperty("java.runtime.version"), "1.6") >= 0) { String[] args = new String[0]; - net.i2p.desktopgui.Main.beginStartup(args); - } + net.i2p.desktopgui.Main.beginStartup(args); + } } catch (Throwable t) { t.printStackTrace(); } diff --git a/history.txt b/history.txt index 550bf5304..967b5b763 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,6 @@ +2011-02-14 Mathiasdm + * Fix headless issue without reboot + 2011-02-13 zzz * Connect Client: Minor NPE fix cleanup * JobQueue: Prevet NPE at shutdown (thanks liberty) diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 7ca1a3ec2..5a58b19bc 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 = 10; + public final static long BUILD = 11; /** for example "-test" */ public final static String EXTRA = ""; From 4c1f3a31436fa109fc4fc4211f62d2c8f10d76d1 Mon Sep 17 00:00:00 2001 From: dev <dev@welterde.de> Date: Mon, 14 Feb 2011 18:08:45 +0000 Subject: [PATCH 203/463] exclude test classes from coverage --- core/java/build.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/core/java/build.xml b/core/java/build.xml index 86e0039ac..27ca00e6f 100644 --- a/core/java/build.xml +++ b/core/java/build.xml @@ -49,6 +49,7 @@ <cobertura-instrument todir="./build/obj_test"> <fileset dir="./build/obj"> <include name="**/*.class"/> + <exclude name="**/*Test.class" /> </fileset> </cobertura-instrument> </target> From c91d2bf278b77518143dcfea02f03cb8f5ba3aff Mon Sep 17 00:00:00 2001 From: dev <dev@welterde.de> Date: Mon, 14 Feb 2011 18:14:03 +0000 Subject: [PATCH 204/463] minor adjustments to RouterAddress testcase --- core/java/test/net/i2p/data/RouterAddressTest.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/java/test/net/i2p/data/RouterAddressTest.java b/core/java/test/net/i2p/data/RouterAddressTest.java index 65a44f921..aab4a88bb 100644 --- a/core/java/test/net/i2p/data/RouterAddressTest.java +++ b/core/java/test/net/i2p/data/RouterAddressTest.java @@ -58,6 +58,7 @@ public class RouterAddressTest extends StructureTest { addr.setOptions(options); addr.setTransportStyle("Blah"); assertFalse(addr.equals(null)); + assertFalse(addr.equals("")); } public void testToString(){ @@ -73,5 +74,7 @@ public class RouterAddressTest extends StructureTest { addr.setOptions(options); addr.setTransportStyle("Blah"); addr.toString(); + addr.setOptions(null); + addr.toString(); } } From 2c6984ab999441692a3fb3b4044fefa2fe7d79c0 Mon Sep 17 00:00:00 2001 From: dev <dev@welterde.de> Date: Mon, 14 Feb 2011 20:45:36 +0000 Subject: [PATCH 205/463] even more tests --- core/java/test/net/i2p/data/LeaseSetTest.java | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/core/java/test/net/i2p/data/LeaseSetTest.java b/core/java/test/net/i2p/data/LeaseSetTest.java index 61c3b73c6..30fb8c11f 100644 --- a/core/java/test/net/i2p/data/LeaseSetTest.java +++ b/core/java/test/net/i2p/data/LeaseSetTest.java @@ -25,4 +25,50 @@ public class LeaseSetTest extends StructureTest { return leaseSet; } public DataStructure createStructureToRead() { return new LeaseSet(); } + + public void testGetLeaseInvalid() { + // create test subject + LeaseSet subj = new LeaseSet(); + + // should contain no leases now.. + try { + assertNull(subj.getLease(0)); + } catch(RuntimeException exc) { + // all good + } + + // this shouldn't work either + try { + assertNull(subj.getLease(-1)); + } catch(RuntimeException exc) { + // all good + } + } + + public void testAddLeaseNull() { + // create test subject + LeaseSet subj = new LeaseSet(); + + // now add an null lease + try { + subj.addLease(null); + fail("Failed at failing."); + } catch(IllegalArgumentException exc) { + // all good + } + } + + public void testAddLeaseInvalid() { + // create test subject + LeaseSet subj = new LeaseSet(); + + // try to add completely invalid lease(ie. no data) + try { + subj.addLease(new Lease()); + fail("Failed at failing."); + } catch(IllegalArgumentException exc) { + // all good + } + } + } From b2433d0e50c9c910415ba3c0df6222686843a7dd Mon Sep 17 00:00:00 2001 From: dev <dev@welterde.de> Date: Tue, 15 Feb 2011 06:22:54 +0000 Subject: [PATCH 206/463] properly deprecate stuff --- core/java/src/net/i2p/data/DataHelper.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/core/java/src/net/i2p/data/DataHelper.java b/core/java/src/net/i2p/data/DataHelper.java index 69b315a1a..4e3db770b 100644 --- a/core/java/src/net/i2p/data/DataHelper.java +++ b/core/java/src/net/i2p/data/DataHelper.java @@ -179,6 +179,7 @@ public class DataHelper { * @param props source * @return new offset */ + @Deprecated public static int toProperties(byte target[], int offset, Properties props) throws DataFormatException, IOException { if (props != null) { OrderedProperties p = new OrderedProperties(); @@ -219,6 +220,7 @@ public class DataHelper { * @param target returned Properties * @return new offset */ + @Deprecated public static int fromProperties(byte source[], int offset, Properties target) throws DataFormatException, IOException { int size = (int)fromLong(source, offset, 2); offset += 2; @@ -254,6 +256,7 @@ public class DataHelper { * * @throws RuntimeException if either is too long. */ + @Deprecated public static byte[] toProperties(Properties opts) { try { ByteArrayOutputStream baos = new ByteArrayOutputStream(2); @@ -544,6 +547,7 @@ public class DataHelper { } /** @deprecated unused */ + @Deprecated public static byte[] toDate(Date date) throws IllegalArgumentException { if (date == null) return toLong(DATE_LENGTH, 0L); @@ -678,6 +682,7 @@ public class DataHelper { * @throws IOException if there is an IO error writing the boolean * @deprecated unused */ + @Deprecated public static void writeBoolean(OutputStream out, Boolean bool) throws DataFormatException, IOException { if (bool == null) @@ -689,6 +694,7 @@ public class DataHelper { } /** @deprecated unused */ + @Deprecated public static Boolean fromBoolean(byte data[], int offset) { if (data[offset] == BOOLEAN_TRUE) return Boolean.TRUE; @@ -699,11 +705,13 @@ public class DataHelper { } /** @deprecated unused */ + @Deprecated public static void toBoolean(byte data[], int offset, boolean value) { data[offset] = (value ? BOOLEAN_TRUE : BOOLEAN_FALSE); } /** @deprecated unused */ + @Deprecated public static void toBoolean(byte data[], int offset, Boolean value) { if (value == null) data[offset] = BOOLEAN_UNKNOWN; @@ -712,12 +720,16 @@ public class DataHelper { } /** deprecated - used only in DatabaseLookupMessage */ + @Deprecated public static final byte BOOLEAN_TRUE = 0x1; /** deprecated - used only in DatabaseLookupMessage */ + @Deprecated public static final byte BOOLEAN_FALSE = 0x0; /** @deprecated unused */ + @Deprecated public static final byte BOOLEAN_UNKNOWN = 0x2; /** @deprecated unused */ + @Deprecated public static final int BOOLEAN_LENGTH = 1; // @@ -780,6 +792,7 @@ public class DataHelper { * Compare two integers, really just for consistency. * @deprecated inefficient */ + @Deprecated public final static boolean eq(int lhs, int rhs) { return lhs == rhs; } @@ -788,6 +801,7 @@ public class DataHelper { * Compare two longs, really just for consistency. * @deprecated inefficient */ + @Deprecated public final static boolean eq(long lhs, long rhs) { return lhs == rhs; } @@ -796,6 +810,7 @@ public class DataHelper { * Compare two bytes, really just for consistency. * @deprecated inefficient */ + @Deprecated public final static boolean eq(byte lhs, byte rhs) { return lhs == rhs; } @@ -974,6 +989,7 @@ public class DataHelper { * @return true if the line was read, false if eof was reached before a * newline was found */ + @Deprecated public static boolean readLine(InputStream in, StringBuffer buf) throws IOException { return readLine(in, buf, null); } @@ -987,6 +1003,7 @@ public class DataHelper { * Warning - 8KB line length limit as of 0.7.13, @throws IOException if exceeded * @deprecated use StringBuilder version */ + @Deprecated public static boolean readLine(InputStream in, StringBuffer buf, Sha256Standalone hash) throws IOException { int c = -1; int i = 0; From c1d7182b088ae4c0b068c013bcf522dbbe9906d0 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Tue, 15 Feb 2011 15:19:54 +0000 Subject: [PATCH 207/463] swap constructor param order --- core/java/src/net/i2p/data/DateAndFlags.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/java/src/net/i2p/data/DateAndFlags.java b/core/java/src/net/i2p/data/DateAndFlags.java index 70f88ce65..0810cddca 100644 --- a/core/java/src/net/i2p/data/DateAndFlags.java +++ b/core/java/src/net/i2p/data/DateAndFlags.java @@ -36,7 +36,7 @@ public class DateAndFlags extends DataStructureImpl { /** * @param flags 0 - 65535 */ - public DateAndFlags(int flags, long date) { + public DateAndFlags(long date, int flags) { _flags = flags; _date = date; } @@ -44,7 +44,7 @@ public class DateAndFlags extends DataStructureImpl { /** * @param flags 0 - 65535 */ - public DateAndFlags(int flags, Date date) { + public DateAndFlags(Date date, int flags) { _flags = flags; _date = date.getTime(); } From eb7e1d24cd356fa55323aaef52810479e467f658 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Tue, 15 Feb 2011 15:21:32 +0000 Subject: [PATCH 208/463] * Profiles: Punish rejections more, in an attempt to spread the load more through the network --- .../peermanager/CapacityCalculator.java | 41 +++++++++++-------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/router/java/src/net/i2p/router/peermanager/CapacityCalculator.java b/router/java/src/net/i2p/router/peermanager/CapacityCalculator.java index 9d23ceddf..96570260c 100644 --- a/router/java/src/net/i2p/router/peermanager/CapacityCalculator.java +++ b/router/java/src/net/i2p/router/peermanager/CapacityCalculator.java @@ -11,7 +11,7 @@ class CapacityCalculator { private static final I2PAppContext _context = I2PAppContext.getGlobalContext(); /** used to adjust each period so that we keep trying to expand the peer's capacity */ - static long GROWTH_FACTOR = 5; + static final long GROWTH_FACTOR = 5; /** the calculator estimates over a 1 hour period */ private static long ESTIMATE_PERIOD = 60*60*1000; @@ -83,37 +83,42 @@ class CapacityCalculator { * * Let A = accects, R = rejects, F = fails * @return estimated and adjusted accepts per hour, for the given period - * which is, more or less, max(0, 5 + (A * (A / (A + R))) - (4 * F)) + * which is, more or less, max(0, 5 + (A * (A / (A + 2R))) - (4 * F)) */ private static double estimateCapacity(RateStat acceptStat, RateStat rejectStat, RateStat failedStat, int period) { Rate curAccepted = acceptStat.getRate(period); Rate curRejected = rejectStat.getRate(period); Rate curFailed = failedStat.getRate(period); - long eventCount = 0; - if (curAccepted != null) + double eventCount = 0; + if (curAccepted != null) { eventCount = curAccepted.getCurrentEventCount() + curAccepted.getLastEventCount(); - // Punish for rejections. - // We don't want to simply do eventCount -= rejected or we get to zero with 50% rejection, - // and we don't want everybody to be at zero during times of congestion. - if (eventCount > 0) { - long rejected = curRejected.getCurrentEventCount() + curRejected.getLastEventCount(); - eventCount = eventCount * eventCount / (eventCount + rejected); + // Punish for rejections. + // We don't want to simply do eventCount -= rejected or we get to zero with 50% rejection, + // and we don't want everybody to be at zero during times of congestion. + if (eventCount > 0 && curRejected != null) { + long rejected = curRejected.getCurrentEventCount() + curRejected.getLastEventCount(); + if (rejected > 0) + eventCount *= eventCount / (eventCount + (2 * rejected)); + } } + double stretch = ((double)ESTIMATE_PERIOD) / period; double val = eventCount * stretch; - long failed = 0; + // Let's say a failure is 4 times worse than a rejection. // It's actually much worse than that, but with 2-hop tunnels and a 8-peer // fast pool, for example, you have a 1/7 chance of being falsely blamed. // We also don't want to drive everybody's capacity to zero, that isn't helpful. - if (curFailed != null) - failed = (long) (0.5 + (4.0 * (curFailed.getCurrentTotalValue() + curFailed.getLastTotalValue()) / 100.0)); - if (failed > 0) { - //if ( (period <= 10*60*1000) && (curFailed.getCurrentEventCount() > 0) ) - // return 0.0d; // their tunnels have failed in the last 0-10 minutes - //else - val -= failed * stretch; + if (curFailed != null) { + double failed = curFailed.getCurrentTotalValue() + curFailed.getLastTotalValue(); + if (failed > 0) { + //if ( (period <= 10*60*1000) && (curFailed.getCurrentEventCount() > 0) ) + // return 0.0d; // their tunnels have failed in the last 0-10 minutes + //else + // .04 = 4.0 / 100.0 adjustment to failed + val -= 0.04 * failed * stretch; + } } val += GROWTH_FACTOR; From 8fa49968ed60282a5acda89a5e622f28ae08ece8 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Tue, 15 Feb 2011 15:22:57 +0000 Subject: [PATCH 209/463] * i2psnark: Details link shuffle, mostly restore 0.8.3 behavior --- .../org/klomp/snark/web/I2PSnarkServlet.java | 63 ++++++++++++------- 1 file changed, 40 insertions(+), 23 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index a3d77a814..77207ec08 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -857,20 +857,53 @@ public class I2PSnarkServlet extends Default { out.write("<td class=\"center " + rowClass + "\">"); out.write(statusString + "</td>\n\t"); + // (i) icon column out.write("<td class=\"" + rowClass + "\">"); + if (isValid && meta.getAnnounce() != null) { + // Link to local details page - note that trailing slash on a single-file torrent + // gets us to the details page instead of the file. + //StringBuilder buf = new StringBuilder(128); + //buf.append("<a href=\"").append(snark.getBaseName()) + // .append("/\" title=\"").append(_("Torrent details")) + // .append("\"><img alt=\"").append(_("Info")).append("\" border=\"0\" src=\"") + // .append(_imgPath).append("details.png\"></a>"); + //out.write(buf.toString()); + + // Link to tracker details page + String trackerLink = getTrackerLink(meta.getAnnounce(), snark.getInfoHash()); + if (trackerLink != null) + out.write(trackerLink); + } + + // File type icon column + out.write("</td>\n<td class=\"" + rowClass + "\">"); if (isValid) { + // Link to local details page - note that trailing slash on a single-file torrent + // gets us to the details page instead of the file. StringBuilder buf = new StringBuilder(128); buf.append("<a href=\"").append(snark.getBaseName()) .append("/\" title=\"").append(_("Torrent details")) - .append("\"><img alt=\"").append(_("Info")).append("\" border=\"0\" src=\"") - .append(_imgPath).append("details.png\"></a>"); - out.write(buf.toString()); + .append("\">"); + out.write(buf.toString()); + } + String icon; + if (isMultiFile) + icon = "folder"; + else if (isValid) + icon = toIcon(meta.getName()); + else + icon = "magnet"; + if (isValid) { + out.write(toImg(icon, _("Info"))); + out.write("</a>"); + } else { + out.write(toImg(icon)); } - out.write("</td>\n<td class=\"" + rowClass + "\">"); - StringBuilder buf = null; + // Torrent name column + out.write("</td><td class=\"snarkTorrentName " + rowClass + "\">"); if (remaining == 0 || isMultiFile) { - buf = new StringBuilder(128); + StringBuilder buf = new StringBuilder(128); buf.append("<a href=\"").append(snark.getBaseName()); if (isMultiFile) buf.append('/'); @@ -882,22 +915,6 @@ public class I2PSnarkServlet extends Default { buf.append("\">"); out.write(buf.toString()); } - String icon; - if (isMultiFile) - icon = "folder"; - else if (isValid) - icon = toIcon(meta.getName()); - else - icon = "magnet"; - if (remaining == 0 || isMultiFile) { - out.write(toImg(icon, _("Open"))); - out.write("</a>"); - } else { - out.write(toImg(icon)); - } - out.write("</td><td class=\"snarkTorrentName " + rowClass + "\">"); - if (remaining == 0 || isMultiFile) - out.write(buf.toString()); out.write(filename); if (remaining == 0 || isMultiFile) out.write("</a>"); @@ -1169,7 +1186,7 @@ public class I2PSnarkServlet extends Default { out.write(_("From URL")); out.write(":<td><input type=\"text\" name=\"newURL\" size=\"85\" value=\"" + newURL + "\""); out.write("title=\""); - out.write(_("Torrent file must originate from an I2P-based tracker")); + out.write(_("Enter the torrent file download URL (I2P only), magnet link, or maggot link")); out.write("\"> \n"); // not supporting from file at the moment, since the file name passed isn't always absolute (so it may not resolve) //out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>"); From 4d59570df25818a95d24359c6d09cdcece863f45 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Tue, 15 Feb 2011 15:25:16 +0000 Subject: [PATCH 210/463] * Timers: Log cleanup --- core/java/src/net/i2p/util/Executor.java | 7 ++++--- core/java/src/net/i2p/util/SimpleScheduler.java | 11 +++++------ core/java/src/net/i2p/util/SimpleTimer.java | 2 ++ core/java/src/net/i2p/util/SimpleTimer2.java | 8 ++++---- history.txt | 9 ++++++++- router/java/src/net/i2p/router/RouterVersion.java | 2 +- 6 files changed, 24 insertions(+), 15 deletions(-) diff --git a/core/java/src/net/i2p/util/Executor.java b/core/java/src/net/i2p/util/Executor.java index 8092d7ac4..3c81d46f1 100644 --- a/core/java/src/net/i2p/util/Executor.java +++ b/core/java/src/net/i2p/util/Executor.java @@ -5,10 +5,10 @@ import java.util.List; import net.i2p.I2PAppContext; class Executor implements Runnable { - private I2PAppContext _context; + private final I2PAppContext _context; private Log _log; private final List _readyEvents; - private SimpleStore runn; + private final SimpleStore runn; public Executor(I2PAppContext ctx, Log log, List events, SimpleStore x) { _context = ctx; @@ -31,9 +31,10 @@ class Executor implements Runnable { try { evt.timeReached(); } catch (Throwable t) { - log("wtf, event borked: " + evt, t); + log("Executing task " + evt + " exited unexpectedly, please report", t); } long time = _context.clock().now() - before; + // FIXME _log won't be non-null unless we already had a CRIT if ( (time > 1000) && (_log != null) && (_log.shouldLog(Log.WARN)) ) _log.warn("wtf, event execution took " + time + ": " + evt); } diff --git a/core/java/src/net/i2p/util/SimpleScheduler.java b/core/java/src/net/i2p/util/SimpleScheduler.java index f764debe9..951f5929e 100644 --- a/core/java/src/net/i2p/util/SimpleScheduler.java +++ b/core/java/src/net/i2p/util/SimpleScheduler.java @@ -30,10 +30,10 @@ public class SimpleScheduler { public static SimpleScheduler getInstance() { return _instance; } private static final int MIN_THREADS = 2; private static final int MAX_THREADS = 4; - private I2PAppContext _context; - private Log _log; - private ScheduledThreadPoolExecutor _executor; - private String _name; + private final I2PAppContext _context; + private final Log _log; + private final ScheduledThreadPoolExecutor _executor; + private final String _name; private int _count; private final int _threads; @@ -42,7 +42,6 @@ public class SimpleScheduler { _context = I2PAppContext.getGlobalContext(); _log = _context.logManager().getLog(SimpleScheduler.class); _name = name; - _count = 0; long maxMemory = Runtime.getRuntime().maxMemory(); _threads = (int) Math.max(MIN_THREADS, Math.min(MAX_THREADS, 1 + (maxMemory / (32*1024*1024)))); _executor = new ScheduledThreadPoolExecutor(_threads, new CustomThreadFactory()); @@ -139,7 +138,7 @@ public class SimpleScheduler { try { _timedEvent.timeReached(); } catch (Throwable t) { - _log.log(Log.CRIT, _name + " wtf, event borked: " + _timedEvent, t); + _log.log(Log.CRIT, _name + ": Scheduled task " + _timedEvent + " exited unexpectedly, please report", t); } long time = System.currentTimeMillis() - before; if (time > 1000 && _log.shouldLog(Log.WARN)) diff --git a/core/java/src/net/i2p/util/SimpleTimer.java b/core/java/src/net/i2p/util/SimpleTimer.java index f428afceb..ee3f35120 100644 --- a/core/java/src/net/i2p/util/SimpleTimer.java +++ b/core/java/src/net/i2p/util/SimpleTimer.java @@ -14,6 +14,8 @@ import net.i2p.I2PAppContext; * appropriate time. The method that is fired however should NOT block (otherwise * they b0rk the timer). * + * WARNING - Deprecated. + * This is an inefficient mess. Use SimpleScheduler or SimpleTimer2 if possible. */ public class SimpleTimer { private static final SimpleTimer _instance = new SimpleTimer(); diff --git a/core/java/src/net/i2p/util/SimpleTimer2.java b/core/java/src/net/i2p/util/SimpleTimer2.java index 44e405b24..a497915e2 100644 --- a/core/java/src/net/i2p/util/SimpleTimer2.java +++ b/core/java/src/net/i2p/util/SimpleTimer2.java @@ -29,10 +29,10 @@ public class SimpleTimer2 { public static SimpleTimer2 getInstance() { return _instance; } private static final int MIN_THREADS = 2; private static final int MAX_THREADS = 4; - private I2PAppContext _context; + private final I2PAppContext _context; private static Log _log; // static so TimedEvent can use it - private ScheduledThreadPoolExecutor _executor; - private String _name; + private final ScheduledThreadPoolExecutor _executor; + private final String _name; private int _count; private final int _threads; @@ -223,7 +223,7 @@ public class SimpleTimer2 { try { timeReached(); } catch (Throwable t) { - _log.log(Log.CRIT, _pool + " wtf, event borked: " + this, t); + _log.log(Log.CRIT, _pool + ": Timed task " + this + " exited unexpectedly, please report", t); } long time = System.currentTimeMillis() - before; if (time > 500 && _log.shouldLog(Log.WARN)) diff --git a/history.txt b/history.txt index 967b5b763..4aa6626fa 100644 --- a/history.txt +++ b/history.txt @@ -1,9 +1,15 @@ +2011-02-15 zzz + * i2psnark: Details link shuffle, mostly restore 0.8.3 behavior + * Profiles: Punish rejections more, in an attempt to spread the + load more through the network + * Timers: Log cleanup + 2011-02-14 Mathiasdm * Fix headless issue without reboot 2011-02-13 zzz * Connect Client: Minor NPE fix cleanup - * JobQueue: Prevet NPE at shutdown (thanks liberty) + * JobQueue: Prevent NPE at shutdown (thanks liberty) * GeoIP: Prevent startup NPE (ticket #413, thanks RN) * NetDB: Prevent ExpireLeaseJob NPE (thanks sponge) @@ -21,6 +27,7 @@ * I2CP: Correctly close internal connections on the router side when closed by the client, was causing massive memory leak for internal clients using lots of sessions (thanks sponge) + (ticket #397) * i2psnark: - Improved magnet link parsing, use tr parameter if present * i2ptunnel: Change shared clients default for new clients to false diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 5a58b19bc..e36cd3b14 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 = 11; + public final static long BUILD = 12; /** for example "-test" */ public final static String EXTRA = ""; From e75d0b765461b5abc2ea58814a7524cd3225bc30 Mon Sep 17 00:00:00 2001 From: hiddenz <hiddenz@mail.i2p> Date: Tue, 15 Feb 2011 17:17:59 +0000 Subject: [PATCH 211/463] routerconsole: update russian translation --- apps/routerconsole/locale/messages_ru.po | 323 ++++++++++++----------- 1 file changed, 164 insertions(+), 159 deletions(-) diff --git a/apps/routerconsole/locale/messages_ru.po b/apps/routerconsole/locale/messages_ru.po index f9f42f85e..4f54c4fa4 100644 --- a/apps/routerconsole/locale/messages_ru.po +++ b/apps/routerconsole/locale/messages_ru.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-17 18:53+0000\n" -"PO-Revision-Date: 2011-01-18 01:19+0500\n" +"POT-Creation-Date: 2011-02-14 18:14+0000\n" +"PO-Revision-Date: 2011-02-14 23:21+0500\n" "Last-Translator: Hidden Z <hiddenz@mail.i2p>\n" "Language-Team: \n" "Language: \n" @@ -84,21 +84,21 @@ msgstr[0] "{0} день" msgstr[1] "{0} дней" msgstr[2] "{0} дней" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:126 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:122 #, java-format msgid "Banned by router hash: {0}" msgstr "Забанен по хэшу маршрутизатора: {0}" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:128 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:124 msgid "Banned by router hash" msgstr "Забанен по хэшу маршрутизатора" #. Temporary reason, until the job finishes -#: ../../../router/java/src/net/i2p/router/Blocklist.java:673 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:669 msgid "IP banned" msgstr "IP заблокирован" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:743 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:739 #, java-format msgid "IP banned by blocklist.txt entry {0}" msgstr "IP заблокирован по записи в blocklist.txt: {0}" @@ -152,12 +152,12 @@ msgstr "Принимаем туннели" msgid "Rejecting tunnels" msgstr "Не принимаем туннели" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:98 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:105 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 msgid "Reseeding" msgstr "Начальная загрузка" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:121 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:128 #, java-format msgid "Reseed fetched only 1 router." msgid_plural "Reseed fetched only {0} routers." @@ -165,29 +165,29 @@ msgstr[0] "При начальной загрузке получены данн msgstr[1] "При начальной загрузке получены данные только о {0} роутерах." msgstr[2] "При начальной загрузке получены данные только о {0} роутерах." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:128 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:135 msgid "Reseed failed." msgstr "Попытка начальной загрузки провалилась." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:129 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:136 #, java-format msgid "See {0} for help." msgstr "Смотрите {0} для помощи." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:130 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:137 msgid "reseed configuration page" msgstr "страница настройки начальной загрузки" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:231 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:239 msgid "Reseeding: fetching seed URL." msgstr "Производится начальная загрузка: загружается URL каталога маршрутизаторов." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:272 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281 #, java-format msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." msgstr "Производится начальная загрузка: получение информации о маршрутизаторах ({0} удачно, {1} ошибок)." -#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:513 +#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:512 msgid "NetDb entry" msgstr "показать описание в NetDb" @@ -196,38 +196,38 @@ msgstr "показать описание в NetDb" msgid "No transports (hidden or starting up?)" msgstr "Нет транспортных протоколов (в скрытом режиме или запущен недавно?)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:452 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:450 msgid "Unreachable on any transport" msgstr "Недоступен по всем транспортным протоколам" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:501 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:499 msgid "Router Transport Addresses" msgstr "Адреса транспортов маршрутизатора" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:506 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:504 #, java-format msgid "{0} is used for outbound connections only" msgstr "{0} используется только для исходящих соединений" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:520 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:518 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123 msgid "Help" msgstr "Справка" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 msgid "Your transport connection limits are automatically set based on your configured bandwidth." msgstr "Лимиты транспортных соединений назначены автоматически на основе заданной вами пропускной способности." -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 msgid "To override these limits, add the settings i2np.ntcp.maxConnections=nnn and i2np.udp.maxConnections=nnn on the advanced configuration page." msgstr "Для переопределения этих лимитов добавьте параметры i2np.ntcp.maxConnections=nnn и i2np.udp.maxConnections=nnn на странице расширенных настроек." -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 msgid "Definitions" msgstr "Условные обозначения" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:735 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24 @@ -239,149 +239,149 @@ msgstr "Условные обозначения" msgid "Peer" msgstr "Пир" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 msgid "The remote peer, identified by router hash" msgstr "Уникальный идентификатор пира (несколько начальных символов из хеша его маршрутизатора)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:527 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:736 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 msgid "Dir" msgstr "Направление" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 msgid "Inbound connection" msgstr "Входящее соединение" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 msgid "Outbound connection" msgstr "Исходящее соединение" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 msgid "They offered to introduce us (help other peers traverse our firewall)" msgstr "Этот пир предлагает себя в качестве нашего посредника (для того, чтобы другие пиры могли соединяться с нами в обход нашего брандмауэра)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 msgid "We offered to introduce them (help other peers traverse their firewall)" msgstr "Мы предлагаем себя в качестве посредника для этого пира (для того, чтобы другие пиры могли соединяться с ним в обход его брандмауэра)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "How long since a packet has been received / sent" msgstr "Сколько прошло времени после приёма/передачи последнего пакета" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895 msgid "Idle" msgstr "Неактивен" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1900 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "In/Out" msgstr "Приём/Передача" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 msgid "The smoothed inbound / outbound transfer rate (KBytes per second)" msgstr "Усреднённые скорости приёма / передачи (КБайт/сек) " -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 msgid "How long ago this connection was established" msgstr "Время жизни соединения" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905 msgid "Up" msgstr "Подключен" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1907 msgid "Skew" msgstr "Сдвиг" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 msgid "The difference between the peer's clock and your own" msgstr "Разница хода часов между пиром и нами" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 msgid "The congestion window, which is how many bytes can be sent without an acknowledgement" msgstr "<i>Congestion Window.</i> Окно насыщения — количество байт, которое мы можем послать до ожидания подтверждения" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 msgid "The number of sent messages awaiting acknowledgement" msgstr "Количество отправленных сообщений ожидающих подтверждения" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 msgid "The maximum number of concurrent messages to send" msgstr "Максимальное количество параллельно отправляемых сообщений" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 msgid "The number of pending sends which exceed congestion window" msgstr "Количество ожидающих посылок превосходящих размер окна насыщения" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 msgid "The slow start threshold" msgstr "<i>Slow Start Threshold.</i> Величина порога медленного старта" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 msgid "The round trip time in milliseconds" msgstr "<i>Round-Trip Time.</i> Время между отправкой запроса и получением ответа (миллисекунды)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 msgid "Dev" msgstr "Отклонение" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 msgid "The standard deviation of the round trip time in milliseconds" msgstr "Среднеквадратическое отклонение RTT (миллисекунды)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 msgid "The retransmit timeout in milliseconds" msgstr "<i>Retransmit Time-Out.</i> Время ожидания подтверждения перед повторной посылкой пакета (миллисекунды)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 msgid "Current maximum send packet size / estimated maximum receive packet size (bytes)" msgstr "<i>Maximum Transfer Unit.</i> Текущий максимальный размер исходящего пакета / максимальный размер принятого пакета (байт) " -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 msgid "TX" msgstr "Передано" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 msgid "The total number of packets sent to the peer" msgstr "Общее количество посланных пиру пакетов" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:742 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926 msgid "RX" msgstr "Принято" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 msgid "The total number of packets received from the peer" msgstr "Общее количество принятых от пира пакетов" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1929 msgid "Dup TX" msgstr "Повт. принято" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 msgid "The total number of packets retransmitted to the peer" msgstr "Общее количество повторно посланных пиру пакетов" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1931 msgid "Dup RX" msgstr "Повт. передано" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 msgid "The total number of duplicate packets received from the peer" msgstr "Общее количество повторно принятых от пира пакетов" @@ -2184,79 +2184,51 @@ 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:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 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:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 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:355 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:343 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:323 -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:325 -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:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:351 msgid "View console on startup" msgstr "Открывать веб-консоль при запуске I2P" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:117 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:93 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:365 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:94 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 msgid "Do not view console on startup" msgstr "Не открывать веб-консоль при запуске I2P" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:120 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96 msgid "Console is not to be shown on startup" msgstr "Веб-консоль не будет открываться при запуске I2P" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:129 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:105 msgid "Service installed" msgstr "Служба установлена" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:131 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:107 msgid "Warning: unable to install the service" msgstr "Предупреждение: не удалось установить службу" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:137 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:113 msgid "Service removed" msgstr "Служба удалена" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:139 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:115 msgid "Warning: unable to remove the service" msgstr "Предупреждение: не удалось удалить службу" @@ -2500,7 +2472,7 @@ msgstr "Строить график средних значений" #: ../java/src/net/i2p/router/web/GraphHelper.java:152 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:333 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 msgid "or" msgstr "или" @@ -2768,127 +2740,127 @@ msgstr "Загружается плагин" msgid "{0}B transferred" msgstr "{0} байт скачано" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:152 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:153 msgid "Plugin downloaded" msgstr "Плагин загружен" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:157 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:344 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:158 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:345 #, java-format msgid "Cannot create plugin directory {0}" msgstr "Не удалось создать директорию плагина {0}" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:166 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:167 #: ../java/src/net/i2p/router/web/UpdateHandler.java:298 #, java-format msgid "from {0}" msgstr "из {0}" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:176 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:177 #, java-format msgid "Plugin from {0} is corrupt" msgstr "Загруженный из {0} плагин поврежден" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:187 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:188 #, java-format msgid "Plugin from {0} does not contain the required configuration file" msgstr "Загруженный из {0} плагин не содержит необходимого файла настроек" #. updateStatus("<b>" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + "</b>"); -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:200 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:201 #, java-format msgid "Plugin from {0} contains an invalid key" msgstr "Загруженный из {0} плагин содержит некорректный ключ" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:219 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:228 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:237 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:220 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:229 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:238 #, java-format msgid "Plugin signature verification of {0} failed" msgstr "Плагин {0} содержит недействительную подпись" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:252 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:253 #, java-format msgid "Plugin from {0} has invalid name or version" msgstr "Загруженный из {0} плагин имеет некорректное название или версию" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:257 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:258 #, java-format msgid "Plugin {0} has mismatched versions" msgstr "Плагин {0} содержит несовпадающие версии" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:265 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:266 #, java-format msgid "This plugin requires I2P version {0} or higher" msgstr "Для этого плагина требуется версия I2P {0} и выше" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:273 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:274 #, java-format msgid "This plugin requires Java version {0} or higher" msgstr "Для этого плагина требуется версия Java {0} и выше" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:281 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:282 msgid "Downloaded plugin is for new installs only, but the plugin is already installed" msgstr "Загруженный инсталлятор плагина предназначен только для первоначальной установки, но такой плагин уже установлен" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:294 msgid "Installed plugin does not contain the required configuration file" msgstr "Установленный плагин не содержит необходимого файла настроек" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:301 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:302 msgid "Signature of downloaded plugin does not match installed plugin" msgstr "Подпись загруженного плагина не совпадает с установленным плагином" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:308 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:309 #, java-format msgid "Downloaded plugin version {0} is not newer than installed plugin" msgstr "Версия скачанного плагина {0} не новее версии уже установленного плагина" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:315 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:316 #, java-format msgid "Plugin update requires installed plugin version {0} or higher" msgstr "Для обновления плагина требуется установленная версия плагина {0} и выше" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:322 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:323 #, java-format msgid "Plugin update requires installed plugin version {0} or lower" msgstr "Для обновления плагина требуется установленная версия плагина {0} и ниже" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:339 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:340 msgid "Plugin is for upgrades only, but the plugin is not installed" msgstr "Загруженный инсталлятор плагина предназначен только для обновления, но такой плагин ещё не был установлен" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:352 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:353 #, java-format msgid "Failed to install plugin in {0}" msgstr "Не удалось установить плагин в {0}" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:359 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:360 #, java-format msgid "Plugin {0} installed, router restart required" msgstr "Плагин {0} установлен, требуется перезапуск маршрутизатора" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:361 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:362 #, java-format msgid "Plugin {0} installed" msgstr "Плагин {0} установлен" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:379 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:380 #, java-format msgid "Plugin {0} installed and started" msgstr "Плагин {0} установлен и запущен" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:382 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:383 #, java-format msgid "Plugin {0} installed but failed to start, check logs" msgstr "Плагин {0} установлен, но при его запуске произошел сбой, загляните в логи" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:384 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:385 #, java-format msgid "Plugin {0} installed but failed to start" msgstr "Плагин {0} установлен, но при его запуске произошел сбой" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:394 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:395 #, java-format msgid "Failed to download plugin from {0}" msgstr "Не удалось скачать плагин из {0}" @@ -3214,37 +3186,44 @@ msgstr "Среднее" msgid "Highest average" msgstr "Максимальное среднее" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:202 +#. breaking the sentence like before makes translation in my language impossible. +#: ../java/src/net/i2p/router/web/StatsGenerator.java:201 #, java-format -msgid "in this period which ended {0} ago." -msgstr "в этом периоде который закончился {0} назад." +msgid "There were {0} event(s) in this period" +msgstr "Было {0} событий в этом периоде" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:204 +#. buf.append(' '); +#: ../java/src/net/i2p/router/web/StatsGenerator.java:203 +#, java-format +msgid " which ended {0} ago." +msgstr "который закончился {0} назад." + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:205 msgid "No events" msgstr "Нет событий" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:210 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:211 msgid "Average event count" msgstr "Среднее число событий" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:212 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:213 msgid "Events in peak period" msgstr "Событий за период пика" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:220 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:221 msgid "Graph Data" msgstr "График данных" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:222 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:223 msgid "Graph Event Count" msgstr "График количества событий" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:225 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:226 msgid "Export Data as XML" msgstr "Экспорт данных в XML" #. Display the strict average -#: ../java/src/net/i2p/router/web/StatsGenerator.java:230 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:231 msgid "Lifetime average value" msgstr "Среднее значение за время работы" @@ -4363,7 +4342,7 @@ msgid "Specify Port" msgstr "Задать порт вручную" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:330 msgid "Note" msgstr "ВНИМАНИЕ" @@ -5020,58 +4999,42 @@ msgid "After tearing down the router, it will wait 1 minute before starting back msgstr " " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:315 -msgid "Systray integration" -msgstr "Интеграция в область уведомлений" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 -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:319 -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:321 -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:327 msgid "Run on startup" msgstr "Автоматический запуск I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:329 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 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:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 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:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:329 msgid "If you are running I2P as service right now, removing it will shut down your router immediately." msgstr "Если служба I2P уже была запущена, при выборе варианта <b>\"Не запускать I2P при старте\"</b> маршрутизатор будет моментально остановлен." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:331 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:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 msgid "Debugging" msgstr "Отладка" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 msgid "View the job queue" msgstr "Просмотр очереди заданий" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 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 <a href=\"logs.jsp#servicelogs\">wrapper.log</a>." msgstr "В некоторых случаях для отладки может пригодиться список состояний потоков I2P-маршутизатора. Для получения такого списка нажмите эту кнопку. Список будет сохранен в файле <a href=\"logs.jsp#servicelogs\">wrapper.log</a>." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 msgid "Launch browser on router startup?" msgstr "Запускать браузер при старте I2P?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:361 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 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 это веб-консоль. Здесь можно выбрать автоматическое открытие при запуске маршрутизатора страницы" @@ -5434,6 +5397,48 @@ msgstr "обзор туннелей" msgid "I2P Tunnel Summary" msgstr "Обзор туннелей I2P" +#~ msgid "Show systray icon" +#~ msgstr "Показать значок статуса" + +#~ msgid "System tray icon enabled." +#~ msgstr "Включен значок-индикатор статуса в области уведомлений." + +#~ msgid "System tray icon feature not supported on this platform. Sorry!" +#~ msgstr "" +#~ "Вывод индикаторов в области уведомлений на этой платформе не " +#~ "поддерживается. Извините!" + +#~ msgid "Warning: unable to contact the systray manager" +#~ msgstr "" +#~ "Предупреждение: Не удалось соединиться с менеджером области уведомлений" + +#~ msgid "Hide systray icon" +#~ msgstr "Спрятать значок статуса" + +#~ msgid "System tray icon disabled." +#~ msgstr "Выключен значок-индикатор статуса в области уведомлений." + +#~ msgid "Systray integration" +#~ msgstr "Интеграция в область уведомлений" + +#~ 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, у Вас есть возможность отслеживать статус " +#~ "маршрутизатора через значок в области уведомлений" + +#~ msgid "" +#~ "(later on, I2P client applications will be able to integrate their own " +#~ "functionality into the system tray as well)." +#~ msgstr "(когда-нибудь и клиентские приложения для I2P будут там доступны)." + +#~ msgid "" +#~ "If you are on windows, you can either enable or disable that icon here." +#~ msgstr "" +#~ "Если Вы пользуетесь I2P под Windows, то здесь Вы можете настроить " +#~ "отображение этого значка." + #~ msgid "" #~ "Ensure that nothing blocks outbound HTTP, check <a target=\"_top\" href=" #~ "\"logs.jsp\">logs</a> and if nothing helps, read the <a target=\"_top\" " From 3d1312d169193496e0542ce7611ab1982379147b Mon Sep 17 00:00:00 2001 From: hiddenz <hiddenz@mail.i2p> Date: Tue, 15 Feb 2011 17:18:20 +0000 Subject: [PATCH 212/463] i2ptunnel: update russian translation --- apps/i2ptunnel/locale/messages_ru.po | 59 ++++++++++++++++------------ 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/apps/i2ptunnel/locale/messages_ru.po b/apps/i2ptunnel/locale/messages_ru.po index 2b9790b67..d9075fa84 100644 --- a/apps/i2ptunnel/locale/messages_ru.po +++ b/apps/i2ptunnel/locale/messages_ru.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2ptunnel\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-17 18:54+0000\n" -"PO-Revision-Date: 2011-01-18 00:34+0500\n" +"POT-Creation-Date: 2011-02-14 18:14+0000\n" +"PO-Revision-Date: 2011-02-14 23:24+0500\n" "Last-Translator: Hidden Z <hiddenz@mail.i2p>\n" "Language-Team: foo <foo@bar>\n" "Language: \n" @@ -32,81 +32,90 @@ msgstr "Jump-сервисы, которые, возможно, знают нуж msgid "internal" msgstr "внутренний" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:170 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:171 msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit." msgstr "Неправильно переданная форма, возможно вы использовали действие браузера \"назад\" или \"обновить\". Пожалуйста повторите попытку." -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:217 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218 msgid "Configuration reloaded for all tunnels" msgstr "Конфигурация для всех туннелей перечитана" #. and give them something to look at in any case -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:229 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:230 msgid "Starting tunnel" msgstr "Запуск туннеля" #. and give them something to look at in any case -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:242 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:243 msgid "Stopping tunnel" msgstr "Остановка туннеля" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:389 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:311 +msgid "Configuration changes saved" +msgstr "Настройки сохранены" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314 +msgid "Failed to save configuration" +msgstr "Не удалось сохранить настройки" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398 msgid "New Tunnel" msgstr "Новый туннель" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:409 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418 msgid "Standard client" msgstr "Обычный клиент" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:410 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419 msgid "HTTP client" msgstr "HTTP-клиент" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:411 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420 msgid "IRC client" msgstr "IRC-клиент" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:412 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:421 msgid "Standard server" msgstr "Обычный сервер" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:413 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:422 msgid "HTTP server" msgstr "HTTP-сервер" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:414 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:423 msgid "SOCKS 4/4a/5 proxy" msgstr "SOCKS 4/4a/5 прокси" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:415 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:424 msgid "SOCKS IRC proxy" msgstr "SOCKS IRC прокси" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:416 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:425 msgid "CONNECT/SSL/HTTPS proxy" msgstr "CONNECT/SSL/HTTPS прокси" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:417 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:426 msgid "IRC server" msgstr "IRC-сервер" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:427 msgid "Streamr client" msgstr "Streamr-клиент" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:428 msgid "Streamr server" msgstr "Streamr-сервер" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:429 msgid "HTTP bidir" msgstr "HTTP bidir (экспериментальный двунаправленный режим, инструкцию спрашивайте у sponge)" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:508 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290 msgid "Host not set" msgstr "Хост не задан" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:512 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:521 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:272 msgid "Port not set" msgstr "Порт не задан" @@ -560,8 +569,8 @@ msgid "Access List" msgstr "Список доступа" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451 -msgid "Inbound connection limits (0 to disable)" -msgstr "Ограничение входящих соединений (0 для отключения)" +msgid "Inbound connection limits (0=unlimited)" +msgstr "Ограничение входящих соединений (0=неограниченно)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453 msgid "Per client" @@ -584,8 +593,8 @@ msgid "Total" msgstr "Всего" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475 -msgid "Max concurrent connections (0 to disable)" -msgstr "Максимум одновременных соединений (0 для отключения)" +msgid "Max concurrent connections (0=unlimited)" +msgstr "Максимум одновременных соединений (0=неограниченно)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493 msgid "New Certificate type" From ce634d4f449a679d1df60cc31f6091f206ccf220 Mon Sep 17 00:00:00 2001 From: hiddenz <hiddenz@mail.i2p> Date: Tue, 15 Feb 2011 17:18:44 +0000 Subject: [PATCH 213/463] i2psnark: update russian translation --- apps/i2psnark/locale/messages_ru.po | 549 ++++++++++++++++------------ 1 file changed, 318 insertions(+), 231 deletions(-) diff --git a/apps/i2psnark/locale/messages_ru.po b/apps/i2psnark/locale/messages_ru.po index ed82ff35c..3bb903032 100644 --- a/apps/i2psnark/locale/messages_ru.po +++ b/apps/i2psnark/locale/messages_ru.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-13 19:43+0000\n" -"PO-Revision-Date: 2010-12-16 00:10+0500\n" +"POT-Creation-Date: 2011-02-14 18:14+0000\n" +"PO-Revision-Date: 2011-02-15 22:16+0500\n" "Last-Translator: Hidden Z <hiddenz@mail.i2p>\n" "Language-Team: foo <foo@bar>\n" "Language: \n" @@ -19,318 +19,371 @@ msgstr "" "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" -#: ../java/src/org/klomp/snark/SnarkManager.java:94 -#, java-format -msgid "Adding torrents in {0} minutes" -msgstr "Торренты будут подгружены через {0} минут(ы)" - -#: ../java/src/org/klomp/snark/SnarkManager.java:296 +#: ../java/src/org/klomp/snark/SnarkManager.java:307 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "Новое значение лимита количества слотов отдачи: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:298 +#: ../java/src/org/klomp/snark/SnarkManager.java:309 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "Минимально допустимое значение для количества слотов: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:310 +#: ../java/src/org/klomp/snark/SnarkManager.java:321 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "Новое значение лимита скорости отдачи: {0} KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:312 +#: ../java/src/org/klomp/snark/SnarkManager.java:323 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "Минимально допустимое значение для лимита скорости отдачи: {0} KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:324 +#: ../java/src/org/klomp/snark/SnarkManager.java:335 #, java-format -msgid "Startup delay limit changed to {0} minutes" -msgstr "Новое значение задержки запуска: {0} минут(ы)" +msgid "Startup delay changed to {0}" +msgstr "Задержка запуска изменена на {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:371 +#: ../java/src/org/klomp/snark/SnarkManager.java:386 msgid "I2CP and tunnel changes will take effect after stopping all torrents" msgstr "Изменения настроек I2CP и туннелей вступят в силу после остановки всех торрентов." -#: ../java/src/org/klomp/snark/SnarkManager.java:378 +#: ../java/src/org/klomp/snark/SnarkManager.java:393 msgid "Disconnecting old I2CP destination" msgstr "Рассоединяемся по старому адресу I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:382 +#: ../java/src/org/klomp/snark/SnarkManager.java:397 #, java-format msgid "I2CP settings changed to {0}" msgstr "Новые параметры I2CP: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:386 +#: ../java/src/org/klomp/snark/SnarkManager.java:402 msgid "Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "Не удалось соединиться с использованием новых настроек I2CP, возвращаемся к старым настройкам" -#: ../java/src/org/klomp/snark/SnarkManager.java:390 +#: ../java/src/org/klomp/snark/SnarkManager.java:406 msgid "Unable to reconnect with the old settings!" msgstr "Не удалось пересоединиться с использованием старых настроек I2CP!" -#: ../java/src/org/klomp/snark/SnarkManager.java:392 +#: ../java/src/org/klomp/snark/SnarkManager.java:408 msgid "Reconnected on the new I2CP destination" msgstr "Пересоединились по новому адресу I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:403 +#: ../java/src/org/klomp/snark/SnarkManager.java:418 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "I2CP-приёмник перезапущен для \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:414 +#: ../java/src/org/klomp/snark/SnarkManager.java:429 msgid "Enabled autostart" msgstr "Автостарт включен" -#: ../java/src/org/klomp/snark/SnarkManager.java:416 +#: ../java/src/org/klomp/snark/SnarkManager.java:431 msgid "Disabled autostart" msgstr "Автостарт выключен" -#: ../java/src/org/klomp/snark/SnarkManager.java:422 +#: ../java/src/org/klomp/snark/SnarkManager.java:437 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "Включено использование открытых трекеров. Требуется перезапуск торрента, чтобы изменения вступили в силу." -#: ../java/src/org/klomp/snark/SnarkManager.java:424 +#: ../java/src/org/klomp/snark/SnarkManager.java:439 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "Отключено использование открытых трекеров. Требуется перезапуск торрента, чтобы изменения вступили в силу." -#: ../java/src/org/klomp/snark/SnarkManager.java:431 +#: ../java/src/org/klomp/snark/SnarkManager.java:447 msgid "Open Tracker list changed - torrent restart required to take effect." msgstr "Изменен список открытых трекеров. Требуется перезапуск торрента, чтобы изменения вступили в силу." -#: ../java/src/org/klomp/snark/SnarkManager.java:438 +#: ../java/src/org/klomp/snark/SnarkManager.java:454 #, java-format msgid "{0} theme loaded, return to main i2psnark page to view." msgstr "{0} тема загружена, вернитесь на основную страницу i2psnark для просмотра." -#: ../java/src/org/klomp/snark/SnarkManager.java:445 +#: ../java/src/org/klomp/snark/SnarkManager.java:461 msgid "Configuration unchanged." msgstr "Настройки не изменились." -#: ../java/src/org/klomp/snark/SnarkManager.java:455 +#: ../java/src/org/klomp/snark/SnarkManager.java:471 #, java-format msgid "Unable to save the config to {0}" msgstr "Не удалось сохранить настройки в {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:494 +#: ../java/src/org/klomp/snark/SnarkManager.java:536 msgid "Connecting to I2P" msgstr "Устанавливается соединение с I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:497 +#: ../java/src/org/klomp/snark/SnarkManager.java:539 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "Ошибка соединения с I2P, проверьте настройки I2CP!" -#: ../java/src/org/klomp/snark/SnarkManager.java:506 +#: ../java/src/org/klomp/snark/SnarkManager.java:548 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "Ошибка: Не удалось добавить торрент {0}" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:528 +#: ../java/src/org/klomp/snark/SnarkManager.java:570 #, java-format msgid "Cannot open \"{0}\"" msgstr "Не удалось открыть \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:541 +#. TODO - if the existing one is a magnet, delete it and add the metainfo instead? +#: ../java/src/org/klomp/snark/SnarkManager.java:586 +#: ../java/src/org/klomp/snark/SnarkManager.java:661 +#: ../java/src/org/klomp/snark/SnarkManager.java:716 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954 #, java-format -msgid "Warning - Ignoring non-i2p tracker in \"{0}\", will announce to i2p open trackers only" -msgstr "Внимание: указанные в \"{0}\" не-i2p трекеры будут проигнорированы, будут использоваться только открытые i2p трекеры" +msgid "Torrent with this info hash is already running: {0}" +msgstr "Торрент с таким info hash уже запущен: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:543 +#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); +#: ../java/src/org/klomp/snark/SnarkManager.java:593 #, java-format -msgid "Warning - Ignoring non-i2p tracker in \"{0}\", and open trackers are disabled, you must enable open trackers before starting the torrent!" -msgstr "Внимание: указанные в \"{0}\" не-i2p трекеры будут проигнорированы, однако использование открытых i2p трекеров отключено, Вы должны включить поддержку открытых i2p трекеров перед запуском этого торрента!" +msgid "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers only." +msgstr "Внимание - в \"{0}\" не найдено I2P трекеров, анонсирование будет производиться только на открытых трекерах I2P." -#: ../java/src/org/klomp/snark/SnarkManager.java:563 +#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); +#: ../java/src/org/klomp/snark/SnarkManager.java:598 +#, java-format +msgid "Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is enabled before starting this torrent." +msgstr "Внимание - в \"{0}\" не найдено I2P трекеров. Перед запуском торрента убедитесь, что использование открытых трекеров включено." + +#: ../java/src/org/klomp/snark/SnarkManager.java:619 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "Торрент в \"{0}\" некорректен" -#: ../java/src/org/klomp/snark/SnarkManager.java:578 +#: ../java/src/org/klomp/snark/SnarkManager.java:624 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1977 +#, java-format +msgid "ERROR - Out of memory, cannot create torrent from {0}" +msgstr "ОШИБКА - нехватка памяти, невозможно создать торрент из {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:635 #, java-format msgid "Torrent added and started: \"{0}\"" msgstr "Торрент добавлен и запущен: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:580 +#: ../java/src/org/klomp/snark/SnarkManager.java:637 #, java-format msgid "Torrent added: \"{0}\"" msgstr "Торрент добавлен: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:734 +#: ../java/src/org/klomp/snark/SnarkManager.java:672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:489 +#, java-format +msgid "Fetching {0}" +msgstr "Получение торрента: {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:675 +#, java-format +msgid "We have no saved peers and no other torrents are running. Fetch of {0} will not succeed until you start another torrent." +msgstr "Мы не имеем сохранённых пиров и нет других запущенных торрентов. Загрузка {0} не будет успешна пока вы не запустите другой торрент." + +#: ../java/src/org/klomp/snark/SnarkManager.java:679 +#, java-format +msgid "Adding {0}" +msgstr "Добавление {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:726 +#: ../java/src/org/klomp/snark/SnarkManager.java:749 +#: ../java/src/org/klomp/snark/SnarkManager.java:1174 +#, java-format +msgid "Failed to copy torrent file to {0}" +msgstr "Не удалось скопировать торрент в: {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:972 #, java-format msgid "Too many files in \"{0}\" ({1}), deleting it!" msgstr "Слишком много файлов в торренте \"{0}\" ({1}), удаляем его!" -#: ../java/src/org/klomp/snark/SnarkManager.java:736 +#: ../java/src/org/klomp/snark/SnarkManager.java:974 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" msgstr "Торрент \"{0}\" содержит единственный файл заканчивающийся на \".torrent\", удаляем его!" -#: ../java/src/org/klomp/snark/SnarkManager.java:738 +#: ../java/src/org/klomp/snark/SnarkManager.java:976 #, java-format msgid "No pieces in \"{0}\", deleting it!" msgstr "В торренте \"{0}\" не оказалось ни одной части, удаляем его!" -#: ../java/src/org/klomp/snark/SnarkManager.java:740 +#: ../java/src/org/klomp/snark/SnarkManager.java:978 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!" msgstr "Слишком много частей в торренте \"{0}\" (наш предел {1}), удаляем его!" -#: ../java/src/org/klomp/snark/SnarkManager.java:742 +#: ../java/src/org/klomp/snark/SnarkManager.java:980 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B), deleting it." msgstr "Слишком крупные части в торренте \"{0}\" ({1}B), удаляем его." -#: ../java/src/org/klomp/snark/SnarkManager.java:743 +#: ../java/src/org/klomp/snark/SnarkManager.java:981 #, java-format msgid "Limit is {0}B" msgstr "Наш предел {0}B" -#: ../java/src/org/klomp/snark/SnarkManager.java:751 +#: ../java/src/org/klomp/snark/SnarkManager.java:989 #, java-format msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" msgstr "Торренты крупнее чем {0}B пока не поддерживается, удаляем \"{1}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:767 +#: ../java/src/org/klomp/snark/SnarkManager.java:1005 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Ошибка: Невозможно удалить торрент {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:794 +#: ../java/src/org/klomp/snark/SnarkManager.java:1026 +#: ../java/src/org/klomp/snark/SnarkManager.java:1044 #, java-format msgid "Torrent stopped: \"{0}\"" msgstr "Торрент остановлен: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:814 +#: ../java/src/org/klomp/snark/SnarkManager.java:1065 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "Торрент удален: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:852 +#: ../java/src/org/klomp/snark/SnarkManager.java:1073 +#, java-format +msgid "Adding torrents in {0}" +msgstr "Добавление торрентов через {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1122 #, java-format msgid "Download finished: {0}" msgstr "Закачка завершена: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:880 +#: ../java/src/org/klomp/snark/SnarkManager.java:1170 +#, java-format +msgid "Metainfo received for {0}" +msgstr "Метаданные получены для {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1171 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:524 +#, java-format +msgid "Starting up torrent {0}" +msgstr "Запускаем торрент: {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1225 msgid "Unable to connect to I2P!" msgstr "Не удалось установить соединение с I2P!" -#: ../java/src/org/klomp/snark/SnarkManager.java:886 +#: ../java/src/org/klomp/snark/SnarkManager.java:1231 #, java-format msgid "Unable to add {0}" msgstr "Не удаётся добавить {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:185 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:205 msgid "I2PSnark - Anonymous BitTorrent Client" msgstr "I2PSnark — Анонимный BitTorrent Клиент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:198 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:218 msgid "Torrents" msgstr "Торренты" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:201 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:208 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:977 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1007 msgid "I2PSnark" msgstr "I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:225 msgid "Refresh page" msgstr "Обновить страницу" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:230 msgid "Forum" msgstr "Форум" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:264 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1483 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1698 msgid "Status" msgstr "Статус" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:270 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:272 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:292 msgid "Hide Peers" msgstr "спрятать список пиров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:277 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:279 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:299 msgid "Show Peers" msgstr "показать список пиров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:286 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1622 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1638 msgid "Torrent" msgstr "Торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310 msgid "Estimated time remaining" msgstr "Примерное оставшееся время" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:313 msgid "ETA" msgstr "Осталось" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317 msgid "Downloaded" msgstr "Получено" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:300 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:314 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:320 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 msgid "RX" msgstr "Принято" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:304 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:324 msgid "Uploaded" msgstr "Отдано" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:307 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:324 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344 msgid "TX" msgstr "Отдано" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:312 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:332 msgid "Down Rate" msgstr "Скорость загрузки" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:326 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:337 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 msgid "Rate" msgstr "Скорость" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342 msgid "Up Rate" msgstr "Скорость отдачи" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:340 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:364 msgid "Stop all torrents and the I2P tunnel" msgstr "Остановить все торренты и закрыть соединение с I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:366 msgid "Stop All" msgstr "Остановить все" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:351 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:375 msgid "Start all torrents and the I2P tunnel" msgstr "Запустить все торренты и открыть соединение с I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377 msgid "Start All" msgstr "Запустить все" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:396 msgid "No torrents loaded." msgstr "Нет загруженных торрентов." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:401 msgid "Totals" msgstr "Всего" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:379 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" @@ -338,7 +391,7 @@ msgstr[0] "{0} торрент" msgstr[1] "{0} торрента" msgstr[2] "{0} торрентов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:382 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:406 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" @@ -346,98 +399,95 @@ msgstr[0] "{0} подсоединенный пир" msgstr[1] "{0} подсоединенных пиров" msgstr[2] "{0} подсоединенных пиров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:454 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:495 #, java-format -msgid "Fetching {0}" -msgstr "Получение торрента: {0}" +msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" +msgstr "Некорректный URL: должен начинаться с \"http://\", \"{0}\", или \"{1}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:458 -msgid "Invalid URL - must start with http://" -msgstr "Некорректный URL, должен начинаться с http://" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:489 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:543 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 #, java-format -msgid "Starting up torrent {0}" -msgstr "Запускаем торрент: {0}" +msgid "Magnet deleted: {0}" +msgstr "Magnet удален: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:527 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:551 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:576 #, java-format msgid "Torrent file deleted: {0}" msgstr "Удален торрент: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:533 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:543 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:592 #, java-format msgid "Data file deleted: {0}" msgstr "Файл удален: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:545 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 #, java-format msgid "Data file could not be deleted: {0}" msgstr "Не удалось удалить файл: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:554 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 #, java-format msgid "Data dir deleted: {0}" msgstr "Директория удалена: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:587 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:636 msgid "Error creating torrent - you must select a tracker" msgstr "Торрент не создан — вы должны указать трекер" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:602 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:652 #, java-format msgid "Torrent created for \"{0}\"" msgstr "Создан торрент для \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:605 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:654 #, java-format msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\"" msgstr "Многие I2P трекеры требуют зарегистрировать на них торрент перед началом раздачи — пожалуйста проверьте требуется ли это перед запуском \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:607 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:656 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "Ошибка при создании торрента для: \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:610 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:659 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "Невозможно создать торрент для несуществующего файла или директории: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:662 msgid "Error creating torrent - you must enter a file or directory" msgstr "Торрент не создан — вы должны указать файл или директорию" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:665 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "Останавливаем все торренты и закрываем соединение с I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:627 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676 msgid "I2P tunnel closed." msgstr "Соединение с I2P закрыто." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:679 msgid "Opening the I2P tunnel and starting all torrents." msgstr "Соединяемся с I2P и запускаем все торренты." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:759 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:764 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:770 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:802 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:807 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:813 msgid "Tracker Error" msgstr "Ошибка Трекера" # TODO should replace "uploader limit NN peers" with "global number of upload slots: NN" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:762 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:766 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:794 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:799 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:803 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:805 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:825 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:842 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:846 #, java-format msgid "1 peer" msgid_plural "{0} peers" @@ -445,279 +495,301 @@ msgstr[0] "{0} пир" msgstr[1] "{0} пира" msgstr[2] "{0} пиров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:818 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823 msgid "Seeding" msgstr "Раздается" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:784 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:827 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1644 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 msgid "Complete" msgstr "Завершен" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:830 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:835 msgid "OK" msgstr "Загружается" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:796 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:844 msgid "Stalled" msgstr "Простаивает" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:805 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:848 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:851 msgid "No Peers" msgstr "Нет Пиров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:853 msgid "Stopped" msgstr "Остановлен" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837 -#, java-format -msgid "Details at {0} tracker" -msgstr "Детали на трекере {0}" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:864 +msgid "Torrent details" +msgstr "Подробная информация" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1139 msgid "Info" msgstr "Информация" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:853 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:879 msgid "View files" msgstr "Открыть директорию" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:855 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:881 msgid "Open file" msgstr "Открыть файл" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:865 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1569 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:893 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1785 msgid "Open" msgstr "Открыть" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:909 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:939 msgid "Stop the torrent" msgstr "Остановить торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:911 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:941 msgid "Stop" msgstr "Остановить" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:921 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:950 msgid "Start the torrent" msgstr "Запустить торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:923 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:952 msgid "Start" msgstr "Запустить" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:933 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:962 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "Удалить торрент из списка и с диска" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:938 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 #, java-format msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?" msgstr "Вы действительно хотите удалить \\''{0}.torrent\\''? (загруженные файлы удаляться НЕ будут)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:941 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970 msgid "Remove" msgstr "Удалить" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:980 msgid "Delete the .torrent file and the associated data file(s)" msgstr "Удалить торрент и стереть загруженные файлы" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985 #, java-format msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?" msgstr "Вы действительно хотите удалить торрент \\''{0}\\'' и все загруженные файлы?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:988 msgid "Delete" msgstr "Стереть" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:991 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1021 msgid "Unknown" msgstr "Неизвестный" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1033 msgid "Seed" msgstr "Сид" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1019 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1056 msgid "Uninteresting (The peer has no pieces we need)" msgstr "Uninteresting (У пира нет нужных нам частей торрента)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1021 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1058 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "Choked (Этот пир не позволяет нам запрашивать части торрента)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1035 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1078 msgid "Uninterested (We have no pieces the peer needs)" msgstr "Uninterested (У нас нужных этому пиру частей торрента)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1080 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "Choking (Мы не позволяем этому пиру запрашивать у нас части торрента)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1092 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 +#, java-format +msgid "Details at {0} tracker" +msgstr "Детали на трекере {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1167 msgid "Add Torrent" msgstr "Добавить Торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1094 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1169 msgid "From URL" msgstr "Из URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1172 msgid "Torrent file must originate from an I2P-based tracker" msgstr "Торрент-файл должен быть с I2P-трекера" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1102 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1177 msgid "Add torrent" msgstr "Добавить торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1105 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "Либо вы можете просто скопировать .torrent-файлы в директорию {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1107 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1182 msgid "Removing a .torrent will cause it to stop." msgstr "Удаление .torrent-файла приведёт к остановке торрента." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1131 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1205 msgid "Create Torrent" msgstr "Создать Торрент" #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1134 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208 msgid "Data to seed" msgstr "Файлы для раздачи" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1212 msgid "File or directory to seed (must be within the specified path)" msgstr "Файл или директория для раздачи (вводите только название файла или директории, указание абсолютных путей не поддерживается)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1140 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1214 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 msgid "Tracker" msgstr "Трекер" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1216 msgid "Select a tracker" msgstr "Выбрать трекер" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155 +#. out.write(_("Open trackers and DHT only")); +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1221 +msgid "Open trackers only" +msgstr "Только открытые трекеры" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1236 msgid "or" msgstr "или" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1158 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1239 msgid "Specify custom tracker announce URL" msgstr "Задать URL анонсера вручную" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1161 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 msgid "Create torrent" msgstr "Создать торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1399 msgid "Configuration" msgstr "Настройки" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1184 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264 msgid "Data directory" msgstr "Директория для файлов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1186 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1266 msgid "Edit i2psnark.config and restart to change" msgstr "Для изменения отредактируйте файл i2psnark.config и перезагрузите I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1270 msgid "Auto start" msgstr "Автозапуск" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1274 msgid "If checked, automatically start torrents that are added" msgstr "Автоматически запускать торренты после добавления" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1278 msgid "Theme" msgstr "Тема" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1211 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 msgid "Startup delay" msgstr "Задержка запуска" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1213 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1293 msgid "minutes" msgstr "минут" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317 msgid "Total uploader limit" msgstr "Ограничение количества слотов отдачи" # TODO should replace "uploader limit NN peers" with "global number of upload slots: NN" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320 msgid "peers" msgstr "пиров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1324 msgid "Up bandwidth limit" msgstr "Ограничение скорости отдачи" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1247 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1327 msgid "Half available bandwidth recommended." msgstr "Рекомендуется использовать половину от доступной пропускной способности." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1249 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1329 msgid "View or change router bandwidth" msgstr "Посмотреть/настроить ограничения скорости в маршрутизаторе I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333 msgid "Use open trackers also" msgstr "Дополнительно использовать открытые трекеры" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1337 msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file" msgstr "Анонсировать торренты на открытых трекерах, дополнительно к тем, что указаны внутри торрента" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1261 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 msgid "Open tracker announce URLs" msgstr "URL открытых трекеров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1273 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 msgid "Inbound Settings" msgstr "Входящие туннели" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359 msgid "Outbound Settings" msgstr "Исходящие туннели" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1286 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1367 msgid "I2CP host" msgstr "Адрес I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1372 msgid "I2CP port" msgstr "Порт I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1303 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1385 msgid "I2CP options" msgstr "Параметры I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1308 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1390 msgid "Save configuration" msgstr "Сохранить настройки" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 +#, java-format +msgid "Invalid magnet URL {0}" +msgstr "Неправильный magnet URL {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1449 +#, java-format +msgid "Invalid info hash in magnet URL {0}" +msgstr "Неправильный info hash в magnet URL {0}" + #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479 #, java-format msgid "1 hop" msgid_plural "{0} hops" @@ -725,7 +797,7 @@ msgstr[0] "{0} хоп" msgstr[1] "{0} хопа" msgstr[2] "{0} хопов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1326 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1480 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" @@ -733,82 +805,100 @@ msgstr[0] "{0} туннель" msgstr[1] "{0} туннеля" msgstr[2] "{0} туннелей" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1642 +msgid "Completion" +msgstr "Загружено" + +#. else unknown +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1646 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1695 msgid "Size" msgstr "Размер" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1487 -msgid "Priority" -msgstr "Приоритет" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1651 +msgid "Files" +msgstr "Файлов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492 -msgid "Up to higher level directory" -msgstr "Перейти в директорию уровнем выше" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1653 +msgid "Pieces" +msgstr "Части" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1654 +msgid "Piece size" +msgstr "Размер части" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1676 +msgid "Magnet link" +msgstr "Magnet ссылка" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1693 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1732 msgid "Directory" msgstr "Директория" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1702 +msgid "Priority" +msgstr "Приоритет" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1707 +msgid "Up to higher level directory" +msgstr "Перейти в директорию уровнем выше" + # This debug error message intentionally left in English -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1737 msgid "Torrent not found?" msgstr "Torrent not found?" # This debug error message intentionally left in English -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1746 msgid "File not found in torrent?" msgstr "File not found in torrent?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 msgid "complete" msgstr "скачано" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1760 msgid "bytes remaining" msgstr "байт осталось" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1811 msgid "High" msgstr "Высокий" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1600 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816 msgid "Normal" msgstr "Нормальный" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1605 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1821 msgid "Skip" msgstr "Пропустить" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1830 msgid "Save priorities" msgstr "Сохранить приоритеты" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 #, java-format msgid "Torrent fetched from {0}" msgstr "Получен торрент из: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1746 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967 #, java-format msgid "Torrent already running: {0}" msgstr "Торрент уже запущен: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1748 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1969 #, java-format msgid "Torrent already in the queue: {0}" msgstr "Торрент уже в очереди: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1755 -#, java-format -msgid "Failed to copy torrent file to {0}" -msgstr "Не удалось скопировать торрент в: {0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1975 #, java-format msgid "Torrent at {0} was not valid" msgstr "Торрент полученный из {0} некорректен" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1764 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1982 #, java-format msgid "Torrent was not retrieved from {0}" msgstr "Не удалось получить торрент из: {0}" @@ -831,9 +921,6 @@ msgstr "Не удалось получить торрент из: {0}" #~ msgid "Downloading" #~ msgstr "Идёт загрузка" -#~ msgid "File" -#~ msgstr "Файл" - #~ msgid "FileSize" #~ msgstr "Размер Файла" From 6c61b39f609f8d515e257dc0c8dfc79968dcbe8d Mon Sep 17 00:00:00 2001 From: hiddenz <hiddenz@mail.i2p> Date: Tue, 15 Feb 2011 17:20:14 +0000 Subject: [PATCH 214/463] desktopgui: add russian translation --- apps/desktopgui/locale/messages_ru.po | 45 +++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 apps/desktopgui/locale/messages_ru.po diff --git a/apps/desktopgui/locale/messages_ru.po b/apps/desktopgui/locale/messages_ru.po new file mode 100644 index 000000000..a5d936a66 --- /dev/null +++ b/apps/desktopgui/locale/messages_ru.po @@ -0,0 +1,45 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the desktopgui package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo <foo@bar>, 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P desktopgui\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-14 18:14+0000\n" +"PO-Revision-Date: 2011-02-15 00:18+0500\n" +"Last-Translator: Hidden Z <hiddenz@mail.i2p>\n" +"Language-Team: duck <duck@mail.i2p>\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:23 +msgid "Start I2P" +msgstr "Запустить I2P" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 +msgid "I2P is starting!" +msgstr "I2P запускается!" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 +#, fuzzy +msgid "Starting" +msgstr "Запускается" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:25 +msgid "Launch I2P Browser" +msgstr "Запустить I2P браузер" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:49 +msgid "Restart I2P" +msgstr "Перезапустить I2P" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:67 +msgid "Stop I2P" +msgstr "Остановить I2P" + From d468a3a8e68ad6b6ed40be37ad196eb54673ceee Mon Sep 17 00:00:00 2001 From: hiddenz <hiddenz@mail.i2p> Date: Tue, 15 Feb 2011 17:28:51 +0000 Subject: [PATCH 215/463] i2psnark: update russian translation --- apps/i2psnark/locale/messages_ru.po | 214 ++++++++++++++-------------- 1 file changed, 108 insertions(+), 106 deletions(-) diff --git a/apps/i2psnark/locale/messages_ru.po b/apps/i2psnark/locale/messages_ru.po index 3bb903032..f1e0f7be2 100644 --- a/apps/i2psnark/locale/messages_ru.po +++ b/apps/i2psnark/locale/messages_ru.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-14 18:14+0000\n" -"PO-Revision-Date: 2011-02-15 22:16+0500\n" +"POT-Creation-Date: 2011-02-15 17:24+0000\n" +"PO-Revision-Date: 2011-02-15 22:27+0500\n" "Last-Translator: Hidden Z <hiddenz@mail.i2p>\n" "Language-Team: foo <foo@bar>\n" "Language: \n" @@ -131,7 +131,7 @@ msgstr "Не удалось открыть \"{0}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:586 #: ../java/src/org/klomp/snark/SnarkManager.java:661 #: ../java/src/org/klomp/snark/SnarkManager.java:716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "Торрент с таким info hash уже запущен: {0}" @@ -154,7 +154,7 @@ msgid "Torrent in \"{0}\" is invalid" msgstr "Торрент в \"{0}\" некорректен" #: ../java/src/org/klomp/snark/SnarkManager.java:624 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1977 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1994 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "ОШИБКА - нехватка памяти, невозможно создать торрент из {0}" @@ -283,7 +283,7 @@ msgstr "Торренты" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1007 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1024 msgid "I2PSnark" msgstr "I2PSnark" @@ -296,7 +296,7 @@ msgid "Forum" msgstr "Форум" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1698 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1715 msgid "Status" msgstr "Статус" @@ -311,8 +311,8 @@ msgid "Show Peers" msgstr "показать список пиров" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1622 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1638 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1639 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1655 msgid "Torrent" msgstr "Торрент" @@ -501,8 +501,8 @@ msgid "Seeding" msgstr "Раздается" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:827 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1644 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1661 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766 msgid "Complete" msgstr "Завершен" @@ -525,271 +525,266 @@ msgstr "Нет Пиров" msgid "Stopped" msgstr "Остановлен" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:864 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:885 msgid "Torrent details" msgstr "Подробная информация" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:865 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1139 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:897 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1156 msgid "Info" msgstr "Информация" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:879 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:912 msgid "View files" msgstr "Открыть директорию" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:881 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:914 msgid "Open file" msgstr "Открыть файл" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:893 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1785 -msgid "Open" -msgstr "Открыть" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956 msgid "Stop the torrent" msgstr "Остановить торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:941 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958 msgid "Stop" msgstr "Остановить" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 msgid "Start the torrent" msgstr "Запустить торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:952 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 msgid "Start" msgstr "Запустить" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:979 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "Удалить торрент из списка и с диска" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:984 #, java-format msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?" msgstr "Вы действительно хотите удалить \\''{0}.torrent\\''? (загруженные файлы удаляться НЕ будут)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 msgid "Remove" msgstr "Удалить" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:980 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:997 msgid "Delete the .torrent file and the associated data file(s)" msgstr "Удалить торрент и стереть загруженные файлы" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1002 #, java-format msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?" msgstr "Вы действительно хотите удалить торрент \\''{0}\\'' и все загруженные файлы?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:988 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1005 msgid "Delete" msgstr "Стереть" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1021 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1038 msgid "Unknown" msgstr "Неизвестный" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1033 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1050 msgid "Seed" msgstr "Сид" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1056 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 msgid "Uninteresting (The peer has no pieces we need)" msgstr "Uninteresting (У пира нет нужных нам частей торрента)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1058 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1075 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "Choked (Этот пир не позволяет нам запрашивать части торрента)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1078 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1095 msgid "Uninterested (We have no pieces the peer needs)" msgstr "Uninterested (У нас нужных этому пиру частей торрента)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1080 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "Choking (Мы не позволяем этому пиру запрашивать у нас части торрента)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155 #, java-format msgid "Details at {0} tracker" msgstr "Детали на трекере {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1167 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1184 msgid "Add Torrent" msgstr "Добавить Торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1169 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1186 msgid "From URL" msgstr "Из URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1172 -msgid "Torrent file must originate from an I2P-based tracker" -msgstr "Торрент-файл должен быть с I2P-трекера" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1189 +msgid "Enter the torrent file download URL (I2P only), magnet link, or maggot link" +msgstr "Введите URL (только I2P) для загрузки торрент-файла, magnet-ссылку, или maggot-ссылку" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1177 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194 msgid "Add torrent" msgstr "Добавить торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1197 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "Либо вы можете просто скопировать .torrent-файлы в директорию {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1182 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1199 msgid "Removing a .torrent will cause it to stop." msgstr "Удаление .torrent-файла приведёт к остановке торрента." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1222 msgid "Create Torrent" msgstr "Создать Торрент" #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1225 msgid "Data to seed" msgstr "Файлы для раздачи" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229 msgid "File or directory to seed (must be within the specified path)" msgstr "Файл или директория для раздачи (вводите только название файла или директории, указание абсолютных путей не поддерживается)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1214 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1680 msgid "Tracker" msgstr "Трекер" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1216 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233 msgid "Select a tracker" msgstr "Выбрать трекер" #. out.write(_("Open trackers and DHT only")); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1221 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1238 msgid "Open trackers only" msgstr "Только открытые трекеры" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1236 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253 msgid "or" msgstr "или" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1239 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1256 msgid "Specify custom tracker announce URL" msgstr "Задать URL анонсера вручную" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1259 msgid "Create torrent" msgstr "Создать торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1399 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1416 msgid "Configuration" msgstr "Настройки" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 msgid "Data directory" msgstr "Директория для файлов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1266 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283 msgid "Edit i2psnark.config and restart to change" msgstr "Для изменения отредактируйте файл i2psnark.config и перезагрузите I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1270 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287 msgid "Auto start" msgstr "Автозапуск" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1274 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 msgid "If checked, automatically start torrents that are added" msgstr "Автоматически запускать торренты после добавления" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1278 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295 msgid "Theme" msgstr "Тема" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1308 msgid "Startup delay" msgstr "Задержка запуска" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1310 msgid "minutes" msgstr "минут" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1334 msgid "Total uploader limit" msgstr "Ограничение количества слотов отдачи" # TODO should replace "uploader limit NN peers" with "global number of upload slots: NN" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1337 msgid "peers" msgstr "пиров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1324 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 msgid "Up bandwidth limit" msgstr "Ограничение скорости отдачи" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 msgid "Half available bandwidth recommended." msgstr "Рекомендуется использовать половину от доступной пропускной способности." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1329 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346 msgid "View or change router bandwidth" msgstr "Посмотреть/настроить ограничения скорости в маршрутизаторе I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 msgid "Use open trackers also" msgstr "Дополнительно использовать открытые трекеры" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1337 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354 msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file" msgstr "Анонсировать торренты на открытых трекерах, дополнительно к тем, что указаны внутри торрента" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 msgid "Open tracker announce URLs" msgstr "URL открытых трекеров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1370 msgid "Inbound Settings" msgstr "Входящие туннели" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1376 msgid "Outbound Settings" msgstr "Исходящие туннели" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1367 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1384 msgid "I2CP host" msgstr "Адрес I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1389 msgid "I2CP port" msgstr "Порт I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1385 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1402 msgid "I2CP options" msgstr "Параметры I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1390 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1407 msgid "Save configuration" msgstr "Сохранить настройки" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 #, java-format msgid "Invalid magnet URL {0}" msgstr "Неправильный magnet URL {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1449 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1466 #, java-format msgid "Invalid info hash in magnet URL {0}" msgstr "Неправильный info hash в magnet URL {0}" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1496 #, java-format msgid "1 hop" msgid_plural "{0} hops" @@ -797,7 +792,7 @@ msgstr[0] "{0} хоп" msgstr[1] "{0} хопа" msgstr[2] "{0} хопов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1497 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" @@ -805,104 +800,111 @@ msgstr[0] "{0} туннель" msgstr[1] "{0} туннеля" msgstr[2] "{0} туннелей" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1642 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659 msgid "Completion" msgstr "Загружено" #. else unknown -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1646 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1695 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712 msgid "Size" msgstr "Размер" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1651 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1668 msgid "Files" msgstr "Файлов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1653 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1670 msgid "Pieces" msgstr "Части" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1654 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671 msgid "Piece size" msgstr "Размер части" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1676 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1693 msgid "Magnet link" msgstr "Magnet ссылка" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1693 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1732 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1710 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 msgid "Directory" msgstr "Директория" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1702 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 msgid "Priority" msgstr "Приоритет" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1707 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1724 msgid "Up to higher level directory" msgstr "Перейти в директорию уровнем выше" # This debug error message intentionally left in English -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1737 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1754 msgid "Torrent not found?" msgstr "Torrent not found?" # This debug error message intentionally left in English -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1746 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 msgid "File not found in torrent?" msgstr "File not found in torrent?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1776 msgid "complete" msgstr "скачано" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1760 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1777 msgid "bytes remaining" msgstr "байт осталось" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1811 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1802 +msgid "Open" +msgstr "Открыть" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1828 msgid "High" msgstr "Высокий" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1833 msgid "Normal" msgstr "Нормальный" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838 msgid "Skip" msgstr "Пропустить" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1830 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1847 msgid "Save priorities" msgstr "Сохранить приоритеты" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 #, java-format msgid "Torrent fetched from {0}" msgstr "Получен торрент из: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1984 #, java-format msgid "Torrent already running: {0}" msgstr "Торрент уже запущен: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1969 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1986 #, java-format msgid "Torrent already in the queue: {0}" msgstr "Торрент уже в очереди: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1975 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1992 #, java-format msgid "Torrent at {0} was not valid" msgstr "Торрент полученный из {0} некорректен" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1982 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 #, java-format msgid "Torrent was not retrieved from {0}" msgstr "Не удалось получить торрент из: {0}" +#~ msgid "Torrent file must originate from an I2P-based tracker" +#~ msgstr "Торрент-файл должен быть с I2P-трекера" + #~ msgid "size: {0}B" #~ msgstr "размер: {0}B" From ecadbba98ece79ca31c386268dcfa80ce6b1d5b1 Mon Sep 17 00:00:00 2001 From: duck <duck@mail.i2p> Date: Tue, 15 Feb 2011 20:36:38 +0000 Subject: [PATCH 216/463] Add russian desktopgui to Transifex config --- .tx/config | 1 + 1 file changed, 1 insertion(+) diff --git a/.tx/config b/.tx/config index b8009fb43..e0c7bde27 100644 --- a/.tx/config +++ b/.tx/config @@ -39,6 +39,7 @@ trans.zh_CN = apps/i2psnark/locale/messages_zh.po source_file = apps/desktopgui/locale/messages_en.po source_lang = en trans.nl = apps/desktopgui/locale/messages_nl.po +trans.ru = apps/desktopgui/locale/messages_ru.po trans.zh_CN = apps/desktopgui/locale/messages_zh.po [main] From 8a71ab4447ba12412fc6c7ea2e65846826781fa7 Mon Sep 17 00:00:00 2001 From: hamada <hamada@mail.i2p> Date: Wed, 16 Feb 2011 19:11:48 +0000 Subject: [PATCH 217/463] Added Arabic l10n for router console --- apps/routerconsole/locale/messages_ar.po | 5287 ++++++++++++++++++++++ 1 file changed, 5287 insertions(+) create mode 100644 apps/routerconsole/locale/messages_ar.po diff --git a/apps/routerconsole/locale/messages_ar.po b/apps/routerconsole/locale/messages_ar.po new file mode 100644 index 000000000..663b8b734 --- /dev/null +++ b/apps/routerconsole/locale/messages_ar.po @@ -0,0 +1,5287 @@ +# 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 <foo@bar>, 2009. +# Ahmed Mansour <atphalix@inbox.com>, 2011. +# hamada <hamada@mail.i2p>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: I2P routerconsole\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-11-19 18:16+0000\n" +"PO-Revision-Date: 2011-02-15 12:45+0000\n" +"Last-Translator: hamada <hamada@mail.i2p>\n" +"Language-Team: hamada@mail.i2p\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" +"X-Generator: Virtaal 0.6.1\n" + +#. NOTE TO TRANSLATORS: Feel free to translate all these as you see fit, there are several options... +#. spaces or not, '.' or not, plural or not. Try not to make it too long, it is used in +#. a lot of tables. +#. milliseconds +#. Note to translators, may be negative or zero, 2999 maximum. +#. {0,number,####} prevents 1234 from being output as 1,234 in the English locale. +#. If you want the digit separator in your locale, translate as {0}. +#. alternates: msec, msecs +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1086 +#, java-format +msgid "1 ms" +msgid_plural "{0,number,####} ms" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#. seconds +#. Note to translators: quantity will always be greater than one. +#. alternates: secs, sec. 'seconds' is probably too long. +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1091 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:349 +#, java-format +msgid "1 sec" +msgid_plural "{0} sec" +msgstr[0] "" +msgstr[1] "" + +#. minutes +#. Note to translators: quantity will always be greater than one. +#. alternates: mins, min. 'minutes' is probably too long. +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1096 +#, java-format +msgid "1 min" +msgid_plural "{0} min" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#. hours +#. Note to translators: quantity will always be greater than one. +#. alternates: hrs, hr., hrs. +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1101 +#, java-format +msgid "1 hour" +msgid_plural "{0} hours" +msgstr[0] "1 ساعة" +msgstr[1] "{0} ساعات" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1103 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313 +msgid "n/a" +msgstr "" + +#. days +#. Note to translators: quantity will always be greater than one. +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1107 +#, java-format +msgid "1 day" +msgid_plural "{0} days" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:126 +#, java-format +msgid "Banned by router hash: {0}" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:128 +#, fuzzy +msgid "Banned by router hash" +msgstr "Pairs interdits" + +#. 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 "" + +#: ../../../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 +#, fuzzy +msgid "Accepting most tunnels" +msgstr "tunnels participants" + +#: ../../../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:488 +msgid "Rejecting tunnels" +msgstr "رفض الأنفاق" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:50 +msgid "Ensure that nothing blocks outbound HTTP, check <a target=\"_top\" href=\"logs.jsp\">logs</a> and if nothing helps, read the <a target=\"_top\" href=\"http://www.i2p2.de/faq.html\">FAQ</a> about reseeding manually." +msgstr "" +"تحقق من <a target=\"_top\" href=\"logs.jsp\">logs</a> and if nothing helps، read " +"the <a target=\"_top\" href=\"http://www.i2p2.de/faq.html\">FAQ</a> about " +"reseeding manually." + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:82 +#, fuzzy +msgid "Reseeding" +msgstr "جاري الاتصال" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:146 +msgid "Reseeding: fetching seed URL." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:152 +msgid "Last reseed failed fully (failed reading seed URL)." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:178 +msgid "Last reseed failed fully (no routerInfo URLs at seed URL)." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:191 +#, java-format +msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212 +#, java-format +msgid "Last reseed failed partly ({0}% of {1})." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:217 +#, java-format +msgid "Last reseed failed ({0}% of {1})." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:227 +msgid "Last reseed failed fully (exception caught)." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:510 +msgid "NetDb entry" +msgstr "" + +#. 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:451 +msgid "Unreachable on any transport" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:500 +msgid "Router Transport Addresses" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:505 +#, java-format +msgid "{0} is used for outbound connections only" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 +msgid "Definitions" +msgstr "Définitions" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:520 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:715 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1888 +#: ../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 "Pair" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:520 +msgid "The remote peer, identified by router hash" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:716 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1892 +msgid "Dir" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:522 +#, fuzzy +msgid "Inbound connection" +msgstr "اتصال داخلي" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 +#, fuzzy +msgid "Outbound connection" +msgstr "اتصال خارجي" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 +msgid "They offered to introduce us (help other peers traverse our firewall)" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 +msgid "We offered to introduce them (help other peers traverse their firewall)" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 +msgid "How long since a packet has been received / sent" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:717 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1893 +msgid "Idle" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:718 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1898 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 +msgid "In/Out" +msgstr "داخل/خارج" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 +msgid "The smoothed inbound / outbound transfer rate (KBytes per second)" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531 +msgid "How long ago this connection was established" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:719 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1903 +msgid "Up" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:720 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905 +msgid "Skew" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 +msgid "The difference between the peer's clock and your own" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 +msgid "The congestion window, which is how many bytes can be sent without an acknowledgement" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 +msgid "The number of sent messages awaiting acknowledgement" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +msgid "The maximum number of concurrent messages to send" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +msgid "The number of pending sends which exceed congestion window" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +msgid "The slow start threshold" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +msgid "The round trip time in milliseconds" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1915 +msgid "Dev" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 +msgid "The standard deviation of the round trip time in milliseconds" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 +msgid "The retransmit timeout in milliseconds" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 +msgid "Current maximum send packet size / estimated maximum receive packet size (bytes)" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:721 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1922 +msgid "TX" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 +msgid "The total number of packets sent to the peer" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:722 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 +msgid "RX" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +msgid "The total number of packets received from the peer" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927 +msgid "Dup TX" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 +msgid "The total number of packets retransmitted to the peer" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1929 +msgid "Dup RX" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +msgid "The total number of duplicate packets received from the peer" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:409 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:627 +#, java-format +msgid "Excessive clock skew: {0}" +msgstr "" + +#: ../../../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:1884 +msgid "Limit" +msgstr "حد" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:712 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1885 +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 +#, fuzzy +msgid "Backlogged?" +msgstr "Retard accumulé" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1947 +#: ../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:1949 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +msgid "Outbound" +msgstr "الخارج" + +#. buf.append("<tr> <td colspan=\"11\"><hr></td></tr>\n"); +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:787 +#, fuzzy +msgid "peers" +msgstr "نظير" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1883 +#, fuzzy +msgid "UDP connections" +msgstr "اتصال UDP" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890 +msgid "Sort by peer hash" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1892 +msgid "Direction/Introduction" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 +msgid "Sort by idle inbound" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1896 +msgid "Sort by idle outbound" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1899 +msgid "Sort by inbound rate" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1901 +msgid "Sort by outbound rate" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1904 +msgid "Sort by connection uptime" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1906 +msgid "Sort by clock skew" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1909 +msgid "Sort by congestion window" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1911 +msgid "Sort by slow start threshold" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1914 +msgid "Sort by round trip time" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1916 +msgid "Sort by round trip time deviation" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918 +msgid "Sort by retransmission timeout" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1921 +msgid "Sort by outbound maximum transmit unit" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1923 +msgid "Sort by packets sent" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1925 +msgid "Sort by packets received" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1928 +msgid "Sort by packets retransmitted" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1930 +msgid "Sort by packets received more than once" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1951 +msgid "We offered to introduce them" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1953 +msgid "They offered to introduce us" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1957 +msgid "Choked" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1965 +msgid "1 fail" +msgstr "فشل واحد" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1967 +#, java-format +msgid "{0} fails" +msgstr "{0} فشل" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1973 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:162 +msgid "Banned" +msgstr "ممنوع" + +#. buf.append("<tr><td colspan=\"16\"><hr></td></tr>\n"); +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2105 +msgid "SUMMARY" +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:525 +msgid "Rejecting tunnels: Request overload" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:550 +msgid "Rejecting tunnels: Connection limit" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:744 +msgid "Dropping tunnel requests: High load" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:753 +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:35 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:37 +#: ../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 "حذف الملحق" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:84 +#, java-format +msgid "Error deleting plugin {0}" +msgstr "خطأ في حذف الملحق" + +#: ../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 "Non supportée" + +#: ../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 "" +"La configuration du client a été sauvegardé avec succès - redémarrer pour " +"prendre effet. " + +#: ../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:392 +#: ../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 +#, fuzzy +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 "لم يحدد عنوان الملحق." + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:289 +#, java-format +msgid "No update URL specified for {0}" +msgstr "" + +#: ../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:118 +#, java-format +msgid "Downloading plugin from {0}" +msgstr "تحميل الملحق من {0}" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:324 +#, fuzzy, java-format +msgid "Checking plugin {0} for updates" +msgstr "بحث عن اصدارات جديدة للملحق" + +#: ../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:271 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:181 +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 +#, fuzzy +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:81 +#: ../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:231 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:238 +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 +#, fuzzy +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 "Vous devez saisir une destination" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:23 +msgid "You must enter a key" +msgstr "Vous devez saisir une clé" + +#: ../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 "Destination ou clé pas valable" + +#: ../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/ConfigLoggingHandler.java:82 +msgid "Log overrides updated" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHandler.java:160 +#, fuzzy +msgid "Log configuration saved" +msgstr "Aide avec la configuration" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 +msgid "Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:49 +msgid "Or put entries in the logger.config file. Example: logger.record.net.i2p.router.tunnel=WARN" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:50 +msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +msgid "CRIT" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +msgid "DEBUG" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +msgid "ERROR" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +msgid "INFO" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +msgid "WARN" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:88 +#, fuzzy +msgid "Remove" +msgstr "حذف" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:125 +msgid "Select a class to add" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:200 +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:101 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381 +#: ../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:107 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256 +#: ../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:387 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:143 +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:339 +#: ../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 "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:175 +msgid "Updating inbound TCP address to" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:179 +msgid "Disabling inbound TCP" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:181 +msgid "Updating inbound TCP address to auto" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:190 +msgid "Updating inbound TCP port to" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:193 +msgid "Updating inbound TCP port to auto" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:205 +msgid "Updating UDP port from" +msgstr "" + +#: ../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 "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:234 +msgid "Disabling UPnP, restart required to take effect" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:242 +msgid "Enabling laptop mode" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:244 +msgid "Disabling laptop mode" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:250 +msgid "Requiring SSU introducers" +msgstr "" + +#. 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 "Mise à jour du pourcentage de bande passante partagée" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:397 +msgid "Updated bandwidth limits" +msgstr "Limitations mises à jour de la bande passante " + +#: ../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 "" + +#: ../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 "" + +#: ../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 "Pair pas valable" + +#: ../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 +#, fuzzy +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 "Redémarrage gracieux demandé" + +#: ../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 "Dump fils d'exécution" + +#: ../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 "أظهر شاشة التحكم عند البداية" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:117 +msgid "Console is to be shown on startup" +msgstr "سبتم إظهار شاشة التحكم عند البداية" + +#: ../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 "لا تظهر شاشة التحكم عند البداية" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:120 +msgid "Console is not to be shown on startup" +msgstr "لن يتم إظهار شاشة التحكم عند البداية" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:129 +msgid "Service installed" +msgstr "Service installé" + +#: ../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 <a href=\"graphs.jsp\">Graphs Page</a>" +msgstr "" + +#. 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] "1 saut" +msgstr[1] "{0} sauts" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:15 +#, java-format +msgid "1 tunnel" +msgid_plural "{0} tunnels" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: ../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 "Tunnels clients pour" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:69 +msgid "ANONYMITY WARNING - Settings include 0-hop tunnels." +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74 +msgid "ANONYMITY WARNING - Settings include 1-hop tunnels." +msgstr "" + +#: ../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("<tr><th></th><th>Inbound</th><th>Outbound</th></tr>\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 "'Backup' quantité" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:167 +msgid "Inbound options" +msgstr "Options Entrants" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:180 +msgid "Outbound options" +msgstr "Options Sortants" + +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:31 +msgid "Theme change saved." +msgstr "Changement de thème sauvegardé." + +#: ../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 "انجليزية" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +msgid "French" +msgstr "فرنسية" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +msgid "German" +msgstr "الألمانية" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +msgid "Spanish" +msgstr "اسبانية" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +msgid "Chinese" +msgstr "الصينية" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +msgid "Dutch" +msgstr "الهولندية" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +msgid "Russian" +msgstr "الروسية" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +msgid "Swedish" +msgstr "السويدية" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:88 +msgid "Update available, attempting to download now" +msgstr "Mise à jour disponible, en tentant de la télécharger actuellement" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:90 +msgid "Update available, click button on left to download" +msgstr "Mise à jour disponible, cliquez sur le bouton sur la gauche pour la télécharger" + +#: ../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 "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:112 +msgid "Updating proxy host to" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:120 +msgid "Updating proxy port to" +msgstr "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "Notifier seulement" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:115 +msgid "Download and verify only" +msgstr "Télécharger et vérifier seulement" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:123 +msgid "Download, verify, and restart" +msgstr "حمل، تحقق و أعد تشغيل" + +#: ../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 "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:130 +msgid "Configure Graph Display" +msgstr "Graphe affichage configuration" + +#: ../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 "Périodes" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:133 +msgid "Plot averages" +msgstr "Tracer les moyennes" + +#: ../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 "tracer les événements" + +#: ../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/LogsHelper.java:34 +msgid "File not found" +msgstr "ملف غير موجود" + +#: ../java/src/net/i2p/router/web/LogsHelper.java:52 +msgid "No log messages" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:80 +msgid "Network Database RouterInfo Lookup" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:95 +#: ../java/strings/Strings.java:68 +msgid "Router" +msgstr "موجه" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:95 +msgid "not found in network database" +msgstr "غير موجود في قاعدة الشبكة" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:107 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:215 +msgid "Network Database Contents" +msgstr "محتويات قاعدة الشبكة" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:108 +msgid "View RouterInfo" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:109 +#, fuzzy +msgid "LeaseSets" +msgstr "Bail" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:131 +msgid "LeaseSet" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:133 +msgid "Local" +msgstr "محلي" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:135 +msgid "Unpublished" +msgstr "غير منشور" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:136 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143 +msgid "Destination" +msgstr "الغاية" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:153 +#, java-format +msgid "Expires in {0}" +msgstr "Expirera en {0}" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:155 +#, java-format +msgid "Expired {0} ago" +msgstr "Périmé il y a {0}" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:167 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 +msgid "Gateway" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:167 +msgid "Lease" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:169 +msgid "Tunnel" +msgstr "نفق" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:215 +msgid "View LeaseSets" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217 +msgid "Not initialized" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:226 +msgid "Routers" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:228 +msgid "Show all routers" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:230 +msgid "Show all routers with full stats" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:265 +#, fuzzy +msgid "Network Database Router Statistics" +msgstr "احصائيات قاعدة البيانات I2P" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 +msgid "Count" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 +msgid "Transports" +msgstr "نقل" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 +msgid "Country" +msgstr "البلد" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:342 +msgid "Our info" +msgstr "المعلومات" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:344 +msgid "Peer info for" +msgstr "Mise à jour en cours" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:348 +msgid "Full entry" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 +#: ../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:354 +msgid "Updated" +msgstr "Mise à jour fini" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:355 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:358 +#, fuzzy, java-format +msgid "{0} ago" +msgstr "Périmé il y a {0}" + +#. shouldnt happen +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:357 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:361 +msgid "Published" +msgstr "Publié il y a" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:363 +msgid "Address(es)" +msgstr "عناوين" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:376 +msgid "cost" +msgstr "ثمن" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +msgid "Hidden or starting up" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +msgid "SSU" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +msgid "SSU with introducers" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +msgid "NTCP" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +msgid "NTCP and SSU" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +msgid "NTCP and SSU with introducers" +msgstr "" + +#: ../java/src/net/i2p/router/web/NewsFetcher.java:82 +#, java-format +msgid "News last updated {0} ago." +msgstr "Actualités mises à jour il y a {0}" + +#: ../java/src/net/i2p/router/web/NewsFetcher.java:88 +#, java-format +msgid "News last checked {0} ago." +msgstr "Actualités vérifiés il y a {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 +#, fuzzy, 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:139 +msgid "Downloading plugin" +msgstr "تحميل ملحق" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:146 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:185 +#, java-format +msgid "{0}B transferred" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:152 +msgid "Plugin downloaded" +msgstr "تم تحميل الملحق" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:157 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:344 +#, java-format +msgid "Cannot create plugin directory {0}" +msgstr "فشل في انشاء مجلد الملحق {0}" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:166 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:226 +#, java-format +msgid "from {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:176 +#, java-format +msgid "Plugin from {0} is corrupt" +msgstr "الملحق من {0} غير كامل" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:187 +#, java-format +msgid "Plugin from {0} does not contain the required configuration file" +msgstr "الملحق {0} لا يحتوي على ملف الإعدادات" + +#. updateStatus("<b>" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + "</b>"); +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:200 +#, java-format +msgid "Plugin from {0} contains an invalid key" +msgstr "الملحق من {0} يحتوي على مفتاح غير صالح" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:219 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:228 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:237 +#, java-format +msgid "Plugin signature verification of {0} failed" +msgstr "فشل في التحقق من امضاء {0} الملحق" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:252 +#, java-format +msgid "Plugin from {0} has invalid name or version" +msgstr "الملحق {0} له اصدار او اسم غير مقبول" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:257 +#, java-format +msgid "Plugin {0} has mismatched versions" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:265 +#, java-format +msgid "This plugin requires I2P version {0} or higher" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:273 +#, java-format +msgid "This plugin requires Java version {0} or higher" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:281 +msgid "Downloaded plugin is for new installs only, but the plugin is already installed" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 +msgid "Installed plugin does not contain the required configuration file" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:301 +msgid "Signature of downloaded plugin does not match installed plugin" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:308 +#, java-format +msgid "Downloaded plugin version {0} is not newer than installed plugin" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:315 +#, java-format +msgid "Plugin update requires installed plugin version {0} or higher" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:322 +#, java-format +msgid "Plugin update requires installed plugin version {0} or lower" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:339 +msgid "Plugin is for upgrades only, but the plugin is not installed" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:352 +#, java-format +msgid "Failed to install plugin in {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:359 +#, java-format +msgid "Plugin {0} installed, router restart required" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:361 +#, java-format +msgid "Plugin {0} installed" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:370 +#, java-format +msgid "Plugin {0} installed and started" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:372 +#, java-format +msgid "Plugin {0} installed but failed to start, check logs" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:374 +#, java-format +msgid "Plugin {0} installed but failed to start" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:384 +#, java-format +msgid "Failed to download plugin from {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:72 +msgid "Peer Profiles" +msgstr "Profils des pairs" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:73 +#, java-format +msgid "Showing {0} recent profiles." +msgstr "Montrant {0} profiles récents" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:75 +#, java-format +msgid "Hiding {0} older profiles." +msgstr "Cachant {0} profiles anciens" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:77 +#, fuzzy, java-format +msgid "Hiding {0} standard profiles." +msgstr "Cachant {0} profiles anciens" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:82 +msgid "Groups (Caps)" +msgstr "" + +#: ../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 "Défaillant" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:282 +msgid "Integrated" +msgstr "Intégré" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:164 +msgid "Unreachable" +msgstr "Inaccessible" + +#. 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 +#, fuzzy +msgid "profile" +msgstr "Profiles" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:184 +msgid "Floodfill and Integrated Peers" +msgstr "Floodfill et pairs intégrés" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:188 +#, fuzzy +msgid "Caps" +msgstr "graphes" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:189 +#, fuzzy +msgid "Integ. Value" +msgstr "Intégré" + +#: ../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 "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195 +msgid "1h Resp. Time" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196 +msgid "1d Resp. Time" +msgstr "" + +#: ../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 "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 +msgid "1d Fail Rate" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:250 +#, fuzzy +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 "" + +#: ../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 "" + +#. capabilities +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 +#: ../java/strings/Strings.java:81 +msgid "caps" +msgstr "" + +#: ../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 "" + +#: ../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/ShitlistRenderer.java:57 +#, java-format +msgid "Temporary ban expiring in {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:59 +#, fuzzy, java-format +msgid "Banned until restart or in {0}" +msgstr "interdit jusqu'au rédémarrage" + +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:71 +#, fuzzy +msgid "unban now" +msgstr "plus interdit" + +#. 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 +#, fuzzy +msgid "Bandwidth usage" +msgstr "Bande passante entrante/sortante" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:181 +#, fuzzy +msgid "Outbound bytes/sec" +msgstr "Options Sortants" + +#. def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3); +#: ../java/src/net/i2p/router/web/StatSummarizer.java:183 +#, fuzzy +msgid "Inbound bytes/sec" +msgstr "Options Entrants" + +#: ../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 +#, fuzzy +msgid "out average" +msgstr "Tracer les moyennes" + +#: ../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:115 +msgid "max" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:188 +#, fuzzy +msgid "in average" +msgstr "Tracer les moyennes" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:57 +msgid "GO" +msgstr "اذهب" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:60 +msgid "Statistics gathered during this router's uptime" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:63 +msgid "The data gathered is quantized over a 1 minute period, so should just be used as an estimate." +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:64 +msgid "These statistics are primarily used for development and debugging." +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:105 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:156 +#, fuzzy +msgid "No lifetime events" +msgstr "tracer les événements" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:116 +#, fuzzy +msgid "frequency" +msgstr "Fréquence d'actualisation" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:120 +msgid "Rolling average events per period" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:124 +msgid "Highest events per period" +msgstr "" + +#. if (showAll && (curFreq.getMaxAverageEventsPerPeriod() > 0) && (curFreq.getAverageEventsPerPeriod() > 0) ) { +#. buf.append("(current is "); +#. buf.append(pct(curFreq.getAverageEventsPerPeriod()/curFreq.getMaxAverageEventsPerPeriod())); +#. buf.append(" of max)"); +#. } +#. buf.append(" <i>avg interval between updates:</i> (").append(num(curFreq.getAverageInterval())).append("ms, min "); +#. buf.append(num(curFreq.getMinAverageInterval())).append("ms)"); +#: ../java/src/net/i2p/router/web/StatsGenerator.java:135 +msgid "Lifetime average events per period" +msgstr "" + +#. Display the strict average +#: ../java/src/net/i2p/router/web/StatsGenerator.java:140 +#, fuzzy +msgid "Lifetime average frequency" +msgstr "Fréquence d'actualisation" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:168 +#, fuzzy +msgid "rate" +msgstr "Taux" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:170 +msgid "Average" +msgstr "متوسط" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:173 +msgid "Highest average" +msgstr "أعلى متوسط" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:202 +#, java-format +msgid "in this period which ended {0} ago." +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:204 +#, fuzzy +msgid "No events" +msgstr "tracer les événements" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:210 +msgid "Average event count" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:212 +msgid "Events in peak period" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:220 +msgid "Graph Data" +msgstr "رسم بياني" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:222 +msgid "Graph Event Count" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:225 +msgid "Export Data as XML" +msgstr "تصدير البيانات XML" + +#. Display the strict average +#: ../java/src/net/i2p/router/web/StatsGenerator.java:230 +msgid "Lifetime average value" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:41 +#, fuzzy +msgid "I2P Router Help & FAQ" +msgstr "مساعدة حول I2P" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:43 +msgid "Help & FAQ" +msgstr "مساعدة" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:55 +msgid "Configure startup of clients and webapps (services); manually start dormant services" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:57 +msgid "I2P Services" +msgstr "خدمات I2P" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:63 +msgid "Manage your I2P hosts file here (I2P domain name resolution)" +msgstr "Gérer votre fichier 'I2P hosts' ici (I2P DNS)" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:65 +msgid "Addressbook" +msgstr "دفتر العناوين" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:69 +msgid "Built-in anonymous BitTorrent Client" +msgstr "Client bittorrent anonyme" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:71 +msgid "Torrents" +msgstr "تورنت" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:75 +msgid "Anonymous webmail client" +msgstr "بريد الكتروني مجهول" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:77 +msgid "Webmail" +msgstr "بريد الكتروني" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:81 +msgid "Anonymous resident webserver" +msgstr "Serveur web anonyme" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:83 +msgid "Webserver" +msgstr "سيرفر ويب" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:91 +msgid "Configure I2P Router" +msgstr "I2P اعدادات موجه" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:93 +msgid "I2P Internals" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:99 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:379 +msgid "View existing tunnels and tunnel build status" +msgstr "Montrer les tunnels existants et le statut de création des tunnels" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:105 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254 +msgid "Show all current peer connections" +msgstr "Montrer toutes les connexions actuelles aux pairs" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:111 +msgid "Show recent peer performance profiles" +msgstr "Montrer les profils de la performance récente des pairs" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:113 +msgid "Profiles" +msgstr "Profiles" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:117 +msgid "Show list of all known I2P routers" +msgstr "Montrer une liste de touts le routeurs I2P connus" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:119 +msgid "NetDB" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123 +msgid "Health Report" +msgstr "Fichier traces du routeur" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:125 +msgid "Logs" +msgstr "Fichier traces" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:135 +msgid "Graph router performance" +msgstr "Montrer la performance du routeur avec des graphes" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:137 +msgid "Graphs" +msgstr "رسم بياني" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141 +msgid "Textual router performance statistics" +msgstr "La performance statistique du routeur en texte" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:365 +msgid "Local Destinations" +msgstr "Destinations locales" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:149 +#: ../java/strings/Strings.java:62 +#, fuzzy +msgid "I2PTunnel" +msgstr "فهرس الأنفاق I2P" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:160 +msgid "I2P Router Help" +msgstr "مساعدة روتر I2P" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:162 +msgid "General" +msgstr "Général" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:167 +msgid "Local Identity" +msgstr "Identité locale" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171 +msgid "Your unique I2P router identity is" +msgstr "L'identité unique de votre routeur est" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:175 +msgid "never reveal it to anyone" +msgstr "لاتظهر لأحد" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177 +msgid "show" +msgstr "أظهر" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:188 +msgid "How long we've been running for this session" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191 +msgid "Uptime" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198 +msgid "Help with configuring your firewall and router for optimal I2P performance" +msgstr "Aide avec la configuration du pare-feu et du routeur afin d'optimiser la performance d'I2P" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227 +msgid "Download" +msgstr "تحميل" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:236 +msgid "Download Unsigned" +msgstr "Télécharger pas signé" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:262 +msgid "Active" +msgstr "مفعل" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270 +msgid "Fast" +msgstr "سريع" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:276 +msgid "High capacity" +msgstr "Haute capacité" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288 +msgid "Known" +msgstr "معروف" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:303 +msgid "Help with firewall configuration" +msgstr "Aide avec la configuration du pare-feu" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:305 +msgid "Check NAT/firewall" +msgstr "Vérifier NAT/pare-feu" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:325 +msgid "Reseed" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:342 +msgid "Configure router bandwidth allocation" +msgstr "Configurer la bande passante du routeur" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:344 +msgid "Bandwidth in/out" +msgstr "Bande passante entrante/sortante" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:364 +msgid "Total" +msgstr "مجموع" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:371 +msgid "Used" +msgstr "مستعمل" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 +msgid "Exploratory" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:398 +msgid "Participating" +msgstr "مشارك" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:404 +msgid "Share ratio" +msgstr "نسبة المشاركة" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:410 +msgid "What's in the router's job queue?" +msgstr "Montrer les tâches du routeur qui sont à traiter " + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412 +msgid "Congestion" +msgstr "Saturation réseau" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 +msgid "Job lag" +msgstr "Tâche décalage" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:423 +msgid "Message delay" +msgstr "Message retard" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:429 +msgid "Tunnel lag" +msgstr "Tunnel décalage" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435 +msgid "Backlog" +msgstr "Retard accumulé" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:101 +msgid "ERR-Client Manager I2CP Error - check logs" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:108 +#, fuzzy, java-format +msgid "ERR-Clock Skew of {0}" +msgstr "ERR - horloge décalé" + +#: ../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 "موافق" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:118 +msgid "ERR-Private TCP Address" +msgstr "ERR - Adresse TCP privée" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:120 +msgid "ERR-SymmetricNAT" +msgstr "ERR - NAT symétrique" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:123 +msgid "WARN-Firewalled with Inbound TCP Enabled" +msgstr "WARN - pare-feu avec TCP entrant activé" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:125 +msgid "WARN-Firewalled and Floodfill" +msgstr "WARN - Pare-feu et Floodfill" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:127 +msgid "WARN-Firewalled and Fast" +msgstr "WARN - Pare-feu et Rapide" + +#: ../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 "" + +#: ../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 "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:141 +msgid "WARN-Firewalled with UDP Disabled" +msgstr "WARN - Pare-feu avec UDP desactivé" + +#: ../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 "Test en cours" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:365 +msgid "Add/remove/edit & control your client and server tunnels" +msgstr "Ajouter/enlever/éditer & contrôler vos tunnels client et serveur" + +#: ../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 "Bails périmés" + +#. 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 "clients partagés" + +#. Note to translators: all runtime zh translation disabled in this file, no font available in RRD +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:89 +#, fuzzy, java-format +msgid "events in {0}" +msgstr "Redémarrage en {0}" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:91 +#, java-format +msgid "averaged for {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:101 +#, fuzzy +msgid "Events per period" +msgstr "bits par seconde" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:114 +#, fuzzy +msgid "avg" +msgstr ":" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:116 +#, fuzzy +msgid "now" +msgstr "Connu" + +#: ../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 +#, fuzzy +msgid "configure" +msgstr "configuration" + +#: ../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 "Réception active" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 +msgid "Expiration" +msgstr "Expiration" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 +msgid "Send on" +msgstr "Envoyer activé" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 +msgid "To" +msgstr "إلى" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:74 +msgid "Rate" +msgstr "Taux" + +#: ../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 +#, fuzzy +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:178 +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:189 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:214 +msgid "Update downloaded" +msgstr "طريقة الترقية" + +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:91 +#, java-format +msgid "Unsigned update file from {0} is corrupt" +msgstr "" + +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:111 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:209 +msgid "Restarting" +msgstr "أعد التشغيل" + +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:118 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:216 +msgid "Click Restart to install" +msgstr "أنقر اعادة التشغبل للتثبيت" + +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:120 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:218 +msgid "Click Shutdown and restart to install" +msgstr "انقر زر التوقف وأعد التشغيل للتثبيت" + +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:121 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:220 +#, java-format +msgid "Version {0}" +msgstr "الإصدار" + +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:126 +#, java-format +msgid "Failed copy to {0}" +msgstr "فشل في النقل الى" + +#: ../java/src/net/i2p/router/web/UpdateHandler.java:209 +msgid "Update verified" +msgstr "انتهى التحديث" + +#: ../java/src/net/i2p/router/web/UpdateHandler.java:234 +msgid "Transfer failed" +msgstr "فشل في النقل" + +#. wars for ConfigClientsHelper +#: ../java/strings/Strings.java:12 +msgid "addressbook" +msgstr "دفتر العناوين" + +#: ../java/strings/Strings.java:13 +msgid "i2psnark" +msgstr "" + +#: ../java/strings/Strings.java:14 +msgid "i2ptunnel" +msgstr "" + +#: ../java/strings/Strings.java:15 +msgid "susimail" +msgstr "" + +#: ../java/strings/Strings.java:16 +msgid "susidns" +msgstr "" + +#: ../java/strings/Strings.java:17 +msgid "routerconsole" +msgstr "" + +#. 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 "" + +#: ../java/strings/Strings.java:24 +msgid "Application tunnels" +msgstr "نفق البرامج" + +#: ../java/strings/Strings.java:25 +msgid "My eepsite web server" +msgstr "" + +#: ../java/strings/Strings.java:26 +msgid "I2P webserver (eepsite)" +msgstr "" + +#: ../java/strings/Strings.java:27 +msgid "Browser launch at startup" +msgstr "اطلاق المتصفح عند البداية" + +#: ../java/strings/Strings.java:28 +msgid "BOB application bridge" +msgstr "" + +#: ../java/strings/Strings.java:30 +msgid "Open Router Console in web browser at startup" +msgstr "" + +#: ../java/strings/Strings.java:37 +msgid "IRC proxy" +msgstr "" + +#: ../java/strings/Strings.java:38 +msgid "eepsite" +msgstr "" + +#: ../java/strings/Strings.java:39 +msgid "I2P webserver" +msgstr "" + +#: ../java/strings/Strings.java:40 +msgid "HTTP Proxy" +msgstr "" + +#. older names for pre-0.7.4 installs +#: ../java/strings/Strings.java:42 +#, fuzzy +msgid "eepProxy" +msgstr "" + +#: ../java/strings/Strings.java:43 +msgid "ircProxy" +msgstr "" + +#. hardcoded in i2psnark +#: ../java/strings/Strings.java:45 +msgid "I2PSnark" +msgstr "" + +#. hardcoded in iMule? +#: ../java/strings/Strings.java:47 +msgid "iMule" +msgstr "" + +#. 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 +#, fuzzy +msgid "Bandwidth" +msgstr "" + +#: ../java/strings/Strings.java:58 +#, fuzzy +msgid "BandwidthLimiter" +msgstr "" + +#: ../java/strings/Strings.java:59 +#, fuzzy +msgid "ClientMessages" +msgstr "" + +#: ../java/strings/Strings.java:60 +#, fuzzy +msgid "Encryption" +msgstr "التشفير" + +#: ../java/strings/Strings.java:61 +msgid "i2cp" +msgstr "" + +#: ../java/strings/Strings.java:63 +msgid "InNetPool" +msgstr "" + +#: ../java/strings/Strings.java:64 +#, fuzzy +msgid "JobQueue" +msgstr "" + +#: ../java/strings/Strings.java:65 +msgid "NetworkDatabase" +msgstr "شبكة" + +#: ../java/strings/Strings.java:66 +msgid "ntcp" +msgstr "" + +#: ../java/strings/Strings.java:69 +msgid "Stream" +msgstr "" + +#: ../java/strings/Strings.java:70 +msgid "Throttle" +msgstr "" + +#: ../java/strings/Strings.java:71 +msgid "Transport" +msgstr "نقل" + +#: ../java/strings/Strings.java:73 +msgid "udp" +msgstr "" + +#. parameters in transport addresses (netdb.jsp) +#. may or may not be worth translating +#: ../java/strings/Strings.java:77 +msgid "host" +msgstr "" + +#: ../java/strings/Strings.java:78 +msgid "key" +msgstr "مفتاح" + +#: ../java/strings/Strings.java:79 +#, fuzzy +msgid "port" +msgstr "منفذ" + +#. introducer host +#: ../java/strings/Strings.java:83 +msgid "ihost0" +msgstr "" + +#: ../java/strings/Strings.java:84 +msgid "ihost1" +msgstr "" + +#: ../java/strings/Strings.java:85 +msgid "ihost2" +msgstr "" + +#. introducer port +#: ../java/strings/Strings.java:87 +msgid "iport0" +msgstr "" + +#: ../java/strings/Strings.java:88 +msgid "iport1" +msgstr "" + +#: ../java/strings/Strings.java:89 +msgid "iport2" +msgstr "" + +#. introducer key +#: ../java/strings/Strings.java:91 +msgid "ikey0" +msgstr "" + +#: ../java/strings/Strings.java:92 +msgid "ikey1" +msgstr "" + +#: ../java/strings/Strings.java:93 +msgid "ikey2" +msgstr "" + +#. introducer tag +#: ../java/strings/Strings.java:95 +msgid "itag0" +msgstr "" + +#: ../java/strings/Strings.java:96 +msgid "itag1" +msgstr "" + +#: ../java/strings/Strings.java:97 +msgid "itag2" +msgstr "" + +#. 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 "Interconnexion configuration" + +#. 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_005fnl_jsp.java:220 +#: ../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 "Actualiser (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_005fnl_jsp.java:224 +#: ../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 "Limiteur de bande passante" + +#: ../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 fonctionnera mieux si vous configurez le débit de transmission et réception pour qu'ils soient égales à ceux de votre connexion internet." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:303 +msgid "KBps In" +msgstr "KOps entrant" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:317 +msgid "KBps Out" +msgstr "KOps sortant" + +#: ../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 "Vous avez configuré I2P à partager que {0} KOps." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:345 +msgid "I2P requires at least 12KBps to enable sharing. " +msgstr "I2P a besoin de plus de 12KOps afin d'activer le partage de bande passante" + +#: ../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 "Veuillez activer le partage de bande passante (tunnels participants) en augmentant votre bande passante." + +#: ../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 "Cela aidera votre anonymat en cachant vos données parmi les données des autres, et cela améliorera le réseau." + +#: ../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 "Vous avez configuré I2P à partager {0} KOps." + +#: ../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 "En partageant plus de votre bande passante, vous améliorerez votre anonymat et le réseau." + +#: ../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:337 +#: ../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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:376 +msgid "The default settings will work for most people." +msgstr "La configuration par défaut marchera pour la plupart des gens." + +#: ../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 "Configuration UPnP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:384 +msgid "Enable UPnP to open firewall ports" +msgstr "Activer UPnP afin d'ouvrir les ports du pare-feu" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:386 +msgid "UPnP status" +msgstr "Statut UPnP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:388 +msgid "IP Configuration" +msgstr "Configuration 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 "Adresse IP ou nom d'hôte qui est joignable depuis l'exterieur" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:394 +msgid "Use all auto-detect methods" +msgstr "Utiliser toute méthode d'auto-détection" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:398 +msgid "Disable UPnP IP address detection" +msgstr "Desactiver la détection de l'adresse IP par UPnP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:402 +msgid "Ignore local interface IP address" +msgstr "Ignorer l'adresse IP de l'interface locale" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:406 +msgid "Use SSU IP address detection only" +msgstr "Utiliser seulement SSU pour détecter l'adresse IP" + +#: ../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 "Saisir l'adresse IP ou le nom de l'hôte" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:416 +msgid "Select Interface" +msgstr "Choisir l'interface" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:430 +msgid "Hidden mode - do not publish IP" +msgstr "Mode caché - ne pas publier l'adresse 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 "" + +#: ../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 "" + +#: ../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 "Configuration UDP :" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:444 +msgid "UDP port:" +msgstr "Port UDP :" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:458 +msgid "TCP Configuration" +msgstr "Configuration TCP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:464 +msgid "Use auto-detected IP address" +msgstr "Utiliser l'adresse IP qui a été auto-détectée" + +#: ../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 "actuellement" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:470 +msgid "if we are not firewalled" +msgstr "s'il n'y a pas de pare-feu" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:474 +msgid "Always use auto-detected IP address (Not firewalled)" +msgstr "Utiliser toujours l'adresse IP qui a été auto-détectée (pas de pare-feu)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:484 +msgid "Disable inbound (Firewalled)" +msgstr "Desactiver les connexions entrantes (derrière un pare-feu)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:488 +msgid "Completely disable" +msgstr "Desactiver complètement" + +#: ../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 "(selectionner seulement si derrière un pare-feu qui limite les connexions sortantes TCP)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:492 +msgid "Externally reachable TCP port" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:496 +msgid "Use the same port configured for UDP" +msgstr "Utiliser le même port qui a été configuré pour 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 "Noter" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:511 +msgid "Changing these settings will restart your router." +msgstr "تغيير في الإعدادات يقتضي اعادة تشغيل الموجه." + +#: ../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 +#, fuzzy +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 fonctionnera derrière le plupart des pares-feu, mais votre vitesse et " +"votre intégration avec le réseau s'améliorera s'il y a la redirection du " +"port I2P pour UDP et 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 "Si vous pouvez, ouvrez un port dans votre pare-feu afin de permettre la réception des les paquets TCP et UDP non sollicités." + +#: ../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 "Si vous ne pouvez pas, I2P est compatible avec UPnp (Universal Plug and Play) et \"UDP hole punching\" avec \"SSU introductions\" afin de relayer le trafic I2P." + +#: ../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 "Le plupart des possibilités décrites ci-avant sont pour les situtations particulieres, par exemple le cas où UPnP ne fonctionne pas correctement, ou un pare-feu empeche la connexion au réseau 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 "Il y a des certains types de pare-feu (tel que les NAT symétriques) qui ne fonctionnent pas bien avec 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 est utilisé pour communiquer avec des \"Internet Gateway Devices (IGDs)\" afin de détecter l'adresse IP extérieure et de contrôler la redirection des ports." + +#: ../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 est toujours en développement, et il peut arrêter de fonctionner correctement à cause de " + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:540 +msgid "No UPnP-compatible device present" +msgstr "Il n'y a pas d'appareil qui est compatible avec UPnP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:542 +msgid "UPnP disabled on the device" +msgstr "UPnP est desactivé sur l'appareil" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:544 +msgid "Software firewall interference with UPnP" +msgstr "Il y a de l'intérference entre un pare-feu en software et UPnP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:546 +msgid "Bugs in the device's UPnP implementation" +msgstr "Il y a des bogues dans l'implementation d'UPnP dans l'appareil" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:548 +msgid "Multiple firewall/routers in the internet connection path" +msgstr "Il y a plusieurs routeurs/pare-feux entre le routeur I2P et l'internet" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:550 +msgid "UPnP device change, reset, or address change" +msgstr "Un changement de l'appareil UPnP, une redémarrage, ou une changement d'adresse IP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:552 +msgid "Review the UPnP status here." +msgstr "Consulter le statut de UPnP ici." + +#: ../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 peut être activé ou desactivé au-dessus, mais afin de prendre en compte la changement il faut rédemarrer le routeur 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 "Les noms d'hôtes qui ont été saisis au-dessus seront publié dans la base de données du réseau I2P." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:558 +msgid "They are <b>not private</b>." +msgstr "Ils ne sont pas <b>privés</b>." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:560 +msgid "Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1." +msgstr "En plus, <b>ne saisissez pas une adresse IP privée</b> tel que 127.0.0.1 ou 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 "" +"Si vous saisissez une mauvaise adresse IP ou nom d'hôte, ou configurer votre " +"NAT ou pare-feu incorrectement, votre intégration avec le réseau I2P " +"dégradera substantiellement." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:564 +msgid "When in doubt, leave the settings at the defaults." +msgstr "Si vous n'êtes pas sûr de vous, laisser la configuration par défaut." + +#: ../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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:574 +msgid "If there is an error, the <a href=\"logs.jsp\">logs</a> 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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:582 +msgid "Your UDP port appears to be firewalled." +msgstr "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:610 +msgid "WARN - Firewalled and Floodfill" +msgstr "" + +#: ../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 "" + +#: ../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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:616 +msgid "WARN - Firewalled with Inbound TCP Enabled" +msgstr "" + +#: ../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 "" + +#: ../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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:622 +msgid "Please open your firewall or disable inbound TCP above." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:624 +msgid "WARN - Firewalled with UDP Disabled" +msgstr "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:642 +msgid "Correct the address or disable inbound TCP above." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:644 +msgid "ERR - SymmetricNAT" +msgstr "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:668 +msgid "ERR - Client Manager I2CP Error - check logs" +msgstr "" + +#: ../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 "" + +#: ../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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:107 +msgid "config advanced" +msgstr "configuration avancé" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:242 +msgid "I2P Advanced Configuration" +msgstr "Configuration I2P avancé" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:299 +msgid "Advanced I2P Configuration" +msgstr "Configuration I2P avancé" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309 +msgid "Some changes may require a restart to take effect." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:106 +msgid "config clients" +msgstr "Clients configuration" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:244 +msgid "I2P Client Configuration" +msgstr "Client I2P configuration" + +#: ../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 "" + +#: ../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 "Configuration WebApp" + +#: ../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 "" + +#: ../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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:350 +#, fuzzy +msgid "Plugin Configuration" +msgstr "Configuration Client" + +#: ../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 "" + +#: ../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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:106 +msgid "config keyring" +msgstr "Configuration porte-clés" + +#: ../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 "" + +#: ../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 "صفحة النفق I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:316 +msgid "Dest. name, hash, or full key" +msgstr "Nom de destination, empreinte, ou clé complète" + +#: ../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 "configuration enregistrements" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:242 +msgid "I2P Logging Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:299 +msgid "Configure I2P Logging Options" +msgstr "" + +#: ../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 "(use 'd' = date, 'c' = classe, 't' = fil d'exécution, 'p' = priorité, 'm' = message)" + +#: ../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' = mois, 'dd' = jour, 'HH' = heure, 'mm' = minute, 'ss' = seconde, 'SSS' = milliseconde)" + +#: ../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 "" + +#: ../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/configlogging_jsp.java:333 +msgid "New override" +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 "Configuration des pairs 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 "Routeur empreinte" + +#: ../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 "page des profiles" + +#: ../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 "Pairs interdits" + +#: ../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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:284 +msgid "Shutdown the router" +msgstr "Fermer le routeur" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "Une redémarrage gracieux prendra quelques minutes (mais vos pairs apprécieront votre patience), une redémarrage immédiate est quasi instantané." + +#: ../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 "Après la rédemmarage du routeur, il attendra 1 minute avant de se relancer." + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:326 +msgid "Run on startup" +msgstr "شغل عند انطلاق" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 +#, fuzzy +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 <a href=\"logs.jsp#servicelogs\">wrapper.log</a>." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:358 +msgid "Launch browser on router startup?" +msgstr "Lancer explorateur internet pendant le démarrage du routeur ?" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "basculer tous" + +#: ../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 "Filtre avancé" + +#: ../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 "La configuration défaut fonctionne pour le plupart des utilisateurs" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "إختيار التيمة لأنترنت اكسبلورر." + +#: ../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 "" + +#: ../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 "Mettre à jour la configuration" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:228 +msgid "I2P Update Configuration" +msgstr "Configuration du mise à jour I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:302 +msgid "Check for I2P and news updates" +msgstr "" + +#: ../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 "عنوان الأخبار" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:320 +msgid "Refresh frequency" +msgstr "Fréquence d'actualisation" + +#: ../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 "ترقية باستعمال eepProxy؟" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:334 +msgid "eepProxy host" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:338 +msgid "eepProxy port" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:342 +msgid "Update URLs" +msgstr "تحديث العناوين" + +#: ../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 "" +"Mettre à jour avec une version de développement d'i2p qui n'a pas été signée" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:354 +msgid "Unsigned Build URL" +msgstr "L'URL de la version d'i2p qui n'a pas été signée" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 <a href=\"http://trac.i2p2.i2p/newticket\">trac.i2p2.i2p</a>." +msgstr "" + +#: ../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 +#, fuzzy +msgid "Router Logs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:284 +msgid "Service (Wrapper) Logs" +msgstr "" + +#: ../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 "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:109 +#, fuzzy +msgid "WebApp Not Found" +msgstr "صفحة غير موجودة" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:231 +msgid "Web Application Not Running" +msgstr "Tunnels d'application" + +#: ../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 <a href=\"/configclients.jsp#webapp\">config clients page</a> 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 "profile des pairs" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:227 +msgid "I2P Network Peer Profiles" +msgstr "" + +#: ../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:245 +msgid "I2P Router Statistics" +msgstr "احصائيات شبكة I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:244 +#, java-format +msgid "Disable {0} Refresh" +msgstr "Désactiver {0} actualisation" + +#: ../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" + +#~ msgid "This is useful in some situations" +#~ msgstr "C'est utile dans certains cas" + +#~ msgid "Start Now" +#~ msgstr "Démarrer tout de suite" + +#~ msgid "Depth" +#~ msgstr "Profondeur" + +#~ msgid "view without" +#~ msgstr "montrer sans" + +#~ msgid "view with" +#~ msgstr "montrer avec" + +#~ msgid "Show the router's workload, and how it's performing" +#~ msgstr "Montrer les tâches en cours" + +#~ msgid "Jobs" +#~ msgstr "Tâches" + +#~ msgid "Tunnels in/out" +#~ msgstr "Tunnels entrants/sortants" From e1b40d49259557e7a2391cbf1e4a1598da0556f6 Mon Sep 17 00:00:00 2001 From: hamada <hamada@mail.i2p> Date: Wed, 16 Feb 2011 20:02:21 +0000 Subject: [PATCH 218/463] Add Arabic version of readme and initialNews --- .../resources/initialNews/initialNews_ar.xml | 20 ++++++++ installer/resources/readme/readme_ar.html | 48 +++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 installer/resources/initialNews/initialNews_ar.xml create mode 100644 installer/resources/readme/readme_ar.html diff --git a/installer/resources/initialNews/initialNews_ar.xml b/installer/resources/initialNews/initialNews_ar.xml new file mode 100644 index 000000000..e21ae5cb8 --- /dev/null +++ b/installer/resources/initialNews/initialNews_ar.xml @@ -0,0 +1,20 @@ +<div lang="ar" dir="rtl"> +<h3>Congratulations on getting I2P installed!</h3> +<p> +<b> !I2P مرحبا بك في شبكة</b> +انتظر قليلا بينما يتم ربط الإتصال بباقي أعضاء الشبكة. +</p> +<p> + +بسنما يتم الإتصال <b>بتغير بيانات سرعة الشبكة في</b> قم +<a href="config.jsp">صفحة الخيارات</a>. +</p> +<p> +عندما تظهر عبارة "shared clients" على اليسار يمكنك حينها <b>زيارة</b> +<a href="http://www.i2p2.i2p/faq.html">الأسئلة الشائعة</a>. +</p> +<p>IRC اتصل بخادم الدردشة الفورية على + <b>localhost:6668</b> +<a href="irc://127.0.0.1:6668/i2p-help">#i2p-help</a> or <a href="irc://127.0.0.1:6668/i2p">#i2p</a>. +</p> +</div> diff --git a/installer/resources/readme/readme_ar.html b/installer/resources/readme/readme_ar.html new file mode 100644 index 000000000..8c3888d4d --- /dev/null +++ b/installer/resources/readme/readme_ar.html @@ -0,0 +1,48 @@ +<HTML DIR="RTL" lang="ar"> +<div lang="fr"> +<div align="right"> +<div class="langbox" align="right"> + <a href="/index.jsp?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a> + <a href="/index.jsp?lang=zh"><img src="/flags.jsp?c=cn" title="中文" alt="中文"></a> + <a href="/index.jsp?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a> + <a href="/index.jsp?lang=fr"><img src="/flags.jsp?c=fr" title="Français" alt="Français"></a> + <a href="/index.jsp?lang=es"><img src="/flags.jsp?c=es" title="Español" alt="Español"></a> + <a href="/index.jsp?lang=pt"><img src="/flags.jsp?c=pt" title="Português" alt="Português"></a> + <a href="/index.jsp?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a> + <a href="/index.jsp?lang=ru"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a> + <a href="/index.jsp?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a></div> + <a href="/?lang=ar"><img src="/flags.jsp?c=sa" title="العربية" alt="العربية"></a></div> +</div></div> +<div class="welcome"><h2>مرحبا بكم في الانترنت الغير مرئية</h2></div> +<p>عندما تقوم بتشغيل I2P ستبدأ الأرقام على يسار الشاشة في الازدياد خلال الدقائق التالية وستظهر عبارة <i>Shared Clients</i> (ان <a href=#trouble>لم تظهر، انظر التعليمات اسفله</a>). عندها يمكنك الحصول على عدة خدمات مثل تورنت، البريد الإلكتروني السري، وخدمات أخرى:</p> +<ul> + <li>يمكنك الوصول الى مواقع مجهولة (تسمى eepsites) و خدمات أخرى ( ssh على I2P Jabber،IRC الخ...) زيادة على امكانية استضافة ونشر موقعك الخاص : +لتصفح مواقع (eepsites) على شبكة I2P عليك تغيير اعدادات المتصفح HTTP proxy الى عنوان 127.0.0.1 و port الى 4444، ثم يمكنك تصفح مواقع <br> + <ul class="links"> + <li><a href="http://forum.i2p/">forum.i2p</a>: وصلة آمنة ومجهولة الى منتدى <a href="http://forum.i2p2.de/">forum.i2p2.de</a></li> + <li><a href="http://www.i2p2.i2p/index_fr.html">www.i2p2.i2p</a> و <a href="http://i2p-projekt.i2p/index_fr.html">i2p-projekt.i2p</a>: + هما موقع الرسمي للمشروع <a href="http://www.i2p2.de/index_fr.html">www.i2p2.de</a></li> + <li><a href="http://eepsites.i2p/">eepsites.i2p</a>محرك بحث</li> + <li><a href="http://ugha.i2p/">ugha.i2p</a>ويكي مفتوح التي يستطيع الجميع تحريرها مع الكثير من المعلومات حول الشبكة</li> + <li><a href="http://fproxy.tino.i2p">fproxy.tino.i2p</a>Freenet مدخل الى شبكة </li> + <li><a href="http://echelon.i2p">echelon.i2p</a>موقع لتحميل مجموعة من البرامج (I2PFox, iMule, I2P-Messenger, ...) <br></li> + </ul> + هناك العديد من eepsites، فقط اتبع هذه الروابط لإكتشاف المزيد!</li><br> + + <li class="tidylist"><b>تحميل الملفات</b> يمكن استعمال برنامج <a href="http://www.klomp.org/snark/">Snark</a> الموجود ضمن حزمة برامج I2P لتحميل ملفات <a href="http://www.bittorrent.com/">BitTorrent</a>.</li> + + <li class="tidylist"><b>البريد الالكتروني المجهول:</b> يمكن استعمال شبكة I2P لإرسال واستقبال البريد الالكتروني بطريقة متوافقة مع بروتوكول (POP3 / SMTP) الشيء الذي يمكن من ارسال واستقبال البريد الالكتروني المجهول و المشفر داخل الشبكة وايضا عن طريق الإنترنت العادية. يمكن زيارة <a href="http://hq.postman.i2p/">hq.postman.i2p</a> للحصول على حساب. . + + <li class="tidylist"><b>الدردشة بطريقة مجهولة</b> استعمل برنامج الدردشة IRC مثل (Chatzilla, Pidgin, XChat) واتصل بالسيرفر على عنوان 127.0.0.1 وبورت 6668 ليتم الإتصال باحدى السيرفرات IRC المجهولة والمشقرة بحيث لا يستطيع مزود الانترنت او الحكومة او أي شخص آخر التنصت على محادثتك! ثم قم بالدخول الى احدى الغرف i2p-help,#i2p,#i2p-chat# او غرف أخرى. + </ul> + +<h2>استضافة موقع مجهول ومشفر على شبكة I2P</h2> + +<p>يمكنك استضافة موقعك على الشبكة بوضع ملفاتك في مجلد eepsite/docroot (كما يمكن وضع تطبيقات JSP/Servlet ايضا) او استعمال سكريبتات CGI في eepsite/cgi-bin +</p> + +<h2><a name="trouble">المساعدة</a></h2> + +<p>يمكن ان يستغرق I2P بعض الوقت في البداية لأنه يقوم بالبحث عن نظائر ليتم الإتضال بالشبكة. اذا استمر الوضع بعد 30 دقيقة، وعدد النظائر المتصلين أقل من 10، تأكد من فتح بورت 8887 على برنامج الجدار الناري. +اذا لم تستطع الوصول الى اي موقع على الشيكة (مثل www.i2p2.i2p) تأكد من وجود البروكسي 127.0.0.1 وبوورت 4444 في اعدادات متصفح.</p><hr /> +</div> From 84990d9d43abb083dc602d9f081be83fab06b23a Mon Sep 17 00:00:00 2001 From: dev <dev@welterde.de> Date: Thu, 17 Feb 2011 10:45:35 +0000 Subject: [PATCH 219/463] minor changes --- .../client/datagram/I2PDatagramDissector.java | 11 +++++------ .../i2p/client/datagram/I2PDatagramMaker.java | 8 ++++---- .../i2p/internal/QueuedI2CPMessageReader.java | 19 +++++++++++++++---- 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/core/java/src/net/i2p/client/datagram/I2PDatagramDissector.java b/core/java/src/net/i2p/client/datagram/I2PDatagramDissector.java index 4748e7495..864fc1e56 100644 --- a/core/java/src/net/i2p/client/datagram/I2PDatagramDissector.java +++ b/core/java/src/net/i2p/client/datagram/I2PDatagramDissector.java @@ -30,10 +30,10 @@ public final class I2PDatagramDissector { private static Log _log = new Log(I2PDatagramDissector.class); - private static int DGRAM_BUFSIZE = 32768; + private static final int DGRAM_BUFSIZE = 32768; - private DSAEngine dsaEng = DSAEngine.getInstance(); - private SHA256Generator hashGen = SHA256Generator.getInstance(); + private final DSAEngine dsaEng = DSAEngine.getInstance(); + private final SHA256Generator hashGen = SHA256Generator.getInstance(); private Hash rxHash = null; @@ -41,7 +41,7 @@ public final class I2PDatagramDissector { private Destination rxDest; - private byte[] rxPayload = new byte[DGRAM_BUFSIZE]; + private final byte[] rxPayload = new byte[DGRAM_BUFSIZE]; private int rxPayloadLen = 0; @@ -189,8 +189,7 @@ public final class I2PDatagramDissector { if(this.valid) return; - if (rxSign == null || rxSign.getData() == null || - rxDest == null || rxDest.getSigningPublicKey() == null) + if (rxSign == null || rxSign.getData() == null || rxDest == null || rxDest.getSigningPublicKey() == null) throw new I2PInvalidDatagramException("Datagram not yet read"); // now validate diff --git a/core/java/src/net/i2p/client/datagram/I2PDatagramMaker.java b/core/java/src/net/i2p/client/datagram/I2PDatagramMaker.java index e66b7f756..4de311c5f 100644 --- a/core/java/src/net/i2p/client/datagram/I2PDatagramMaker.java +++ b/core/java/src/net/i2p/client/datagram/I2PDatagramMaker.java @@ -28,15 +28,15 @@ public final class I2PDatagramMaker { private static Log _log = new Log(I2PDatagramMaker.class); - private static int DGRAM_BUFSIZE = 32768; + private static final int DGRAM_BUFSIZE = 32768; - private SHA256Generator hashGen = SHA256Generator.getInstance(); - private DSAEngine dsaEng = DSAEngine.getInstance(); + private final SHA256Generator hashGen = SHA256Generator.getInstance(); + private final DSAEngine dsaEng = DSAEngine.getInstance(); private SigningPrivateKey sxPrivKey = null; private byte[] sxDestBytes = null; - private ByteArrayOutputStream sxDGram = new ByteArrayOutputStream(DGRAM_BUFSIZE); + private final ByteArrayOutputStream sxDGram = new ByteArrayOutputStream(DGRAM_BUFSIZE); /** * Construct a new I2PDatagramMaker that will be able to create I2P diff --git a/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java b/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java index 86f82241b..4b14d5ed8 100644 --- a/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java +++ b/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java @@ -5,7 +5,7 @@ import net.i2p.data.i2cp.I2CPMessageReader; import net.i2p.util.I2PThread; /** - * Get messages off an In-JVM queue, zero-copy + * Get messages off an In-JVM queue, zero-copy. * * @author zzz * @since 0.8.3 @@ -13,6 +13,9 @@ import net.i2p.util.I2PThread; public class QueuedI2CPMessageReader extends I2CPMessageReader { private final I2CPMessageQueue in; + /** + * Creates a new instance of this QueuedMessageReader and spawns a pumper thread. + */ public QueuedI2CPMessageReader(I2CPMessageQueue in, I2CPMessageEventListener lsnr) { super(lsnr); this.in = in; @@ -25,13 +28,19 @@ public class QueuedI2CPMessageReader extends I2CPMessageReader { public QueuedI2CPMessageReaderRunner() { super(); } - + + /** + * Shuts the pumper down. + */ @Override public void cancelRunner() { super.cancelRunner(); _readerThread.interrupt(); } - + + /** + * Pumps messages from the incoming message queue to the listener. + */ @Override public void run() { while (_stayAlive) { @@ -46,7 +55,9 @@ public class QueuedI2CPMessageReader extends I2CPMessageReader { } else { _listener.messageReceived(QueuedI2CPMessageReader.this, msg); } - } catch (InterruptedException ie) {} + } catch (InterruptedException ie) { + // hint that we probably should check the continue running flag + } } // ??? unused if (_stayAlive && !_doRun) { From fd91927c11797c4c7bd2253510406c40207af344 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 17 Feb 2011 12:47:35 +0000 Subject: [PATCH 220/463] * Build: - Add includeAntRuntime=false to all javac targets - Add build date, mtn rev, and changed file list to all manifests - Add unless=uptodate to all jar and war targets (bob and dtg still todo) --- apps/addressbook/build.xml | 38 ++++++++++++++++++---- apps/desktopgui/build.xml | 15 +++++++++ apps/i2psnark/java/build.xml | 38 ++++++++++++++++++++-- apps/i2ptunnel/java/build.xml | 52 +++++++++++++++++++++++++++-- apps/jetty/build.xml | 27 +++++++++++++++- apps/ministreaming/java/build.xml | 33 +++++++++++++++++-- apps/routerconsole/java/build.xml | 52 +++++++++++++++++++++++++++-- apps/sam/java/build.xml | 26 ++++++++++++++- apps/streaming/java/build.xml | 31 ++++++++++++++++-- apps/susidns/src/build.xml | 31 ++++++++++++++++-- apps/susimail/build.xml | 27 +++++++++++++++- apps/systray/java/build.xml | 33 +++++++++++++------ build.xml | 54 +++++++++++++++++++++++++++---- core/java/build.xml | 38 +++++++++++++++++++--- router/java/build.xml | 37 ++++++++++++++++++--- 15 files changed, 484 insertions(+), 48 deletions(-) diff --git a/apps/addressbook/build.xml b/apps/addressbook/build.xml index 6332c5bcc..30750a231 100644 --- a/apps/addressbook/build.xml +++ b/apps/addressbook/build.xml @@ -38,6 +38,7 @@ <target name="compile" depends="init, depend"> <javac debug="true" deprecation="on" source="1.5" target="1.5" + includeAntRuntime="false" srcdir="${src}" destdir="${build}"> <compilerarg line="${javac.compilerargs}" /> <classpath> @@ -47,27 +48,52 @@ </javac> </target> - <target name="jar" depends="compile"> + <!-- unused for now, as we oddly ship addressbook as a .war --> + <target name="jar" depends="compile, changes"> <jar basedir="${build}" destfile="${dist}/${jar}"> <manifest> <attribute name="Main-Class" value="addressbook.Daemon"/> + <attribute name="Build-Date" value="${build.timestamp}" /> + <attribute name="Base-Revision" value="${workspace.version}" /> + <attribute name="Workspace-Changes" value="${workspace.changes}" /> </manifest> </jar> </target> - <target name="war" depends="compile" unless="war.uptodate"> + <target name="war" depends="compile, changes, warUpToDate" unless="war.uptodate"> <mkdir dir="${dist}/tmp"/> <mkdir dir="${dist}/tmp/WEB-INF"/> <mkdir dir="${dist}/tmp/WEB-INF/classes"/> <copy todir="${dist}/tmp/WEB-INF/classes"> <fileset dir="${build}"/> </copy> - <war basedir="${dist}/tmp" webxml="web.xml" destfile="${dist}/${war}"/> + <war basedir="${dist}/tmp" webxml="web.xml" destfile="${dist}/${war}"> + <manifest> + <attribute name="Build-Date" value="${build.timestamp}" /> + <attribute name="Base-Revision" value="${workspace.version}" /> + <attribute name="Workspace-Changes" value="${workspace.changes.tr}" /> + </manifest> + </war> <delete dir="${dist}/tmp"/> </target> - <uptodate property="war.uptodate" targetfile="${dist}/${war}"> - <srcfiles dir= "." includes="${build}/**/*.class, web.xml"/> - </uptodate> + <target name="warUpToDate"> + <uptodate property="war.uptodate" targetfile="${dist}/${war}"> + <srcfiles dir= "." includes="${build}/**/*.class, web.xml"/> + </uptodate> + </target> + <target name="changes"> + <exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="list" /> + <arg value="changed" /> + <arg value="." /> + </exec> + <!-- \n in an attribute value generates an invalid manifest --> + <exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="-s" /> + <arg value="[:space:]" /> + <arg value="," /> + </exec> + </target> </project> diff --git a/apps/desktopgui/build.xml b/apps/desktopgui/build.xml index f5de9ff4f..0d697c185 100644 --- a/apps/desktopgui/build.xml +++ b/apps/desktopgui/build.xml @@ -24,6 +24,7 @@ <target name="compile" depends="init"> <javac debug="true" deprecation="on" source="1.5" target="1.5" + includeAntRuntime="false" srcdir="${src}" destdir="${build}"> <compilerarg line="${javac.compilerargs}" /> <classpath> @@ -47,10 +48,24 @@ </exec> <exec executable="sh" osfamily="windows" failifexecutionfails="true" > <arg value="./bundle-messages.sh" /> + </exec> + <exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="list" /> + <arg value="changed" /> + <arg value="." /> + </exec> + <!-- \n in an attribute value generates an invalid manifest --> + <exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="-s" /> + <arg value="[:space:]" /> + <arg value="," /> </exec> <jar basedir="${build}" destfile="${dist}/${jar}"> <manifest> <attribute name="Main-Class" value="net.i2p.desktopgui.Main"/> + <attribute name="Build-Date" value="${build.timestamp}" /> + <attribute name="Base-Revision" value="${workspace.version}" /> + <attribute name="Workspace-Changes" value="${workspace.changes.tr}" /> </manifest> </jar> </target> diff --git a/apps/i2psnark/java/build.xml b/apps/i2psnark/java/build.xml index 2fbc2f507..b05b7339a 100644 --- a/apps/i2psnark/java/build.xml +++ b/apps/i2psnark/java/build.xml @@ -30,18 +30,41 @@ srcdir="./src" debug="true" deprecation="on" source="1.5" target="1.5" destdir="./build/obj" + includeAntRuntime="false" classpath="../../../core/java/build/i2p.jar:../../jetty/jettylib/org.mortbay.jetty.jar:../../jetty/jettylib/javax.servlet.jar:../../ministreaming/java/build/mstreaming.jar" > <compilerarg line="${javac.compilerargs}" /> </javac> </target> - <target name="jar" depends="builddep, compile"> + + <target name="jar" depends="builddep, compile, jarUpToDate" unless="jar.uptodate" > + <exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="list" /> + <arg value="changed" /> + <arg value=".." /> + </exec> + <!-- \n in an attribute value generates an invalid manifest --> + <exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="-s" /> + <arg value="[:space:]" /> + <arg value="," /> + </exec> <jar destfile="./build/i2psnark.jar" basedir="./build/obj" includes="**/*.class" excludes="**/I2PSnarkServlet*.class **/messages_*.class"> <manifest> <attribute name="Main-Class" value="org.klomp.snark.Snark" /> <attribute name="Class-Path" value="i2p.jar mstreaming.jar streaming.jar" /> + <attribute name="Build-Date" value="${build.timestamp}" /> + <attribute name="Base-Revision" value="${workspace.version}" /> + <attribute name="Workspace-Changes" value="${workspace.changes.tr}" /> </manifest> </jar> </target> + + <target name="jarUpToDate"> + <uptodate property="jar.uptodate" targetfile="build/i2psnark.jar" > + <srcfiles dir= "build/obj" includes="**/*.class" excludes="**/I2PSnarkServlet*.class **/messages_*.class" /> + </uptodate> + </target> + <!-- Ideally we would include - only include the servlet, everything else is in the jar. - However, the wrapper.config classpath in existing installs @@ -49,13 +72,24 @@ - So we must continue to duplicate everything in the war. <classes dir="./build/obj" includes="**/I2PSnarkServlet*.class" /> --> - <target name="war" depends="jar, bundle"> + <target name="war" depends="jar, bundle, warUpToDate" unless="war.uptodate" > <war destfile="../i2psnark.war" webxml="../web.xml" basedir="../" includes="_icons/*" > <!-- include only the web stuff, as of 0.7.12 the router will add i2psnark.jar to the classpath for the war --> <classes dir="./build/obj" includes="**/web/*.class" /> + <manifest> + <attribute name="Build-Date" value="${build.timestamp}" /> + <attribute name="Base-Revision" value="${workspace.version}" /> + <attribute name="Workspace-Changes" value="${workspace.changes}" /> + </manifest> </war> </target> + <target name="warUpToDate"> + <uptodate property="war.uptodate" targetfile="../i2psnark.war" > + <srcfiles dir= "." includes="build/obj/web/**/*.class ../_icons/* ../web.xml" /> + </uptodate> + </target> + <target name="bundle" depends="compile"> <!-- Update the messages_*.po files. We need to supply the bat file for windows, and then change the fail property to true --> diff --git a/apps/i2ptunnel/java/build.xml b/apps/i2ptunnel/java/build.xml index 6ff511100..7beebbb1b 100644 --- a/apps/i2ptunnel/java/build.xml +++ b/apps/i2ptunnel/java/build.xml @@ -28,6 +28,7 @@ srcdir="./src" debug="true" deprecation="on" source="1.5" target="1.5" destdir="./build/obj" + includeAntRuntime="false" classpath="../../../core/java/build/i2p.jar:../../ministreaming/java/build/mstreaming.jar" > <compilerarg line="${javac.compilerargs}" /> </javac> @@ -36,15 +37,35 @@ <!-- TODO: Move the web classes from the jar to the war - they are not part of the API - This will require sponge to rewrite some seedless stuff that uses it. --> - <target name="jar" depends="builddep, compile"> + <target name="jar" depends="builddep, compile, jarUpToDate" unless="jar.uptodate" > + <exec executable="mtn" outputproperty="workspace.changes.j" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="list" /> + <arg value="changed" /> + <arg value="." /> + </exec> + <!-- \n in an attribute value generates an invalid manifest --> + <exec executable="tr" inputstring="${workspace.changes.j}" outputproperty="workspace.changes.j.tr" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="-s" /> + <arg value="[:space:]" /> + <arg value="," /> + </exec> <jar destfile="./build/i2ptunnel.jar" basedir="./build/obj" includes="**/*.class"> <manifest> <attribute name="Main-Class" value="net.i2p.i2ptunnel.I2PTunnel" /> <attribute name="Class-Path" value="i2p.jar mstreaming.jar" /> + <attribute name="Build-Date" value="${build.timestamp}" /> + <attribute name="Base-Revision" value="${workspace.version}" /> + <attribute name="Workspace-Changes" value="${workspace.changes.j.tr}" /> </manifest> </jar> </target> + <target name="jarUpToDate"> + <uptodate property="jar.uptodate" targetfile="build/i2ptunnel.jar" > + <srcfiles dir= "build/obj" includes="**/*.class" /> + </uptodate> + </target> + <target name="bundle" depends="compile, precompilejsp"> <!-- Update the messages_*.po files. We need to supply the bat file for windows, and then change the fail property to true --> @@ -75,12 +96,34 @@ </exec> </target> - <target name="war" depends="precompilejsp, bundle"> + <target name="war" depends="precompilejsp, bundle, warUpToDate" unless="war.uptodate" > + <exec executable="mtn" outputproperty="workspace.changes.w" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="list" /> + <arg value="changed" /> + <arg value="../jsp" /> + </exec> + <!-- \n in an attribute value generates an invalid manifest --> + <exec executable="tr" inputstring="${workspace.changes.w}" outputproperty="workspace.changes.w.tr" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="-s" /> + <arg value="[:space:]" /> + <arg value="," /> + </exec> <war destfile="build/i2ptunnel.war" webxml="../jsp/web-out.xml" basedir="../jsp/" excludes="web.xml, web-fragment.xml, web-out.xml, **/*.java, *.jsp"> + <manifest> + <attribute name="Build-Date" value="${build.timestamp}" /> + <attribute name="Base-Revision" value="${workspace.version}" /> + <attribute name="Workspace-Changes" value="${workspace.changes.w.tr}" /> + </manifest> </war> </target> + <target name="warUpToDate"> + <uptodate property="war.uptodate" targetfile="build/i2ptunnel.war" > + <srcfiles dir= "../jsp" excludes="web.xml, web-fragment.xml, **/*.java, *.jsp" /> + </uptodate> + </target> + <target name="precompilejsp" depends="jar" unless="precompilejsp.uptodate"> <delete dir="../jsp/WEB-INF/" /> <delete file="../jsp/web-fragment.xml" /> @@ -108,6 +151,7 @@ <arg value="../jsp/" /> </java> <javac debug="true" deprecation="on" source="1.5" target="1.5" + includeAntRuntime="false" destdir="../jsp/WEB-INF/classes/" srcdir="../jsp/WEB-INF/classes" includes="**/*.java"> <compilerarg line="${javac.compilerargs}" /> <classpath> @@ -143,7 +187,9 @@ <target name="compileTest"> <mkdir dir="./build" /> <mkdir dir="./build/obj" /> - <javac srcdir="./src:./test" debug="true" source="1.5" target="1.5" deprecation="on" destdir="./build/obj" > + <javac srcdir="./src:./test" debug="true" source="1.5" target="1.5" + includeAntRuntime="false" + deprecation="on" destdir="./build/obj" > <compilerarg line="${javac.compilerargs}" /> <classpath> <pathelement location="../../../core/java/build/i2p.jar" /> diff --git a/apps/jetty/build.xml b/apps/jetty/build.xml index a45f9df62..a4ba71e07 100644 --- a/apps/jetty/build.xml +++ b/apps/jetty/build.xml @@ -96,14 +96,39 @@ srcdir="./java/src" debug="true" source="1.5" target="1.5" destdir="./build/obj" + includeAntRuntime="false" classpath="./jettylib/commons-logging.jar:./jettylib/javax.servlet.jar:./jettylib/org.mortbay.jetty.jar" > <compilerarg line="${javac.compilerargs}" /> </javac> </target> - <target name="jar" depends="compile"> + + <target name="jar" depends="compile, jarUpToDate" unless="jar.uptodate" > + <exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="list" /> + <arg value="changed" /> + <arg value="." /> + </exec> + <!-- \n in an attribute value generates an invalid manifest --> + <exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="-s" /> + <arg value="[:space:]" /> + <arg value="," /> + </exec> <jar destfile="./jettylib/org.mortbay.jetty.jar" basedir="./build/obj" includes="**/*.class" update="true" > + <manifest> + <attribute name="Build-Date" value="${build.timestamp}" /> + <attribute name="Base-Revision" value="${workspace.version}" /> + <attribute name="Workspace-Changes" value="${workspace.changes.tr}" /> + </manifest> </jar> </target> + + <target name="jarUpToDate"> + <uptodate property="jar.uptodate" targetfile="jettylib/org.mortbay.jetty.jar" > + <srcfiles dir= "build/obj" includes="**/*.class" /> + </uptodate> + </target> + <target name="clean" > <delete dir="./build" /> <delete file="${verified.filename}" /> diff --git a/apps/ministreaming/java/build.xml b/apps/ministreaming/java/build.xml index c22676d26..8fcd2d517 100644 --- a/apps/ministreaming/java/build.xml +++ b/apps/ministreaming/java/build.xml @@ -24,13 +24,40 @@ <mkdir dir="./build" /> <mkdir dir="./build/obj" /> <!-- half of this is deprecated classes so turn deprecation off --> - <javac srcdir="./src" debug="true" deprecation="off" source="1.5" target="1.5" destdir="./build/obj" classpath="../../../core/java/build/i2p.jar" > + <javac srcdir="./src" debug="true" deprecation="off" source="1.5" target="1.5" + includeAntRuntime="false" + destdir="./build/obj" classpath="../../../core/java/build/i2p.jar" > <compilerarg line="${javac.compilerargs}" /> </javac> </target> - <target name="jar" depends="compile"> - <jar destfile="./build/mstreaming.jar" basedir="./build/obj" includes="**/*.class" /> + + <target name="jar" depends="compile, jarUpToDate" unless="jar.uptodate" > + <exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="list" /> + <arg value="changed" /> + <arg value="." /> + </exec> + <!-- \n in an attribute value generates an invalid manifest --> + <exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="-s" /> + <arg value="[:space:]" /> + <arg value="," /> + </exec> + <jar destfile="./build/mstreaming.jar" basedir="./build/obj" includes="**/*.class" > + <manifest> + <attribute name="Build-Date" value="${build.timestamp}" /> + <attribute name="Base-Revision" value="${workspace.version}" /> + <attribute name="Workspace-Changes" value="${workspace.changes.tr}" /> + </manifest> + </jar> </target> + + <target name="jarUpToDate"> + <uptodate property="jar.uptodate" targetfile="build/mstreaming.jar" > + <srcfiles dir= "." includes="build/obj/**/*.class" /> + </uptodate> + </target> + <target name="javadoc"> <mkdir dir="./build" /> <mkdir dir="./build/javadoc" /> diff --git a/apps/routerconsole/java/build.xml b/apps/routerconsole/java/build.xml index 413521586..adb625e47 100644 --- a/apps/routerconsole/java/build.xml +++ b/apps/routerconsole/java/build.xml @@ -46,6 +46,7 @@ <javac srcdir="./src" debug="true" deprecation="on" source="1.5" target="1.5" + includeAntRuntime="false" destdir="./build/obj"> <compilerarg line="${javac.compilerargs}" /> <classpath> @@ -61,12 +62,27 @@ </classpath> </javac> </target> - <target name="jar" depends="compile"> + + <target name="jar" depends="compile, jarUpToDate" unless="jar.uptodate" > + <exec executable="mtn" outputproperty="workspace.changes.j" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="list" /> + <arg value="changed" /> + <arg value="." /> + </exec> + <!-- \n in an attribute value generates an invalid manifest --> + <exec executable="tr" inputstring="${workspace.changes.j}" outputproperty="workspace.changes.j.tr" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="-s" /> + <arg value="[:space:]" /> + <arg value="," /> + </exec> <jar destfile="./build/routerconsole.jar" basedir="./build/obj" includes="**/*.class"> <manifest> <!-- top level installer will rename to jrobin.jar --> <!-- DTG added in 0.8.4, not in the classpath for very old installs, before we changed wrapper.config to specify * --> <attribute name="Class-Path" value="i2p.jar router.jar jrobin.jar desktopgui.jar" /> + <attribute name="Build-Date" value="${build.timestamp}" /> + <attribute name="Base-Revision" value="${workspace.version}" /> + <attribute name="Workspace-Changes" value="${workspace.changes.j.tr}" /> </manifest> </jar> <delete dir="./tmpextract" /> @@ -93,6 +109,13 @@ <jar destfile="./build/routerconsole.jar" basedir="./build/obj" includes="**/*.class" update="true" /> </target> + + <target name="jarUpToDate"> + <uptodate property="jar.uptodate" targetfile="build/routerconsole.jar" > + <srcfiles dir= "build/obj" includes="**/*.class" /> + </uptodate> + </target> + <target name="poupdate" depends="build"> <ant target="war" /> <!-- Update the messages_*.po files. @@ -110,12 +133,36 @@ <arg value="-p" /> </exec> </target> - <target name="war" depends="precompilejsp"> + + <target name="war" depends="precompilejsp, warUpToDate" unless="war.uptodate" > + <exec executable="mtn" outputproperty="workspace.changes.w" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="list" /> + <arg value="changed" /> + <arg value="../jsp" /> + </exec> + <!-- \n in an attribute value generates an invalid manifest --> + <exec executable="tr" inputstring="${workspace.changes.w}" outputproperty="workspace.changes.w.tr" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="-s" /> + <arg value="[:space:]" /> + <arg value="," /> + </exec> <!-- Don't include the css in the war, the main build.xml will copy it to docs/themes/console/ --> <war destfile="build/routerconsole.war" webxml="../jsp/web-out.xml" basedir="../jsp/" excludes="web.xml, *.css, **/*.java, *.jsp, *.jsi, web-fragment.xml, web-out.xml"> + <manifest> + <attribute name="Build-Date" value="${build.timestamp}" /> + <attribute name="Base-Revision" value="${workspace.version}" /> + <attribute name="Workspace-Changes" value="${workspace.changes.w.tr}" /> + </manifest> </war> </target> + + <target name="warUpToDate"> + <uptodate property="war.uptodate" targetfile="build/routerconsole.war" > + <srcfiles dir= "../jsp" excludes="web.xml, web-fragment.xml, *.css, **/*.java, *.jsp, *.jsi" /> + </uptodate> + </target> + <target name="precompilejsp" unless="precompilejsp.uptodate"> <delete dir="../jsp/WEB-INF/" /> <delete file="../jsp/web-fragment.xml" /> @@ -182,6 +229,7 @@ <javac debug="true" deprecation="on" source="1.5" target="1.5" encoding="UTF-8" + includeAntRuntime="false" destdir="../jsp/WEB-INF/classes/" srcdir="../jsp/WEB-INF/classes" includes="**/*.java"> <compilerarg line="${javac.compilerargs}" /> diff --git a/apps/sam/java/build.xml b/apps/sam/java/build.xml index 57aeff994..7e62fd27c 100644 --- a/apps/sam/java/build.xml +++ b/apps/sam/java/build.xml @@ -28,6 +28,7 @@ <javac srcdir="./src" debug="true" deprecation="on" source="1.5" target="1.5" + includeAntRuntime="false" destdir="./build/obj" classpath="../../../core/java/build/i2p.jar:../../ministreaming/java/build/mstreaming.jar:../../streaming/java/build/streaming.jar" > <compilerarg line="${javac.compilerargs}" /> @@ -37,19 +38,42 @@ <javac srcdir="./test" debug="true" deprecation="on" source="1.5" target="1.5" + includeAntRuntime="false" destdir="./build/obj" classpath="../../../core/java/build/i2p.jar:../../ministreaming/java/build/mstreaming.jar:../../streaming/java/build/streaming.jar" > <compilerarg line="${javac.compilerargs}" /> </javac> </target> - <target name="jar" depends="compile"> + + <target name="jar" depends="compile, jarUpToDate" unless="jar.uptodate" > + <exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="list" /> + <arg value="changed" /> + <arg value="." /> + </exec> + <!-- \n in an attribute value generates an invalid manifest --> + <exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="-s" /> + <arg value="[:space:]" /> + <arg value="," /> + </exec> <jar destfile="./build/sam.jar" basedir="./build/obj" includes="**/*.class"> <manifest> <attribute name="Main-Class" value="net.i2p.sam.SAMBridge" /> <attribute name="Class-Path" value="i2p.jar mstreaming.jar streaming.jar" /> + <attribute name="Build-Date" value="${build.timestamp}" /> + <attribute name="Base-Revision" value="${workspace.version}" /> + <attribute name="Workspace-Changes" value="${workspace.changes.tr}" /> </manifest> </jar> </target> + + <target name="jarUpToDate"> + <uptodate property="jar.uptodate" targetfile="build/sam.jar" > + <srcfiles dir= "build/obj" includes="**/*.class" /> + </uptodate> + </target> + <target name="jarTest" depends="jar, compileTest"> <jar destfile="./build/sam.jar" basedir="./build/obj" includes="**/*Test*.class" update="true" /> </target> diff --git a/apps/streaming/java/build.xml b/apps/streaming/java/build.xml index dff6fbf1d..1351399b7 100644 --- a/apps/streaming/java/build.xml +++ b/apps/streaming/java/build.xml @@ -27,6 +27,7 @@ <javac srcdir="./src" debug="true" deprecation="on" source="1.5" target="1.5" + includeAntRuntime="false" destdir="./build/obj" classpath="../../../core/java/build/i2p.jar:../../ministreaming/java/build/mstreaming.jar" > <compilerarg line="${javac.compilerargs}" /> @@ -36,14 +37,40 @@ <javac srcdir="./test" debug="true" deprecation="on" source="1.5" target="1.5" + includeAntRuntime="false" destdir="./build/obj" classpath="../../../core/java/build/i2p.jar:../../ministreaming/java/build/mstreaming.jar" > <compilerarg line="${javac.compilerargs}" /> </javac> </target> - <target name="jar" depends="builddep, compile"> - <jar destfile="./build/streaming.jar" basedir="./build/obj" includes="**/*.class" /> + + <target name="jar" depends="builddep, compile, jarUpToDate" unless="jar.uptodate" > + <exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="list" /> + <arg value="changed" /> + <arg value="." /> + </exec> + <!-- \n in an attribute value generates an invalid manifest --> + <exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="-s" /> + <arg value="[:space:]" /> + <arg value="," /> + </exec> + <jar destfile="./build/streaming.jar" basedir="./build/obj" includes="**/*.class" > + <manifest> + <attribute name="Build-Date" value="${build.timestamp}" /> + <attribute name="Base-Revision" value="${workspace.version}" /> + <attribute name="Workspace-Changes" value="${workspace.changes.tr}" /> + </manifest> + </jar> </target> + + <target name="jarUpToDate"> + <uptodate property="jar.uptodate" targetfile="build/streaming.jar" > + <srcfiles dir= "." includes="build/obj/**/*.class" /> + </uptodate> + </target> + <target name="jarTest" depends="jar, compileTest"> <jar destfile="./build/streaming.jar" basedir="./build/obj" includes="**/*Test*.class" update="true" /> </target> diff --git a/apps/susidns/src/build.xml b/apps/susidns/src/build.xml index ad20ad49a..ea4dc5809 100644 --- a/apps/susidns/src/build.xml +++ b/apps/susidns/src/build.xml @@ -23,13 +23,16 @@ <pathelement location="../../../core/java/build/i2p.jar" /> </path> <property name="javac.compilerargs" value="" /> + <target name="compile"> <mkdir dir="${bin}" /> <javac debug="true" deprecation="on" source="1.5" target="1.5" + includeAntRuntime="false" classpathref="cp" destdir="${bin}" srcdir="${src}" includes="**/*.java" > <compilerarg line="${javac.compilerargs}" /> </javac> </target> + <target name="precompilejsp" unless="precompilejsp.uptodate"> <delete file="WEB-INF/web-fragment.xml" /> <delete file="WEB-INF/web-out.xml" /> @@ -47,6 +50,7 @@ <arg value="./jsp" /> </java> <javac debug="true" deprecation="on" source="1.5" target="1.5" + includeAntRuntime="false" destdir="${bin}" srcdir="${tmp}" includes="**/*.java" classpathref="cp"> <compilerarg line="${javac.compilerargs}" /> </javac> @@ -61,8 +65,20 @@ <srcfiles dir= "." includes="jsp/*.jsp, WEB-INF/web-template.xml"/> </uptodate> - <target name="all" depends="compile,precompilejsp,bundle,war"/> - <target name="war"> + <target name="all" depends="war"/> + + <target name="war" depends="compile, precompilejsp, bundle, warUpToDate" unless="war.uptodate" > + <exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="list" /> + <arg value="changed" /> + <arg value="." /> + </exec> + <!-- \n in an attribute value generates an invalid manifest --> + <exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="-s" /> + <arg value="[:space:]" /> + <arg value="," /> + </exec> <war destfile="${project}.war" webxml="WEB-INF/web-out.xml"> <fileset dir="."> <include name="WEB-INF/**/*.class"/> @@ -74,9 +90,20 @@ <include name="index.html"/> <include name="WEB-INF/classes/${project}.properties"/> </fileset> + <manifest> + <attribute name="Build-Date" value="${build.timestamp}" /> + <attribute name="Base-Revision" value="${workspace.version}" /> + <attribute name="Workspace-Changes" value="${workspace.changes.tr}" /> + </manifest> </war> </target> + <target name="warUpToDate"> + <uptodate property="war.uptodate" targetfile="${project}.war"> + <srcfiles dir= "." includes="WEB-INF/web-out.xml WEB-INF/**/*.class images/*.png css.css index.html WEB-INF/classes/${project}.properties" /> + </uptodate> + </target> + <target name="bundle" depends="compile, precompilejsp"> <!-- Update the messages_*.po files. We need to supply the bat file for windows, and then change the fail property to true --> diff --git a/apps/susimail/build.xml b/apps/susimail/build.xml index 9ab38ce42..0f7aae9bc 100644 --- a/apps/susimail/build.xml +++ b/apps/susimail/build.xml @@ -10,6 +10,7 @@ <javac srcdir="./src/src" debug="true" deprecation="off" source="1.5" target="1.5" + includeAntRuntime="false" destdir="./src/WEB-INF/classes"> <compilerarg line="${javac.compilerargs}" /> <classpath> @@ -20,11 +21,35 @@ </javac> </target> <target name="jar" depends="compile, war" /> - <target name="war" depends="compile"> + + <target name="war" depends="compile, warUpToDate" unless="war.uptodate" > + <exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="list" /> + <arg value="changed" /> + <arg value="." /> + </exec> + <!-- \n in an attribute value generates an invalid manifest --> + <exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="-s" /> + <arg value="[:space:]" /> + <arg value="," /> + </exec> <war destfile="susimail.war" webxml="src/WEB-INF/web.xml" basedir="src/" excludes="WEB-INF/web.xml LICENSE src/**/*"> + <manifest> + <attribute name="Build-Date" value="${build.timestamp}" /> + <attribute name="Base-Revision" value="${workspace.version}" /> + <attribute name="Workspace-Changes" value="${workspace.changes.tr}" /> + </manifest> </war> </target> + + <target name="warUpToDate"> + <uptodate property="war.uptodate" targetfile="susimail.war"> + <srcfiles dir= "src" excludes="LICENSE src/**/*" /> + </uptodate> + </target> + <target name="javadoc"> <mkdir dir="./build" /> <mkdir dir="./build/javadoc" /> diff --git a/apps/systray/java/build.xml b/apps/systray/java/build.xml index 9d48f902c..dc8f08afb 100644 --- a/apps/systray/java/build.xml +++ b/apps/systray/java/build.xml @@ -16,28 +16,41 @@ source="1.5" target="1.5" destdir="./build/obj" + includeAntRuntime="false" includes="**/*.java" classpath="./lib/systray4j.jar:../../../core/java/build/i2p.jar" > <compilerarg line="${javac.compilerargs}" /> </javac> </target> - <target name="jar" depends="compile" unless="jar.uptodate"> - <mkdir dir="./build/jar_temp" /> - <copy todir="./build/jar_temp"> - <fileset dir="./build/obj" includes="**/*.class" /> - </copy> - <jar destfile="./build/systray.jar" basedir="./build/jar_temp" includes="**/*"> + + <target name="jar" depends="compile, jarUpToDate" unless="jar.uptodate"> + <exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="list" /> + <arg value="changed" /> + <arg value="." /> + </exec> + <!-- \n in an attribute value generates an invalid manifest --> + <exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="-s" /> + <arg value="[:space:]" /> + <arg value="," /> + </exec> + <jar destfile="./build/systray.jar" basedir="./build/obj" includes="**/*.class"> <manifest> <attribute name="Main-Class" value="net.i2p.apps.systray.SysTray" /> <attribute name="Class-Path" value="systray4j.jar" /> + <attribute name="Build-Date" value="${build.timestamp}" /> + <attribute name="Base-Revision" value="${workspace.version}" /> + <attribute name="Workspace-Changes" value="${workspace.changes.tr}" /> </manifest> </jar> - <delete dir="./build/jar_temp" /> </target> - <uptodate property="jar.uptodate" targetfile="./build/systray.jar"> - <srcfiles dir= "src" includes="**/*.java" /> - </uptodate> + <target name="jarUpToDate"> + <uptodate property="jar.uptodate" targetfile="./build/systray.jar"> + <srcfiles dir= "build/obj" includes="**/*.class" /> + </uptodate> + </target> <target name="javadoc"> <mkdir dir="./build" /> diff --git a/build.xml b/build.xml index d95ad3765..f7f88e789 100644 --- a/build.xml +++ b/build.xml @@ -97,7 +97,9 @@ </target> <target name="buildDesktopGui" depends="buildCore, buildrouter" > +<!-- <ant dir="apps/desktopgui" target="clean" /> +--> <ant dir="apps/desktopgui" target="jar" /> </target> @@ -105,7 +107,7 @@ <ant dir="apps/routerconsole/java/" target="jar" /> </target> - <target name="buildJetty" > + <target name="buildJetty" depends="buildProperties" > <ant dir="apps/jetty" target="build" /> </target> @@ -127,11 +129,21 @@ <copy file="router/java/build/router.jar" todir="build/" /> </target> - <target name="buildCore" > + <target name="buildCore" depends="buildProperties" > <ant dir="core/java/" target="jar" /> <copy file="core/java/build/i2p.jar" todir="build/" /> </target> + <target name="buildProperties" > + <exec executable="mtn" outputproperty="workspace.version" errorproperty="mtn.error1" failifexecutionfails="false" > + <arg value="automate" /> + <arg value="get_base_revision_id" /> + </exec> + <tstamp> + <format property="build.timestamp" pattern="yyyy-MM-dd HH:mm:ss z" timezone="UTC" locale="en" /> + </tstamp> + </target> + <!-- end of sub-build.xml targets --> <target name="buildWEB" depends="buildRouterConsole" > @@ -165,11 +177,13 @@ </condition> <ant target="doBuildEXE" /> </target> - <target name="doBuildEXE" unless="noExe"> + <target name="doBuildEXE" depends="buildProperties" unless="noExe"> <jar destfile="./build/launchi2p.jar"> <manifest> <attribute name="Main-Class" value="net.i2p.router.RouterLaunch" /> <attribute name="Class-Path" value="lib/i2p.jar lib/router.jar lib/jbigi.jar lib/BOB.jar lib/sam.jar lib/mstreaming.jar lib/streaming.jar lib/routerconsole.jar lib/i2ptunnel.jar lib/org.mortbay.jetty.jar lib/javax.servlet.jar lib/jasper-compiler.jar lib/jasper-runtime.jar lib/commons-logging.jar lib/commons-el.jar lib/wrapper.jar lib/systray.jar lib/systray4j.jar lib/desktopgui.jar" /> + <attribute name="Build-Date" value="${build.timestamp}" /> + <attribute name="Base-Revision" value="${workspace.version}" /> </manifest> </jar> <!-- now the standalone launcher exe --> @@ -678,17 +692,43 @@ <target name="prepjupdatefixes" depends="prepupdate, buildWEB"> <copy file="build/org.mortbay.jetty.jar" todir="pkg-temp/lib/" /> </target> - <target name="installer" depends="preppkg"> + <target name="installer" depends="preppkg, buildProperties"> <taskdef name="izpack" classpath="${basedir}/installer/lib/izpack/standalone-compiler.jar" classname="com.izforge.izpack.ant.IzPackTask" /> <mkdir dir="pkg-temp/installer" /> + <exec executable="mtn" outputproperty="workspace.changes.util" errorproperty="mtn.error.util" failifexecutionfails="false" > + <arg value="list" /> + <arg value="changed" /> + <arg value="core/java/src/net/i2p/util" /> + </exec> + <!-- \n in an attribute value generates an invalid manifest --> + <exec executable="tr" inputstring="${workspace.changes.util}" outputproperty="workspace.changes.util.tr" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="-s" /> + <arg value="[:space:]" /> + <arg value="," /> + </exec> <jar destfile="./pkg-temp/installer/copy.jar" basedir="./core/java/build/obj" includes="net/i2p/util/Copy.class net/i2p/util/FileUtil.class"> - <manifest><attribute name="Main-Class" value="net.i2p.util.Copy" /></manifest> + <manifest> + <attribute name="Main-Class" value="net.i2p.util.Copy" /> + <attribute name="Build-Date" value="${build.timestamp}" /> + <attribute name="Base-Revision" value="${workspace.version}" /> + <attribute name="Workspace-Changes" value="${workspace.changes.util.tr}" /> + </manifest> </jar> <jar destfile="./pkg-temp/installer/delete.jar" basedir="./core/java/build/obj" includes="net/i2p/util/Delete.class net/i2p/util/FileUtil.class"> - <manifest><attribute name="Main-Class" value="net.i2p.util.Delete" /></manifest> + <manifest> + <attribute name="Main-Class" value="net.i2p.util.Delete" /> + <attribute name="Build-Date" value="${build.timestamp}" /> + <attribute name="Base-Revision" value="${workspace.version}" /> + <attribute name="Workspace-Changes" value="${workspace.changes.util.tr}" /> + </manifest> </jar> <jar destfile="./pkg-temp/installer/exec.jar" basedir="./core/java/build/obj" includes="net/i2p/util/Exec.class"> - <manifest><attribute name="Main-Class" value="net.i2p.util.Exec" /></manifest> + <manifest> + <attribute name="Main-Class" value="net.i2p.util.Exec" /> + <attribute name="Build-Date" value="${build.timestamp}" /> + <attribute name="Base-Revision" value="${workspace.version}" /> + <attribute name="Workspace-Changes" value="${workspace.changes.util.tr}" /> + </manifest> </jar> <!-- Force 1.5 pack200 output diff --git a/core/java/build.xml b/core/java/build.xml index 27ca00e6f..8445d791e 100644 --- a/core/java/build.xml +++ b/core/java/build.xml @@ -21,20 +21,50 @@ <target name="compile" depends="depend"> <mkdir dir="./build" /> <mkdir dir="./build/obj" /> - <javac srcdir="./src" debug="true" source="1.5" target="1.5" deprecation="on" destdir="./build/obj" classpath="${javac.classpath}" > + <javac srcdir="./src" debug="true" source="1.5" target="1.5" deprecation="on" + includeAntRuntime="false" + destdir="./build/obj" classpath="${javac.classpath}" > <compilerarg line="${javac.compilerargs}" /> </javac> </target> + <target name="compileTest"> <mkdir dir="./build" /> <mkdir dir="./build/obj" /> - <javac srcdir="./src:./test" debug="true" source="1.5" target="1.5" deprecation="on" destdir="./build/obj" > + <javac srcdir="./src:./test" debug="true" source="1.5" target="1.5" deprecation="on" + includeAntRuntime="false" + destdir="./build/obj" > <compilerarg line="${javac.compilerargs}" /> </javac> </target> - <target name="jar" depends="compile"> - <jar destfile="./build/i2p.jar" basedir="./build/obj" includes="**/*.class" /> + + <target name="jar" depends="compile, jarUpToDate" unless="jar.uptodate" > + <exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="list" /> + <arg value="changed" /> + <arg value="." /> + </exec> + <!-- \n in an attribute value generates an invalid manifest --> + <exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="-s" /> + <arg value="[:space:]" /> + <arg value="," /> + </exec> + <jar destfile="./build/i2p.jar" basedir="./build/obj" includes="**/*.class" > + <manifest> + <attribute name="Build-Date" value="${build.timestamp}" /> + <attribute name="Base-Revision" value="${workspace.version}" /> + <attribute name="Workspace-Changes" value="${workspace.changes.tr}" /> + </manifest> + </jar> </target> + + <target name="jarUpToDate" > + <uptodate property="jar.uptodate" targetfile="build/i2p.jar" > + <srcfiles dir= "build/obj" includes="**/*.class" /> + </uptodate> + </target> + <target name="jarTest" depends="compileTest"> <jar destfile="./build/i2ptest.jar" basedir="./build/obj" includes="**/*.class" /> </target> diff --git a/router/java/build.xml b/router/java/build.xml index 69f6b4109..2a173f846 100644 --- a/router/java/build.xml +++ b/router/java/build.xml @@ -35,20 +35,49 @@ <target name="compile" depends="depend, dependVersion"> <mkdir dir="./build" /> <mkdir dir="./build/obj" /> - <javac srcdir="./src" debug="true" source="1.5" target="1.5" deprecation="on" destdir="./build/obj" classpath="../../core/java/build/i2p.jar" > + <javac srcdir="./src" debug="true" source="1.5" target="1.5" deprecation="on" + includeAntRuntime="false" + destdir="./build/obj" classpath="../../core/java/build/i2p.jar" > <compilerarg line="${javac.compilerargs}" /> </javac> </target> <target name="compileTest" depends="builddeptest"> <mkdir dir="./build" /> <mkdir dir="./build/obj" /> - <javac srcdir="./src:./test" debug="true" source="1.5" target="1.5" deprecation="on" destdir="./build/obj" classpath="../../core/java/build/i2ptest.jar" > + <javac srcdir="./src:./test" debug="true" source="1.5" target="1.5" deprecation="on" + includeAntRuntime="false" + destdir="./build/obj" classpath="../../core/java/build/i2ptest.jar" > <compilerarg line="${javac.compilerargs}" /> </javac> </target> - <target name="jar" depends="compile"> - <jar destfile="./build/router.jar" basedir="./build/obj" includes="**/*.class" /> + + <target name="jar" depends="compile, jarUpToDate" unless="jar.uptodate" > + <exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="list" /> + <arg value="changed" /> + <arg value="." /> + </exec> + <!-- \n in an attribute value generates an invalid manifest --> + <exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" > + <arg value="-s" /> + <arg value="[:space:]" /> + <arg value="," /> + </exec> + <jar destfile="./build/router.jar" basedir="./build/obj" includes="**/*.class" > + <manifest> + <attribute name="Build-Date" value="${build.timestamp}" /> + <attribute name="Base-Revision" value="${workspace.version}" /> + <attribute name="Workspace-Changes" value="${workspace.changes.tr}" /> + </manifest> + </jar> </target> + + <target name="jarUpToDate"> + <uptodate property="jar.uptodate" targetfile="build/router.jar" > + <srcfiles dir= "." includes="build/obj/**/*.class" /> + </uptodate> + </target> + <target name="jarTest" depends="compileTest"> <jar destfile="./build/routertest.jar" basedir="./build/obj" includes="**/*.class" /> </target> From d59e3f9200456944ad40fe78b24844f2671ecbe9 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 17 Feb 2011 12:52:57 +0000 Subject: [PATCH 221/463] - Add Arabic - A flag of for the Arabic language, including the four Pan-Arab colors. Note: This is the 1917 Arab revolt / Hashemite dynasty flag. Source: http://commons.wikimedia.org/wiki/File:Arabic-Language-Flag.svg License: I, the copyright holder of this work, release this work into the public domain. This applies worldwide. In some countries this may not be legally possible; if so: I grant anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law. Converted to 16x11 png by zzz / gimp - revert ch flag old change --- .../src/net/i2p/router/web/ConfigUIHelper.java | 7 ++++--- build.xml | 2 ++ installer/resources/icons/flags/ch.png | Bin 435 -> 347 bytes installer/resources/icons/flags/lang_ar.png | Bin 0 -> 228 bytes 4 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 installer/resources/icons/flags/lang_ar.png diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java index 845bb66a0..cf9a17140 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java @@ -46,9 +46,10 @@ public class ConfigUIHelper extends HelperBase { return rv; } - private static final String langs[] = {"de", "en", "es", "fr", "nl", "pt", "ru", "sv", "zh"}; - private static final String flags[] = {"de", "us", "es", "fr", "nl", "pt", "ru", "se", "cn"}; - private static final String xlangs[] = {_x("German"), _x("English"), _x("Spanish"),_x("French"), + private static final String langs[] = {"ar", "de", "en", "es", "fr", "nl", "pt", "ru", "sv", "zh"}; + private static final String flags[] = {"lang_ar", "de", "us", "es", "fr", "nl", "pt", "ru", "se", "cn"}; + private static final String xlangs[] = {_x("Arabic"), + _x("German"), _x("English"), _x("Spanish"),_x("French"), _x("Dutch"), _x("Portuguese"), _x("Russian"), _x("Swedish"), _x("Chinese")}; diff --git a/build.xml b/build.xml index f7f88e789..2e3549d3a 100644 --- a/build.xml +++ b/build.xml @@ -561,6 +561,8 @@ <copy todir="pkg-temp/docs/" > <fileset dir="installer/resources/readme/" includes="readme*.html" /> <fileset dir="installer/resources/proxy/" includes="*.ht" /> + <!-- lang_ar.png added in 0.8.4 --> + <fileset dir="installer/resources/" includes="icons/flags/lang_ar.png" /> </copy> </target> diff --git a/installer/resources/icons/flags/ch.png b/installer/resources/icons/flags/ch.png index 4e6fa9641e85e30b303edd6553096290bf0e4531..3fe13cab509b4dc01fd09daccc4bcf136c3dd9de 100644 GIT binary patch delta 331 zcmV-R0kr<J1KR?S8Gi-<004I44LJY+00DDSM?wIu&K&6g000JJOGiWi{{a60|De66 zlK=n!32;bRa{vGf6951U69E94oEQKA0PaadK~yNueUh<l12GImpW-wb;fkBXQy3n= zMY4wBQQUb4Z{*ae4$z5|ehN9Z?u7UQ1SEibB)=4BBv5-VEPqv+_<#WL&RVBag_S}G zp`OhkMuIyVcl>;Qr1t=XZr_kITrNm;DDC$ZGz^Q$I)I95an8?T37Mf}VAienPzIIb zQKb~+oRvMx-DPG<DQTW(&4+`28n5~lLZ}_v?oF)C?N^AgCg0zr15DHZfC7XV(QXIs z=z4t?Z@0*dFhq{80UP(~w%M|KN+_ky#18Og4#Q9(pI;!s90}uCr&<9*3z$G<_2bq* d@Gr)D?Jr7f)T*GofL8zj002ovPDHLkV1hk}jfDUJ delta 420 zcmV;V0bBmt0<!~<8Gix*00EANs`vl^010qNS#tmY4#NNd4#NS*Z>VGd00Cu5L_t(| zoK;c1PQp+a{aP!cLbMHO97tSBT$l(C&<Bu#jTc}xVItuLcn1;_pMZ@ScD6Dg3_vtN zBY|K98@NB7dn-koo8~*;J>NO!YmGJ0j>rs&QbAy>h`xxdcYn_#JV3KbMM^pJJOf0g zxm(cZo|l?VuY({_C>XdsFBZT1{bVAcXmdS{mfL8|%4O84OvYqNQFU*c&161*+inB$ z?beuU)t#1)9E2{E6diy#T;rTPl<pToY#hh!_13G^CJdS5?3YWEgv11-VE`MLk)ALm zi|qeB#|xwk2Y-XNdL2uUj$pj}iNp@I8KtsnH6Dgi2+~J#L7Yj>afq?#EjR~z(dk%- z{y7@0hr`(T()Y8EPbgli)lIj1?Ax~b7eaj)9#ike<7}%HK@@;!Mo{kezXS1t(0k71 zARIvyfUyY%K(@fWaNV<XTE%5ta7L5Khwmf$DPvc*tsQp2K0+8mfcyjNqS9`FqE>?d O0000<MNUMnLSTXb)w}@! diff --git a/installer/resources/icons/flags/lang_ar.png b/installer/resources/icons/flags/lang_ar.png new file mode 100644 index 0000000000000000000000000000000000000000..f9dee35851c8c76ae16b6cc53fe27aa1ead25f3d GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!3HGD9`RZNDaPU;cPEB*=VV?2IrBVS978nD zCwDv+_;dci0S7xf^%dXjJDodnm}f`;L6L>4#3RcVi4%-E25xf8IheWCU;o|NGe2%p zDuXgJv$GiU{zvZ7l1EK%#kfcxXgQOZl8~Tb`)j7-pVRT5cz&Edav<R8q4OUmwa+Zk z|C64Q@?h1;eb&l)FHAibR`><H{coxG^?&}fH9!6N5-fl=|G(PP`u`*=&-p0zKg(Gd Z7(V2`X$lm(I~C|s22WQ%mvv4FO#n$dS)c#_ literal 0 HcmV?d00001 From 5027b6ce33fa56bddad2fbf422781cd9f9d2d9cd Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 17 Feb 2011 12:55:28 +0000 Subject: [PATCH 222/463] * i2ptunnel: outproxy2 -> outproxyng (Ticket #394 take 2) --- history.txt | 11 ++++++++++- installer/resources/hosts.txt | 2 +- installer/resources/i2ptunnel.config | 2 +- router/java/src/net/i2p/router/RouterVersion.java | 2 +- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/history.txt b/history.txt index 4aa6626fa..de29ea7ed 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,12 @@ +2011-02-17 zzz + * Build: + - Add includeAntRuntime=false to all javac targets + - Add build date, mtn rev, and changed file list to all manifests + - Add unless=uptodate to all jar and war targets + (bob and dtg still todo) + * Console: Add Arabic + * i2ptunnel: outproxy2 -> outproxyng (Ticket #394 take 2) + 2011-02-15 zzz * i2psnark: Details link shuffle, mostly restore 0.8.3 behavior * Profiles: Punish rejections more, in an attempt to spread the @@ -75,7 +84,7 @@ - Don't expire outbound Piece messages, since we now defer loading the data from disk * i2ptunnel: - - Change connect proxy default to outproxy2.h2ik.i2p + - Change connect proxy default to outproxy2.h2ik.i2p (ticket #394) - IRCClient: Use tunnel log instance - Server: Full queue log tweak diff --git a/installer/resources/hosts.txt b/installer/resources/hosts.txt index 2f104a901..0a152e1b8 100644 --- a/installer/resources/hosts.txt +++ b/installer/resources/hosts.txt @@ -324,5 +324,5 @@ trac.i2p2.i2p=24SmhWiRDm-GzpV5Gq2sXhuvPpa1OihY7rkxQO4aHy5qKjr6zmEnZ3xQXdkFJJ0Z1l i2plugins.i2p=7oQz2gHOxFXxXTI6uGMk1Giv9UmviBhbubWKDjDqW1Rxvmm55tvC1znaAAZoV0X6YPd9aubYwsvfXAYatPHY1eehlELe3XdrgzqWvj566j62gv8atxhJQHjbaWqF-ZvntYRefVRFJ49sPi~MmAv5EBoSUKGuVu~8Bw-nKlCEhL7PLRdzA98515U5cFC6-srI2poZiWJ35rfbIqbEOLbECC4HbTedXv2PbRyukCiGrU-wPx4GnfSSaMeYMTAtHOf0IiYEKPSExjWkovgWbnCQaBzP4M-fAKIkSIMuOF8T4wmGaGESLCgiHukDoiiXmsTRm3cNeotm-BXncF~tft8sL4OB9cV-SeOtgkgIsaoO1JpQ1ACdtgOzlIB6H032jpuMQ5U9u1OQbTS8CtdRIlBv7Zcd6621MI2KGXLldHpcMs5hecbqctit~it5lB-wSkG6lllT2ZXBn8Yxeu8xo6kdrZ4bkolBYPEH1RPxiCj9GEchhUSPi75dkgb-vgoMnSMgAAAA i2pbote.i2p=~taSfBfeiMM5fW~qwUGZr4kAXmSoentWVjlQhTCKWhVj04KV34tLguNQEpHb1cA2eIwlkTpY0TPYUVKt866jLgQEteuIImmNuStVgm6DWh4baPqI22oSNC7O-4EW6PJy1tT9nr1NXu5p4w2jY4P4Css76xthaf6Z5YUOWAIwnMlptyac-qFHmjmU3CFqvKQgBnA4NB0ts7Y2~TcvciANllfsjfsMgFdg--FYpKiwC8bSsTHKJ3~oGb6osMqql~Vzr6kvIzfLnvabbuW8wjG2JvATBuJ3IY-BN59KdT84nc00SuMgmt1ywVvHOl0~n8Cjr1hASYiJ2FTxEQRbQ9WRaxbnk5BO~yeiedCsjw7ImsSES3GzcU5zVVx9p3bgx7P~X0h52VripL6bovj9YJznN3qw0eRCJGjY-du8azFNV6~6ZZ6ss14RNC~HKIzlhR7F5kF~4H2wfC1EdNlmm1cI0iYRdEdwSSVX47LngHyK-ZQbVZOGeEeCU8J8Vhk~8WdLAAAA planet.i2p=W0omtMApOdlTkgJoct08QnzDkeb~xc60df5Cx3k3qqOFmyEkRB65NdpSdvldI5STmXmXlZe68f8Hu1dfBMmKvfpBFMpP-mRVYuHbEa4N1dRkp3AOswZFO51lSC~MVPMZKGHAv0cfv5WFaJ9nfuaR7iYYWJF11xotoPTMbJdB-I3XPC8rxHI-73ATlOD4cU9oZ6BYcBE0dun9zw4IHBcRpnFRx~s-TkevNfPnBqujB-NNgA8a5s~QUj0h3FwwUWsNB8f1Uwy~DwoQh7pMp6dsZ3umEyBn2HaXZasSmbzB30qkQRs9vrAtIFdIzCQ~8gI2cHdHEPgExUQX~xlM8QZEgnLXSfS93asWPdpitv~KT7bO-35BgTBdCozHTCcvys6bYJ24UnkFVBE0D2L0t98neelWkJSaEU0QzxdRphoCZY8OABQIaS4qw6PEFD1Un1vxNCh~TDFWcYBZ3Rqsc~ISW0wF7oOS6-DPT3q5O8cGLc8iAEdRchrU9XyAHAKVlEZxAAAA -outproxy2.h2ik.i2p=zjXqVu1pnPpsR0DnqiIlAidy8GSLznEupTrb~vUg-NELU3~Gmbqc-soJlYu69VyQdZxVGNZ1PsgacjJwxtd8otZ~lgqsJV2aDJdzDIClEj9hYM4hV4ClHdZQnEOEHj1fc5TK7n31o3jr94kz6ZtdG9eL7F~YIE7EcADJ7ECg-wz05~xj8NK4gH67mMSCHgX92RTQRTGFtxxrPkVRLD8GE069wGmRpV9xt3wZqn12ijdo1HjNMbqxZfSbulscm0M2~qy4fwzF1OYWSg5-~NY02iNygwKYhG2CdgDyFALVGvHfJ-wzZ~pKj62-c8HVg1qHE6B1bKKO5GID03JoRAlEeZFkrqqmUQyQvzxhlUJlcnaBOaCoIm9L8999cHQj7-JHJTTvJ2TltvSbj1TcyoIFEdSyW22TJGRMoopezPoCERhemy79cb~SvsK46m4J7hBDjQl7Rgzp-uC5aSMEN3PU2g1w5A3DWxodUy2Zzg~moJaKbeS8Vf~mLVEt63djlFMxAAAA exotrack.i2p=Ly1vs4plBuGisqlMiQOjhVkXFZPBMy9joSCrus~tuLXBRXDrPYG9WXJMzY4gb3LiW0VVawv0kLgikX8eeeruXmgKwQW5zB9UPSP0CQnXTRelE3Jn7lev~re4woHvgS-EGBwWikxqXF3f7W8-LhieI0JhBZxItiWhJJME07oncW0kgS8UIMl0wqN2Y-p0sryFCN056TfGNTXigfxrSLqKnpi6a2OyEkF62qvRID3qXzRque0vKQjqvavq2mqxjFrSgLUoyKod5h9Px6qK08gtoAyDKMLPk7fPgReYKj6awiOxRSGfsMpZD3~ZuV0Sts2XtCau3S3myYMIDe5oKziPtZRIej4KBDxT0YYIw5v4RoqzqF88gNgHDfkPZ25JKTOt5xGcPTG8kwYrtx39PX6NrJmv-I~LUz6sZZlIW24k1qbO7zBxZ6mazldQY1~FJGXzn5MNzsxp44iOZdMDJJh18N0Psthk2hqlQOS4L0Ss1Odm1czhBxf1Y~j3L-QsMttcAAAA +outproxyng.h2ik.i2p=1RqMQd58RgA4D~XT34rCjQteJVQwFKQbPK5P03GetL-DyCfKV6Vg61xyxGOZK-K4KTXXf45PG~oDAWIzE7UY5aXN9oAjHXfPrU9hHxv35BaxFqUpsJLgjWu41OwSjl5aN2-freH4gGVSiL62I1y2bcXHc2kVHlbToQOy8bJoS3KSDHEeU0r79f~cY3xf6rBHpHNMJtdYdnWlLq5KFc2cz~8lIut~sSIAwUEfebBkhfl2ctvdEGdSshBWGTxXiahtQX0xraynF-Cex2hxvBAl0g9aoOnrLx~Gses54WPD-m3RArI3fiaxEALRuFa0mfrrEgjOhBtVU8IlTYrTEkR8JSGofsEmuqqM03FIrwOv6lJZi-xemiNUr3OX6VdO4ckIg69BxpCYzP2IxLO5r8lSwyHqGbYPFxBIjbSMsv6tGWWdglV4Y9sQHTarboA-XDih3DzDpomb1~78cSiV3PRidjj4MDggn1abkQbRVd6WLV~eTi54bctS-JwW-I5Xyqq~AAAA diff --git a/installer/resources/i2ptunnel.config b/installer/resources/i2ptunnel.config index 0fbed0a76..7b0e37b18 100644 --- a/installer/resources/i2ptunnel.config +++ b/installer/resources/i2ptunnel.config @@ -124,7 +124,7 @@ tunnel.6.type=connectclient tunnel.6.sharedClient=true tunnel.6.interface=127.0.0.1 tunnel.6.listenPort=4445 -tunnel.6.proxyList=outproxy2.h2ik.i2p +tunnel.6.proxyList=outproxyng.h2ik.i2p tunnel.6.i2cpHost=127.0.0.1 tunnel.6.i2cpPort=7654 tunnel.6.option.inbound.nickname=shared clients diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index e36cd3b14..7f4edb975 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 = 12; + public final static long BUILD = 13; /** for example "-test" */ public final static String EXTRA = ""; From b208295cdb1fe31aaada77f09fc3a48057a98fac Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 17 Feb 2011 13:50:43 +0000 Subject: [PATCH 223/463] fix ant test thx welt --- build.xml | 18 ++++++++++-------- core/java/build.xml | 3 ++- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/build.xml b/build.xml index 2e3549d3a..beb8451b7 100644 --- a/build.xml +++ b/build.xml @@ -771,29 +771,31 @@ <launch4j configFile="./installer/i2pstandalone.xml" /> <!-- thazzit --> </target> - <target name="test"> + + <target name="test" depends="buildProperties" > <ant dir="core/java/" target="test" /> </target> - <target name="junit.report"> + <target name="junit.report" depends="buildProperties" > <ant dir="core/java/" target="junit.report" /> </target> - <target name="clover.report"> + <target name="clover.report" depends="buildProperties" > <ant dir="core/java/" target="clover.report" /> </target> <target name="test.report" depends="junit.report, clover.report"/> - <target name="fulltest"> + <target name="fulltest" depends="buildProperties" > <ant dir="core/java/" target="fulltest" /> <ant dir="router/java/" target="fulltest" /> </target> - <target name="fullclovertest"> + <target name="fullclovertest" depends="buildProperties" > <ant dir="core/java/" target="fullclovertest" /> <ant dir="router/java/" target="fullclovertest" /> </target> + <target name="syndie" > <ant dir="apps/syndie/java/" target="standalone" /> <copy file="apps/syndie/java/syndie-standalone.zip" todir="." /> </target> - <target name="i2psnark"> + <target name="i2psnark" depends="buildProperties" > <ant dir="apps/i2psnark/java" target="standalone" /> <copy file="apps/i2psnark/java/i2psnark-standalone.zip" todir="." /> </target> @@ -998,7 +1000,7 @@ <target name="debian" depends="distclean, debian-source, debian-binary" /> - <target name="debian-binary"> + <target name="debian-binary" depends="buildProperties" > <echo message="Did you update the version in these files?" /> <exec executable="ls" failonerror="true"> <arg value="-l" /> @@ -1015,7 +1017,7 @@ <arg value="amd64" /> </exec> </target> - <target name="debian-source"> + <target name="debian-source" depends="buildProperties" > <!-- bundle the 20MB jetty 5 lib since there probably isn't a deb for it --> <ant dir="apps/jetty" target="ensureJettylib" /> <echo message="Did you update the version in these files?" /> diff --git a/core/java/build.xml b/core/java/build.xml index 8445d791e..60f1a4dcc 100644 --- a/core/java/build.xml +++ b/core/java/build.xml @@ -31,8 +31,9 @@ <target name="compileTest"> <mkdir dir="./build" /> <mkdir dir="./build/obj" /> + <!-- junit classes are in ant runtime --> <javac srcdir="./src:./test" debug="true" source="1.5" target="1.5" deprecation="on" - includeAntRuntime="false" + includeAntRuntime="true" destdir="./build/obj" > <compilerarg line="${javac.compilerargs}" /> </javac> From 6c7e913d5ee2dea9ca57176fdbef224491127db7 Mon Sep 17 00:00:00 2001 From: dev <dev@welterde.de> Date: Thu, 17 Feb 2011 16:35:30 +0000 Subject: [PATCH 224/463] fixed formatting --- .../client/datagram/I2PDatagramDissector.java | 96 +++++++++---------- .../i2p/client/datagram/I2PDatagramMaker.java | 6 +- 2 files changed, 51 insertions(+), 51 deletions(-) diff --git a/core/java/src/net/i2p/client/datagram/I2PDatagramDissector.java b/core/java/src/net/i2p/client/datagram/I2PDatagramDissector.java index 864fc1e56..be88bdb53 100644 --- a/core/java/src/net/i2p/client/datagram/I2PDatagramDissector.java +++ b/core/java/src/net/i2p/client/datagram/I2PDatagramDissector.java @@ -63,36 +63,36 @@ public final class I2PDatagramDissector { public void loadI2PDatagram(byte[] dgram) throws DataFormatException { ByteArrayInputStream dgStream = new ByteArrayInputStream(dgram); byte[] rxTrimmedPayload; - - // set invalid(very important!) - this.valid = false; - + + // set invalid(very important!) + this.valid = false; + try { rxDest = new Destination(); rxSign = new Signature(); - - // read destination + + // read destination rxDest.readBytes(dgStream); - - // read signature + + // read signature rxSign.readBytes(dgStream); - - // read payload + + // read payload rxPayloadLen = dgStream.read(rxPayload); - - // calculate the hash of the payload + + // calculate the hash of the payload this.rxHash = hashGen.calculateHash(rxPayload, 0, rxPayloadLen); - assert this.hashGen.calculateHash(this.extractPayload()).equals(this.rxHash); + assert this.hashGen.calculateHash(this.extractPayload()).equals(this.rxHash); } catch (IOException e) { _log.error("Caught IOException - INCONSISTENT STATE!", e); } catch(AssertionError e) { - _log.error("Assertion failed!", e); - } - + _log.error("Assertion failed!", e); + } + //_log.debug("Datagram payload size: " + rxPayloadLen + "; content:\n" // + HexDump.dump(rxPayload, 0, rxPayloadLen)); } - + /** * Get the payload carried by an I2P repliable datagram (previously loaded * with the loadI2PDatagram() method), verifying the datagram signature. @@ -106,7 +106,7 @@ public final class I2PDatagramDissector { return this.extractPayload(); } - + /** * Get the sender of an I2P repliable datagram (previously loaded with the * loadI2PDatagram() method), verifying the datagram signature. @@ -118,23 +118,23 @@ public final class I2PDatagramDissector { public Destination getSender() throws I2PInvalidDatagramException { this.verifySignature(); - return this.extractSender(); + return this.extractSender(); } - - /** - * Extract the hash of the payload of an I2P repliable datagram (previously - * loaded with the loadI2PDatagram() method), verifying the datagram - * signature. - * @return The hash of the payload of the I2P repliable datagram - * @throws I2PInvalidDatagramException if the signature verification fails - */ - public Hash getHash() throws I2PInvalidDatagramException { - // make sure it has a valid signature - this.verifySignature(); - - return this.extractHash(); - } - + + /** + * Extract the hash of the payload of an I2P repliable datagram (previously + * loaded with the loadI2PDatagram() method), verifying the datagram + * signature. + * @return The hash of the payload of the I2P repliable datagram + * @throws I2PInvalidDatagramException if the signature verification fails + */ + public Hash getHash() throws I2PInvalidDatagramException { + // make sure it has a valid signature + this.verifySignature(); + + return this.extractHash(); + } + /** * Extract the payload carried by an I2P repliable datagram (previously * loaded with the loadI2PDatagram() method), without verifying the @@ -145,10 +145,10 @@ public final class I2PDatagramDissector { public byte[] extractPayload() { byte[] retPayload = new byte[this.rxPayloadLen]; System.arraycopy(this.rxPayload, 0, retPayload, 0, this.rxPayloadLen); - + return retPayload; } - + /** * Extract the sender of an I2P repliable datagram (previously loaded with * the loadI2PDatagram() method), without verifying the datagram signature. @@ -168,21 +168,21 @@ public final class I2PDatagramDissector { return retDest; } - - /** - * Extract the hash of the payload of an I2P repliable datagram (previously - * loaded with the loadI2PDatagram() method), without verifying the datagram - * signature. - * @return The hash of the payload of the I2P repliable datagram - */ - public Hash extractHash() { - return this.rxHash; - } + + /** + * Extract the hash of the payload of an I2P repliable datagram (previously + * loaded with the loadI2PDatagram() method), without verifying the datagram + * signature. + * @return The hash of the payload of the I2P repliable datagram + */ + public Hash extractHash() { + return this.rxHash; + } /** * Verify the signature of this datagram (previously loaded with the * loadI2PDatagram() method) - * @throws I2PInvalidDatagramException if the signature is invalid + * @throws I2PInvalidDatagramException if the signature is invalid */ public void verifySignature() throws I2PInvalidDatagramException { // first check if it already got validated @@ -191,7 +191,7 @@ public final class I2PDatagramDissector { if (rxSign == null || rxSign.getData() == null || rxDest == null || rxDest.getSigningPublicKey() == null) throw new I2PInvalidDatagramException("Datagram not yet read"); - + // now validate if (!this.dsaEng.verifySignature(rxSign, rxHash.getData(), rxDest.getSigningPublicKey())) throw new I2PInvalidDatagramException("Incorrect I2P repliable datagram signature"); diff --git a/core/java/src/net/i2p/client/datagram/I2PDatagramMaker.java b/core/java/src/net/i2p/client/datagram/I2PDatagramMaker.java index 4de311c5f..7d711492b 100644 --- a/core/java/src/net/i2p/client/datagram/I2PDatagramMaker.java +++ b/core/java/src/net/i2p/client/datagram/I2PDatagramMaker.java @@ -70,12 +70,12 @@ public final class I2PDatagramMaker { try { sxDGram.write(sxDestBytes); - + dsaEng.sign(hashGen.calculateHash(payload).toByteArray(), sxPrivKey).writeBytes(sxDGram); - + sxDGram.write(payload); - + return sxDGram.toByteArray(); } catch (IOException e) { _log.error("Caught IOException", e); From ef50c122fcf858d68648aebfff8567dede32c456 Mon Sep 17 00:00:00 2001 From: mathiasdm <mathiasdm@mail.i2p> Date: Thu, 17 Feb 2011 17:19:39 +0000 Subject: [PATCH 225/463] Added the option to disable desktopgui. --- apps/desktopgui/locale/messages_en.po | 17 ++- apps/desktopgui/locale/messages_nl.po | 22 ++- apps/desktopgui/locale/messages_ru.po | 18 ++- apps/desktopgui/locale/messages_zh.po | 91 +++++++------ .../i2p/desktopgui/InternalTrayManager.java | 20 +++ .../gui/DesktopguiConfigurationFrame.java | 128 ++++++++++++++++++ .../i2p/router/web/RouterConsoleRunner.java | 4 +- 7 files changed, 243 insertions(+), 57 deletions(-) create mode 100644 apps/desktopgui/src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java diff --git a/apps/desktopgui/locale/messages_en.po b/apps/desktopgui/locale/messages_en.po index 46cd8b26e..f5e81ed72 100644 --- a/apps/desktopgui/locale/messages_en.po +++ b/apps/desktopgui/locale/messages_en.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P desktopgui\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-13 11:54+0000\n" +"POT-Creation-Date: 2011-02-16 17:10+0000\n" "PO-Revision-Date: 2010-06-15 14:09+0100\n" "Last-Translator: duck <duck@mail.i2p>\n" "Language-Team: duck <duck@mail.i2p>\n" @@ -29,14 +29,23 @@ msgstr "" msgid "Starting" msgstr "" -#: src/net/i2p/desktopgui/InternalTrayManager.java:25 +#: src/net/i2p/desktopgui/InternalTrayManager.java:26 msgid "Launch I2P Browser" msgstr "" -#: src/net/i2p/desktopgui/InternalTrayManager.java:49 -msgid "Restart I2P" +#: src/net/i2p/desktopgui/InternalTrayManager.java:50 +msgid "Configure desktopgui" msgstr "" #: src/net/i2p/desktopgui/InternalTrayManager.java:67 +msgid "Restart I2P" +msgstr "" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:85 msgid "Stop I2P" msgstr "" + +#. Translate interface +#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:26 +msgid "Should tray icon be enabled?" +msgstr "" diff --git a/apps/desktopgui/locale/messages_nl.po b/apps/desktopgui/locale/messages_nl.po index ad390cb62..2e2fbb298 100644 --- a/apps/desktopgui/locale/messages_nl.po +++ b/apps/desktopgui/locale/messages_nl.po @@ -1,15 +1,16 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"POT-Creation-Date: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-16 17:10+0000\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -# NL +# NL #: src/net/i2p/desktopgui/ExternalTrayManager.java:23 msgid "Start I2P" msgstr "I2P starten" @@ -22,20 +23,29 @@ msgstr "I2P is aan het starten!" msgid "Starting" msgstr "Bezig met starten" -#: src/net/i2p/desktopgui/InternalTrayManager.java:25 +#: src/net/i2p/desktopgui/InternalTrayManager.java:26 msgid "Launch I2P Browser" msgstr "Start I2P Browser" -#: src/net/i2p/desktopgui/InternalTrayManager.java:49 +#: src/net/i2p/desktopgui/InternalTrayManager.java:50 +msgid "Configure desktopgui" +msgstr "" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:67 msgid "Restart I2P" msgstr "I2P herstarten" -#: src/net/i2p/desktopgui/InternalTrayManager.java:67 +#: src/net/i2p/desktopgui/InternalTrayManager.java:85 msgid "Stop I2P" msgstr "I2P stoppen" +#. Translate interface +#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:26 +msgid "Should tray icon be enabled?" +msgstr "" + #~ msgid "Browser not found" #~ msgstr "Browser niet gevonden" + #~ msgid "The default browser for your system was not found." #~ msgstr "De standaard webbrowser voor je systeem werd niet gevonden." - diff --git a/apps/desktopgui/locale/messages_ru.po b/apps/desktopgui/locale/messages_ru.po index a5d936a66..1ac45bc1b 100644 --- a/apps/desktopgui/locale/messages_ru.po +++ b/apps/desktopgui/locale/messages_ru.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: I2P desktopgui\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-14 18:14+0000\n" +"POT-Creation-Date: 2011-02-16 17:10+0000\n" "PO-Revision-Date: 2011-02-15 00:18+0500\n" "Last-Translator: Hidden Z <hiddenz@mail.i2p>\n" "Language-Team: duck <duck@mail.i2p>\n" -"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: src/net/i2p/desktopgui/ExternalTrayManager.java:23 @@ -31,15 +31,23 @@ msgstr "I2P запускается!" msgid "Starting" msgstr "Запускается" -#: src/net/i2p/desktopgui/InternalTrayManager.java:25 +#: src/net/i2p/desktopgui/InternalTrayManager.java:26 msgid "Launch I2P Browser" msgstr "Запустить I2P браузер" -#: src/net/i2p/desktopgui/InternalTrayManager.java:49 +#: src/net/i2p/desktopgui/InternalTrayManager.java:50 +msgid "Configure desktopgui" +msgstr "" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:67 msgid "Restart I2P" msgstr "Перезапустить I2P" -#: src/net/i2p/desktopgui/InternalTrayManager.java:67 +#: src/net/i2p/desktopgui/InternalTrayManager.java:85 msgid "Stop I2P" msgstr "Остановить I2P" +#. Translate interface +#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:26 +msgid "Should tray icon be enabled?" +msgstr "" diff --git a/apps/desktopgui/locale/messages_zh.po b/apps/desktopgui/locale/messages_zh.po index 1aed8c46d..5dca9e881 100644 --- a/apps/desktopgui/locale/messages_zh.po +++ b/apps/desktopgui/locale/messages_zh.po @@ -1,41 +1,50 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-12 11:40+0000\n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: src/net/i2p/desktopgui/ExternalTrayManager.java:23 -msgid "Start I2P" -msgstr "启动 I2P" - -#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 -msgid "I2P is starting!" -msgstr "正在启动 I2P !" - -#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 -msgid "Starting" -msgstr "正在启动" - -#: src/net/i2p/desktopgui/InternalTrayManager.java:25 -msgid "Launch I2P Browser" -msgstr "正在启动I2P浏览器" - -#: src/net/i2p/desktopgui/InternalTrayManager.java:49 -msgid "Restart I2P" -msgstr "重启 I2P" - -#: src/net/i2p/desktopgui/InternalTrayManager.java:67 -msgid "Stop I2P" -msgstr "停止 I2P" - -#~ msgid "Browser not found" -#~ msgstr "Browser niet gevonden" - -#~ msgid "The default browser for your system was not found." -#~ msgstr "De standaard webbrowser voor je systeem werd niet gevonden." +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-16 17:10+0000\n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:23 +msgid "Start I2P" +msgstr "启动 I2P" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 +msgid "I2P is starting!" +msgstr "正在启动 I2P !" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 +msgid "Starting" +msgstr "正在启动" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:26 +msgid "Launch I2P Browser" +msgstr "正在启动I2P浏览器" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:50 +msgid "Configure desktopgui" +msgstr "" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:67 +msgid "Restart I2P" +msgstr "重启 I2P" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:85 +msgid "Stop I2P" +msgstr "停止 I2P" + +#. Translate interface +#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:26 +msgid "Should tray icon be enabled?" +msgstr "" + +#~ msgid "Browser not found" +#~ msgstr "Browser niet gevonden" + +#~ msgid "The default browser for your system was not found." +#~ msgstr "De standaard webbrowser voor je systeem werd niet gevonden." diff --git a/apps/desktopgui/src/net/i2p/desktopgui/InternalTrayManager.java b/apps/desktopgui/src/net/i2p/desktopgui/InternalTrayManager.java index 46cb3deef..e1247dde6 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/InternalTrayManager.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/InternalTrayManager.java @@ -6,6 +6,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.SwingWorker; +import net.i2p.desktopgui.gui.DesktopguiConfigurationFrame; import net.i2p.desktopgui.router.RouterManager; import net.i2p.desktopgui.util.BrowseException; @@ -46,6 +47,23 @@ public class InternalTrayManager extends TrayManager { }.execute(); } }); + MenuItem desktopguiConfigurationLauncher = new MenuItem(_("Configure desktopgui")); + desktopguiConfigurationLauncher.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent arg0) { + new SwingWorker<Object, Object>() { + + @Override + protected Object doInBackground() throws Exception { + new DesktopguiConfigurationFrame().setVisible(true); + return null; + } + + }.execute(); + } + + }); MenuItem restartItem = new MenuItem(_("Restart I2P")); restartItem.addActionListener(new ActionListener() { @@ -85,6 +103,8 @@ public class InternalTrayManager extends TrayManager { popup.add(browserLauncher); popup.addSeparator(); + popup.add(desktopguiConfigurationLauncher); + popup.addSeparator(); popup.add(restartItem); popup.add(stopItem); diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java b/apps/desktopgui/src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java new file mode 100644 index 000000000..83711e95d --- /dev/null +++ b/apps/desktopgui/src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java @@ -0,0 +1,128 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +/* + * ConfigurationFrame.java + * + * Created on Feb 16, 2011, 8:03:14 AM + */ + +package net.i2p.desktopgui.gui; + +import java.util.logging.Level; +import java.util.logging.Logger; +import net.i2p.desktopgui.i18n.DesktopguiTranslator; +import net.i2p.desktopgui.router.RouterManager; + +/** + * + * @author mathias + */ +public class DesktopguiConfigurationFrame extends javax.swing.JFrame { + + /** Creates new form ConfigurationFrame */ + public DesktopguiConfigurationFrame() { + initComponents(); + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents + private void initComponents() { + + desktopguiEnabled = new javax.swing.JCheckBox(); + okButton = new javax.swing.JButton(); + cancelButton = new javax.swing.JButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + setTitle(_("Tray icon configuration")); + + desktopguiEnabled.setSelected(true); + desktopguiEnabled.setText(_("Should tray icon be enabled?")); + desktopguiEnabled.setActionCommand("shouldDesktopguiBeEnabled"); + + okButton.setText("OK"); + okButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + okButtonMouseClicked(evt); + } + }); + + cancelButton.setText("Cancel"); + cancelButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + cancelButtonMouseClicked(evt); + } + }); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(desktopguiEnabled) + .addGroup(layout.createSequentialGroup() + .addComponent(okButton) + .addGap(18, 18, 18) + .addComponent(cancelButton))) + .addContainerGap(237, Short.MAX_VALUE)) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(desktopguiEnabled) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(okButton) + .addComponent(cancelButton)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + pack(); + }// </editor-fold>//GEN-END:initComponents + + private void okButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_okButtonMouseClicked + String property = "desktopgui.enabled"; + String value; + if(!desktopguiEnabled.isSelected()) { + value = "false"; + System.out.println("Disabling desktopgui"); + } + else { + value = "true"; + System.out.println("Enabling desktopgui"); + } + try { + RouterManager.getRouterContext().setProperty(property, value); + } catch (Exception ex) { + Logger.getLogger(DesktopguiConfigurationFrame.class.getName()).log(Level.SEVERE, null, ex); + } + System.out.println("Applying desktopgui configuration!"); + this.dispose(); + }//GEN-LAST:event_okButtonMouseClicked + + private void cancelButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_cancelButtonMouseClicked + System.out.println("Cancelling configuration!"); + this.dispose(); + }//GEN-LAST:event_cancelButtonMouseClicked + + protected static String _(String s) { + return DesktopguiTranslator._(s); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton cancelButton; + private javax.swing.JCheckBox desktopguiEnabled; + private javax.swing.JButton okButton; + // End of variables declaration//GEN-END:variables + +} diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java index fe53abdb1..c50eb96cb 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -329,7 +329,9 @@ public class RouterConsoleRunner { //TODO: move away from routerconsole into a separate application. //ApplicationManager? VersionComparator v = new VersionComparator(); - if(v.compare(System.getProperty("java.runtime.version"), "1.6") >= 0) { + String desktopguiEnabled = I2PAppContext.getGlobalContext().getProperty("desktopgui.enabled"); + int recentJava = v.compare(System.getProperty("java.runtime.version"), "1.6"); + if(recentJava >= 0 && (desktopguiEnabled == null || desktopguiEnabled.equalsIgnoreCase("true"))) { String[] args = new String[0]; net.i2p.desktopgui.Main.beginStartup(args); } From 6885f967414292a050a11bea2c75df52a3677591 Mon Sep 17 00:00:00 2001 From: hamada <hamada@mail.i2p> Date: Thu, 17 Feb 2011 21:09:31 +0000 Subject: [PATCH 226/463] Arabic translation of error messages --- .../proxy/ahelper-conflict-header.ht | 4 +-- installer/resources/proxy/denied-header_ar.ht | 20 +++++++++++++ installer/resources/proxy/dnfb-header_ar.ht | 26 +++++++++++++++++ installer/resources/proxy/dnfp-header.ht | 2 +- installer/resources/proxy/dnfp-header_ar.ht | 28 +++++++++++++++++++ .../resources/proxy/localhost-header_ar.ht | 24 ++++++++++++++++ .../resources/proxy/noproxy-header_ar.ht | 20 +++++++++++++ .../resources/proxy/protocol-header_ar.ht | 21 ++++++++++++++ installer/resources/readme/readme.html | 3 +- installer/resources/readme/readme_de.html | 1 + installer/resources/readme/readme_es.html | 1 + installer/resources/readme/readme_fr.html | 1 + installer/resources/readme/readme_nl.html | 1 + installer/resources/readme/readme_pt.html | 1 + installer/resources/readme/readme_ru.html | 1 + installer/resources/readme/readme_sv.html | 1 + installer/resources/readme/readme_zh.html | 1 + 17 files changed, 152 insertions(+), 4 deletions(-) create mode 100644 installer/resources/proxy/denied-header_ar.ht create mode 100644 installer/resources/proxy/dnfb-header_ar.ht create mode 100644 installer/resources/proxy/dnfp-header_ar.ht create mode 100644 installer/resources/proxy/localhost-header_ar.ht create mode 100644 installer/resources/proxy/noproxy-header_ar.ht create mode 100644 installer/resources/proxy/protocol-header_ar.ht diff --git a/installer/resources/proxy/ahelper-conflict-header.ht b/installer/resources/proxy/ahelper-conflict-header.ht index 670a64693..d3a4d8380 100644 --- a/installer/resources/proxy/ahelper-conflict-header.ht +++ b/installer/resources/proxy/ahelper-conflict-header.ht @@ -4,7 +4,7 @@ Cache-control: no-cache Connection: close Proxy-Connection: close -<html><head> +<html lang="ar" dir="rtl"><head> <title>I2P Warning: Destination key conflict @@ -12,7 +12,7 @@ Proxy-Connection: close

    Warning: Destination Key Conflict

    diff --git a/installer/resources/proxy/denied-header_ar.ht b/installer/resources/proxy/denied-header_ar.ht new file mode 100644 index 000000000..9e9d83a83 --- /dev/null +++ b/installer/resources/proxy/denied-header_ar.ht @@ -0,0 +1,20 @@ +HTTP/1.1 403 Request Denied +Content-Type: text/html; charset=UTF-8 +Cache-control: no-cache +Connection: close +Proxy-Connection: close + + +تحذير: لم يحدد بروكسي خارجي + + + + + +
    +

    تحذير : رفض طلب

    +حاولت الدخول الى موقع I2P خارج الشبكة. +
    diff --git a/installer/resources/proxy/dnfb-header_ar.ht b/installer/resources/proxy/dnfb-header_ar.ht new file mode 100644 index 000000000..1ceb0d102 --- /dev/null +++ b/installer/resources/proxy/dnfb-header_ar.ht @@ -0,0 +1,26 @@ +HTTP/1.1 400 Destination Not Found +Content-Type: text/html; charset=UTF-8 +Cache-control: no-cache +Connection: close +Proxy-Connection: close + + + +تحذير: عنوان eepsite خاطئ + + + + + + +
    +

    +تحذير: عنوان eepsite خاطئ +

    +عنوان الموقع eepsite خاطئ، أو ربما قمت بلصق عنوان غير موجود، أو الموقع متوقف. يمكنك + +اعادة المحاولة. +
    لم يتم الوصول الى هذا العنوان:

    diff --git a/installer/resources/proxy/dnfp-header.ht b/installer/resources/proxy/dnfp-header.ht index 9f627bb8d..f6e781e30 100644 --- a/installer/resources/proxy/dnfp-header.ht +++ b/installer/resources/proxy/dnfp-header.ht @@ -4,7 +4,7 @@ Cache-control: no-cache Connection: close Proxy-Connection: close - + I2P Warning: Outproxy Not Found diff --git a/installer/resources/proxy/dnfp-header_ar.ht b/installer/resources/proxy/dnfp-header_ar.ht new file mode 100644 index 000000000..b194b1266 --- /dev/null +++ b/installer/resources/proxy/dnfp-header_ar.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 + + +تحذير: لابوجد بروكسي خارجي + + + + + +
    +

    تحذير: لابوجد بروكسي خارجي

    +لم يتم ايجاد بروكسي خارجي www +خارج الشبكة أو غير متصل جيدا بباقي المستخدمين. +يمكنك +اعادة المحاولة +لإختيار بروكسي خارجي جديد +هنا +(اذا كان لديك اكثر من واحد). +اذا استمر المشكل قم بتحرير قائمة البروكسي الخارجية +هنا. +
    لم يستطع الوصول الى هذا العنوان

    diff --git a/installer/resources/proxy/localhost-header_ar.ht b/installer/resources/proxy/localhost-header_ar.ht new file mode 100644 index 000000000..dc6b0304e --- /dev/null +++ b/installer/resources/proxy/localhost-header_ar.ht @@ -0,0 +1,24 @@ +HTTP/1.1 403 Access Denied +Content-Type: text/html; charset=UTF-8 +Cache-control: no-cache +Connection: close +Proxy-Connection: close + + +خطأ: تم رفض الطلب + + + + + +
    +

    خطـأ: عنوان محلي

    +خطأ في اعدادات المتصفح. لا تستعمل بروكسي للوصول الى شاشة التحكم، localhost او الشبكة المحلية LAN. + +
    diff --git a/installer/resources/proxy/noproxy-header_ar.ht b/installer/resources/proxy/noproxy-header_ar.ht new file mode 100644 index 000000000..0f6f1ba64 --- /dev/null +++ b/installer/resources/proxy/noproxy-header_ar.ht @@ -0,0 +1,20 @@ +HTTP/1.1 503 Service Unavailable +Content-Type: text/html; charset=UTF-8 +Cache-control: no-cache +Connection: close +Proxy-Connection: close + + +تحذير: لم يحدد بروكسي خارجي + + + + + +
    +

    تحذير: لم يحدد بروكسي خارجي

    +قمت بطلب موقع خارج عن شبكة I2P، لكن لم تقم بتحديد بروكسي خارجي. قم يتحديد بروكسي خارجي في اعدادات I2PTunnel. +
    diff --git a/installer/resources/proxy/protocol-header_ar.ht b/installer/resources/proxy/protocol-header_ar.ht new file mode 100644 index 000000000..d31c75791 --- /dev/null +++ b/installer/resources/proxy/protocol-header_ar.ht @@ -0,0 +1,21 @@ +HTTP/1.1 403 Bad Protocol +Content-Type: text/html; charset=UTF-8 +Cache-control: no-cache +Connection: close +Proxy-Connection: close + + +HTTP تحذير: استعمال بروتوكول غير متوافق مع + + + + + +
    +

    HTTP تحذير: استعمال بروتوكول غير متوافق مع

    +تم استعمال بروتوكول غير متوافق. +بروكسي I2P يدعم طلبات http:// فقط. باقي البروتوكولات مثل https:// و ftp:// غير مدعومة. +
    diff --git a/installer/resources/readme/readme.html b/installer/resources/readme/readme.html index 176f79d8b..4eb51bc87 100644 --- a/installer/resources/readme/readme.html +++ b/installer/resources/readme/readme.html @@ -10,6 +10,7 @@ Nederlands Русский Svenska
    + العربية

    Welcome to the Invisible Internet

    @@ -89,7 +90,7 @@ If you're behind a prohibitive firewall but have unrestricted outbound access, I make sure your browser's proxy is set to access http traffic (not https, not socks) via 127.0.0.1 port 4444. If you need some help, there's a guide to configuring your browser for I2P use, also available on the normal web.
  • Check Your Logs
    Logs may help resolve a problem. You may wish to paste excerpts in a forum for help, or perhaps paste it instead and reference the link on IRC for help.
  • -
  • Verify Java is Up to Date
    Ensure your Java is up to date [version 1.6 recommended and required for some features]. If you don't have Java installed, you probably want some implementation of the JRE (Java Runtime Environment); if you're a developer, the SDK may also be of interest, and possibly Apache Ant which we use to build the I2P Java binaries. +
  • Verify Java is Up to Date
    Ensure your Java is up to date [version 1.6 recommended and required for some features]. If you don't have Java installed, you probably want some implementation of the JRE (Java Runtime Engine); if you're a developer, the SDK may also be of interest, and possibly Apache Ant which we use to build the I2P Java binaries.
  • Problems running on Legacy Hardware
    [Linux/Unix/Solaris] If you can't start the router with i2p/i2prouter start try the runplain.sh script in the same directory. Root privileges are usually not required to run I2P. If you need to compile the jBigi library (which is necessary in rare cases), consult appropriate documentation, visit the forums, or come pay a visit to our IRC developer channel. diff --git a/installer/resources/readme/readme_de.html b/installer/resources/readme/readme_de.html index 02f35947e..dc164ff7f 100644 --- a/installer/resources/readme/readme_de.html +++ b/installer/resources/readme/readme_de.html @@ -10,6 +10,7 @@ Nederlands Русский Svenska + العربية

    Willkommen im I2P!

    diff --git a/installer/resources/readme/readme_es.html b/installer/resources/readme/readme_es.html index b04baaf91..86b45cedf 100644 --- a/installer/resources/readme/readme_es.html +++ b/installer/resources/readme/readme_es.html @@ -10,6 +10,7 @@ Nederlands Русский Svenska + العربية

    ¡Bienvenido a I2P!

    Si acabas de iniciar I2P, al observar el menú de la izquierda, deberías notar que los números al lado de "Activos:" subirán en los próximos minutos y luego verás allí un Destino llamado "clientes diferentes" (si no, ¡mira abajo!)
    Apenas aparezca esto, puedes:

    diff --git a/installer/resources/readme/readme_fr.html b/installer/resources/readme/readme_fr.html index dea15fa7e..91cc905b6 100644 --- a/installer/resources/readme/readme_fr.html +++ b/installer/resources/readme/readme_fr.html @@ -10,6 +10,7 @@ Nederlands Русский Svenska + العربية

    Bienvenu sur I2P!

    Si vous venez juste de lancer I2P, les chiffres sur la gauche à coté de Active devraient commencer à augmenter dans les prochaines minutes et vous verrez un "Shared client" en destination locale listés sur la gauche (si non, voir plus bas). Une fois qu'ils apparaissent, vous pouvez:

    diff --git a/installer/resources/readme/readme_nl.html b/installer/resources/readme/readme_nl.html index 84388b344..a7198360b 100644 --- a/installer/resources/readme/readme_nl.html +++ b/installer/resources/readme/readme_nl.html @@ -10,6 +10,7 @@ Nederlands Русский Svenska + العربية

    Welkom op het Invisible Internet

    diff --git a/installer/resources/readme/readme_pt.html b/installer/resources/readme/readme_pt.html index 333ae6ba4..988df38b5 100644 --- a/installer/resources/readme/readme_pt.html +++ b/installer/resources/readme/readme_pt.html @@ -10,6 +10,7 @@ Nederlands Русский Svenska + العربية

    Bem-vindo a I2P!

    Se você acaba de iniciar I2P, os números à esquerda ao lado de "Active:" deberiam subir nos seguintes minutos e logo lá verá uma Destinação chamada "shared clients". (se não, veija embaixo!)
    Assim que apareça isto, você pode:

    diff --git a/installer/resources/readme/readme_ru.html b/installer/resources/readme/readme_ru.html index 0b2d5de12..f6b4ab873 100644 --- a/installer/resources/readme/readme_ru.html +++ b/installer/resources/readme/readme_ru.html @@ -10,6 +10,7 @@ Nederlands Русский Svenska + العربية

    Добро пожаловать в Невидимый Интернет

    diff --git a/installer/resources/readme/readme_sv.html b/installer/resources/readme/readme_sv.html index e5c3b9ecd..b34c42c6e 100644 --- a/installer/resources/readme/readme_sv.html +++ b/installer/resources/readme/readme_sv.html @@ -10,6 +10,7 @@ Nederlands Русский Svenska + العربية

    Welcome to I2P!

    Om du just har startat I2P kommer de "Aktiva: #/#" börja öka inom diff --git a/installer/resources/readme/readme_zh.html b/installer/resources/readme/readme_zh.html index 8e2d7968f..6842ce293 100644 --- a/installer/resources/readme/readme_zh.html +++ b/installer/resources/readme/readme_zh.html @@ -8,6 +8,7 @@ Nederlands Русский Svenska + العربية

    欢迎使用 I2P!

    I2P 运行后的几分钟里控制台左侧的【活动节点】数量会逐渐增加, From f9b2c77161b6bb6999de2ae669ac1d7ddf967cf7 Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 17 Feb 2011 21:23:38 +0000 Subject: [PATCH 227/463] fix RateTest; includeAntRuntime=true for router tests --- core/java/test/net/i2p/stat/RateTest.java | 4 ++-- router/java/build.xml | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/core/java/test/net/i2p/stat/RateTest.java b/core/java/test/net/i2p/stat/RateTest.java index 7aae82cd1..82235a785 100644 --- a/core/java/test/net/i2p/stat/RateTest.java +++ b/core/java/test/net/i2p/stat/RateTest.java @@ -8,7 +8,7 @@ import junit.framework.TestCase; public class RateTest extends TestCase { public void testRate() throws Exception{ - Rate rate = new Rate(1000); + Rate rate = new Rate(5000); for (int i = 0; i < 50; i++) { Thread.sleep(20); rate.addData(i * 100, 20); @@ -26,4 +26,4 @@ public class RateTest extends TestCase { assertEquals(r, rate); } -} \ No newline at end of file +} diff --git a/router/java/build.xml b/router/java/build.xml index 2a173f846..e157dd255 100644 --- a/router/java/build.xml +++ b/router/java/build.xml @@ -41,11 +41,13 @@ + + From bd28397f83f01497c56b598823e985435c3243f1 Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 17 Feb 2011 23:22:44 +0000 Subject: [PATCH 228/463] fix LogSettingsTest --- .../test/net/i2p/util/LogSettingsTest.java | 197 ++++++++++-------- 1 file changed, 111 insertions(+), 86 deletions(-) diff --git a/core/java/test/net/i2p/util/LogSettingsTest.java b/core/java/test/net/i2p/util/LogSettingsTest.java index face45725..b4de805f0 100644 --- a/core/java/test/net/i2p/util/LogSettingsTest.java +++ b/core/java/test/net/i2p/util/LogSettingsTest.java @@ -82,28 +82,33 @@ public class LogSettingsTest extends TestCase { System.setOut(pout); - log.debug("DEBUG" + ": debug"); - log.info("DEBUG" + ": info"); - log.warn("DEBUG" + ": warn"); - log.error("DEBUG" + ": error"); - log.log(Log.CRIT, "DEBUG" + ": crit"); - _context.logManager().shutdown(); - - String l1 = in.readLine(); - String l2 = in.readLine(); - String l3 = in.readLine(); - String l4 = in.readLine(); - String l5 = in.readLine(); - - assertTrue( - l1.matches(".*DEBUG: debug") && - l2.matches(".*DEBUG: info") && - l3.matches(".*DEBUG: warn") && - l4.matches(".*DEBUG: error") && - l5.matches(".*DEBUG: crit") - ); + try { + log.debug("DEBUG" + ": debug"); + log.info("DEBUG" + ": info"); + log.warn("DEBUG" + ": warn"); + log.error("DEBUG" + ": error"); + log.log(Log.CRIT, "DEBUG" + ": crit"); + + // The following will take about 10 seconds as we wait for the + // LogWriter to flush. There is no public flush() method + String l1 = in.readLine(); + String l2 = in.readLine(); + String l3 = in.readLine(); + String l4 = in.readLine(); + String l5 = in.readLine(); + + assertTrue( + l1.matches(".*DEBUG: debug") && + l2.matches(".*DEBUG: info") && + l3.matches(".*DEBUG: warn") && + l4.matches(".*DEBUG: error") && + l5.matches(".*DEBUG: crit") + ); + } finally { + System.setOut(systemOut); + pout.close(); + } - System.setOut(systemOut); } @@ -122,26 +127,31 @@ public class LogSettingsTest extends TestCase { System.setOut(pout); - log.debug("INFO" + ": debug"); - log.info("INFO" + ": info"); - log.warn("INFO" + ": warn"); - log.error("INFO" + ": error"); - log.log(Log.CRIT, "INFO" + ": crit"); - _context.logManager().shutdown(); - - String l1 = in.readLine(); - String l2 = in.readLine(); - String l3 = in.readLine(); - String l4 = in.readLine(); - - assertTrue( - l1.matches(".*INFO: info") && - l2.matches(".*INFO: warn") && - l3.matches(".*INFO: error") && - l4.matches(".*INFO: crit") - ); + try { + log.debug("INFO" + ": debug"); + log.info("INFO" + ": info"); + log.warn("INFO" + ": warn"); + log.error("INFO" + ": error"); + log.log(Log.CRIT, "INFO" + ": crit"); + + // The following will take about 10 seconds as we wait for the + // LogWriter to flush. There is no public flush() method + String l1 = in.readLine(); + String l2 = in.readLine(); + String l3 = in.readLine(); + String l4 = in.readLine(); + + assertTrue( + l1.matches(".*INFO: info") && + l2.matches(".*INFO: warn") && + l3.matches(".*INFO: error") && + l4.matches(".*INFO: crit") + ); + } finally { + System.setOut(systemOut); + pout.close(); + } - System.setOut(systemOut); } @@ -160,24 +170,29 @@ public class LogSettingsTest extends TestCase { System.setOut(pout); - log.debug("WARN" + ": debug"); - log.info("WARN" + ": info"); - log.warn("WARN" + ": warn"); - log.error("WARN" + ": error"); - log.log(Log.CRIT, "WARN" + ": crit"); - _context.logManager().shutdown(); - - String l1 = in.readLine(); - String l2 = in.readLine(); - String l3 = in.readLine(); - - assertTrue( - l1.matches(".*WARN: warn") && - l2.matches(".*WARN: error") && - l3.matches(".*WARN: crit") - ); + try { + log.debug("WARN" + ": debug"); + log.info("WARN" + ": info"); + log.warn("WARN" + ": warn"); + log.error("WARN" + ": error"); + log.log(Log.CRIT, "WARN" + ": crit"); + + // The following will take about 10 seconds as we wait for the + // LogWriter to flush. There is no public flush() method + String l1 = in.readLine(); + String l2 = in.readLine(); + String l3 = in.readLine(); + + assertTrue( + l1.matches(".*WARN: warn") && + l2.matches(".*WARN: error") && + l3.matches(".*WARN: crit") + ); + } finally { + System.setOut(systemOut); + pout.close(); + } - System.setOut(systemOut); } public void testError() throws IOException{ @@ -195,22 +210,27 @@ public class LogSettingsTest extends TestCase { System.setOut(pout); - log.debug("ERROR" + ": debug"); - log.info("ERROR" + ": info"); - log.warn("ERROR" + ": warn"); - log.error("ERROR" + ": error"); - log.log(Log.CRIT, "ERROR" + ": crit"); - _context.logManager().shutdown(); - - String l1 = in.readLine(); - String l2 = in.readLine(); - - assertTrue( - l1.matches(".*ERROR: error") && - l2.matches(".*ERROR: crit") - ); + try { + log.debug("ERROR" + ": debug"); + log.info("ERROR" + ": info"); + log.warn("ERROR" + ": warn"); + log.error("ERROR" + ": error"); + log.log(Log.CRIT, "ERROR" + ": crit"); + + // The following will take about 10 seconds as we wait for the + // LogWriter to flush. There is no public flush() method + String l1 = in.readLine(); + String l2 = in.readLine(); + + assertTrue( + l1.matches(".*ERROR: error") && + l2.matches(".*ERROR: crit") + ); + } finally { + System.setOut(systemOut); + pout.close(); + } - System.setOut(systemOut); } public void testCrit() throws IOException { @@ -228,21 +248,26 @@ public class LogSettingsTest extends TestCase { System.setOut(pout); - log.debug("CRIT" + ": debug"); - log.info("CRIT" + ": info"); - log.warn("CRIT" + ": warn"); - log.error("CRIT" + ": error"); - log.log(Log.CRIT, "CRIT" + ": crit"); - _context.logManager().shutdown(); - - String l1 = in.readLine(); - - assertTrue( - l1.matches(".*CRIT: crit") - ); + try { + log.debug("CRIT" + ": debug"); + log.info("CRIT" + ": info"); + log.warn("CRIT" + ": warn"); + log.error("CRIT" + ": error"); + log.log(Log.CRIT, "CRIT" + ": crit"); + + // The following will take about 10 seconds as we wait for the + // LogWriter to flush. There is no public flush() method + String l1 = in.readLine(); + + assertTrue( + l1.matches(".*CRIT: crit") + ); + } finally { + System.setOut(systemOut); + pout.close(); + } - System.setOut(systemOut); } -} \ No newline at end of file +} From aaf2fe9942eb609d561ab67875203429dd0f8a3b Mon Sep 17 00:00:00 2001 From: mathiasdm Date: Fri, 18 Feb 2011 07:10:42 +0000 Subject: [PATCH 229/463] -14 --- history.txt | 2 ++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/history.txt b/history.txt index de29ea7ed..39cbf8e37 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,5 @@ +2011-02-18 Mathiasdm + * Desktopgui now has an option to be disabled (desktopgui.enabled) 2011-02-17 zzz * Build: - Add includeAntRuntime=false to all javac targets diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 7f4edb975..31c35f8c3 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 = 13; + public final static long BUILD = 14; /** for example "-test" */ public final static String EXTRA = ""; From 3d30e142c1f7035b5e419190101d848fb465b987 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 18 Feb 2011 15:37:56 +0000 Subject: [PATCH 230/463] fix LogSettingsTest hang on fail --- .../test/net/i2p/util/LogSettingsTest.java | 39 ++++++++++++++----- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/core/java/test/net/i2p/util/LogSettingsTest.java b/core/java/test/net/i2p/util/LogSettingsTest.java index b4de805f0..529190a77 100644 --- a/core/java/test/net/i2p/util/LogSettingsTest.java +++ b/core/java/test/net/i2p/util/LogSettingsTest.java @@ -89,8 +89,12 @@ public class LogSettingsTest extends TestCase { log.error("DEBUG" + ": error"); log.log(Log.CRIT, "DEBUG" + ": crit"); - // The following will take about 10 seconds as we wait for the - // LogWriter to flush. There is no public flush() method + // Wait for the LogWriter to flush, then write extra stuff so + // the test doesn't hang on failure + try { Thread.sleep(12*1000); } catch (InterruptedException ie) {} + for (int i = 0; i < 5; i++) + pout.println(""); + pout.flush(); String l1 = in.readLine(); String l2 = in.readLine(); String l3 = in.readLine(); @@ -134,8 +138,12 @@ public class LogSettingsTest extends TestCase { log.error("INFO" + ": error"); log.log(Log.CRIT, "INFO" + ": crit"); - // The following will take about 10 seconds as we wait for the - // LogWriter to flush. There is no public flush() method + // Wait for the LogWriter to flush, then write extra stuff so + // the test doesn't hang on failure + try { Thread.sleep(12*1000); } catch (InterruptedException ie) {} + for (int i = 0; i < 4; i++) + pout.println(""); + pout.flush(); String l1 = in.readLine(); String l2 = in.readLine(); String l3 = in.readLine(); @@ -177,8 +185,12 @@ public class LogSettingsTest extends TestCase { log.error("WARN" + ": error"); log.log(Log.CRIT, "WARN" + ": crit"); - // The following will take about 10 seconds as we wait for the - // LogWriter to flush. There is no public flush() method + // Wait for the LogWriter to flush, then write extra stuff so + // the test doesn't hang on failure + try { Thread.sleep(12*1000); } catch (InterruptedException ie) {} + for (int i = 0; i < 3; i++) + pout.println(""); + pout.flush(); String l1 = in.readLine(); String l2 = in.readLine(); String l3 = in.readLine(); @@ -217,8 +229,12 @@ public class LogSettingsTest extends TestCase { log.error("ERROR" + ": error"); log.log(Log.CRIT, "ERROR" + ": crit"); - // The following will take about 10 seconds as we wait for the - // LogWriter to flush. There is no public flush() method + // Wait for the LogWriter to flush, then write extra stuff so + // the test doesn't hang on failure + try { Thread.sleep(12*1000); } catch (InterruptedException ie) {} + for (int i = 0; i < 2; i++) + pout.println(""); + pout.flush(); String l1 = in.readLine(); String l2 = in.readLine(); @@ -255,8 +271,11 @@ public class LogSettingsTest extends TestCase { log.error("CRIT" + ": error"); log.log(Log.CRIT, "CRIT" + ": crit"); - // The following will take about 10 seconds as we wait for the - // LogWriter to flush. There is no public flush() method + // Wait for the LogWriter to flush, then write extra stuff so + // the test doesn't hang on failure + try { Thread.sleep(12*1000); } catch (InterruptedException ie) {} + pout.println(""); + pout.flush(); String l1 = in.readLine(); assertTrue( From edb976bce5405096ed0b67db50069a1c474b9825 Mon Sep 17 00:00:00 2001 From: dev Date: Sat, 19 Feb 2011 17:13:50 +0000 Subject: [PATCH 231/463] minor --- .../net/i2p/client/datagram/I2PInvalidDatagramException.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/java/src/net/i2p/client/datagram/I2PInvalidDatagramException.java b/core/java/src/net/i2p/client/datagram/I2PInvalidDatagramException.java index 97756a776..e64bfb38e 100644 --- a/core/java/src/net/i2p/client/datagram/I2PInvalidDatagramException.java +++ b/core/java/src/net/i2p/client/datagram/I2PInvalidDatagramException.java @@ -16,10 +16,10 @@ package net.i2p.client.datagram; public class I2PInvalidDatagramException extends Exception { public I2PInvalidDatagramException() { - super(); + super(); } public I2PInvalidDatagramException(String s) { - super(s); + super(s); } } From fde7b21ca43db3d73e930d53412ce6f0fbb94e03 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 19 Feb 2011 17:36:37 +0000 Subject: [PATCH 232/463] * I2PTunnel: Fix standalone server tunnels http://forum.i2p/viewtopic.php?t=5376 --- .../java/src/net/i2p/i2ptunnel/I2PTunnelServer.java | 4 +++- history.txt | 5 +++++ router/java/src/net/i2p/router/RouterVersion.java | 4 ++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java index 31f5f1783..babdba976 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java @@ -210,7 +210,9 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable { * */ public void startRunning() { - Thread t = new I2PAppThread(this, "Server " + remoteHost + ':' + remotePort, true); + // prevent JVM exit when running outside the router + boolean isDaemon = getTunnel().getContext().isRouterContext(); + Thread t = new I2PAppThread(this, "Server " + remoteHost + ':' + remotePort, isDaemon); t.start(); } diff --git a/history.txt b/history.txt index 39cbf8e37..83cbcc3c6 100644 --- a/history.txt +++ b/history.txt @@ -1,5 +1,10 @@ +2011-02-19 zzz + * I2PTunnel: Fix standalone server tunnels + http://forum.i2p/viewtopic.php?t=5376 + 2011-02-18 Mathiasdm * Desktopgui now has an option to be disabled (desktopgui.enabled) + 2011-02-17 zzz * Build: - Add includeAntRuntime=false to all javac targets diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 31c35f8c3..25340f779 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 = 14; + public final static long BUILD = 15; /** for example "-test" */ - public final static String EXTRA = ""; + public final static String EXTRA = "-rc"; public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA; public static void main(String args[]) { System.out.println("I2P Router version: " + FULL_VERSION); From fbe3a488e46c58f6bf23088d3b569e1ab358bd58 Mon Sep 17 00:00:00 2001 From: hiddenz Date: Sat, 19 Feb 2011 18:49:00 +0000 Subject: [PATCH 233/463] routerconsole: update russian translation --- apps/routerconsole/locale/messages_ru.po | 36 +++++++++++++----------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/apps/routerconsole/locale/messages_ru.po b/apps/routerconsole/locale/messages_ru.po index 4f54c4fa4..efd959b04 100644 --- a/apps/routerconsole/locale/messages_ru.po +++ b/apps/routerconsole/locale/messages_ru.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-14 18:14+0000\n" -"PO-Revision-Date: 2011-02-14 23:21+0500\n" +"POT-Creation-Date: 2011-02-19 17:25+0000\n" +"PO-Revision-Date: 2011-02-19 22:43+0500\n" "Last-Translator: Hidden Z \n" "Language-Team: \n" "Language: \n" @@ -28,7 +28,7 @@ msgstr "" #. {0,number,####} prevents 1234 from being output as 1,234 in the English locale. #. If you want the digit separator in your locale, translate as {0}. #. alternates: msec, msecs -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1124 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1141 #, java-format msgid "1 ms" msgid_plural "{0,number,####} ms" @@ -39,7 +39,7 @@ msgstr[2] "{0,number,####} мс" #. seconds #. Note to translators: quantity will always be greater than one. #. alternates: secs, sec. 'seconds' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1129 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1146 #, java-format msgid "1 sec" msgid_plural "{0} sec" @@ -50,7 +50,7 @@ msgstr[2] "{0} с." #. minutes #. Note to translators: quantity will always be greater than one. #. alternates: mins, min. 'minutes' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1134 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1151 #, java-format msgid "1 min" msgid_plural "{0} min" @@ -61,7 +61,7 @@ msgstr[2] "{0} мин." #. hours #. Note to translators: quantity will always be greater than one. #. alternates: hrs, hr., hrs. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1139 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1156 #, java-format msgid "1 hour" msgid_plural "{0} hours" @@ -69,14 +69,14 @@ msgstr[0] "{0} час" msgstr[1] "{0} часа" msgstr[2] "{0} часов" -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1141 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1158 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313 msgid "n/a" msgstr "нет данных" #. days #. Note to translators: quantity will always be greater than one. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1145 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1162 #, java-format msgid "1 day" msgid_plural "{0} days" @@ -2340,38 +2340,42 @@ msgid "Refresh the page to view." msgstr "Обновите страницу для просмотра." #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +msgid "Arabic" +msgstr "Арабский" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "English" msgstr "English" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "French" msgstr "Français" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "German" msgstr "Deutsch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "Spanish" msgstr "Испанский" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Dutch" msgstr "Nederlands" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Portuguese" msgstr "Португальский" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Russian" msgstr "Русский" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:54 msgid "Chinese" msgstr "中文" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:54 msgid "Swedish" msgstr "Svenska" From 7c3af2cdd6130ce8ff22e9a330f2319b2814eb6e Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 19 Feb 2011 19:14:05 +0000 Subject: [PATCH 234/463] * Plugins: Fix signature verification if router.config specifies trustedUpdateKeys (ticket #416) --- .../src/net/i2p/router/web/PluginUpdateHandler.java | 13 ++++++++++++- history.txt | 2 ++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/PluginUpdateHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/PluginUpdateHandler.java index 879f0ee3d..884a20bb5 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/PluginUpdateHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/PluginUpdateHandler.java @@ -213,10 +213,15 @@ public class PluginUpdateHandler extends UpdateHandler { if (up.haveKey(pubkey)) { // the key is already in the TrustedUpdate keyring // verify the sig and verify that it is signed by the signer in the plugin.config file + // Allow "" as the previously-known signer String signingKeyName = up.verifyAndGetSigner(f); - if (!signer.equals(signingKeyName)) { + if (!(signer.equals(signingKeyName) || "".equals(signingKeyName))) { f.delete(); to.delete(); + if (signingKeyName == null) + _log.error("Failed to verify plugin signature, corrupt plugin or bad signature, signed by: " + signer); + else + _log.error("Plugin signer \"" + signer + "\" does not match existing signer in plugin.config file \"" + signingKeyName + "\""); statusDone("" + _("Plugin signature verification of {0} failed", url) + ""); return; } @@ -226,6 +231,7 @@ public class PluginUpdateHandler extends UpdateHandler { // bad or duplicate key f.delete(); to.delete(); + _log.error("Bad key or key mismatch - Failed to add plugin key \"" + pubkey + "\" for plugin signer \"" + signer + "\""); statusDone("" + _("Plugin signature verification of {0} failed", url) + ""); return; } @@ -235,6 +241,11 @@ public class PluginUpdateHandler extends UpdateHandler { if (!signer.equals(signingKeyName)) { f.delete(); to.delete(); + if (signingKeyName == null) + _log.error("Failed to verify plugin signature, corrupt plugin or bad signature, signed by: " + signer); + else + // shouldn't happen + _log.error("Plugin signer \"" + signer + "\" does not match new signer in plugin.config file \"" + signingKeyName + "\""); statusDone("" + _("Plugin signature verification of {0} failed", url) + ""); return; } diff --git a/history.txt b/history.txt index 83cbcc3c6..1e4e7de60 100644 --- a/history.txt +++ b/history.txt @@ -1,6 +1,8 @@ 2011-02-19 zzz * I2PTunnel: Fix standalone server tunnels http://forum.i2p/viewtopic.php?t=5376 + * Plugins: Fix signature verification if router.config specifies + trustedUpdateKeys (ticket #416) 2011-02-18 Mathiasdm * Desktopgui now has an option to be disabled (desktopgui.enabled) diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 25340f779..421ff4f63 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 = 15; + public final static long BUILD = 16; /** for example "-test" */ public final static String EXTRA = "-rc"; From b406c6c51e6eb06b975667a3df7d845f80898f25 Mon Sep 17 00:00:00 2001 From: mathiasdm Date: Sun, 20 Feb 2011 11:03:40 +0000 Subject: [PATCH 235/463] Fixed tests for i2ptunnel. --- apps/i2ptunnel/java/build.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/i2ptunnel/java/build.xml b/apps/i2ptunnel/java/build.xml index 7beebbb1b..55be71ea0 100644 --- a/apps/i2ptunnel/java/build.xml +++ b/apps/i2ptunnel/java/build.xml @@ -187,8 +187,9 @@ + From ce103d58a867c068a52c1e53a91d8527f9b220e6 Mon Sep 17 00:00:00 2001 From: duck Date: Sun, 20 Feb 2011 12:24:36 +0000 Subject: [PATCH 236/463] Update english labels --- apps/desktopgui/locale/messages_en.po | 9 +- apps/i2psnark/locale/messages_en.po | 208 +++++++++++------------ apps/routerconsole/locale/messages_en.po | 78 +++++---- 3 files changed, 151 insertions(+), 144 deletions(-) diff --git a/apps/desktopgui/locale/messages_en.po b/apps/desktopgui/locale/messages_en.po index f5e81ed72..10f0f81c5 100644 --- a/apps/desktopgui/locale/messages_en.po +++ b/apps/desktopgui/locale/messages_en.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P desktopgui\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-16 17:10+0000\n" +"POT-Creation-Date: 2011-02-20 11:53+0000\n" "PO-Revision-Date: 2010-06-15 14:09+0100\n" "Last-Translator: duck \n" "Language-Team: duck \n" @@ -45,7 +45,10 @@ msgstr "" msgid "Stop I2P" msgstr "" -#. Translate interface -#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:26 +#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:44 +msgid "Tray icon configuration" +msgstr "" + +#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47 msgid "Should tray icon be enabled?" msgstr "" diff --git a/apps/i2psnark/locale/messages_en.po b/apps/i2psnark/locale/messages_en.po index 415a69bc4..c0f6daa9b 100644 --- a/apps/i2psnark/locale/messages_en.po +++ b/apps/i2psnark/locale/messages_en.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-13 11:54+0000\n" +"POT-Creation-Date: 2011-02-20 11:53+0000\n" "PO-Revision-Date: 2010-06-15 14:09+0100\n" "Last-Translator: duck \n" "Language-Team: duck \n" @@ -130,7 +130,7 @@ msgstr "" #: ../java/src/org/klomp/snark/SnarkManager.java:586 #: ../java/src/org/klomp/snark/SnarkManager.java:661 #: ../java/src/org/klomp/snark/SnarkManager.java:716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "" @@ -157,7 +157,7 @@ msgid "Torrent in \"{0}\" is invalid" msgstr "" #: ../java/src/org/klomp/snark/SnarkManager.java:624 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1977 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1994 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "" @@ -288,7 +288,7 @@ msgstr "" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1007 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1024 msgid "I2PSnark" msgstr "" @@ -301,7 +301,7 @@ msgid "Forum" msgstr "" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1698 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1715 msgid "Status" msgstr "" @@ -316,8 +316,8 @@ msgid "Show Peers" msgstr "" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1622 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1638 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1639 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1655 msgid "Torrent" msgstr "" @@ -504,8 +504,8 @@ msgid "Seeding" msgstr "" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:827 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1644 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1661 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766 msgid "Complete" msgstr "" @@ -528,381 +528,381 @@ msgstr "" msgid "Stopped" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:864 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:885 msgid "Torrent details" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:865 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1139 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:897 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1156 msgid "Info" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:879 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:912 msgid "View files" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:881 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:914 msgid "Open file" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:893 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1785 -msgid "Open" -msgstr "" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956 msgid "Stop the torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:941 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958 msgid "Stop" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 msgid "Start the torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:952 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 msgid "Start" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:979 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:984 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded " "data will not be deleted) ?" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 msgid "Remove" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:980 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:997 msgid "Delete the .torrent file and the associated data file(s)" msgstr "" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1002 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " "data?" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:988 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1005 msgid "Delete" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1021 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1038 msgid "Unknown" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1033 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1050 msgid "Seed" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1056 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 msgid "Uninteresting (The peer has no pieces we need)" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1058 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1075 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1078 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1095 msgid "Uninterested (We have no pieces the peer needs)" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1080 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155 #, java-format msgid "Details at {0} tracker" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1167 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1184 msgid "Add Torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1169 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1186 msgid "From URL" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1172 -msgid "Torrent file must originate from an I2P-based tracker" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1189 +msgid "" +"Enter the torrent file download URL (I2P only), magnet link, or maggot link" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1177 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194 msgid "Add torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1197 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1182 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1199 msgid "Removing a .torrent will cause it to stop." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1222 msgid "Create Torrent" msgstr "" #. out.write("From file:
    \n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1225 msgid "Data to seed" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229 msgid "File or directory to seed (must be within the specified path)" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1214 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1680 msgid "Tracker" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1216 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233 msgid "Select a tracker" msgstr "" #. out.write(_("Open trackers and DHT only")); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1221 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1238 msgid "Open trackers only" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1236 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253 msgid "or" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1239 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1256 msgid "Specify custom tracker announce URL" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1259 msgid "Create torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1399 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1416 msgid "Configuration" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 msgid "Data directory" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1266 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283 msgid "Edit i2psnark.config and restart to change" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1270 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287 msgid "Auto start" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1274 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 msgid "If checked, automatically start torrents that are added" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1278 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295 msgid "Theme" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1308 msgid "Startup delay" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1310 msgid "minutes" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1334 msgid "Total uploader limit" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1337 msgid "peers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1324 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 msgid "Up bandwidth limit" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 msgid "Half available bandwidth recommended." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1329 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346 msgid "View or change router bandwidth" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 msgid "Use open trackers also" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1337 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354 msgid "" "If checked, announce torrents to open trackers as well as the tracker listed " "in the torrent file" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 msgid "Open tracker announce URLs" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1370 msgid "Inbound Settings" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1376 msgid "Outbound Settings" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1367 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1384 msgid "I2CP host" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1389 msgid "I2CP port" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1385 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1402 msgid "I2CP options" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1390 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1407 msgid "Save configuration" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 #, java-format msgid "Invalid magnet URL {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1449 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1466 #, java-format msgid "Invalid info hash in magnet URL {0}" msgstr "" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1496 #, java-format msgid "1 hop" msgid_plural "{0} hops" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1497 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1642 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659 msgid "Completion" msgstr "" #. else unknown -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1646 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1695 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712 msgid "Size" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1651 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1668 msgid "Files" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1653 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1670 msgid "Pieces" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1654 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671 msgid "Piece size" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1676 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1693 msgid "Magnet link" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1693 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1732 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1710 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 msgid "Directory" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1702 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 msgid "Priority" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1707 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1724 msgid "Up to higher level directory" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1737 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1754 msgid "Torrent not found?" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1746 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 msgid "File not found in torrent?" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1776 msgid "complete" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1760 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1777 msgid "bytes remaining" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1811 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1802 +msgid "Open" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1828 msgid "High" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1833 msgid "Normal" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838 msgid "Skip" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1830 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1847 msgid "Save priorities" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 #, java-format msgid "Torrent fetched from {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1984 #, java-format msgid "Torrent already running: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1969 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1986 #, java-format msgid "Torrent already in the queue: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1975 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1992 #, java-format msgid "Torrent at {0} was not valid" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1982 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 #, java-format msgid "Torrent was not retrieved from {0}" msgstr "" diff --git a/apps/routerconsole/locale/messages_en.po b/apps/routerconsole/locale/messages_en.po index 3df6fe73c..1b748a8d6 100644 --- a/apps/routerconsole/locale/messages_en.po +++ b/apps/routerconsole/locale/messages_en.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-13 13:34+0000\n" +"POT-Creation-Date: 2011-02-20 11:52+0000\n" "PO-Revision-Date: 2010-06-15 14:09+0100\n" "Last-Translator: duck \n" "Language-Team: duck \n" @@ -25,7 +25,7 @@ msgstr "" #. {0,number,####} prevents 1234 from being output as 1,234 in the English locale. #. If you want the digit separator in your locale, translate as {0}. #. alternates: msec, msecs -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1124 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1141 #, java-format msgid "1 ms" msgid_plural "{0,number,####} ms" @@ -35,7 +35,7 @@ msgstr[1] "" #. seconds #. Note to translators: quantity will always be greater than one. #. alternates: secs, sec. 'seconds' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1129 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1146 #, java-format msgid "1 sec" msgid_plural "{0} sec" @@ -45,7 +45,7 @@ msgstr[1] "" #. minutes #. Note to translators: quantity will always be greater than one. #. alternates: mins, min. 'minutes' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1134 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1151 #, java-format msgid "1 min" msgid_plural "{0} min" @@ -55,21 +55,21 @@ msgstr[1] "" #. hours #. Note to translators: quantity will always be greater than one. #. alternates: hrs, hr., hrs. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1139 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1156 #, java-format msgid "1 hour" msgid_plural "{0} hours" msgstr[0] "" msgstr[1] "" -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1141 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1158 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313 msgid "n/a" msgstr "" #. days #. Note to translators: quantity will always be greater than one. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1145 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1162 #, java-format msgid "1 day" msgid_plural "{0} days" @@ -2343,38 +2343,42 @@ msgid "Refresh the page to view." msgstr "" #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +msgid "Arabic" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "English" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "French" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "German" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "Spanish" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Dutch" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Portuguese" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Russian" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:54 msgid "Chinese" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:54 msgid "Swedish" msgstr "" @@ -2747,7 +2751,7 @@ msgid "Plugin downloaded" msgstr "" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:158 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:345 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:356 #, java-format msgid "Cannot create plugin directory {0}" msgstr "" @@ -2774,97 +2778,97 @@ msgstr "" msgid "Plugin from {0} contains an invalid key" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:220 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:229 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:238 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:225 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:235 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:249 #, java-format msgid "Plugin signature verification of {0} failed" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:253 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:264 #, java-format msgid "Plugin from {0} has invalid name or version" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:258 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:269 #, java-format msgid "Plugin {0} has mismatched versions" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:266 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:277 #, java-format msgid "This plugin requires I2P version {0} or higher" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:274 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:285 #, java-format msgid "This plugin requires Java version {0} or higher" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:282 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 msgid "" "Downloaded plugin is for new installs only, but the plugin is already " "installed" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:294 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:305 msgid "Installed plugin does not contain the required configuration file" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:302 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:313 msgid "Signature of downloaded plugin does not match installed plugin" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:309 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:320 #, java-format msgid "Downloaded plugin version {0} is not newer than installed plugin" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:316 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:327 #, java-format msgid "Plugin update requires installed plugin version {0} or higher" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:323 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:334 #, java-format msgid "Plugin update requires installed plugin version {0} or lower" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:340 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351 msgid "Plugin is for upgrades only, but the plugin is not installed" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:353 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:364 #, java-format msgid "Failed to install plugin in {0}" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:360 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:371 #, java-format msgid "Plugin {0} installed, router restart required" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:362 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:373 #, java-format msgid "Plugin {0} installed" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:380 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:391 #, java-format msgid "Plugin {0} installed and started" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:383 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:394 #, java-format msgid "Plugin {0} installed but failed to start, check logs" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:385 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:396 #, java-format msgid "Plugin {0} installed but failed to start" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:395 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:406 #, java-format msgid "Failed to download plugin from {0}" msgstr "" From 93be3cbdd451de0a52fd5f11f3dbb0c8d3c9d8dc Mon Sep 17 00:00:00 2001 From: duck Date: Sun, 20 Feb 2011 12:28:44 +0000 Subject: [PATCH 237/463] Update Dutch translation --- apps/desktopgui/locale/messages_nl.po | 40 +- apps/i2psnark/locale/messages_nl.po | 212 +++--- apps/i2ptunnel/locale/messages_nl.po | 17 +- apps/routerconsole/locale/messages_nl.po | 923 ++++++++++++++++------- apps/susidns/locale/messages_nl.po | 13 +- 5 files changed, 799 insertions(+), 406 deletions(-) diff --git a/apps/desktopgui/locale/messages_nl.po b/apps/desktopgui/locale/messages_nl.po index 2e2fbb298..26973bd78 100644 --- a/apps/desktopgui/locale/messages_nl.po +++ b/apps/desktopgui/locale/messages_nl.po @@ -1,16 +1,23 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the desktopgui package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo , 2009. +# msgid "" msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-16 17:10+0000\n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" +"Project-Id-Version: I2P\n" +"Report-Msgid-Bugs-To: http://trac.i2p2.de/\n" +"POT-Creation-Date: 2011-02-20 11:53+0000\n" +"PO-Revision-Date: 2011-02-20 12:15+0000\n" +"Last-Translator: ducki2p \n" +"Language-Team: Dutch <>\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" -# NL #: src/net/i2p/desktopgui/ExternalTrayManager.java:23 msgid "Start I2P" msgstr "I2P starten" @@ -29,7 +36,7 @@ msgstr "Start I2P Browser" #: src/net/i2p/desktopgui/InternalTrayManager.java:50 msgid "Configure desktopgui" -msgstr "" +msgstr "Configureer desktopgui" #: src/net/i2p/desktopgui/InternalTrayManager.java:67 msgid "Restart I2P" @@ -39,13 +46,10 @@ msgstr "I2P herstarten" msgid "Stop I2P" msgstr "I2P stoppen" -#. Translate interface -#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:26 +#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:44 +msgid "Tray icon configuration" +msgstr "Systeemvak icoon configuratie" + +#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47 msgid "Should tray icon be enabled?" -msgstr "" - -#~ msgid "Browser not found" -#~ msgstr "Browser niet gevonden" - -#~ msgid "The default browser for your system was not found." -#~ msgstr "De standaard webbrowser voor je systeem werd niet gevonden." +msgstr "Systeemvak icoon inschakelen?" diff --git a/apps/i2psnark/locale/messages_nl.po b/apps/i2psnark/locale/messages_nl.po index fbe033a9f..e347d403d 100644 --- a/apps/i2psnark/locale/messages_nl.po +++ b/apps/i2psnark/locale/messages_nl.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-13 17:44+0000\n" -"PO-Revision-Date: 2011-02-13 17:41+0000\n" +"POT-Creation-Date: 2011-02-20 12:17+0000\n" +"PO-Revision-Date: 2011-02-20 12:15+0000\n" "Last-Translator: ducki2p \n" "Language-Team: Dutch <>\n" "MIME-Version: 1.0\n" @@ -135,7 +135,7 @@ msgstr "Kan \"{0}\" niet openen" #: ../java/src/org/klomp/snark/SnarkManager.java:586 #: ../java/src/org/klomp/snark/SnarkManager.java:661 #: ../java/src/org/klomp/snark/SnarkManager.java:716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "Torrent met deze info hash is al actief: {0}" @@ -166,7 +166,7 @@ msgid "Torrent in \"{0}\" is invalid" msgstr "Torrent in \"{0}\" is ongeldig" #: ../java/src/org/klomp/snark/SnarkManager.java:624 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1977 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1994 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "ERROR - Geen geheugen meer, kan geen torrent maken van {0}" @@ -301,7 +301,7 @@ msgstr "Torrents" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1007 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1024 msgid "I2PSnark" msgstr "I2PSnark" @@ -314,7 +314,7 @@ msgid "Forum" msgstr "Forum" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1698 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1715 msgid "Status" msgstr "Status" @@ -329,8 +329,8 @@ msgid "Show Peers" msgstr "Toon Peers" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1622 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1638 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1639 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1655 msgid "Torrent" msgstr "Torrent" @@ -520,8 +520,8 @@ msgid "Seeding" msgstr "Seeding" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:827 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1644 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1661 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766 msgid "Complete" msgstr "Voltooid" @@ -544,45 +544,40 @@ msgstr "Geen Peers" msgid "Stopped" msgstr "Gestopt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:864 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:885 msgid "Torrent details" msgstr "Torrent details" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:865 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1139 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:897 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1156 msgid "Info" msgstr "Info" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:879 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:912 msgid "View files" msgstr "Bekijk bestanden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:881 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:914 msgid "Open file" msgstr "Open bestand" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:893 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1785 -msgid "Open" -msgstr "Open" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956 msgid "Stop the torrent" msgstr "Stop de torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:941 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958 msgid "Stop" msgstr "Stop" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 msgid "Start the torrent" msgstr "Start de torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:952 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 msgid "Start" msgstr "Start" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:979 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "" "Verwijder de torrent van de actieve lijst, het .torrent bestand wordt " @@ -591,7 +586,7 @@ msgstr "" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:984 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded " @@ -600,18 +595,18 @@ 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:970 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 msgid "Remove" msgstr "Weghalen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:980 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:997 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:985 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1002 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " @@ -620,162 +615,163 @@ msgstr "" "Weet je zeker dat je de torrent \\''{0}\\'' en alle gedownloade data wilt " "verwijderen?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:988 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1005 msgid "Delete" msgstr "Verwijderen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1021 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1038 msgid "Unknown" msgstr "Onbekend" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1033 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1050 msgid "Seed" msgstr "Seed" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1056 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 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:1058 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1075 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:1078 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1095 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:1080 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097 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:1138 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155 #, java-format msgid "Details at {0} tracker" msgstr "Details op de {0} tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1167 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1184 msgid "Add Torrent" msgstr "Torrent Toevoegen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1169 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1186 msgid "From URL" msgstr "Van URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1172 -msgid "Torrent file must originate from an I2P-based tracker" -msgstr "Torrent bestand moet vaan een I2P tracker komen" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1189 +msgid "" +"Enter the torrent file download URL (I2P only), magnet link, or maggot link" +msgstr "Geef de torrent download URL (alleen I2P), magnet link, of maggot link" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1177 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194 msgid "Add torrent" msgstr "Torrent toevoegen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1197 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "Je kan ook .torrent bestanden kopieren naar: {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1182 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1199 msgid "Removing a .torrent will cause it to stop." msgstr "Verwijderen van een .torrent zorgt dat deze stopt." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1222 msgid "Create Torrent" msgstr "Creëer Torrent" #. out.write("From file:
    \n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1225 msgid "Data to seed" msgstr "Data om te seeden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229 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:1214 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1680 msgid "Tracker" msgstr "Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1216 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233 msgid "Select a tracker" msgstr "Selecteer een tracker" #. out.write(_("Open trackers and DHT only")); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1221 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1238 msgid "Open trackers only" msgstr "Alleen Open trackers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1236 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253 msgid "or" msgstr "of" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1239 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1256 msgid "Specify custom tracker announce URL" msgstr "Specificeer aangepaste tracker aankondigings URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1259 msgid "Create torrent" msgstr "Creëer torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1399 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1416 msgid "Configuration" msgstr "Configuratie" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 msgid "Data directory" msgstr "Data directory" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1266 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283 msgid "Edit i2psnark.config and restart to change" msgstr "Bewerk i2psnark.config en herstart de wijziging" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1270 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287 msgid "Auto start" msgstr "Auto start" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1274 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 msgid "If checked, automatically start torrents that are added" msgstr "Indien aangevinkt, start toegevoegde torrents automatisch" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1278 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295 msgid "Theme" msgstr "Thema" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1308 msgid "Startup delay" msgstr "Startup vertraging" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1310 msgid "minutes" msgstr "minuten" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1334 msgid "Total uploader limit" msgstr "Totale uploader limiet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1337 msgid "peers" msgstr "peers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1324 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 msgid "Up bandwidth limit" msgstr "Up bandbreedte limiet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 msgid "Half available bandwidth recommended." msgstr "Helft van beschikbare bandbreedte aanbevolen." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1329 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346 msgid "View or change router bandwidth" msgstr "Bekijk of wijzig router bandbreedte" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 msgid "Use open trackers also" msgstr "Gebruik ook open trackers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1337 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354 msgid "" "If checked, announce torrents to open trackers as well as the tracker listed " "in the torrent file" @@ -783,151 +779,155 @@ msgstr "" "Indien aangevinkt, kondig torrents ook aan bij de tracker uit het torrent " "bestand" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 msgid "Open tracker announce URLs" msgstr "Open tracker aankondigings URLs" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1370 msgid "Inbound Settings" msgstr "Inkomende Instellingen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1376 msgid "Outbound Settings" msgstr "Uitgaande Instellingen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1367 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1384 msgid "I2CP host" msgstr "I2CP host" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1389 msgid "I2CP port" msgstr "I2CP poort" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1385 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1402 msgid "I2CP options" msgstr "I2CP opties" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1390 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1407 msgid "Save configuration" msgstr "Configuratie opslaan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 #, java-format msgid "Invalid magnet URL {0}" msgstr "Ongeldige magnet URL {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1449 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1466 #, java-format msgid "Invalid info hash in magnet URL {0}" msgstr "Ongeldige info hash in magnet URL {0}" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1496 #, 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:1480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1497 #, 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:1642 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659 msgid "Completion" msgstr "Voltooiing" #. else unknown -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1646 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1695 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712 msgid "Size" msgstr "Grootte" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1651 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1668 msgid "Files" msgstr "Bestanden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1653 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1670 msgid "Pieces" msgstr "Stukken" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1654 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671 msgid "Piece size" msgstr "Stukgrootte" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1676 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1693 msgid "Magnet link" msgstr "Magnet link" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1693 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1732 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1710 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 msgid "Directory" msgstr "Directory" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1702 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 msgid "Priority" msgstr "Prioriteit" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1707 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1724 msgid "Up to higher level directory" msgstr "Naar bovenliggende directory" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1737 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1754 msgid "Torrent not found?" msgstr "Torrent niet gevonden?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1746 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 msgid "File not found in torrent?" msgstr "Bestand niet gevonden in torrent?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1776 msgid "complete" msgstr "voltooid" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1760 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1777 msgid "bytes remaining" msgstr "bytes resterend" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1811 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1802 +msgid "Open" +msgstr "Open" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1828 msgid "High" msgstr "Hoog" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1833 msgid "Normal" msgstr "Normaal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838 msgid "Skip" msgstr "Overslaan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1830 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1847 msgid "Save priorities" msgstr "Prioriteiten opslaan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 #, java-format msgid "Torrent fetched from {0}" msgstr "Torrent gedownload van {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1984 #, java-format msgid "Torrent already running: {0}" msgstr "Torrent draait al: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1969 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1986 #, 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:1975 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1992 #, java-format msgid "Torrent at {0} was not valid" msgstr "Torrent op {0} was niet geldig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1982 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 #, 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 index e7fe4894f..04c5ce5c9 100644 --- a/apps/i2ptunnel/locale/messages_nl.po +++ b/apps/i2ptunnel/locale/messages_nl.po @@ -6,16 +6,17 @@ # msgid "" msgstr "" -"Project-Id-Version: I2P i2ptunnel\n" +"Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-13 17:44+0000\n" -"PO-Revision-Date: 2010-06-15 14:09+0100\n" -"Last-Translator: duck \n" -"Language-Team: duck , monkeybrains \n" +"POT-Creation-Date: 2011-02-20 12:18+0000\n" +"PO-Revision-Date: 2011-02-20 12:14+0000\n" +"Last-Translator: ducki2p \n" +"Language-Team: Dutch <>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Dutch\n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474 #, java-format @@ -64,11 +65,11 @@ msgstr "Stoppen van tunnel" #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:311 msgid "Configuration changes saved" -msgstr "" +msgstr "Configuratie wijzigingen opgeslagen" #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314 msgid "Failed to save configuration" -msgstr "" +msgstr "Opslaan van de configuratie mislukt" #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398 msgid "New Tunnel" diff --git a/apps/routerconsole/locale/messages_nl.po b/apps/routerconsole/locale/messages_nl.po index 3e05adfb5..1233fed98 100644 --- a/apps/routerconsole/locale/messages_nl.po +++ b/apps/routerconsole/locale/messages_nl.po @@ -3,13 +3,13 @@ # 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\n" -"Report-Msgid-Bugs-To: http://trac.i2p2.de/\n" -"POT-Creation-Date: 2011-02-13 13:34+0000\n" -"PO-Revision-Date: 2011-02-13 17:41+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-20 12:17+0000\n" +"PO-Revision-Date: 2011-02-20 12:15+0000\n" "Last-Translator: ducki2p \n" "Language-Team: Dutch <>\n" "MIME-Version: 1.0\n" @@ -18,18 +18,15 @@ msgstr "" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -#. NOTE TO TRANSLATORS: Feel free to translate all these as you see fit, there -#. are several options... -#. spaces or not, '.' or not, plural or not. Try not to make it too long, it -#. is used in +#. NOTE TO TRANSLATORS: Feel free to translate all these as you see fit, there are several options... +#. spaces or not, '.' or not, plural or not. Try not to make it too long, it is used in #. a lot of tables. #. milliseconds #. Note to translators, may be negative or zero, 2999 maximum. -#. {0,number,####} prevents 1234 from being output as 1,234 in the English -#. locale. +#. {0,number,####} prevents 1234 from being output as 1,234 in the English locale. #. If you want the digit separator in your locale, translate as {0}. #. alternates: msec, msecs -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1124 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1141 #, java-format msgid "1 ms" msgid_plural "{0,number,####} ms" @@ -39,7 +36,7 @@ msgstr[1] "{0,number,####} ms" #. seconds #. Note to translators: quantity will always be greater than one. #. alternates: secs, sec. 'seconds' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1129 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1146 #, java-format msgid "1 sec" msgid_plural "{0} sec" @@ -49,7 +46,7 @@ msgstr[1] "{0} s" #. minutes #. Note to translators: quantity will always be greater than one. #. alternates: mins, min. 'minutes' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1134 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1151 #, java-format msgid "1 min" msgid_plural "{0} min" @@ -59,21 +56,21 @@ msgstr[1] "{0} min" #. hours #. Note to translators: quantity will always be greater than one. #. alternates: hrs, hr., hrs. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1139 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1156 #, java-format msgid "1 hour" msgid_plural "{0} hours" msgstr[0] "1 uur" msgstr[1] "{0} uren" -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1141 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1158 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313 msgid "n/a" msgstr "nvt" #. days #. Note to translators: quantity will always be greater than one. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1145 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1162 #, java-format msgid "1 day" msgid_plural "{0} days" @@ -108,8 +105,7 @@ msgid "Rejecting tunnels: High message delay" msgstr "Tunnels geweigerd: Hoge bericht vertraging" #. hard to do {0} from here -#. setTunnelStatus("Rejecting " + (100 - (int) probAccept*100) + "% of -#. tunnels: High number of requests"); +#. 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 "Meeste tunnels geweigerd: Hoog aantal aanvragen" @@ -126,15 +122,13 @@ msgid "Rejecting tunnels: Bandwidth limit" msgstr "Tunnels geweigerd: Bandbreedte limiet" #. hard to do {0} from here -#. setTunnelStatus("Rejecting " + ((int)(100.0*probReject)) + "% of tunnels: -#. Bandwidth limit"); +#. 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 "Meeste tunnels geweigerd: Bandbreedte limiet" #. hard to do {0} from here -#. setTunnelStatus("Accepting " + (100-(int)(100.0*probReject)) + "% of -#. tunnels"); +#. setTunnelStatus("Accepting " + (100-(int)(100.0*probReject)) + "% of tunnels"); #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:375 msgid "Accepting most tunnels" msgstr "Meeste tunnels geaccepteerd" @@ -145,8 +139,7 @@ msgstr "Tunnels geaccepteerd" #. NPE, too early #. if (_context.router().getRouterInfo().getBandwidthTier().equals("K")) -#. setTunnelStatus("Not expecting tunnel requests: Advertised bandwidth too -#. low"); +#. setTunnelStatus("Not expecting tunnel requests: Advertised bandwidth too low"); #. else #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:488 msgid "Rejecting tunnels" @@ -183,15 +176,16 @@ msgstr "Reseed: opvragen seed URL." #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281 #, 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/transport/CommSystemFacadeImpl.java:512 msgid "NetDb entry" msgstr "NetDd item" -#. This used to be "no common transports" but it is almost always no -#. transports at all +#. 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 "Geen transport (verborgen of aan het opstarten?)" @@ -215,12 +209,21 @@ msgid "Help" msgstr "Help" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 -msgid "Your transport connection limits are automatically set based on your configured bandwidth." -msgstr "De limieten van je transport verbinding zijn automatisch ingesteld gebaseerd op de geconfigureerde bandbreedte." +msgid "" +"Your transport connection limits are automatically set based on your " +"configured bandwidth." +msgstr "" +"De limieten van je transport verbinding zijn automatisch ingesteld gebaseerd " +"op de geconfigureerde bandbreedte." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 -msgid "To override these limits, add the settings i2np.ntcp.maxConnections=nnn and i2np.udp.maxConnections=nnn on the advanced configuration page." -msgstr "Om deze limieten te overschrijven, voeg dan de instelling i2np.ntcp.maxConnections=nnn en i2np.udp.maxConnections=nnn toe aan de geavanceerde configuratie pagina." +msgid "" +"To override these limits, add the settings i2np.ntcp.maxConnections=nnn and " +"i2np.udp.maxConnections=nnn on the advanced configuration page." +msgstr "" +"Om deze limieten te overschrijven, voeg dan de instelling i2np.ntcp." +"maxConnections=nnn en i2np.udp.maxConnections=nnn toe aan de geavanceerde " +"configuratie pagina." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 @@ -259,11 +262,15 @@ msgstr "Uitgaande connectie" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 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:532 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:533 msgid "How long since a packet has been received / sent" @@ -284,7 +291,8 @@ msgstr "In/Uit" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 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:535 msgid "How long ago this connection was established" @@ -307,8 +315,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:537 -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:538 msgid "The number of sent messages awaiting acknowledgement" @@ -320,7 +332,9 @@ msgstr "Het maximum aantal berichten om gelijktijdig te verzenden" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 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:541 msgid "The slow start threshold" @@ -344,8 +358,12 @@ msgid "The retransmit timeout in milliseconds" msgstr "De herzend time-out in milliseconden" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 -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:546 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 @@ -563,8 +581,7 @@ msgid "Dropping tunnel requests: Queue time" msgstr "Negeer tunnel aanvragen: Wachttijd" #. 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!! +#. 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 "Andorra" @@ -1509,8 +1526,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:35 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:335 @@ -1575,7 +1596,8 @@ msgid "New client added" msgstr "Nieuwe client toegevoegd" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:193 -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:207 @@ -1659,7 +1681,8 @@ msgid "Error starting plugin {0}" msgstr "Fout bij starten plugin {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 -msgid "Interface configuration saved successfully - restart required to take effect." +msgid "" +"Interface configuration saved successfully - restart required to take effect." msgstr "Interface configuratie succesvol opgeslagen - herstart nodig." #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:85 @@ -1807,12 +1830,19 @@ msgid "Log configuration saved" msgstr "Log configuratie opgeslagen" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 -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:49 -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:50 msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT" @@ -1978,8 +2008,7 @@ msgstr "Laptop modes uitgeschakeld" msgid "Requiring SSU introducers" msgstr "SSU introducers nodig" -#. There's a few changes that don't really require restart (e.g. enabling -#. inbound TCP) +#. 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" @@ -2237,11 +2266,14 @@ 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:114 -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 +#. 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:135 msgid "Updated settings for all pools." @@ -2253,8 +2285,12 @@ msgstr "Exploratory tunnel configuratie succesvol opgeslagen." #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 #: ../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 @@ -2335,38 +2371,42 @@ msgid "Refresh the page to view." msgstr "Ververs de te bekijken pagina." #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +msgid "Arabic" +msgstr "Arabisch" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "English" msgstr "Engels" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "French" msgstr "Frans" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "German" msgstr "Duits" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "Spanish" msgstr "Spaans" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Dutch" msgstr "Nederlands" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Portuguese" msgstr "Portugees" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Russian" msgstr "Russies" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:54 msgid "Chinese" msgstr "Chinees" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:54 msgid "Swedish" msgstr "Zweeds" @@ -2436,8 +2476,12 @@ msgid "Download, verify, and restart" msgstr "Download, controlleer en herstart" #: ../java/src/net/i2p/router/web/FormHandler.java:174 -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:93 msgid "Combined bandwidth graph" @@ -2737,7 +2781,7 @@ msgid "Plugin downloaded" msgstr "Plugin gedownload" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:158 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:345 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:356 #, java-format msgid "Cannot create plugin directory {0}" msgstr "Kan plugin directory {0} niet maken" @@ -2758,102 +2802,109 @@ msgstr "Plugin van {0} is corrupt" 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 + ""); +#. updateStatus("" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + ""); #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:201 #, 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:220 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:229 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:238 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:225 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:235 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:249 #, java-format msgid "Plugin signature verification of {0} failed" msgstr "Plugin handtekening verificatie van {0} gefaald" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:253 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:264 #, 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:258 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:269 #, 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:266 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:277 #, 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:274 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:285 #, 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:282 -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:293 +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:294 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:305 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:302 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:313 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:309 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:320 #, 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:316 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:327 #, 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:323 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:334 #, 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:340 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351 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:353 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:364 #, java-format msgid "Failed to install plugin in {0}" msgstr "Installatie van plugin in {0} gefaald" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:360 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:371 #, 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:362 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:373 #, java-format msgid "Plugin {0} installed" msgstr "Plugin {0} geïnstalleerd" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:380 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:391 #, java-format msgid "Plugin {0} installed and started" msgstr "Plugin {0} geïnstalleerd en gestart" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:383 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:394 #, 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:385 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:396 #, 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:395 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:406 #, java-format msgid "Failed to download plugin from {0}" msgstr "Kan de plugin niet downloaden van {0}" @@ -3036,8 +3087,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" @@ -3049,7 +3104,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?" @@ -3081,8 +3137,7 @@ msgstr "Verbanning tot volgende herstart of in {0}" msgid "unban now" msgstr "Hef verbanning nu op" -#. Note to translators: all runtime zh translation disabled in this file, no -#. font available in RRD +#. Note to translators: all runtime zh translation disabled in this file, no font available in RRD #: ../java/src/net/i2p/router/web/StatSummarizer.java:223 msgid "Bandwidth usage" msgstr "Bandbreedte gebruik" @@ -3126,12 +3181,17 @@ 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:63 -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:64 msgid "These statistics are primarily used for development and debugging." -msgstr "Deze statistieken worden primair gebruikt voor ontwikkeling en debugging." +msgstr "" +"Deze statistieken worden primair gebruikt voor ontwikkeling en debugging." #: ../java/src/net/i2p/router/web/StatsGenerator.java:105 #: ../java/src/net/i2p/router/web/StatsGenerator.java:156 @@ -3150,14 +3210,12 @@ msgstr "Voortschrijdend gemiddelde gebeurtenissen per periode" msgid "Highest events per period" msgstr "Hoogste gebeurtenissen per periode" -#. if (showAll && (curFreq.getMaxAverageEventsPerPeriod() > 0) && -#. (curFreq.getAverageEventsPerPeriod() > 0) ) { +#. if (showAll && (curFreq.getMaxAverageEventsPerPeriod() > 0) && (curFreq.getAverageEventsPerPeriod() > 0) ) { #. buf.append("(current is "); #. buf.append(pct(curFreq.getAverageEventsPerPeriod()/curFreq.getMaxAverageEventsPerPeriod())); #. buf.append(" of max)"); #. } -#. buf.append(" avg interval between updates: -#. (").append(num(curFreq.getAverageInterval())).append("ms, min "); +#. buf.append(" avg interval between updates: (").append(num(curFreq.getAverageInterval())).append("ms, min "); #. buf.append(num(curFreq.getMinAverageInterval())).append("ms)"); #: ../java/src/net/i2p/router/web/StatsGenerator.java:135 msgid "Lifetime average events per period" @@ -3180,8 +3238,7 @@ msgstr "Gemiddelde" msgid "Highest average" msgstr "Hoogste gemiddelde" -#. breaking the sentence like before makes translation in my language -#. impossible. +#. breaking the sentence like before makes translation in my language impossible. #: ../java/src/net/i2p/router/web/StatsGenerator.java:201 #, java-format msgid "There were {0} event(s) in this period" @@ -3231,8 +3288,12 @@ msgid "Help & FAQ" msgstr "Hulp & FAQ" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:55 -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" +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:57 msgid "I2P Services" @@ -3367,8 +3428,11 @@ msgid "Uptime" msgstr "Uptime" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 -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" +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:231 msgid "Download" @@ -3498,7 +3562,9 @@ msgid "Firewalled" msgstr "Firewall" #: ../java/src/net/i2p/router/web/SummaryHelper.java:135 -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:141 @@ -3520,7 +3586,8 @@ msgstr "Testen" #: ../java/src/net/i2p/router/web/SummaryHelper.java:370 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:382 msgid "Server" @@ -3571,8 +3638,7 @@ msgstr "geen" msgid "shared clients" msgstr "gedeelde clients" -#. Note to translators: all runtime zh translation disabled in this file, no -#. font available in RRD +#. Note to translators: all runtime zh translation disabled in this file, no font available in RRD #: ../java/src/net/i2p/router/web/SummaryRenderer.java:89 #, java-format msgid "events in {0}" @@ -4041,8 +4107,7 @@ msgstr "Met hoeveel peers communiceren we actief" msgid "config networking" msgstr "configureer netwerk" -#. We have intl defined when this is included, but not when compiled -#. standalone. +#. 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:216 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:217 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:216 @@ -4117,8 +4182,12 @@ msgid "Bandwidth limiter" msgstr "Bandbreedte beperker" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:300 -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:304 msgid "KBps In" @@ -4148,12 +4217,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:347 -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:348 -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:351 #, java-format @@ -4161,8 +4237,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:354 -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:358 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514 @@ -4252,8 +4332,12 @@ msgid "Action when IP changes" msgstr "Actie wanneer IP wijzigd" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:439 -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:441 msgid "Experimental" @@ -4297,8 +4381,11 @@ msgid "Completely disable" msgstr "Schakel volledig uit" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:491 -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:493 msgid "Externally reachable TCP port" @@ -4328,28 +4415,52 @@ msgstr "Configuratie Help" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:520 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 -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:522 -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:524 -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:526 -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:528 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:537 -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:539 msgid "UPnP support is beta, and may not work for any number of reasons" @@ -4384,24 +4495,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:555 -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:557 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:559 msgid "They are not private." msgstr "Deze zijn niet privé." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 -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:563 -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:565 msgid "When in doubt, leave the settings at the defaults." @@ -4412,12 +4536,23 @@ msgid "Reachability Help" msgstr "Bereikbaarheids Help" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:572 -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:575 -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:579 msgid "Your UDP port does not appear to be firewalled." @@ -4428,72 +4563,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:585 -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:587 -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:589 -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:591 -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:593 -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:595 -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:599 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:603 -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:605 msgid "WARN - Firewalled and Fast" msgstr "WARN - Firewall en Snel" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 -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:609 -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:611 msgid "WARN - Firewalled and Floodfill" msgstr "WARN - Firewall en Floodfill" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 -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:615 -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:617 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:619 -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:621 -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:623 msgid "Please open your firewall or disable inbound TCP above." @@ -4508,8 +4700,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:629 -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:631 msgid "Please open your firewall or enable UDP." @@ -4520,8 +4716,12 @@ msgid "ERR - Clock Skew" msgstr "ERR - Klok Afwijking" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 -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:637 msgid "Correct your clock setting if this error persists." @@ -4532,8 +4732,12 @@ msgid "ERR - Private TCP Address" msgstr "ERR - Privaat TCP Adres" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 -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:643 msgid "Correct the address or disable inbound TCP above." @@ -4545,27 +4749,46 @@ msgstr "ERR - SymmetricNAT" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 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:649 -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:651 -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:653 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:655 -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:657 -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:659 msgid "However, a restart is always required after this error." @@ -4576,8 +4799,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:663 -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:665 msgid "Therefore your router cannot accept inbound connections." @@ -4593,11 +4820,17 @@ msgstr "ERR - Client Manager I2CP Fout - controlleer logs" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 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:673 -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" @@ -4628,8 +4861,12 @@ msgid "Client Configuration" msgstr "Client Configuratie" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:314 -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:318 msgid "To change other client options, edit the file" @@ -4659,7 +4896,8 @@ msgstr "Ingeschakeld met SSL vereist" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 msgid "Disabled - Clients outside this Java process may not connect" -msgstr "Uitgeschakeld - Clients buiten dit Java process mogen geen verbinding maken" +msgstr "" +"Uitgeschakeld - Clients buiten dit Java process mogen geen verbinding maken" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:359 msgid "I2CP Port" @@ -4687,7 +4925,9 @@ msgstr "Wachtwoord" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:397 msgid "Any changes made here must also be configured in the external client." -msgstr "Alle wijzigingen die hier worden gemaakt moeten ook in de externe client worden geconfigureerd." +msgstr "" +"Alle wijzigingen die hier worden gemaakt moeten ook in de externe client " +"worden geconfigureerd." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:399 msgid "Many clients do not support SSL or authorization." @@ -4698,12 +4938,33 @@ msgid "WebApp Configuration" msgstr "WebApp Configuratie" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 -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:411 -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:421 msgid "Plugin Configuration" @@ -4731,11 +4992,16 @@ msgstr "I2P Sleutelbos Configuratie" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:295 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:298 -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:308 msgid "Manual Keyring Addition" @@ -4786,16 +5052,23 @@ msgid "Log record format" msgstr "Log regel formaat" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 -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:315 msgid "Log date format" msgstr "Log datum formaat" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 -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:321 msgid "Max log file size" @@ -4806,8 +5079,12 @@ msgid "Default log level" msgstr "Standaard log niveau" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329 -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:331 msgid "Log level overrides" @@ -4838,7 +5115,8 @@ 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:313 -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:323 @@ -4846,8 +5124,17 @@ msgid "Adjust Profile Bonuses" msgstr "Aanpassing van Profiel Bonussen" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 -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:327 msgid "profiles page" @@ -4875,16 +5162,29 @@ msgid "Reseeding Configuration" msgstr "Reseeden Configuratie" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:302 -msgid "Reseeding is the bootstrapping process used to find other routers when you first install I2P, or when your router has too few router references remaining." -msgstr "Reseeden is het opstart proces dat gebruikt wordt om andere routers te vinden wanneer je I2P voor het eerst installeert, of wanneer je router te weinig router referenties heeft." +msgid "" +"Reseeding is the bootstrapping process used to find other routers when you " +"first install I2P, or when your router has too few router references " +"remaining." +msgstr "" +"Reseeden is het opstart proces dat gebruikt wordt om andere routers te " +"vinden wanneer je I2P voor het eerst installeert, of wanneer je router te " +"weinig router referenties heeft." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304 -msgid "If reseeding has failed, you should first check your network connection." -msgstr "Wanneer reseeden heeft gefaald moet je eerst je netwerkverbinding controlleren." +msgid "" +"If reseeding has failed, you should first check your network connection." +msgstr "" +"Wanneer reseeden heeft gefaald moet je eerst je netwerkverbinding " +"controlleren." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:308 -msgid "Change these only if HTTP is blocked by a restrictive firewall, reseed has failed, and you have access to an HTTP proxy." -msgstr "Wijzig deze alleen wanneer HTTP geblokkeerd is door een beperkende firewall, reseeden heeft gefaald en je toegang hebt tot een HTTP proxy." +msgid "" +"Change these only if HTTP is blocked by a restrictive firewall, reseed has " +"failed, and you have access to an HTTP proxy." +msgstr "" +"Wijzig deze alleen wanneer HTTP geblokkeerd is door een beperkende firewall, " +"reseeden heeft gefaald en je toegang hebt tot een HTTP proxy." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 #, java-format @@ -4940,48 +5240,86 @@ msgid "Shutdown the router" msgstr "Stop de router" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:287 -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:289 -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:299 -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:301 -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:303 -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:305 -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:315 msgid "Run on startup" msgstr "Aan bij opstarten" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 -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:319 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:329 -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:331 -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:335 msgid "Debugging" @@ -4992,16 +5330,26 @@ msgid "View the job queue" msgstr "Bekijk de taak wachtrij" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 -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:347 msgid "Launch browser on router startup?" msgstr "Start browser bij opstarten router?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 -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" @@ -5065,8 +5413,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:313 -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:316 msgid "High CPU and/or high outbound bandwidth usage may result." @@ -5074,11 +5428,15 @@ msgstr "CPU gebruik en/of uitgaand bandbreedte kan toenemen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:319 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:333 -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:336 msgid "Client tunnel changes are temporary and are not saved." @@ -5109,16 +5467,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:312 -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:316 msgid "Router Console Language" msgstr "Router Console Taal" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:320 -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:324 msgid "Apply" @@ -5185,8 +5553,12 @@ msgid "Unsigned Build URL" msgstr "Niet-ondertekende Build URL" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 -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:367 msgid "Save" @@ -5217,8 +5589,12 @@ msgstr "Rapporteer bugs op {0} of {1}." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:137 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 -msgid "You may use the username \"guest\" and password \"guest\" if you do not wish to register." -msgstr "Indien je niet wilt registreren kan je de username \"guest\" en wachtwoord \"guest\" gebruiken." +msgid "" +"You may use the username \"guest\" and password \"guest\" if you do not wish " +"to register." +msgstr "" +"Indien je niet wilt registreren kan je de username \"guest\" en wachtwoord " +"\"guest\" gebruiken." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 @@ -5241,15 +5617,22 @@ msgstr "I2P Versie en Omgevingsinformatie" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 -msgid "Note that system information, log timestamps, and log messages may provide clues to your location; please review everything you include in a bug report." -msgstr "Merk op dat systeem informatie, log timestamps en log berichten mogelijk aanwijzingen kunnen geven over je lokatie; controlleer daarom alles dat je in een bug report opneemt." +msgid "" +"Note that system information, log timestamps, and log messages may provide " +"clues to your location; please review everything you include in a bug report." +msgstr "" +"Merk op dat systeem informatie, log timestamps en log berichten mogelijk " +"aanwijzingen kunnen geven over je lokatie; controlleer daarom alles dat je " +"in een bug report opneemt." #: ../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:242 -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:244 @@ -5321,8 +5704,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:234 -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 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" diff --git a/apps/susidns/locale/messages_nl.po b/apps/susidns/locale/messages_nl.po index 8f1c5b3c0..524ab5551 100644 --- a/apps/susidns/locale/messages_nl.po +++ b/apps/susidns/locale/messages_nl.po @@ -6,16 +6,17 @@ # msgid "" msgstr "" -"Project-Id-Version: I2P susidns\n" +"Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-17 15:05+0000\n" -"PO-Revision-Date: 2010-06-15 11:22+0100\n" -"Last-Translator: duck \n" -"Language-Team: duck , monkeybrains \n" +"POT-Creation-Date: 2011-02-20 12:18+0000\n" +"PO-Revision-Date: 2011-02-20 12:15+0000\n" +"Last-Translator: ducki2p \n" +"Language-Team: Dutch <>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Dutch\n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:200 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:193 From 8af15e01aa4f80a3d1ebf81c249cd0f9f33af501 Mon Sep 17 00:00:00 2001 From: walking Date: Mon, 21 Feb 2011 14:58:06 +0000 Subject: [PATCH 238/463] translation update fix readme

    --- apps/desktopgui/locale/messages_zh.po | 6 +- apps/i2psnark/locale/messages_zh.po | 213 +++++++++++----------- apps/routerconsole/locale/messages_zh.po | 86 ++++----- installer/resources/readme/readme.html | 2 +- installer/resources/readme/readme_ar.html | 8 +- installer/resources/readme/readme_de.html | 5 +- installer/resources/readme/readme_es.html | 6 +- installer/resources/readme/readme_fr.html | 6 +- installer/resources/readme/readme_nl.html | 10 +- installer/resources/readme/readme_pt.html | 6 +- installer/resources/readme/readme_ru.html | 8 +- installer/resources/readme/readme_sv.html | 6 +- installer/resources/readme/readme_zh.html | 6 +- 13 files changed, 186 insertions(+), 182 deletions(-) diff --git a/apps/desktopgui/locale/messages_zh.po b/apps/desktopgui/locale/messages_zh.po index 5dca9e881..0cb5229f8 100644 --- a/apps/desktopgui/locale/messages_zh.po +++ b/apps/desktopgui/locale/messages_zh.po @@ -28,7 +28,7 @@ msgstr "正在启动I2P浏览器" #: src/net/i2p/desktopgui/InternalTrayManager.java:50 msgid "Configure desktopgui" -msgstr "" +msgstr "界面设置" #: src/net/i2p/desktopgui/InternalTrayManager.java:67 msgid "Restart I2P" @@ -41,10 +41,10 @@ msgstr "停止 I2P" #. Translate interface #: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:26 msgid "Should tray icon be enabled?" -msgstr "" +msgstr "显示托盘图标。" #~ msgid "Browser not found" #~ msgstr "Browser niet gevonden" - #~ msgid "The default browser for your system was not found." #~ msgstr "De standaard webbrowser voor je systeem werd niet gevonden." + diff --git a/apps/i2psnark/locale/messages_zh.po b/apps/i2psnark/locale/messages_zh.po index dfca408cd..32147926f 100644 --- a/apps/i2psnark/locale/messages_zh.po +++ b/apps/i2psnark/locale/messages_zh.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-12 11:39+0000\n" -"PO-Revision-Date: 2011-02-12 20:08+0800\n" +"POT-Creation-Date: 2011-02-20 07:23+0000\n" +"PO-Revision-Date: 2011-02-20 15:26+0800\n" "Last-Translator: \n" "Language-Team: foo \n" "MIME-Version: 1.0\n" @@ -130,7 +130,7 @@ msgstr "无法打开 \"{0}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:586 #: ../java/src/org/klomp/snark/SnarkManager.java:661 #: ../java/src/org/klomp/snark/SnarkManager.java:716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "具有相同Hash链接的种子已在下载中:{0}" @@ -153,7 +153,7 @@ msgid "Torrent in \"{0}\" is invalid" msgstr "无效种子 \"{0}\" " #: ../java/src/org/klomp/snark/SnarkManager.java:624 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1977 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1994 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "错误: 内存不足,无法为 {0} 创建种子。" @@ -282,7 +282,7 @@ msgstr "种子" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1007 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1024 msgid "I2PSnark" msgstr "I2PSnark" @@ -295,7 +295,7 @@ msgid "Forum" msgstr "论坛" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1698 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1715 msgid "Status" msgstr "状态" @@ -310,8 +310,8 @@ msgid "Show Peers" msgstr "显示用户" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1622 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1638 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1639 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1655 msgid "Torrent" msgstr "种子" @@ -493,8 +493,8 @@ msgid "Seeding" msgstr "正做种" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:827 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1644 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1661 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766 msgid "Complete" msgstr "完成" @@ -517,377 +517,378 @@ msgstr "没有用户" msgid "Stopped" msgstr "已停用" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:864 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:885 msgid "Torrent details" msgstr "种子详情" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:865 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1139 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:897 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1156 msgid "Info" msgstr "信息" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:879 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:912 msgid "View files" msgstr "浏览文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:881 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:914 msgid "Open file" msgstr "打开文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:893 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1785 -msgid "Open" -msgstr "打开" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956 msgid "Stop the torrent" msgstr "停止种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:941 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958 msgid "Stop" msgstr "停止" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 msgid "Start the torrent" msgstr "启动种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:952 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 msgid "Start" msgstr "启动" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:979 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "取消下载任务并删除对应种子文件。" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:984 #, java-format msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?" msgstr "您确定要删除文件“{0}.torrent”(下载的数据文件不会被删除)?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 msgid "Remove" msgstr "移除" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:980 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:997 msgid "Delete the .torrent file and the associated data file(s)" msgstr "删除种子及所下载的文件" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1002 #, java-format msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?" msgstr "您确定要删除种子“{0}”(下载的数据文件会一并被删除)?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:988 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1005 msgid "Delete" msgstr "删除" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1021 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1038 msgid "Unknown" msgstr "未知" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1033 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1050 msgid "Seed" msgstr "种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1056 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 msgid "Uninteresting (The peer has no pieces we need)" msgstr "无需要部分" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1058 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1075 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "拒绝请求" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1078 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1095 msgid "Uninterested (We have no pieces the peer needs)" msgstr "无需要部分" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1080 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "拒绝请求" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155 #, java-format msgid "Details at {0} tracker" msgstr "Tracker {0} 上的详细信息" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1167 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1184 msgid "Add Torrent" msgstr "添加种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1169 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1186 msgid "From URL" msgstr "从URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1172 -msgid "Torrent file must originate from an I2P-based tracker" -msgstr "种子文件必须来在I2P内网中的Tracker服务器。" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1189 +msgid "Enter the torrent file download URL (I2P only), magnet link, or maggot link" +msgstr "请输入输入 torrent 文件下载链接(仅限.i2p)、magnet 链接或 maggot 链接" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1177 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194 msgid "Add torrent" msgstr "添加种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1197 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "您也可以将.torrent文件复制到: {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1182 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1199 msgid "Removing a .torrent will cause it to stop." msgstr "删除种子文件将导致该下载任务中止。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1222 msgid "Create Torrent" msgstr "创建种子" #. out.write("From file:
    \n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1225 msgid "Data to seed" msgstr "做种数据" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229 msgid "File or directory to seed (must be within the specified path)" msgstr "做种文件或文件夹(必须下面为Snark指定的文件夹中)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1214 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1680 msgid "Tracker" msgstr "Tracker服务器" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1216 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233 msgid "Select a tracker" msgstr "选择一个Tracker" #. out.write(_("Open trackers and DHT only")); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1221 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1238 msgid "Open trackers only" msgstr "仅通过 Open Tracker发布链接" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1236 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253 msgid "or" msgstr "或" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1239 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1256 msgid "Specify custom tracker announce URL" msgstr "指定Open Tracker发布链接" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1259 msgid "Create torrent" msgstr "创建种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1399 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1416 msgid "Configuration" msgstr "设置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 msgid "Data directory" msgstr "数据文件夹" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1266 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283 msgid "Edit i2psnark.config and restart to change" msgstr "编辑 i2psnark.config 并重启Snark后生效" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1270 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287 msgid "Auto start" msgstr "自动启动" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1274 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 msgid "If checked, automatically start torrents that are added" msgstr "选中后Snark将自动启动已添加的所有种子。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1278 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295 msgid "Theme" msgstr "主题" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1308 msgid "Startup delay" msgstr "启动延迟" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1310 msgid "minutes" msgstr "分" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1334 msgid "Total uploader limit" msgstr "限制总上传种子数为" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1337 msgid "peers" msgstr "用户" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1324 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 msgid "Up bandwidth limit" msgstr "上传带宽限制" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 msgid "Half available bandwidth recommended." msgstr "推荐设置为可用带宽的一半。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1329 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346 msgid "View or change router bandwidth" msgstr "浏览或修改路由器带宽" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 msgid "Use open trackers also" msgstr "同时使用OpenTracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1337 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354 msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file" msgstr "选择后在OpenTracker及种子文件中的Tracker上同时发布。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 msgid "Open tracker announce URLs" msgstr "Open Tracker发布链接" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1370 msgid "Inbound Settings" msgstr "入站设置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1376 msgid "Outbound Settings" msgstr "出站设置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1367 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1384 msgid "I2CP host" msgstr "I2CP主机" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1389 msgid "I2CP port" msgstr "I2CP端口" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1385 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1402 msgid "I2CP options" msgstr "I2CP选项" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1390 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1407 msgid "Save configuration" msgstr "保存设置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 #, java-format msgid "Invalid magnet URL {0}" msgstr "磁性链接 {0} 无效" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1449 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1466 #, java-format msgid "Invalid info hash in magnet URL {0}" msgstr "magnet磁性链接“{0}”中的hash信息有误。" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1496 #, java-format msgid "1 hop" msgid_plural "{0} hops" msgstr[0] "{0}跳" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1497 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" msgstr[0] "{0}隧道" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1642 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659 msgid "Completion" msgstr "完成" #. else unknown -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1646 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1695 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712 msgid "Size" msgstr "大小" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1651 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1668 msgid "Files" msgstr "文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1653 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1670 msgid "Pieces" msgstr "分块数量" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1654 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671 msgid "Piece size" msgstr "分块大小" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1676 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1693 msgid "Magnet link" msgstr "Magnet磁性链接" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1693 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1732 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1710 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 msgid "Directory" msgstr "文件夹" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1702 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 msgid "Priority" msgstr "优先级" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1707 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1724 msgid "Up to higher level directory" msgstr "上一层文件夹" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1737 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1754 msgid "Torrent not found?" msgstr "种子未找到" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1746 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 msgid "File not found in torrent?" msgstr "种子中没有发现文件?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1776 msgid "complete" msgstr "完成" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1760 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1777 msgid "bytes remaining" msgstr "剩余字节数" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1811 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1802 +msgid "Open" +msgstr "打开" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1828 msgid "High" msgstr "高" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1833 msgid "Normal" msgstr "普通" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838 msgid "Skip" msgstr "跳过" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1830 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1847 msgid "Save priorities" msgstr "保存优先级" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 #, java-format msgid "Torrent fetched from {0}" msgstr "从{0}获取种子成功" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1984 #, java-format msgid "Torrent already running: {0}" msgstr "种子已启动:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1969 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1986 #, java-format msgid "Torrent already in the queue: {0}" msgstr "种子排队中:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1975 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1992 #, java-format msgid "Torrent at {0} was not valid" msgstr "{0}的种子中有错误" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1982 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 #, java-format msgid "Torrent was not retrieved from {0}" msgstr "从{0}获得种子失败" +#~ msgid "Torrent file must originate from an I2P-based tracker" +#~ msgstr "种子文件必须来在I2P内网中的Tracker服务器。" #~ msgid "size: {0}B" #~ msgstr "大小:{0}B" #~ msgid "" diff --git a/apps/routerconsole/locale/messages_zh.po b/apps/routerconsole/locale/messages_zh.po index d239aff0f..e2416f2dd 100644 --- a/apps/routerconsole/locale/messages_zh.po +++ b/apps/routerconsole/locale/messages_zh.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-12 11:39+0000\n" +"POT-Creation-Date: 2011-02-20 07:23+0000\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -27,47 +27,47 @@ msgstr "" #. {0,number,####} prevents 1234 from being output as 1,234 in the English locale. #. If you want the digit separator in your locale, translate as {0}. #. alternates: msec, msecs -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1124 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1141 #, java-format msgid "1 ms" msgid_plural "{0,number,####} ms" -msgstr[0] "{0,number,####} 毫秒" +msgstr[0] "{0,number,####} ms" #. seconds #. Note to translators: quantity will always be greater than one. #. alternates: secs, sec. 'seconds' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1129 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1146 #, java-format msgid "1 sec" msgid_plural "{0} sec" -msgstr[0] "{0} 秒" +msgstr[0] "{0} sec" #. minutes #. Note to translators: quantity will always be greater than one. #. alternates: mins, min. 'minutes' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1134 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1151 #, java-format msgid "1 min" msgid_plural "{0} min" -msgstr[0] "{0} 分钟" +msgstr[0] "{0} min" #. hours #. Note to translators: quantity will always be greater than one. #. alternates: hrs, hr., hrs. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1139 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1156 #, java-format msgid "1 hour" msgid_plural "{0} hours" -msgstr[0] "{0} 小时" +msgstr[0] "{0} hr" -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1141 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1158 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313 msgid "n/a" msgstr "N/A" #. days #. Note to translators: quantity will always be greater than one. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1145 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1162 #, java-format msgid "1 day" msgid_plural "{0} days" @@ -2318,38 +2318,42 @@ msgid "Refresh the page to view." msgstr "刷新页面后查看。" #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +msgid "Arabic" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "English" msgstr "英语" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "French" msgstr "法语" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "German" msgstr "德语" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "Spanish" msgstr "西班牙语" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Dutch" msgstr "荷兰语" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Portuguese" msgstr "葡萄牙语" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Russian" msgstr "俄语" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:54 msgid "Chinese" msgstr "中文" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:54 msgid "Swedish" msgstr "瑞士语" @@ -2720,7 +2724,7 @@ msgid "Plugin downloaded" msgstr "插件下载完成" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:158 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:345 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:356 #, java-format msgid "Cannot create plugin directory {0}" msgstr "无法创建插件目录 {0}" @@ -2747,95 +2751,95 @@ msgstr "由 {0} 获取的插件缺少必要的配置文件" msgid "Plugin from {0} contains an invalid key" msgstr "由 {0} 获取的插件签名密钥无效" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:220 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:229 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:238 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:225 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:235 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:249 #, java-format msgid "Plugin signature verification of {0} failed" msgstr "插件 {0} 的签名验证失败。" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:253 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:264 #, java-format msgid "Plugin from {0} has invalid name or version" msgstr "从 {0} 获取的插件缺少有效的名称或版本" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:258 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:269 #, java-format msgid "Plugin {0} has mismatched versions" msgstr "插件 {0} 的内部版本不符。" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:266 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:277 #, java-format msgid "This plugin requires I2P version {0} or higher" msgstr "插件需要I2P版本 {0} 或更高" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:274 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:285 #, java-format msgid "This plugin requires Java version {0} or higher" msgstr "插件需要 Java 版本 {0} 或更高" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:282 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 msgid "Downloaded plugin is for new installs only, but the plugin is already installed" msgstr "所下插件包仅用于全新安装,但您已经安装过该插件" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:294 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:305 msgid "Installed plugin does not contain the required configuration file" msgstr "已安装插件缺少所需的配置文件" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:302 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:313 msgid "Signature of downloaded plugin does not match installed plugin" msgstr "所下插件的签名(人)与所安装插件的签名不符" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:309 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:320 #, java-format msgid "Downloaded plugin version {0} is not newer than installed plugin" msgstr "所下插件版本 {0} 没有已安装插件的版本新" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:316 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:327 #, java-format msgid "Plugin update requires installed plugin version {0} or higher" msgstr "插件更新包需要安装插件的版本为 {0} 或更高" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:323 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:334 #, java-format msgid "Plugin update requires installed plugin version {0} or lower" msgstr "插件更新包需要安装插件的版本不高于 {0}" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:340 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351 msgid "Plugin is for upgrades only, but the plugin is not installed" msgstr "插件更新包包找不到对应的原版插件" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:353 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:364 #, java-format msgid "Failed to install plugin in {0}" msgstr "无法将插件安装至目录{0}" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:360 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:371 #, java-format msgid "Plugin {0} installed, router restart required" msgstr "插件 {0} 已安装,重启I2P后生效" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:362 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:373 #, java-format msgid "Plugin {0} installed" msgstr "插件 {0} 已安装" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:380 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:391 #, java-format msgid "Plugin {0} installed and started" msgstr "插件 {0} 已安装并启动" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:383 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:394 #, java-format msgid "Plugin {0} installed but failed to start, check logs" msgstr "插件 {0} 已安装但启动失败,请检查日志。" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:385 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:396 #, java-format msgid "Plugin {0} installed but failed to start" msgstr "插件 {0} 已安装但启动失败" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:395 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:406 #, java-format msgid "Failed to download plugin from {0}" msgstr "重 {0} 下载插件失败" diff --git a/installer/resources/readme/readme.html b/installer/resources/readme/readme.html index 4eb51bc87..c46c7b0c7 100644 --- a/installer/resources/readme/readme.html +++ b/installer/resources/readme/readme.html @@ -9,7 +9,7 @@ Português Nederlands Русский - Svenska
    + Svenska العربية diff --git a/installer/resources/readme/readme_ar.html b/installer/resources/readme/readme_ar.html index 8c3888d4d..b2a294879 100644 --- a/installer/resources/readme/readme_ar.html +++ b/installer/resources/readme/readme_ar.html @@ -1,5 +1,5 @@ -
    +
    English @@ -10,9 +10,9 @@ Português Nederlands Русский - Svenska
    - العربية
    -
    + Svenska + العربية +

    مرحبا بكم في الانترنت الغير مرئية

    عندما تقوم بتشغيل I2P ستبدأ الأرقام على يسار الشاشة في الازدياد خلال الدقائق التالية وستظهر عبارة Shared Clients (ان لم تظهر، انظر التعليمات اسفله). عندها يمكنك الحصول على عدة خدمات مثل تورنت، البريد الإلكتروني السري، وخدمات أخرى:

      diff --git a/installer/resources/readme/readme_de.html b/installer/resources/readme/readme_de.html index dc164ff7f..e0bb810a3 100644 --- a/installer/resources/readme/readme_de.html +++ b/installer/resources/readme/readme_de.html @@ -10,9 +10,8 @@ Nederlands Русский Svenska - العربية - - + العربية +

      Willkommen im I2P!

      Wenn Du I2P gerade gestartet hast, sollten die "Aktiv:"-Zahlen links in den nächsten Minuten anwachsen. Du siehst dann dort ein als "versch. Klienten" bezeichnetes lokales Ziel gelistet (falls nicht, siehe unten). Sobald dieses erscheint, kannst Du:

        diff --git a/installer/resources/readme/readme_es.html b/installer/resources/readme/readme_es.html index 86b45cedf..0d1717395 100644 --- a/installer/resources/readme/readme_es.html +++ b/installer/resources/readme/readme_es.html @@ -9,9 +9,9 @@ Português Nederlands Русский - Svenska - العربية - + Svenska + العربية +

        ¡Bienvenido a I2P!

        Si acabas de iniciar I2P, al observar el menú de la izquierda, deberías notar que los números al lado de "Activos:" subirán en los próximos minutos y luego verás allí un Destino llamado "clientes diferentes" (si no, ¡mira abajo!)
        Apenas aparezca esto, puedes:

          diff --git a/installer/resources/readme/readme_fr.html b/installer/resources/readme/readme_fr.html index 91cc905b6..07165ea1f 100644 --- a/installer/resources/readme/readme_fr.html +++ b/installer/resources/readme/readme_fr.html @@ -9,9 +9,9 @@ Português Nederlands Русский - Svenska - العربية - + Svenska + العربية +

          Bienvenu sur I2P!

          Si vous venez juste de lancer I2P, les chiffres sur la gauche à coté de Active devraient commencer à augmenter dans les prochaines minutes et vous verrez un "Shared client" en destination locale listés sur la gauche (si non, voir plus bas). Une fois qu'ils apparaissent, vous pouvez:

            diff --git a/installer/resources/readme/readme_nl.html b/installer/resources/readme/readme_nl.html index a7198360b..ba82d7270 100644 --- a/installer/resources/readme/readme_nl.html +++ b/installer/resources/readme/readme_nl.html @@ -1,6 +1,6 @@
            -
            +
            English 中文 Deutsch @@ -9,10 +9,10 @@ Português Nederlands Русский - Svenska
            - العربية
            -
            -
            + Svenska + العربية + +

            Welkom op het Invisible Internet


  • "); // Opera and text-mode browsers: no   and no input type=image values submitted + // Using a unique name fixes Opera, except for the buttons with js confirms, see below String ua = req.getHeader("User-Agent"); - boolean isDegraded = ua != null && (ua.startsWith("Lynx") || + boolean isDegraded = ua != null && (ua.startsWith("Lynx") || ua.startsWith("w3m") || ua.startsWith("ELinks") || ua.startsWith("Dillo")); boolean noThinsp = isDegraded || ua.startsWith("Opera"); @@ -960,7 +961,8 @@ public class I2PSnarkServlet extends Default { if (isDegraded) out.write(""); } else { - if (isDegraded) + // This works in Opera but it's displayed a little differently, so use noThinsp here too so all 3 icons are consistent + if (noThinsp) out.write(""); if (isValid) { - if (isDegraded) + // Doesnt work with Opera so use noThinsp instead of isDegraded + if (noThinsp) out.write(""); } - if (isDegraded) + // Doesnt work with Opera so use noThinsp instead of isDegraded + if (noThinsp) out.write(" Date: Fri, 25 Feb 2011 16:01:30 +0000 Subject: [PATCH 257/463] multi-lang support for building is optional --- apps/desktopgui/build.xml | 3 ++- apps/i2psnark/java/build.xml | 3 ++- apps/i2ptunnel/java/build.xml | 3 ++- apps/routerconsole/java/build.xml | 3 ++- apps/susidns/src/build.xml | 3 ++- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/apps/desktopgui/build.xml b/apps/desktopgui/build.xml index 0d697c185..9a2bb13fb 100644 --- a/apps/desktopgui/build.xml +++ b/apps/desktopgui/build.xml @@ -46,7 +46,8 @@ - + + diff --git a/apps/i2psnark/java/build.xml b/apps/i2psnark/java/build.xml index f2df5bc71..8b8c34060 100644 --- a/apps/i2psnark/java/build.xml +++ b/apps/i2psnark/java/build.xml @@ -99,7 +99,8 @@ - + + diff --git a/apps/i2ptunnel/java/build.xml b/apps/i2ptunnel/java/build.xml index 55be71ea0..56ca6f30b 100644 --- a/apps/i2ptunnel/java/build.xml +++ b/apps/i2ptunnel/java/build.xml @@ -75,7 +75,8 @@ - + + diff --git a/apps/routerconsole/java/build.xml b/apps/routerconsole/java/build.xml index adb625e47..346fe8ffe 100644 --- a/apps/routerconsole/java/build.xml +++ b/apps/routerconsole/java/build.xml @@ -102,7 +102,8 @@ - + + diff --git a/apps/susidns/src/build.xml b/apps/susidns/src/build.xml index ea4dc5809..d2dc2f121 100644 --- a/apps/susidns/src/build.xml +++ b/apps/susidns/src/build.xml @@ -113,7 +113,8 @@ - + + From 6e84ee83614fa8466c30a2f31e26d925b35372b4 Mon Sep 17 00:00:00 2001 From: hamada Date: Fri, 25 Feb 2011 18:50:20 +0000 Subject: [PATCH 258/463] Add full Arabic translation of susidns --- apps/routerconsole/jsp/help_ar.jsp | 185 +++++++++++++++++++++++++++++ apps/susidns/locale/messages_ar.po | 130 ++++++++++---------- 2 files changed, 250 insertions(+), 65 deletions(-) create mode 100644 apps/routerconsole/jsp/help_ar.jsp diff --git a/apps/routerconsole/jsp/help_ar.jsp b/apps/routerconsole/jsp/help_ar.jsp new file mode 100644 index 000000000..b01c18df8 --- /dev/null +++ b/apps/routerconsole/jsp/help_ar.jsp @@ -0,0 +1,185 @@ +<%@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 مساعدة لوحة التحكم +<%@include file="css.jsi" %> + +<%@include file="summary.jsi" %> +

    I2P مساعدة لوحة التحكم

    +

    +اذا رغبت في المساعدة أو ترجمة الوثائق، أو المساعدة في أشياء أخرى، انظر اسفله + +تطوع +

    المزيد من المساعدة هنا: +

    diff --git a/apps/susidns/locale/messages_ar.po b/apps/susidns/locale/messages_ar.po index 93a22d3e1..cd265d2d4 100644 --- a/apps/susidns/locale/messages_ar.po +++ b/apps/susidns/locale/messages_ar.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P susidns\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-02-13 11:54+0000\n" -"PO-Revision-Date: 2011-02-22 17:54-0000\n" +"PO-Revision-Date: 2011-02-25 18:40-0000\n" "Last-Translator: hamada \n" "Language-Team: duck \n" "MIME-Version: 1.0\n" @@ -29,11 +29,11 @@ msgstr "بحث ضمن القائمة" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206 msgid "Filtered list" -msgstr "" +msgstr "قائمة الترشيح" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:210 msgid "no matches" -msgstr "" +msgstr "لا يوجد شبيه" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:213 msgid "Addressbook" @@ -41,21 +41,21 @@ msgstr "دفتر العناوين" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:215 msgid "contains no entries" -msgstr "" +msgstr "لايحتوي على بيانات" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:217 msgid "contains 1 entry" -msgstr "" +msgstr "يحتوي على واحدة" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:219 #, java-format msgid "contains {0} entries" -msgstr "" +msgstr "يحتوي على {0} " #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:229 #, java-format msgid "Showing {0} of {1}" -msgstr "" +msgstr "اظهار {0} من {1}" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:368 @@ -71,30 +71,30 @@ msgstr "عوض" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264 #, java-format msgid "Host name {0} is already in addressbook, unchanged." -msgstr "" +msgstr "اسم مضيف {0} موجود في دفتر العناوين." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266 #, java-format msgid "Host name {0} is already in addressbook with a different destination. Click \"Replace\" to overwrite." -msgstr "" +msgstr "اسم المضيف {0} موجود مسبقا في دفتر العناوين. أنقر \"عوض\" يتعويضه." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278 #, java-format msgid "Destination added for {0}." -msgstr "" +msgstr "تم اضافة الوجهة الى {0}." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:280 #, java-format msgid "Destination changed for {0}." -msgstr "" +msgstr "تم تغيير الوجهة الى {0}." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:285 msgid "Invalid Base 64 destination." -msgstr "" +msgstr "باطلة Base 64 وجهة." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:289 msgid "Please enter a host name and destination" -msgstr "" +msgstr "قم بادخال اسم المضيف والوجهة" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:293 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314 @@ -104,12 +104,12 @@ msgstr "حذف" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:303 #, java-format msgid "Destination {0} deleted." -msgstr "" +msgstr "وجهة {0} محذوفة." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305 #, java-format msgid "{0} destinations deleted." -msgstr "" +msgstr "{0} وجهة محذوفة." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:311 msgid "Addressbook saved." @@ -123,7 +123,7 @@ msgstr "خطأ: لم يتم حفظ دفتر العناوين" #: ../src/java/src/i2p/susi/dns/ConfigBean.java:148 #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151 msgid "Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit." -msgstr "" +msgstr "فشل في الارسال، ربما لاستعمال زر \"رجوع\" او \"أنعش\". قم بالارسال مرة أخرى." #: ../src/java/src/i2p/susi/dns/ConfigBean.java:139 #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130 @@ -145,7 +145,7 @@ msgstr "أعد تشغيل" #: ../src/java/src/i2p/susi/dns/ConfigBean.java:144 msgid "Configuration reloaded." -msgstr "" +msgstr "اعادة تحميل الاعدادات" #. Yes this is a hack. #. No it doesn't work on a text-mode browser. @@ -154,15 +154,15 @@ msgstr "" #. config reload and fetch. #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:139 msgid "Subscriptions saved, updating addressbook from subscription sources now." -msgstr "" +msgstr "تم حفظ الاشتراكات وتحديث دفتر العناوين من مصادر اشتراك الآن." #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143 msgid "Subscriptions saved." -msgstr "" +msgstr "تم حفظ الاشتراك." #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147 msgid "Subscriptions reloaded." -msgstr "" +msgstr "تم اعادة تحميل الاشتراك." #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145 @@ -225,11 +225,11 @@ msgstr "خيارات" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:107 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:118 msgid "overview" -msgstr "" +msgstr "نظرة عامة" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:163 msgid "Filter" -msgstr "" +msgstr "ترشيح" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:166 msgid "all" @@ -237,11 +237,11 @@ msgstr "جمبع" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:177 msgid "Current filter" -msgstr "" +msgstr "الترشيح الحالي" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:182 msgid "clear filter" -msgstr "" +msgstr "الغاء الترشيح" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:224 msgid "Name" @@ -250,7 +250,7 @@ msgstr "الإسم" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:226 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:362 msgid "Destination" -msgstr "" +msgstr "الوجهة" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:257 msgid "Mark for deletion" @@ -258,7 +258,7 @@ msgstr "اختر للحذف" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:279 msgid "address helper link" -msgstr "" +msgstr "وصلة مساعدة" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:312 msgid "Cancel" @@ -270,35 +270,35 @@ msgstr "هذا دفتر العناوين فارغ" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:356 msgid "Add new destination" -msgstr "" +msgstr "أضف وجهة جديدة" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:358 msgid "Hostname" -msgstr "" +msgstr "اسم مضيف" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:132 msgid "Hints" -msgstr "" +msgstr "إشارة" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134 msgid "File and directory paths here are relative to the addressbook's working directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P\\addressbook\\ (Windows)." -msgstr "" +msgstr "عنوان الملف والمجلد نسبي الى مجلد دفتر العناوين، الذي عادة هو ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P\\addressbook\\ (Windows)." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:136 msgid "If you want to manually add lines to an addressbook, add them to the private or master addressbooks." -msgstr "" +msgstr "اذا اردت اضافة العناوين الى دفتر العناوين، اضفها مباشرة الى دفتر العناوين الرئيسي." #: ../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 "" +msgstr "يتم تحديث دفتر العناوين الخاص و دفتر العناوين العمومي من طرف تطبيق دفتر العناوين." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:140 msgid "When you publish your addressbook, ALL destinations from the master and router addressbooks appear there." -msgstr "" +msgstr "عندما تنشر دفتر العناوين، ستظهر جميع المواقع هنا." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142 msgid "Use the private addressbook for private destinations, these are not published." -msgstr "" +msgstr "استعمل دفتر العناوين الخاص من أجل العناوين الخاصة التي لن يتم نشرها." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144 msgid "Options" @@ -306,51 +306,51 @@ msgstr "خيارات" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146 msgid "File containing the list of subscriptions URLs (no need to change)" -msgstr "" +msgstr "ملف يحتوي على قائمة الاشتراكات" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148 msgid "Update interval in hours" -msgstr "" +msgstr "تحديث الفاصل الزمني في ساعات" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150 msgid "Your public hosts.txt file (choose a path within your webserver document root)" -msgstr "" +msgstr "hosts.txt ملف" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152 msgid "Your hosts.txt (don't change)" -msgstr "" +msgstr "hosts.txt (ﻻتغير)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:154 msgid "Your personal addressbook, these hosts will be published" -msgstr "" +msgstr "سيتم نشر هذه العناوين" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:156 msgid "Your private addressbook, it is never published" -msgstr "" +msgstr "دفتر عناوينك الخاص، لن يتم نشره" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158 msgid "Port for your eepProxy (no need to change)" -msgstr "" +msgstr "رقم منفذ eepProxy (ﻻ حاجة للتغيير)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160 msgid "Hostname for your eepProxy (no need to change)" -msgstr "" +msgstr "عنوان لـ eepProxy" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162 msgid "Whether to update the published addressbook" -msgstr "" +msgstr "تعديل دفتر العناوين المنشور" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164 msgid "File containing the etags header from the fetched subscription URLs (no need to change)" -msgstr "" +msgstr "ملف يحتوي على قائمة عناوين الاشتراك" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:166 msgid "File containing the modification timestamp for each fetched subscription URL (no need to change)" -msgstr "" +msgstr "ملف يحتوي على تاريخ التحديث" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168 msgid "File to log activity to (change to /dev/null if you like)" -msgstr "" +msgstr "ملف لحفظ الأخطاء" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:91 msgid "Introduction" @@ -358,77 +358,77 @@ msgstr "تقديم" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:109 msgid "What is the addressbook?" -msgstr "" +msgstr "ماهو دفتر العناوين؟" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:111 msgid "The addressbook application is part of your i2p installation." -msgstr "" +msgstr "تطبيق دفتر العناوين هو ضمن مجموعة برامج i2p" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113 msgid "It regularly updates your hosts.txt file from distributed sources or \"subscriptions\"." -msgstr "" +msgstr "يقوم بتحديث ملف hosts.txt من عدة مصادر" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115 msgid "In the default configuration, the addressbook is only subscribed to www.i2p2.i2p." -msgstr "" +msgstr "في الاعدادت العادية، دفتر العناوين مرتبط ب www.i2p2.i2p." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117 msgid "Subscribing to additional sites is easy, just add them to your subscriptions file." -msgstr "" +msgstr "من السهل الانخراط في باقي المواقع فقط أضفه الى الانخراط" #: ../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 "" +msgstr "للمزيد من المعلومات حول التسميةلمحة عامة www.i2p2.i2p." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121 msgid "How does the addressbook work?" -msgstr "" +msgstr "كيف يشتغل دفتر العناوين؟" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123 msgid "The addressbook application regularly polls your subscriptions and merges their content into your \"router\" addressbook, stored in the hosts.txt file." -msgstr "" +msgstr "دفتر العناوين الخاص بك يقوم بستمرار من الحصول على الاشتراكات و حفظ العناولن الجديدة في ملف hosts.txt." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125 msgid "Then it merges your \"master\" addressbook (userhosts.txt) into the router addressbook as well." -msgstr "" +msgstr "ثم اضافة العناوين الى دفتر العناوين أيضا." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:127 msgid "If configured, the router addressbook is now written to the \"published\" addressbook, which will be publicly available if you are running an eepsite." -msgstr "" +msgstr "اذا قمت بالاختيار لن تتم نشر دفتر العناوين " #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:129 msgid "The router also uses a private addressbook (privatehosts.txt, not shown in the picture), which is not merged or published." -msgstr "" +msgstr "الموجه يستعمل ايضا دفتر عناوين خاص الذ لا يتم نشره" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:131 msgid "Hosts in the private addressbook can be accessed by you but their addresses are never distributed to others." -msgstr "" +msgstr "يمكنك الإطلاع على المواقع في دفتر العناوينك الخاص توزيع أبدا لكم ولكن عناوينهم للآخرين." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:133 msgid "The private addressbook can also be used for aliases of hosts in your other addressbooks." -msgstr "" +msgstr "ويمكن أيضا أن تستعمل دفتر العناوين الخاص لأجل الأسماء المستعارة لأخرى الخاصة بك." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132 msgid "The subscription file contains a list of i2p URLs." -msgstr "" +msgstr "ملف الاشتراك يحتوي على قائمة مواقع i2p." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134 msgid "The addressbook application regularly checks this list for new eepsites." -msgstr "" +msgstr "دفتر العناوين تقوم يستمرار بالتحقق من قائمة eepsites." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136 msgid "Those URLs refer to published hosts.txt files." -msgstr "" +msgstr "هذه العناوين لملف hosts.txt." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138 msgid "The default subscription is the hosts.txt from www.i2p2.i2p, which is updated infrequently." -msgstr "" +msgstr "الاشتراك العادي هو لملف hosts.txt from www.i2p2.i2p الذي يتم ترقيته باستمرار." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:140 msgid "So it is a good idea to add additional subscriptions to sites that have the latest addresses." -msgstr "" +msgstr "انها فكرة جيدة لإضافة اشتراكات إضافية إلى المواقع التي تحتوي على أحدث العناوين." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142 msgid "See the FAQ for a list of subscription URLs." -msgstr "" +msgstr "أنظر الأسئلة الشائعة للخصول على قائمة بالعناوين" From 5beb739913d645a42ef0bc7947c20abc2eb13009 Mon Sep 17 00:00:00 2001 From: walking Date: Sat, 26 Feb 2011 08:49:07 +0000 Subject: [PATCH 259/463] fix message --- apps/desktopgui/bundle-messages.sh | 5 +- apps/i2psnark/java/bundle-messages.sh | 5 +- apps/i2ptunnel/java/bundle-messages.sh | 5 +- apps/routerconsole/java/bundle-messages.sh | 5 +- apps/susidns/src/bundle-messages.sh | 5 +- build.xml | 2 + installer/resources/readme/readme.html | 53 ++++++++++++++-------- 7 files changed, 41 insertions(+), 39 deletions(-) diff --git a/apps/desktopgui/bundle-messages.sh b/apps/desktopgui/bundle-messages.sh index 29713209e..420fb5945 100644 --- a/apps/desktopgui/bundle-messages.sh +++ b/apps/desktopgui/bundle-messages.sh @@ -25,10 +25,7 @@ if which find|grep -q -i windows ; then export PATH=.:/bin:/usr/local/bin:$PATH fi # Fast mode - update ondemond -echo Placing a file named messages_{LangCode}.only in locale folder, -echo will limit .po file update to the language specified by {LangCode}. -LG2=$(find locale -iname messages_*.only|tail -1) -[ LG2 ] && LG2=${LG2#locale/messages_} && LG2=${LG2%.only} +# set LG2 to the language you need in envrionment varibales to enable this # add ../java/ so the refs will work in the po file JPATHS="src" diff --git a/apps/i2psnark/java/bundle-messages.sh b/apps/i2psnark/java/bundle-messages.sh index 2a6a82470..64fc69f83 100755 --- a/apps/i2psnark/java/bundle-messages.sh +++ b/apps/i2psnark/java/bundle-messages.sh @@ -24,10 +24,7 @@ if which find|grep -q -i windows ; then export PATH=.:/bin:/usr/local/bin:$PATH fi # Fast mode - update ondemond -echo Placing a file named messages_{LangCode}.only in locale folder, -echo will limit .po file update to the language specified by {LangCode}. -LG2=$(find ../locale -iname messages_*.only|tail -1) -[ LG2 ] && LG2=${LG2#../locale/messages_} && LG2=${LG2%.only} +# set LG2 to the language you need in envrionment varibales to enable this # add ../java/ so the refs will work in the po file JPATHS="../java/src" diff --git a/apps/i2ptunnel/java/bundle-messages.sh b/apps/i2ptunnel/java/bundle-messages.sh index 2ee9eba7b..74bbc573e 100755 --- a/apps/i2ptunnel/java/bundle-messages.sh +++ b/apps/i2ptunnel/java/bundle-messages.sh @@ -24,10 +24,7 @@ if which find|grep -q -i windows ; then export PATH=.:/bin:/usr/local/bin:$PATH fi # Fast mode - update ondemond -echo Placing a file named messages_{LangCode}.only in locale folder, -echo will limit .po file update to the language specified by {LangCode}. -LG2=$(find ../locale -iname messages_*.only|tail -1) -[ LG2 ] && LG2=${LG2#../locale/messages_} && LG2=${LG2%.only} +# set LG2 to the language you need in envrionment varibales to enable this # add ../java/ so the refs will work in the po file JPATHS="../java/src ../jsp/WEB-INF" diff --git a/apps/routerconsole/java/bundle-messages.sh b/apps/routerconsole/java/bundle-messages.sh index 7bc06577c..f37ca27cf 100755 --- a/apps/routerconsole/java/bundle-messages.sh +++ b/apps/routerconsole/java/bundle-messages.sh @@ -24,10 +24,7 @@ if which find|grep -q -i windows ; then export PATH=.:/bin:/usr/local/bin:$PATH fi # Fast mode - update ondemond -echo Placing a file named messages_{LangCode}.only in locale folder, -echo will limit .po file update to the language specified by {LangCode}. -LG2=$(find ../locale -iname messages_*.only|tail -1) -[ LG2 ] && LG2=${LG2#../locale/messages_} && LG2=${LG2%.only} +# set LG2 to the language you need in envrionment varibales to enable this # # generate strings/Countries.java from ../../../installer/resources/countries.txt diff --git a/apps/susidns/src/bundle-messages.sh b/apps/susidns/src/bundle-messages.sh index 1e6d7db19..349eb3f1d 100755 --- a/apps/susidns/src/bundle-messages.sh +++ b/apps/susidns/src/bundle-messages.sh @@ -24,10 +24,7 @@ if which find|grep -q -i windows ; then export PATH=.:/bin:/usr/local/bin:$PATH fi # Fast mode - update ondemond -echo Placing a file named messages_{LangCode}.only in locale folder, -echo will limit .po file update to the language specified by {LangCode}. -LG2=$(find ../locale -iname messages_*.only|tail -1) -[ LG2 ] && LG2=${LG2#../locale/messages_} && LG2=${LG2%.only} +# set LG2 to the language you need in envrionment varibales to enable this # add ../src/ so the refs will work in the po file JPATHS="../src/java/ ../src/tmp/" diff --git a/build.xml b/build.xml index 25ed6e7d6..396c4909f 100644 --- a/build.xml +++ b/build.xml @@ -217,6 +217,8 @@ + + diff --git a/installer/resources/readme/readme.html b/installer/resources/readme/readme.html index f9865e672..8aa1d9577 100644 --- a/installer/resources/readme/readme.html +++ b/installer/resources/readme/readme.html @@ -76,38 +76,53 @@ your eepsite will be visible (but not discoverable) to others. Detailed instruct

    Troubleshooting & Further Assistance

    - + +

    Document updated: December 2010.
    From e990d98dabb723389bc437356302b333d2912f20 Mon Sep 17 00:00:00 2001 From: walking Date: Sun, 27 Feb 2011 04:03:37 +0000 Subject: [PATCH 260/463] rollback the readme I commited accidentally to hamada's version. fix flagbox --- installer/resources/readme/readme.html | 241 ++++++++---------- .../resources/themes/console/dark/console.css | 2 +- .../themes/console/light/console.css | 2 +- 3 files changed, 115 insertions(+), 130 deletions(-) diff --git a/installer/resources/readme/readme.html b/installer/resources/readme/readme.html index 8aa1d9577..c7bc1de06 100644 --- a/installer/resources/readme/readme.html +++ b/installer/resources/readme/readme.html @@ -1,128 +1,113 @@ -
    - -
    - English - عربية - 中文 - Deutsch - Français - Español - Português - Nederlands - Русский - Svenska - - -
    -

    Welcome to the Invisible Internet

    - - -

    Services on I2P

    - - -

    Anonymous Encrypted Web Hosting on I2P

    - - - -

    I2P-Hosted Sites of Interest

    - - - -

    Troubleshooting & Further Assistance

    - - - - -

    Document updated: December 2010.
    +
    + +
    + English + عربية + 中文 + Deutsch + Français + Español + Português + Nederlands + Русский + Svenska + + +
    +

    Welcome to the Invisible Internet

    + + +

    Services on I2P

    + + +

    Anonymous Encrypted Web Hosting on I2P

    + + + +

    I2P-Hosted Sites of Interest

    + + + +

    Troubleshooting & Further Assistance

    + +

    Document updated: December 2010.
    diff --git a/installer/resources/themes/console/dark/console.css b/installer/resources/themes/console/dark/console.css index 02d97d4b4..5691967d6 100644 --- a/installer/resources/themes/console/dark/console.css +++ b/installer/resources/themes/console/dark/console.css @@ -790,7 +790,7 @@ button:active { } .langbox { - margin: 21px 2px 2px 5px; + margin: 4px 2px 2px 5px; padding: 7px 10px 5px 10px; color: #EE9; font-size: 7pt; diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 3f49809f1..967350515 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -851,7 +851,7 @@ button:active{ } .langbox { - margin: 20px 10px 4px 5px; + margin: 4px 10px 4px 5px; padding: 8px 5px; color: #001; font-size: 7pt; From 30373bf6dfbcd1a180372aede9eec03b8e84efc3 Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 27 Feb 2011 13:46:55 +0000 Subject: [PATCH 261/463] * Reseed: Disable HTTPS until we have enough working hosts again --- .../java/src/net/i2p/router/web/ConfigReseedHelper.java | 2 +- router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigReseedHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigReseedHelper.java index ec5337cc5..249f5de59 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigReseedHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigReseedHelper.java @@ -22,7 +22,7 @@ public class ConfigReseedHelper extends HelperBase { public String modeChecked(int mode) { boolean required = _context.getBooleanProperty(Reseeder.PROP_SSL_REQUIRED); - boolean disabled = _context.getBooleanProperty(Reseeder.PROP_SSL_DISABLE); + boolean disabled = _context.getBooleanPropertyDefaultTrue(Reseeder.PROP_SSL_DISABLE); if ((mode == 0 && (!disabled) && (!required)) || (mode == 1 && (!disabled) && required) || (mode == 2 && disabled)) diff --git a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java index 4c4c2ce91..9677821b2 100644 --- a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java +++ b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java @@ -173,7 +173,7 @@ public class Reseeder { List URLList = new ArrayList(); String URLs = _context.getProperty(PROP_RESEED_URL); boolean defaulted = URLs == null; - boolean SSLDisable = _context.getBooleanProperty(PROP_SSL_DISABLE); + boolean SSLDisable = _context.getBooleanPropertyDefaultTrue(PROP_SSL_DISABLE); if (defaulted) { if (SSLDisable) URLs = DEFAULT_SEED_URL; From 21f14ac22e86ef921ee09124d66215709615c729 Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 27 Feb 2011 13:53:39 +0000 Subject: [PATCH 262/463] * Console: - Fix numerous readme HTML errors - Fix flag locations in readmes - desktopgui.enable now defaults to false; run systray if false - Start icon app before console - Restore systray form in configservice.jsp - Only save lang when clicking on flags if desktopgui is running - Only allow two-letter lang code from cgi parameter --- .../src/net/i2p/router/web/CSSHelper.java | 3 +- .../src/net/i2p/router/web/ContentHelper.java | 17 ++++-- .../i2p/router/web/RouterConsoleRunner.java | 50 +++++++++-------- apps/routerconsole/jsp/configservice.jsp | 8 +++ history.txt | 11 ++++ installer/resources/readme/readme.html | 56 ++++++++++++------- installer/resources/readme/readme_ar.html | 33 ++++++----- installer/resources/readme/readme_de.html | 33 ++++++----- installer/resources/readme/readme_es.html | 34 +++++------ installer/resources/readme/readme_fr.html | 34 +++++------ installer/resources/readme/readme_nl.html | 18 +++--- installer/resources/readme/readme_pt.html | 36 ++++++------ installer/resources/readme/readme_ru.html | 35 ++++++------ installer/resources/readme/readme_sv.html | 33 ++++++----- installer/resources/readme/readme_zh.html | 31 +++++----- .../themes/console/classic/console.css | 2 +- .../themes/console/classic/ieshim.css | 4 +- .../resources/themes/console/dark/console.css | 2 +- .../themes/console/light/console.css | 2 +- .../themes/console/midnight/console.css | 2 +- .../themes/console/midnight/ieshim.css | 4 +- .../src/net/i2p/router/RouterVersion.java | 2 +- 22 files changed, 260 insertions(+), 190 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java index 013216ad3..e65f9ec90 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java @@ -30,7 +30,8 @@ public class CSSHelper extends HelperBase { /** change default language for the router but don't save it */ public void setLang(String lang) { - if (lang != null && lang.length() > 0) + // TODO: Protect with nonce or require POST + if (lang != null && lang.length() == 2) _context.router().setConfigSetting(Messages.PROP_LANG, lang); } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java index 7a9d94793..1853ff246 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java @@ -22,15 +22,22 @@ public class ContentHelper extends HelperBase { if((_lang == null || !_lang.equals(l)) && (l != null)) { //Set language for router console _lang = l; - +/***** + TODO - Temporary for 0.8.4 + Needed for desktopgui. But there's no nonce protection. + Move the following to CSSHelper setLang(), or disable completely, + See comments in CSSHelper +*****/ if(_context == null) { setContextId(null); } - //Set language persistently throughout I2P - _context.router().setConfigSetting(Messages.PROP_LANG, _lang); - _context.router().saveConfig(); - _context.setProperty(Messages.PROP_LANG, _lang); + if (_context.getBooleanProperty("desktopgui.enabled")) { + //Set language persistently throughout I2P + _context.router().setConfigSetting(Messages.PROP_LANG, _lang); + _context.router().saveConfig(); + _context.setProperty(Messages.PROP_LANG, _lang); + } } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java index c50eb96cb..be46bdca0 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -11,9 +11,10 @@ import java.util.Properties; import java.util.StringTokenizer; import net.i2p.I2PAppContext; -import net.i2p.desktopgui.Main; +import net.i2p.apps.systray.SysTray; import net.i2p.data.Base32; import net.i2p.data.DataHelper; +import net.i2p.desktopgui.Main; import net.i2p.router.RouterContext; import net.i2p.util.FileUtil; import net.i2p.util.I2PAppThread; @@ -58,15 +59,6 @@ public class RouterConsoleRunner { static { System.setProperty("org.mortbay.http.Version.paranoid", "true"); - - //Check if we are in a headless environment, set properties accordingly - String headless = "java.awt.headless"; - if(GraphicsEnvironment.isHeadless()) { - System.setProperty(headless, "true"); - } - else { - System.setProperty(headless, "false"); - } } /** @@ -137,10 +129,34 @@ public class RouterConsoleRunner { } public static void main(String args[]) { + startTrayApp(); RouterConsoleRunner runner = new RouterConsoleRunner(args); runner.startConsole(); } + private static void startTrayApp() { + try { + //TODO: move away from routerconsole into a separate application. + //ApplicationManager? + VersionComparator v = new VersionComparator(); + boolean recentJava = v.compare(System.getProperty("java.runtime.version"), "1.6") >= 0; + // default false for now + boolean desktopguiEnabled = I2PAppContext.getGlobalContext().getBooleanProperty("desktopgui.enabled"); + if (recentJava && desktopguiEnabled) { + //Check if we are in a headless environment, set properties accordingly + System.setProperty("java.awt.headless", Boolean.toString(GraphicsEnvironment.isHeadless())); + String[] args = new String[0]; + net.i2p.desktopgui.Main.beginStartup(args); + } else { + // required true for jrobin to work + System.setProperty("java.awt.headless", "true"); + SysTray.getInstance(); + } + } catch (Throwable t) { + t.printStackTrace(); + } + } + public void startConsole() { File workDir = new SecureDirectory(I2PAppContext.getGlobalContext().getTempDir(), "jetty-work"); boolean workDirRemoved = FileUtil.rmdir(workDir, false); @@ -325,20 +341,6 @@ public class RouterConsoleRunner { } } - try { - //TODO: move away from routerconsole into a separate application. - //ApplicationManager? - VersionComparator v = new VersionComparator(); - String desktopguiEnabled = I2PAppContext.getGlobalContext().getProperty("desktopgui.enabled"); - int recentJava = v.compare(System.getProperty("java.runtime.version"), "1.6"); - if(recentJava >= 0 && (desktopguiEnabled == null || desktopguiEnabled.equalsIgnoreCase("true"))) { - String[] args = new String[0]; - net.i2p.desktopgui.Main.beginStartup(args); - } - } catch (Throwable t) { - t.printStackTrace(); - } - NewsFetcher fetcher = NewsFetcher.getInstance(I2PAppContext.getGlobalContext()); Thread t = new I2PAppThread(fetcher, "NewsFetcher", true); t.start(); diff --git a/apps/routerconsole/jsp/configservice.jsp b/apps/routerconsole/jsp/configservice.jsp index cfbd4ece1..d6864e5fb 100644 --- a/apps/routerconsole/jsp/configservice.jsp +++ b/apps/routerconsole/jsp/configservice.jsp @@ -42,6 +42,14 @@ <% } %>
    <% if ( (System.getProperty("os.name") != null) && (System.getProperty("os.name").startsWith("Win")) ) { %> +

    <%=intl._("Systray integration")%>

    +

    <%=intl._("On the windows platform, there is a small application to sit in the system tray, allowing you to view the router's status")%> + <%=intl._("(later on, I2P client applications will be able to integrate their own functionality into the system tray as well).")%> + <%=intl._("If you are on windows, you can either enable or disable that icon here.")%>

    +
    + " > + " > +

    <%=intl._("Run on startup")%>

    <%=intl._("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.")%> <%=intl._("If you prefer the command line, you can also run the ")%> install_i2p_service_winnt.bat (<%=intl._("or")%> diff --git a/history.txt b/history.txt index cb0b395ff..590cd5457 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,14 @@ +2011-02-27 zzz + * Console: + - Fix numerous readme HTML errors + - Fix flag locations in readmes + - desktopgui.enable now defaults to false; run systray if false + - Start icon app before console + - Restore systray form in configservice.jsp + - Only save lang when clicking on flags if desktopgui is running + - Only allow two-letter lang code from cgi parameter + * Reseed: Disable HTTPS until we have enough working hosts again + 2011-02-24 zzz * i2psnark: - Fix delete and remove buttons for Opera and w3m diff --git a/installer/resources/readme/readme.html b/installer/resources/readme/readme.html index 8aa1d9577..680a6c52b 100644 --- a/installer/resources/readme/readme.html +++ b/installer/resources/readme/readme.html @@ -1,6 +1,6 @@

    - -
    +
    +
    English عربية 中文 @@ -11,10 +11,11 @@ Nederlands Русский Svenska - +
    + +

    Welcome to the Invisible Internet

    +
    -
    -

    Welcome to the Invisible Internet

    @@ -25,17 +26,29 @@
  • Invisible Internet & Public Web Browsing
    On I2P you can access anonymous websites (eepsites) and other services (e.g. ssh over I2P, IRC, Jabber etc.) in addition to being able to host your own services. You can also access the normal web anonymously via I2P's built-in web proxy (outproxy). Configure your browser to use the HTTP proxy at 127.0.0.1 port 4444, then browse to an eepsite or a normal, unencrypted http:// address. For a pre-configured browser, you may wish to try I2PFox, a custom build of Firefox security hardened and tailored especially for I2P. If you wish to disable or change outproxy access to the normal internet, remove or modify the outproxy entry for false.i2p under the Outproxies option in the I2P HTTP Proxy Tunnel Editor. In the "Sites of Interest" section below, we list a few of the sites hosted on I2P.
  • Anonymous E-Mail
    Postman's I2P-based mail system can be accessed either via I2P's built-in mail client -(susimail) or using any mail client that supports smtp and pop3. -Accounts can send and receive mail from the normal internet. For an -account, visit hq.postman.i2p. Additionally, I2P-Bote is a new serverless, end-to-end encrypted e-mail system providing a web -interface and an integrated addressbook. It is developed by HungryHobo -and can be installed as a plugin.
  • + (susimail) or using any mail client that supports smtp and pop3. + Accounts can send and receive mail from the normal internet. For an + account, visit hq.postman.i2p. Additionally, I2P-Bote is a new serverless, end-to-end encrypted e-mail system providing a web + interface and an integrated addressbook. It is developed by HungryHobo + and can be installed as a plugin. -
  • Anonymous File Transfer
    I2PSnark is integrated into I2P, providing anonymous, encrypted BitTorrent transfers. In addition, Sponge develops a bittorrent client called Robert written in Python. There is also a port of eMule to I2P called iMule [Needs developers!], an anonymous, secure implementation of a Gnutella network, accessible using I2Phex [maintained by Complication, seeking new developers!], and additional facilities including browser-based file hosting.
  • -
  • Anonymous Chat
    Start your IRC client (e.g. Chatzilla, Pidgin, XChat) - and connect to the server at 127.0.0.1 port 6668. You do not need to configure a proxy in your IRC client; I2P provides you with a local IRC tunnel (configured in your IRC client as an IRC server or remote host). Your local I2P IRC tunnel on localhost:6668 will direct you to one of two IRC servers hosted on I2P by Postman and Badger, but neither you nor they know where the other is, and your mom, ISP or government is unable to intercept your conversation! Once you're there, #i2p-help,#i2p,#i2p-chat and #i2p-dev are just a few of the available channels you may wish to /join. There's also an I2P-based Instant Messenger for unmonitorable and uncensorable anonymous chat, as well as alternative IRC servers, Jabber servers, website-based chat, and more. And of course you're entirely free to run your own servers over I2P in whatever flavor you choose, or if you're a developer write your own I2P applications (both UDP and TCP protocols are provisioned), and realtime streaming is also possible. We also provide full access to the java-based api.
  • -
  • Forums & Blogging
    If you're looking to run your own blog or forum, you might be interested in Syndie, a distributed forum and blogging platform for I2P [Needs developers!]. There's also an I2P plugin port of the Java-based pebble blogging platform ported to I2P by zzz, available on i2plugins.i2p. And, of course, all normal blogging, forum and cms software will run over I2P, though you're advised to take extra precautions with security when setting up and to keep all associated software (e.g. Php, MySql, Python, Apache) up to date and locked-down! Also, there are quite a few community run forums on I2P in various languages; see below for some suggestions.
  • -
  • Plugins for I2P
    Extend the usefulness of I2P by installing plugins… blogging, chatting, file sharing and other plugins have already been written or ported and await your installation! Browse the plugins and related info at i2plugins.i2p. If you're a developer, a complete language-agnostic framework for writing your own plugins is provided with documentation; I2P plugins can be coded in any language.
  • +
  • Anonymous File Transfer
    I2PSnark is integrated into I2P, providing anonymous, encrypted BitTorrent transfers. + In addition, Sponge develops a bittorrent client called Robert written in Python. + There is also a port of eMule to I2P called iMule [Needs developers!], an anonymous, secure implementation of a Gnutella network, accessible using I2Phex [maintained by Complication, seeking new developers!], and additional facilities including browser-based file hosting.
  • +
  • Anonymous Chat
    Start your IRC client (e.g. Chatzilla, Pidgin, XChat) + and connect to the server at 127.0.0.1 port 6668. You do not need to configure a proxy in your IRC client; I2P provides you with a local IRC tunnel (configured in your IRC client as an IRC server or remote host). + Your local I2P IRC tunnel on localhost:6668 will direct you to one of two IRC servers hosted on I2P by Postman and Badger, but neither you nor they know where the other is, and your mom, ISP or government is unable to intercept your conversation! + Once you're there, #i2p-help,#i2p,#i2p-chat and #i2p-dev are just a few of the available channels you may wish to /join. + There's also an I2P-based Instant Messenger for unmonitorable and uncensorable anonymous chat, as well as alternative IRC servers, Jabber servers, website-based chat, and more. + And of course you're entirely free to run your own servers over I2P in whatever flavor you choose, or if you're a developer write your own I2P applications (both UDP and TCP protocols are provisioned), and realtime streaming is also possible. + We also provide full access to the Java API.
  • +
  • Forums & Blogging
    If you're looking to run your own blog or forum, you might be interested in Syndie, a distributed forum and blogging platform for I2P [Needs developers!]. + There's also an I2P plugin port of the Java-based pebble blogging platform ported to I2P by zzz, available on i2plugins.i2p. + And, of course, all normal blogging, forum and cms software will run over I2P, though you're advised to take extra precautions with security when setting up and to keep all associated software (e.g. Php, MySql, Python, Apache) up to date and locked-down! + Also, there are quite a few community run forums on I2P in various languages; see below for some suggestions.
  • +
  • Plugins for I2P
    Extend the usefulness of I2P by installing plugins… blogging, chatting, file sharing and other plugins have already been written or ported and await your installation! + Browse the plugins and related info at i2plugins.i2p. + If you're a developer, a complete language-agnostic framework for writing your own plugins is provided with documentation; I2P plugins can be coded in any language.
  • Anonymous Encrypted Web Hosting on I2P

    @@ -46,9 +59,9 @@ and can be installed as a plugin. any standard JSP/Servlet .war files under eepsite/webapps, or standard CGI scripts under eepsite/cgi-bin) and they'll show up. You can also run any alternative web server platform over I2P and replace the built-in server, or run it on another tunnel. -
  • Start Your Tunnel
    +
  • Start Your Tunnel
    After starting up, your pre-configured I2P Webserver Tunnel, -your eepsite will be visible (but not discoverable) to others. Detailed instructions for starting + your eepsite will be visible (but not discoverable) to others. Detailed instructions for starting your eepsite, registering an .i2p domain and promoting your site to others are accessible via your own I2P webserver on http://127.0.0.1:7658/help/.
  • @@ -85,7 +98,7 @@ your eepsite will be visible (but not discoverable) to others. Detailed instruct
  • Check your Configuration & Bandwidth Allocation
    I2P functions best when you can accurately reflect the speed of your network connection in the bandwidth configuration section. By default I2P is configured with some fairly conservative values that will not suit many use cases, so please take time to review these settings and correct where necessary. The more bandwidth you allocate, specifically upstream bandwidth, the more you will benefit from the network.
  • -
  • Firewalls, Modems & Routers
    Where possible, please ensure I2P/Java is allowed bi-directional port access from the internet by configuring your modem/router/pc firewall accordingly. +
  • Firewalls, Modems & Routers
    Where possible, please ensure I2P/Java is allowed bi-directional port access from the internet by configuring your modem/router/pc firewall accordingly. If you're behind a prohibitive firewall but have unrestricted outbound access, I2P can still function; you can turn off inbound access and rely on SSU IP Address Detection (firewall hole punching) to connect you to the network, and your network status in the side panel will indicate "Network: Firewalled". For optimal performance, where possible please ensure I2P's external port is visible from the internet (see below for more information).
  • @@ -97,7 +110,9 @@ your eepsite will be visible (but not discoverable) to others. Detailed instruct
  • Check Your Logs
    Logs may help resolve a problem. You may wish to paste excerpts in a forum for help, or perhaps paste it instead and reference the link on IRC for help.
  • -
  • Verify Java is Up to Date
    Ensure your Java is up to date [version 1.6 recommended and required for some features]. If you don't have Java installed, you probably want some implementation of the JRE (Java Runtime Engine); if you're a developer, the SDK may also be of interest, and possibly Apache Ant which we use to build the I2P Java binaries. +
  • Verify Java is Up to Date
    Ensure your Java is up to date [version 1.6 recommended and required for some features]. Check the version of your JRE (Java Runtime Environment) + at the top of the logs page. + If you're a developer, a Java SDK and Apache Ant are required to build from source.
  • Problems running on Legacy Hardware
    [Linux/Unix/Solaris] If you can't start the router with i2p/i2prouter start try the runplain.sh script in the same directory. Root privileges are usually not required to run I2P. If you need to compile the jBigi library (which is necessary in rare cases), consult appropriate documentation, visit the forums, or come pay a visit to our IRC developer channel. @@ -125,4 +140,5 @@ your eepsite will be visible (but not discoverable) to others. Detailed instruct -

    Document updated: December 2010.
    +

    Document updated: February 2011
    +
  • diff --git a/installer/resources/readme/readme_ar.html b/installer/resources/readme/readme_ar.html index 961f376a0..5de8e7891 100644 --- a/installer/resources/readme/readme_ar.html +++ b/installer/resources/readme/readme_ar.html @@ -1,18 +1,21 @@ -
    +
    +
    +
    + English + عربية + 中文 + Deutsch + Français + Español + Português + Nederlands + Русский + Svenska +
    + +

    مرحبا بكم في الانترنت الغير مرئية

    +
    -
    - English - عربية - 中文 - Deutsch - Français - Español - Português - Nederlands - Русский - Svenska -
    -

    مرحبا بكم في الانترنت الغير مرئية

    عندما تقوم بتشغيل I2P ستبدأ الأرقام على يسار الشاشة في الازدياد خلال الدقائق التالية وستظهر عبارة Shared Clients (ان لم تظهر، انظر التعليمات اسفله). عندها يمكنك الحصول على عدة خدمات مثل تورنت، البريد الإلكتروني السري، وخدمات أخرى:

    • يمكنك الوصول الى مواقع مجهولة (تسمى eepsites) و خدمات أخرى ( ssh على I2P Jabber،IRC الخ...) زيادة على امكانية استضافة ونشر موقعك الخاص : @@ -26,7 +29,7 @@
    • fproxy.tino.i2pFreenet مدخل الى شبكة
    • echelon.i2pموقع لتحميل مجموعة من البرامج (I2PFox, iMule, I2P-Messenger, ...)
    - هناك العديد من eepsites، فقط اتبع هذه الروابط لإكتشاف المزيد!
    + هناك العديد من eepsites، فقط اتبع هذه الروابط لإكتشاف المزيد!
  • تحميل الملفات يمكن استعمال برنامج Snark الموجود ضمن حزمة برامج I2P لتحميل ملفات BitTorrent.
  • diff --git a/installer/resources/readme/readme_de.html b/installer/resources/readme/readme_de.html index 17f937aa4..df0b506ce 100644 --- a/installer/resources/readme/readme_de.html +++ b/installer/resources/readme/readme_de.html @@ -1,18 +1,21 @@
    -
    - - English +
    +
    + English عربية - 中文 - Deutsch - Français - Español - Português - Nederlands - Русский - Svenska -
    -

    Willkommen im I2P!

    + 中文 + Deutsch + Français + Español + Português + Nederlands + Русский + Svenska +
    + +

    Willkommen im I2P!

    +
    +

    Wenn Du I2P gerade gestartet hast, sollten die "Aktiv:"-Zahlen links in den nächsten Minuten anwachsen. Du siehst dann dort ein als "versch. Klienten" bezeichnetes lokales Ziel gelistet (falls nicht, siehe unten). Sobald dieses erscheint, kannst Du:

    • "Eepseiten" besuchen - In I2P gibt es anonym gehostete Websites: @@ -28,7 +31,7 @@
    • paste.i2p2.i2p: anonymer Pastebin

    Es gibt viele andere Eepseiten - folge einfach den Links, die du findest, - setze Lesezeichen für Deine Favoriten, und besuche sie oft!
    + setze Lesezeichen für Deine Favoriten, und besuche sie oft!
  • Im Internet surfen - Es gibt in I2P einen HTTP-"Outproxy". Um ihn zu nutzen, kannst du ebenfalls den HTTP-Proxy auf Port 4444 verwenden - Konfiguriere Deines Browsers Proxy-Einstellungen darauf (siehe oben) und besuche jede normale URL - Deine Anfrage wird dann anonym @@ -88,5 +91,5 @@ in #i2p oder in #i2p-chat auf irc.postman.i2p - bzw. irc.freshcoffee.i2p chatten. (Beide unter irc://localhost:6668 erreichbar; die Server sind verbunden.) Wenn Du keinen Zugriff auf I2P hast, kannst du #i2p, #i2p-help und #i2p-de auch auf irc.freenode.net erreichen, dann allerdings nicht anonym.


    + bzw. irc.freshcoffee.i2p chatten. (Beide unter irc://localhost:6668 erreichbar; die Server sind verbunden.) Wenn Du keinen Zugriff auf I2P hast, kannst du #i2p, #i2p-help und #i2p-de auch auf irc.freenode.net erreichen, dann allerdings nicht anonym.

  • diff --git a/installer/resources/readme/readme_es.html b/installer/resources/readme/readme_es.html index e65eae26e..063743360 100644 --- a/installer/resources/readme/readme_es.html +++ b/installer/resources/readme/readme_es.html @@ -1,18 +1,21 @@
    - -
    - English +
    +
    + English عربية - 中文 - Deutsch - Français - Español - Português - Nederlands - Русский - Svenska -
    -

    ¡Bienvenido a I2P!

    + 中文 + Deutsch + Français + Español + Português + Nederlands + Русский + Svenska +
    + +

    ¡Bienvenido a I2P!

    +
    +

    Si acabas de iniciar I2P, al observar el menú de la izquierda, deberías notar que los números al lado de "Activos:" subirán en los próximos minutos y luego verás allí un Destino llamado "clientes diferentes" (si no, ¡mira abajo!)
    Apenas aparezca esto, puedes:

    • visitar páginas I2P ("Eepsites") - En I2P hay páginas web anónimas: @@ -27,8 +30,7 @@
    • echelon.i2p: archivo de software e informaciones sobre I2P (con aplicaciones de BitTorrent, iMule, I2PFox, I2P-Messenger, ...)
    • paste.i2p2.i2p: pastebin anónimo

    - Hay muchas páginas I2P más - simplemente ¡sigue los enlaces que encuentres, pon marcadores para tus favoritos y visítalos frecuentemente!
    + Hay muchas páginas I2P más - simplemente ¡sigue los enlaces que encuentres, pon marcadores para tus favoritos y visítalos frecuentemente!
  • navegar en internet - I2P cuenta con un HTTP-"Outproxy". Para poder usarlo, puedes también utilizar el proxy HTTP en el puerto 4444 - Si configuras tu navegador web para usar este proxy, puedes visitar las páginas web de forma anónima. El tráfico será enrutado através de la red I2P.
  • intercambiar datos - Hay una adaptación para I2P de la aplicación BitTorrent Snark.
  • @@ -76,5 +78,5 @@ , todos en los servidores irc.postman.i2p y irc.freshcoffee.i2p. (Puedes acceder a ambos bajo irc://localhost:6668; los dos servidores están conectados.) Si aún no tienes acceso a I2P, también puedes entrar en #i2p y #i2p-help del servidor irc.freenode.net - - entonces de forma no anónima.


    + entonces de forma no anónima.

    diff --git a/installer/resources/readme/readme_fr.html b/installer/resources/readme/readme_fr.html index daf8f958d..c73d6322f 100644 --- a/installer/resources/readme/readme_fr.html +++ b/installer/resources/readme/readme_fr.html @@ -1,18 +1,21 @@
    - -
    - English +
    +
    + English عربية - 中文 - Deutsch - Français - Español - Português - Nederlands - Русский - Svenska -
    -

    Bienvenu sur I2P!

    + 中文 + Deutsch + Français + Español + Português + Nederlands + Русский + Svenska +
    + +

    Bienvenu sur I2P!

    +
    +

    Si vous venez juste de lancer I2P, les chiffres sur la gauche à coté de Active devraient commencer à augmenter dans les prochaines minutes et vous verrez un "Shared client" en destination locale listés sur la gauche (si non, voir plus bas). Une fois qu'ils apparaissent, vous pouvez:

    • Parcourir les "eepsites" - sur I2P il y a des sites web anonymes hébergés - dites à votre navigateur d'utiliser le HTTP proxy a l'adresse 127.0.0.1 port 4444, ensuite vous pouvez naviguer sur les eepsites:
      @@ -25,9 +28,8 @@
    • fproxy.tino.i2p: un proxy Freenet 0.5
    • echelon.i2p: archive de software (I2PFox, iMule, I2P-Messenger, ...) et informations à propos de I2P
    • paste.i2p2.i2p: Pastebin anonyme
    • -
    - Il y a bien plus d'eepsites - suivez juste les liens au départ de ceux sur lesquels vous êtes, mettez-les dans vos favoris et visitez-les souvent!
    + Il y a bien plus d'eepsites - suivez juste les liens au départ de ceux sur lesquels vous êtes, mettez-les dans vos favoris et visitez-les souvent!
  • Parcourir le web - Il y a pour l'instant un outproxy HTTP sur I2P attaché à votre propre proxy HTTP sur le port 4444 - vous devez simplement configurer le proxy de votre navigateur pour l'utiliser (comme expliqué ci-dessus) et aller sur n'importe quel URL normale - vos requêtes seront relayées par le réseau i2p.
  • Transfer de fichiers - Il y a un port intégré de Snark le client BitTorrent.
  • Utiliser le service de mail anonyme - Postman a créé un sytème de mails compatible avec un client de messagerie normal (POP3 / SMTP) qui permet d'envoyer des emails autant au sein d'i2p que vers et à partir de l'internet normal! Créez-vous un compte à hq.postman.i2p. @@ -52,5 +54,5 @@

    Soyez patient - i2p peut s'avérer lent à démarrer la première fois car il recherche des pairs. Si, après 30 minutes, votre Actives: connecté/récent compte moins de 10 pairs connectés, vous devez ouvrir le port 8887 sur votre pare-feu pour avoir une meilleure connection. Si vous ne pouvez accéder à aucun eepsite (même www.i2p2.i2p), soyez sûr que votre navigateur utilise bien le proxy 127.0.0.1 sur le port 4444. Vous pouvez aussi faire part de votre démarche sur le site web I2P, poster des message sur le forum de discussion, ou passer par #i2p-help, #i2p-fr, #i2p ou #i2p-chat - sur IRC sur le serveur irc.freenode.net, irc.postman.i2p ou irc.freshcoffee.i2p (ils sont liés).


    + sur IRC sur le serveur irc.freenode.net, irc.postman.i2p ou irc.freshcoffee.i2p (ils sont liés).

  • diff --git a/installer/resources/readme/readme_nl.html b/installer/resources/readme/readme_nl.html index 3c0556905..f693c49c9 100644 --- a/installer/resources/readme/readme_nl.html +++ b/installer/resources/readme/readme_nl.html @@ -1,5 +1,6 @@
    -
    +
    +
    English عربية 中文 @@ -10,9 +11,11 @@ Nederlands Русский Svenska -
    - -

    Welkom op het Invisible Internet

    +
    + +

    Welkom op het Invisible Internet

    +
    + @@ -33,7 +36,7 @@ en maak verbinding met de server op Forums & Blogging
    Als je opzoek bent om je eigen blog of forum te draaien ben je misschien geïnteresseerd in Syndie, een distributed forum en blogging platform voor I2P [Ontwikkelaars gezocht!]. Er is ook een I2P plugin van het op Java gebaseerde pebble blogging platform geport naar I2P door zzz, beschikbaar op i2plugins.i2p. En, natuurlijk zullen alle normale blogging, forum en CMS software werken op I2P, wel word je geadviseerd extra veiligheidsmaatregelen te nemen bij het opzetten en alle gerelateerde software (bijv. PHP, MySQL, Python, Apache) up-to-date te houden en goed beveiligd! Ook zijn er reeds een aantal forums op I2P in verschillende talen; zie hier onder voor enkele suggesties. -
  • Plugins voor I2P
    Breid de gebruiks mogelijkheden van I2P uit door het installeren van plugins … blogging, chatting, file sharing en andere plugins zijn al geschreven of geport en wachten op installatie! Surf naar de plugins en gerelateerde info op i2plugins.i2p. Als je een ontwikkelaar bent is er een compleet taal-agnostisch framework beschikbaar voor het schrijven van eigen plugins, geleverd met documentatie; I2P plugins kunnen geprogrammeerd worden in elke taal.
  • +
  • Plugins voor I2P
    Breid de gebruiks mogelijkheden van I2P uit door het installeren van plugins … blogging, chatting, file sharing en andere plugins zijn al geschreven of geport en wachten op installatie! Surf naar de plugins en gerelateerde info op i2plugins.i2p. Als je een ontwikkelaar bent is er een compleet taal-agnostisch framework beschikbaar voor het schrijven van eigen plugins, geleverd met documentatie; I2P plugins kunnen geprogrammeerd worden in elke taal.
  • Anoniem en versleutelde Web Hosting op I2P

    @@ -84,7 +87,7 @@ Als je achter een verbiedende firewall zit maar wel onbeperkt uitgaande toegang, zorg er dan voor dat je browser's proxy is ingesteld op http proxy (niet https, niet socks) via 127.0.0.1 poort 4444. Als je hulp nodig hebt is er een handleiding voor het configureren van je browser voor gebruik met I2P, ook beschikbaar op het normale Internet.
  • Controleer je Logs
    Logs kunnen je helpen met problemen oplossen. Je kan mogelijk fragmenten in een forum posten voor hulp, of misschien plakken en als referentie link laten zien op IRC voor hulp.
  • -
  • Verifieer dat Java up-to-date is
    Zorg er voor dat Java up-to-date is [versie 1.6 aanbevolen en vereist voor sommige functies]. Als je geen Java geinstalleerd hebt wil je waarschijnlijk een implementatie van de JRE (Java Runtime Engine); als je een ontwikkelaar bent is de SDK mogelijk ook interessant, en misschien Apache Ant die we gebruiken om de I2P Java binaries te compileren. +
  • Verifieer dat Java up-to-date is
    Zorg er voor dat Java up-to-date is [versie 1.6 aanbevolen en vereist voor sommige functies]. Als je geen Java geinstalleerd hebt wil je waarschijnlijk een implementatie van de JRE (Java Runtime Environment); als je een ontwikkelaar bent is de SDK mogelijk ook interessant, en misschien Apache Ant die we gebruiken om de I2P Java binaries te compileren.
  • Problemen met draaien op verouderde hardware
    [Linux/Unix/Solaris] Als je de router niet kan starten met i2p/i2prouter start probeer het runplain.sh script in de zelfde directory. Root rechten zijn normaliter niet vereist voor het draaien van I2P. Als je de jBigi library moet compileren (welke in zeldzame gevallen nodig is), raadpleeg de bijhorende documentatie, bezoek het forum of kom eens langs op ons IRC developer kanaal. @@ -103,4 +106,5 @@ Als je achter een verbiedende firewall zit maar wel onbeperkt uitgaande toegang,
  • Raak betrokken!
    I2P word ontwikkeld en onderhouden door hoofdzakelijk ongefinancierde en vrijwillige community leden. We accepteren graag donaties, welke zullen besteed aan essentiele hosting en administratie kosten. We hebben contante beloningen voor aspecten van I2P voor ontwikkelaars welke graag mee willen ontwikkelen, we zijn altijd opzoek naar meer Java coders, vertalers, promoters en gebruikers om I2P te helpen groeien. Hoe groter het I2P netwerk, hoe meer iedereen van de voordelen profiteert, simpelweg al je vrienden vertellen over I2P en ze helpen het te installeren is al een grote hulp. Voor meer informatie over hoe je betrokken kan raken, bezoek de vrijwilligers pagina op de website.
  • -

    Document geupdate: December 2010.
    +

    Document geupdate: December 2010
    +
    diff --git a/installer/resources/readme/readme_pt.html b/installer/resources/readme/readme_pt.html index 5c8a4136b..d79c5bd23 100644 --- a/installer/resources/readme/readme_pt.html +++ b/installer/resources/readme/readme_pt.html @@ -1,18 +1,21 @@ -
    - - - English +
    +
    +
    + English عربية - 中文 - Deutsch - Français - Español - Português - Nederlands - Русский - Svenska -
    -

    Bem-vindo a I2P!

    + 中文 + Deutsch + Français + Español + Português + Nederlands + Русский + Svenska +
    + +

    Bem-vindo a I2P!

    +
    +

    Se você acaba de iniciar I2P, os números à esquerda ao lado de "Active:" deberiam subir nos seguintes minutos e logo lá verá uma Destinação chamada "shared clients". (se não, veija embaixo!)
    Assim que apareça isto, você pode:

    • visitar páginas I2P ("Eepsites") - Na rede I2P tem páginas web anônimas: @@ -27,8 +30,7 @@
    • echelon.i2p: arquivo de software e informações sobre I2P (com aplicações de BitTorrent, iMule, I2PFox, I2P-Messenger, ...)
    • paste.i2p2.i2p: pastebin anônimo

    - Ha muitas mais páginas I2P - simplesmente segue os links que encontre, ponhe marcadores para os seus favoritos e visíte-los freqüentemente!
    + Ha muitas mais páginas I2P - simplesmente segue os links que encontre, ponhe marcadores para os seus favoritos e visíte-los freqüentemente!
  • navegar na internet - I2P dispõe de um "outproxy" http - para usâ-lo, também pode empregar o proxy http no porto 4444 - Se configurar o seu navegador web para usar este proxy, pode visitar as páginas web de maneira anônima e o trânsito será roteado atravez da rede I2P.
  • trocar dados - Ha uma adaptação para I2P da aplicação BitTorrent Snark.
  • @@ -76,5 +78,5 @@ todos nos servidores irc.postman.i2p e irc.freshcoffee.i2p. (A ambos pode acessar baixo irc://localhost:6668; os dois servidores estão conectados.) Se você ainda não tem acesso a I2P, também pode entrar em #i2p e #i2p-help do servidor irc.freenode.net - - mas então de forma não anônima.


    + mas então de forma não anônima.

    diff --git a/installer/resources/readme/readme_ru.html b/installer/resources/readme/readme_ru.html index 18a437e75..64e9a1339 100644 --- a/installer/resources/readme/readme_ru.html +++ b/installer/resources/readme/readme_ru.html @@ -1,19 +1,21 @@
    - -
    - English +
    +
    + English عربية - 中文 - Deutsch - Français - Español - Português - Nederlands - Русский - Svenska -
    - -

    Добро пожаловать в Невидимый Интернет

    + 中文 + Deutsch + Français + Español + Português + Nederlands + Русский + Svenska +
    + +

    Добро пожаловать в Невидимый Интернет

    +
    + @@ -34,7 +36,7 @@
  • Форумы и блоги
    Если вы намереваетесь запустить собственный блог или форум, возможно вы заинтересуетесь Syndie, распределённой платформой для форума или ведения блога в I2P [нужны разработчики!]. Ещё есть порт pebble - написанной на Java блоггинг-платформы, выполненный zzz в виде плагина для I2P, доступен на i2plugins.i2p. И, конечно, все обычные блоги, форумы и CMS будут работать через I2P, но будте аккуратны при их настройке, уделите должное внимание безопасности, в том числе и связанному софту (php, MySQL, Python, Apache и т.д.). Так же, в I2P есть несколько форумов на разных языках, поддерживаемых сообществом; ниже имеется несколько ссылок.
  • -
  • Плагины для I2P
    Повысьте полезность I2P установив плагины… блоггинг, чат, обмен файлами и другие плагины уже были написаны или портированы и ждут когда вы их установите! Смотрите плагины и сопутствующую информацию на i2plugins.i2p. Если вы программист, полный языконезависимый фреймворк для написания плагинов доступен и документирован; I2P плагины могут быть написаны на любом языке.
  • +
  • Плагины для I2P
    Повысьте полезность I2P установив плагины… блоггинг, чат, обмен файлами и другие плагины уже были написаны или портированы и ждут когда вы их установите! Смотрите плагины и сопутствующую информацию на i2plugins.i2p. Если вы программист, полный языконезависимый фреймворк для написания плагинов доступен и документирован; I2P плагины могут быть написаны на любом языке.
  • Анонимный шифрованный веб-хостинг в I2P

    @@ -89,7 +91,7 @@
  • Проверьте логи
    Логи могут помочь решить проблему. У вас может возникнуть желание запостить часть логов на форум, чтобы получить помощь, или, может быть, на pastebin, чтобы дать ссылку на IRC.
  • -
  • Проверьте свежесть Java
    Убедитесь, что у вас достаточно свежая Java [версия 1.6 рекомендуется и необходима для функционирования некоторых возможностей]. Если у вас не установлена Java, скорее всего, вам требуется какая-нибудь реализация JRE (Java Runtime Engine); если вы программист, SDK так же может быть интересен, и, возможно, Apache Ant, который мы используем для сборки бинарников I2P. +
  • Проверьте свежесть Java
    Убедитесь, что у вас достаточно свежая Java [версия 1.6 рекомендуется и необходима для функционирования некоторых возможностей]. Если у вас не установлена Java, скорее всего, вам требуется какая-нибудь реализация JRE (Java Runtime Environment); если вы программист, SDK так же может быть интересен, и, возможно, Apache Ant, который мы используем для сборки бинарников I2P.
  • Проблемы использования на устаревшем железе
    [Linux/Unix/Solaris] Если вы не можете запустить роутер с помощью i2p/i2prouter start, попробуйте воспользоваться скриптом runplain.sh, который находится в той же директории. Root-привилегии обычно не требуются для запуска I2P. Если вам нужно скомпилировать библиотеку jBigi (что необходимо в редких случаях), изучите соответствующую документацию, посетите форумы, или приходите на наш IRC-канал для разработчиков. @@ -109,3 +111,4 @@
  • Вовлекайтесь!
    I2P разрабатывается и сопровождается в основном за счёт неоплачиваемого, добровольного участия членов сообщества. Мы рады принимать пожертвования, которые идут на необходимые административные затраты и хостинг. Для разработчиков, ищущих материальные стимулы, у нас есть денежные премии за работу над некоторыми аспектами I2P, и мы всегда ищем Java программистов, переводчиков, популяризаторов и пользователей, помогающих I2P расширяться. Чем больше I2P-сеть, тем больше общая выгода, поэтому простой рассказ об I2P своим друзьям (и помощь с установкой и настройкой если нужно) - уже большая помощь. Для получения дальнейшей информации о том, как вы можете принять участие, посетите страницу для добровольцев на официальном сайте.

  • Документ обновлён: декабрь 2010.
    +
    diff --git a/installer/resources/readme/readme_sv.html b/installer/resources/readme/readme_sv.html index 597f45ca8..b3bde98bf 100644 --- a/installer/resources/readme/readme_sv.html +++ b/installer/resources/readme/readme_sv.html @@ -1,18 +1,21 @@
    - -
    - English +
    +
    + English عربية - 中文 - Deutsch - Français - Español - Português - Nederlands - Русский - Svenska -
    -

    Welcome to I2P!

    + 中文 + Deutsch + Français + Español + Português + Nederlands + Русский + Svenska +
    + +

    Welcome to I2P!

    +
    +

    Om du just har startat I2P kommer de "Aktiva: #/#" börja öka inom några få minuter och du kommer se en destination kallad "delade klienter" på den vänstra listan (om inte se @@ -39,7 +42,7 @@ Freenet proxy

  • paste.i2p2.i2p: anonym och säker pastebin

  • Det finns många fler eepsidor - följ bara länkarna från dom du ser, - spara dina favoriter och besök dom ofta!
    + spara dina favoriter och besök dom ofta!
  • surfa på nätet - det finns för närvarande en "utproxy" i I2P som är ansluten till din egen HTTP proxt på port 4444 - ställ helt enkelt in din @@ -106,5 +109,5 @@ förbi #i2p-help, #i2p eller #i2p-chat på IRC på irc.freenode.net, irc.postman.i2p -eller irc.freshcoffee.i2p (de är alla sammankopplade).


    +eller irc.freshcoffee.i2p (de är alla sammankopplade).

  • diff --git a/installer/resources/readme/readme_zh.html b/installer/resources/readme/readme_zh.html index f6bb7acf4..afdeaf472 100644 --- a/installer/resources/readme/readme_zh.html +++ b/installer/resources/readme/readme_zh.html @@ -1,17 +1,20 @@
    - -
    - English - 中文 +
    +
    + English عربية - Deutsch - Français - Español - Nederlands - Русский - Svenska -
    -

    欢迎使用 I2P!

    + 中文 + Deutsch + Français + Español + Nederlands + Русский + Svenska +
    + +

    欢迎使用 I2P!

    +
    +

    I2P 运行后的几分钟里控制台左侧的【活动节点】数量会逐渐增加, 在【本地目标】中出现【共享客户端】后,表示I2P已建立连接(没有出现?见 疑难解答)。 然后您可以:

    @@ -25,7 +28,7 @@
  • echelon.i2p:软件存档及有关I2P的相关文档 (例如 I2P Messenger 基于I2P的匿名聊天工具等) 
  • paste.i2p2.i2p:安全匿名的公共剪贴板

  • - I2P网络中还有很多其他站点 - 访问上面的网站你会找到更多,别忘了收藏你喜爱的 I2P 网站方便访问。
    + I2P网络中还有很多其他站点 - 访问上面的网站你会找到更多,别忘了收藏你喜爱的 I2P 网站方便访问。
  • 浏览 Web 网页 - 目前 IP2 网络中的出口代理("Outproxy")只有一个,它的HTTP代理映射在本机的4444端口上。- 将浏览器的代理设置指向为上述地址(127.0.0.1:4444)后,访问任何普通链接即可 - 您的HTTP请求将在 I2P 网络内部传递。
  • 文件交换 - I2P的其中一个本地 端口 用于内置的 Snark BitTorrent 客户端。
  • 匿名电邮 - 由POSTMAN维护的邮件系统支持普通邮件客户端(POP3 / SMTP),这个系统可以在 I2P 网络内部收发 Email 也可以收发来自外部 Internet 的邮件!建立I2P邮件帐户请到 hq.postman.i2p 申请。I2P中集成有Web界面的pop3/stmp邮件客户端 SUSIMail,并配置为使用POSTMAN 的邮件服务。
  • @@ -44,5 +47,5 @@ #i2p-help, #i2p#i2p-chat -这两个 IRC 频道上询问。 (这些服务器上的这两个频道是相通的)。


    +这两个 IRC 频道上询问。 (这些服务器上的这两个频道是相通的)。

    diff --git a/installer/resources/themes/console/classic/console.css b/installer/resources/themes/console/classic/console.css index ae7ec3ded..53f0a1b89 100644 --- a/installer/resources/themes/console/classic/console.css +++ b/installer/resources/themes/console/classic/console.css @@ -756,7 +756,7 @@ p { } .langbox { - margin: 18px -20px 0px 5px; + margin: 5px -20px 0px 5px; color: #001; font-size: 7pt; width: 280px; diff --git a/installer/resources/themes/console/classic/ieshim.css b/installer/resources/themes/console/classic/ieshim.css index 5bc3cb86b..add6dae6e 100644 --- a/installer/resources/themes/console/classic/ieshim.css +++ b/installer/resources/themes/console/classic/ieshim.css @@ -232,7 +232,7 @@ div.warning { } .langbox { - margin: 20px -18px 0px 5px; + margin: 7px -18px 0px 5px; } td { @@ -299,4 +299,4 @@ h1, h2, h3 { } .routersummary h2, .routersummary h3 { - background: #fff url(images/tinytitle.png) center right tile-x !important; \ No newline at end of file + background: #fff url(images/tinytitle.png) center right tile-x !important; diff --git a/installer/resources/themes/console/dark/console.css b/installer/resources/themes/console/dark/console.css index 02d97d4b4..9848617be 100644 --- a/installer/resources/themes/console/dark/console.css +++ b/installer/resources/themes/console/dark/console.css @@ -790,7 +790,7 @@ button:active { } .langbox { - margin: 21px 2px 2px 5px; + margin: 8px 2px 2px 5px; padding: 7px 10px 5px 10px; color: #EE9; font-size: 7pt; diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 3f49809f1..953d83e7e 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -851,7 +851,7 @@ button:active{ } .langbox { - margin: 20px 10px 4px 5px; + margin: 7px 10px 4px 5px; padding: 8px 5px; color: #001; font-size: 7pt; diff --git a/installer/resources/themes/console/midnight/console.css b/installer/resources/themes/console/midnight/console.css index 69919e3db..2d08e4e0c 100644 --- a/installer/resources/themes/console/midnight/console.css +++ b/installer/resources/themes/console/midnight/console.css @@ -776,7 +776,7 @@ p { } .langbox { - margin: 17px 0px 0px 5px; + margin: 4px 0px 0px 5px; color: #eef; font-size: 7pt; width: 240px; diff --git a/installer/resources/themes/console/midnight/ieshim.css b/installer/resources/themes/console/midnight/ieshim.css index aa9f29f9f..55c8c8f17 100644 --- a/installer/resources/themes/console/midnight/ieshim.css +++ b/installer/resources/themes/console/midnight/ieshim.css @@ -195,7 +195,7 @@ div.warning { } .langbox { - margin: 22px -20px 0px 5px; + margin: 9px -20px 0px 5px; } td { @@ -224,4 +224,4 @@ div.graphspanel img { div.graphspanel hr { margin: 20px 0; -} \ No newline at end of file +} diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 78754ef28..601535dbe 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 = 20; + public final static long BUILD = 21; /** for example "-test" */ public final static String EXTRA = "-rc"; From bb8736f2cdd67e92333aa26cd74e5159310cdb49 Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 27 Feb 2011 16:24:11 +0000 Subject: [PATCH 263/463] drop obsolete docs --- router/doc/net.png | Bin 24115 -> 0 bytes router/doc/techintro.html | 994 ---------------------------- router/doc/tunnel-alt-creation.html | 163 ----- router/doc/tunnel-alt.html | 467 ------------- router/doc/tunnel.html | 529 --------------- router/doc/udp.html | 759 --------------------- router/doc/udp.png | Bin 34329 -> 0 bytes 7 files changed, 2912 deletions(-) delete mode 100644 router/doc/net.png delete mode 100644 router/doc/techintro.html delete mode 100644 router/doc/tunnel-alt-creation.html delete mode 100644 router/doc/tunnel-alt.html delete mode 100644 router/doc/tunnel.html delete mode 100644 router/doc/udp.html delete mode 100644 router/doc/udp.png diff --git a/router/doc/net.png b/router/doc/net.png deleted file mode 100644 index 6eac3784245e13c794795634b797ec2ea0a2eab1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24115 zcmdRV^;;WX^k$1oix#)yrFd~jaHkMj+*{lVMH{?=7WYyhIKkbaP}~U++$kC~K=1&| z=exUq!#+E|oqObcpL6frnRDk%gtnH-a{^j|Cr_R{S5sAd|Kte<f=*?Um7L7n_B_4^JLg*jdmq^wz3a#U;@3<6G-AYc!Tpu=!hEov0D;@56B{HQr}B zJ!o`s8G2`thXAW4>QllZddv&! zU%!6U4J<<+VmXMAXx!(ZYdbDcdm=4pRaNDP2n1HZE!qHl69GYspgB3^n(jyD%du_( zusl7w(T*W)d%?fmvC#L{6UF|O_^!Hr*60%53|}*!`#K)W3^X;!EwX@$nzDG!y2ByX z$H#j(6AJ(Y)^1(X(7g5!MBn=7_#0y#UJRlKX9v>2+f6^wRA{shN*k=*)Kq6?V${@x zLSy*D(Q7Va=r|`sSAs_@?Ae*|N4 z_J4)Q#ykanqsR2ckibDX-Z@z%Aey#}`B6<-;oDI}b4>*UCyMFuK`#Lb2vr2qc$VEBhnN;67Q|q6V z!NI?HSLauc^gw!k z>biU~LRDlxRIE7ZLN2h!j??r&bikau{2nfSyEA`}BGBe zO@2CY2HM;7dKY`3%ZIC|i&F8mjM$js%J5GtZvSRD_! zUt%>BpaQ$L0ug_M(DfXmE)G^)l$ss&lZRg)E~M9)w#ywjJ0j-hj~PDuS-AN6Dv^nV zc_x_G8E(6jG;q#Q5fMp!VV#2aDt4%XR*{k@I$e|Y<0Ynnr5umdS2ZnPMy^HHG2n34e zNO`v4$9fv3sF*lF3F1-m_3h4;HTeFMp~X>nibQP-n5@M!p)!x&rUzovaioY2Mr-R4 z^W6!2py3FxG z$K><97Z%02e-d>wPa}Gd&CcGFS>nZt!u8n4J!<`*eSewozGEr&$YIE9OBTfI2=To7 zV`q-?jEr3*WM^)RXV=ii9yV%gSM_8_cwttospKj;$U7P%Y{P`$a6A1V5WbW8ERg99 zzpuR9GMvR&?#lHwPG_!yl224+a%s*%kzU@y%X!x-&^f(n-g2kNiKsDP&kfCMGXpnB z?KIt+hudd!GMRF}I|;{hSa;P;{>s*tQlaNXt0g=+XrWJ6$XLM=QmO(B)Hnh$0Bd`V z!y*2kzoR-z$$4%vCvEh4=FUnrmlLbR*vv&MUg+o~4LiAC2J<>>3yQec??P1;j^ z2lGK(u$76x6{ET!V%nCM-~@Oa&!%MuEj#juvYr9X&-T_^mHwS3qr`Mb?^p49Da^iyM9T^nWGo@v@&K#MdhU=h_ism{@ zDm0dbZB^en*gKS`Rwc@!lc10SAnJQdt}xE*bDLGXq^4b+iOLtzV-k9Pt(Y-pQZhg( zJQb;b9GR_FEDc?V2&I-#u0j+*l7;1nesY&4aGl*`uBz5scpAf(4@9czA$QNbD!~09 zDRIqxupUv}jjA09Gmqn=7wIAb9?etOSiCd*_GaSjWvs8IFxy2Hsa+W~TzDdJV57#! z6Y$PzIE5V8F=Vf7L+WW?J#fJo#p7yRGY0e^VW9JWKFZ{^MN)O+Dy#a$^b- zUw-5YD}z|Kv1_w~hM4QJf)oP%dV5jN&{c2E4fsS3_a66t0k!DYrm;r<@}aghBqi)9 zVJiv|o&1+pG(b1rsN8HjQQLD=SNolrwcYh<(U(RlIGoqp9%vRcj^d|l4`SFK9Fn>8 z_M?cYg|wkOH?q{*W)r*n?Tly4sKlQ-T56uk}eGp1-2)7m=dliIWSta#4>k*HJMfu^;YvQJY`ZV ziL3y+Ee9(w0{HS3?KA~dT5TAE_U6Tl4k*j%y^ji+(gyl6av-9m-w5LtbNs#n%Lvqf zK+!{*J)@i7o^cIRjw->Eo`k#2!nMBtv|)DD5YBkW!gt@BOUyAj1(2=E?enR+Wi)~- z$DUN|<>0$AsG>r#hH^GbjbMPPI)X;4naOJd-y%oJ?<5!4=P$_2w*}vM`l}v1y z7~i!fZxK`!|JQ8GWYnItk(c|9vVeG&%&-y&QwciNR0NheE@shDC>)-V5+OG#9s`rL$8?V{H&z?4mTfRM|@wDp_v};0K{LA5NNg zxm2rV6TULsba0x?Q1I&EiPhnjkmxycd?F;2DKuDOa(E1;EOgv_yqsyb?ta_)`8*s8 z^oCO7o&PSjt9CzLW~0#zW6Go%O`TTSLx0%!meo-G9OU<8=@-F)Tha14qHsJmk+UOyrnV)f^yV{M=w`gP zF1xSyhp+PWHRjfU$K#Dd(Ns*epg4I04gMaJd?m8JwmOr`&yhEXDoSb4X*LJ@S7D)1 zQ@dThUnl9lGtDH9`FVfwb}UHC-9YY7j!7i3daPGy+ecea5LA-Ke(X%>GLkwm=3nAP z8!H68IoHjc)Y&msqv`~~kXnY2$8A;QfZ;G{APeEXX%8$`Mg_ZDGsdm_;cFy3EY^9x z{F0mffFf}pJDLT&Pa^F+SYdOh5vZa#zR-b+N2DwKh_z2CaZimEDmdRHp?B<4*UgqueA&ZRIM#r!@C|fo z?6C9w1{#r}dI@>GN=Ivs?db-R2%c+m zgcrs`HIz152C=OP`w;sxaV4P8!_FiEDs_35$w%YI$au$+>G!9KWxX+oUm&c#^5*q9 z>B;HQ(b2I!H?2j(!XcQ}^BbvMc$v(HoqC!wRxX0|a;P2U4uXbLrFbg*W+&iqtWf!v zzTeTf!?gvA$WWnOB-;wg+Y4xNUQB%*ttAp))iy%>akTNQX3i)p!)ctHV#n*~Btl1r zTw~|T-doI1ck_DxEsxD4`D`9n&h$C`MloZ?GpYgYGrfTIaW#_5odKT$k2Z`YfcSm{ zA}~hRQSoi>Z;3?OYOc$?g|XSN!mU3Nyd8OvEP{8t!`VB}_z6DI%0sC(nApeppoh-C zpZ1p$!+yAKS1>D9j=s*ZBr&auU?(^FCOQ}u2vZuJK6j4K_^qWev;W2PJfBdFE&k!! z^gWr12BGo!>_Vkb6T(49D!S<2Q24F44JJsBVNv*qI1$aOA+JAswzzr3S>Zc5_~hpI z@He{9Acp61l@){hzxrjyHe}_NZw6lg7oGLOJW$q5#R0R%wn(-3r=y2Q6^C2_m;>f`^Npln@EZB*snGP6Q6rTh$T2>QKmw9r(w?I z8mkM=#5e}P4vJj8e0jfl#(RhL9O#P_mWRzD#aiE#7UEAKe%Us3=jit-LZIQsTFv3r zpkGZwL2{G1@Aelikqrr@?uVB}?Hq@Vi#sZqWYMNJyQ!n&$!1ABKJ2Q}1zHr146VsX^A{ zbECK6Z;9-Wgpc5XY1bl0H7UW0OLc^$9WnMq?1KW!)sn3a3a9-<{lji-YlTpiSUI2F zks}G;Nr}+~gOVN8JCU-js-Bs|hC7nxTE{I{Er5a||WW0e2Ce zP$7*|m0Zq^yn)-Wtzzgv7gXuSH*twnxFO4C?gTLVk{Fu{2t(j|N=@v(5$RSliE*6B zTMWdSOFdoG3<}1|+I@9llGEOm5f}a|^0dF&kt$M^I+j;Qs6N)pFWf(uQ)Eh>c4(bh zv>L()WUcV&RLK=cb|1L zThQMkGq9ksZ+$rPTdn$cYPg{G-1b1>g6hLomm;VltzyrY=a5nel@f6nrnawdt};_Y z+`;pC5z@J2()Z^O6{-4e2GO>Ripw&uFOE_je-Q)Ft^ZiR$p2#Tu|7OuyjF;@6)*N= zF8OEIT*KU4B3g|8XRiI3W_;70!|w@(c*ba+@toa|btTS#8vEaqwNnK?+K=UG{$l?@ z6s&wE5eo)OzkkLx=ZscI#Q&H}wlNJWQ0BV{*V`m6hRByeKTUdlYF~_K{&Hmafm3nb z6BO3#D7^*VFP8KJf2o^)mG)E+=&)&R7gXq;_X&PhXBwDL&=Eo-2$Wf_Hy+*=n6u6s ziecF2dNCNAGU=h3$Qgeu4>+E}bF!xv|7G^w3A|p+1{ty+AWEf5%#Da3>w&AtMu zH_-R_78*Bbg2(_Mu{)Z{x9V>fLTvhbFvzTDSrmpdu~L_wYRf4IweLHznn9s2JaOmh>NNvdhTuP3tRwr4c+M<#5tNS6bSyWHO@vnlfZaAG}27Qh($wOm|BS zpb|k)tW`zubP5Eduo>kPG=+zzWI_xHzR)JCZ<@rsPgHqFSV*n`=Upt=L7dEoX$Il+ z6`92z4PNs-Nec;sP?mZVcCoV>ObZiAm5dyPg$#&S)iam=0;L3d5+ml$&;kt1OiuH! zfht@4TQ>V#v)z|l-k&xjG%2U<7AQ2J{ZQCr9_8DsBd%I|iEoC8)6T6;qA2?;9&4v; z-bdp1BRRCe3D1y_hZBIWL&A4?Tev1R|Im>W-Mt9=kk}bAG7JqRy zGD%|b%vw*A|AG~vPsPh{291^J8OUnfHP5~@2-dbIcaoz_$)Ww_MYL>rkP~KRBh<6l zqQyQG9?F!E4crbSI<|#-xT~sC0=uKr&TlS3m8ZJ0^-r>QjK%--+C2n+sYOUgu(3r# z%5N(h%EEAgvvQ^AQybIg339MaW@Z{xe!%ViEdQ>%Es$y0kPy?i;s<>3{*#rl;#1)46MP8MKSz=jk;} z4q)SB4JK25x+>Q1CNi-2U^Ds14{sMAxqf|krDFR0G_S2h{}O(BSOz~`B-|ZjAOkpD zj>W--&Z8oKyI&}c9%7?5iSQxrZP-UX*F0w~tma|C&aBy-uEtwT8?Y?_y?fKKX~AcU zxVwXNWPtugi@D`@*F1J6B8|_-6NQAqF}o2Xv%F zPC7M67CG{4caWSCAT!SUIj@$O`n#R2EC@2bCQ)dzhCJjAT}xvaPh{l*-)EbwNhhh0 z03@FHx(9D5TDTNLvj*3Mm{jJRMY1_%43RxOZ?6xoueKjUc*}wUtJc(1GN5*Eut0oY zAxl@C`U|e0e*VGC^bP*>dq4+9Hm8^&l0G>o%3cerGm$WxlfP^2di~idqZJ+`;|b8G z^ZU-|d>FB?i#&1@b9XR80Nl>gk$)@x66}tF+EmoVb@zMgYVp67xDEQkDZ_T2`*c_! z^REzpydOI-cn{bl#m-#JxeK}5lwXP>}6&Ug^|r@&fr99ZfW zQuZ;M|4H57q5k@|xGW0DP5j-oGy$-5EMM&N&P2{^J6l5}8anbi`6c)i8#O{e2zh)q zBV{*D@F0LkNBJL|((TWQ6$6b{YDzJ->Bl|X##-x*50QX?kM$kJajr1s^=|_tfa}MS za;U#@Ibp}Az@fLV3@)hV@oVy`W>-#Gc_p>E_Cq#`(I06zA^uO_AG_Aw z$};pNGfo?Le9Jo|)l!@wIOtB_3-+x035JkWFhii93THNhvrI`#NsCjN_Y8?ofgRvn zj~GUI?ws5;-%rsr&7T}LkuF6PSS55MAK1>hJk?z*VuLOD6tq_RZ*?MF##_=*VH0vP zWda14z*9TEjimepg+@(UO;GH;>Ih;lE=wM0f^5MRFRJ5 z;o$%1$|;MeAt8F}?*t$jXK%POwsvVi%l|n|_rsfGB-nG9-C^LpN=8U|gya`e&{4;M zT&u`KqV0ym|A1ROf|EawRs{5p4>TW%XZwJiQ|5#qm)ZY0u%}Q%EG_Y)b|nAgakJOj z0gmM!&8KRo`NMZ!<5rld4ol5?92^DDku*Q*6drYYsA~^`U5#pc>&At7N|19n59;Ht zn#ElqSXo86X0$^+$Ieq@K;wiiGnStp5l~(IAG?*vmS-?$*{qMxLf4D>1P^BVah>-C zd7Uq!b^?lqkuQqhJS)|W3-r@&(w2&P3L|71&mj90&U1j*%)i{T(ReBDk6YS`j3Ocy zIxBt-qVAIwG?4oFjdA3~v+W7FhKQ3kJ?@J`Q-7ZO^p(y>!x7q|b=rwg&L|e`3PxBN z-1l$XpuGQ75BR2E_h-QE;oO`^puW`4hx6 zRrE?(RdwAuO(fyh;{L=|s73#u(qSZ4O|IOgf(S$oGqCdMi|Ma+DfQ}#_^ShHltewB}fhbd}baTMJ z;|6x;)b&BiOye2IjUlWpd2j7>(!tBzm^iSFG>P0g7GM75)CSGjZ6~-3_n{tV9{~-Y z9Oe_sTMmaZ3*`Pl*4;?^QzuCihMVe2l!3Qh@Di$5+~x~#%^xOz4({9S7f0_L z*Km-Uh1%)zYP$ne;`k*q909}g&r8Yo6$PEjCWheO`p$L=&Z`v?&#_vmX6=D?CmYUX z!{drxxDcbx1?EhgAC7RYH7=X2`c2^Qb^nYQJ>$1lr!5B=@hYe1(f@ucu*%$AxSZ|l zE`Ni5G<@ZW`^w;*=Mj!xuA$|>#KNuV=%O~&*R_=#f>cmU?M@xeYT)Hk3S*v$&=B6(l>fcU0lg>`)fPrfk zWfgyQUQr?xk|0AShg$o-f2>)kXIf%QC+iD&ndwUV$>)aHk#1`LUk!_7#L}`^KEIX?o|Mnq}B|v>uxv@jX4$3!Ti&;zdE@?=8Tz!vwZOEwKCG zW|~;C`a09=W25)CZ#cQ1$wew*(iUO3o>%Y%rDCRMS zRV>u!V?yXz6W^tk3^+|XD*ouISTA~d2APP@?#zb06Q>|+nR`JHRQZ#4kB`6HU5qI7 zOjg~?JO8tl(ABwCU<83fZ=#S7O+qWV%NJ{*uDp@>(U8jUz1nTerJS!xYC|}T{^}u& zA3gv&@PL0UXE32?8;L-}^08Y0Db%RZ%B_qs6M)*cH(Nk%j*Y8VXf}!YVED#sEvBS? za%kg-52>F@!C z*735_%o(YF%|E@nzQ4lK{7;8Y_f9uuU_U3lHGVi%V7kqyiyY|}B=Y#Fvlm%9%F> zqprj}3%N(f(hV4odoQ2R<0|2*&UX^gvB>mX^|9s!OTKsdAf9UHZJUyYNa`u$jL3hl z#>-EHdtpimd z3i7e3tvjnTWJF|dg%r3TYVtc&%tq_@D?jebRQQPb8$p$hw*wUoYvHyVKQ7;KzlU2F zw8A6hl;sV9U6ZzL8z#c`-HDu1AwkDgal4?pjPLl% z*Ns+oVJ{)YQ)#{rj1;exa1>-a-)k>Qe{oZya|VSzDABByn0nU`X$V5S^2Vg%q!Ol= zr(IYt2(79QA)qND9cUm;>4EOifmwF>hS5Hu8>0D)v1~JPEA!HaXvE$(G*k&w=$Iks z`w1KQU+C<!=x$y;=5wF3E@MOO0(N8_GIqjI5nkhRCC~Lu$`HZrt418fMq@59 z=i-Bk!=hur-(4@Qz@Ezo=Q2&ky=Q0zku3UUoEo*yC)XI1SwhFdK6vX~=?K@mu&~9& zMID{RFuwtN>rp@D!iWFoc-;@?_gV@>>TW0IXtd4`MyaSPI@J^ zIlCXh=ini~Is3nfI{D4EC%bmeZxx0~!idp1T=_S*CVKlh6Db)Wfgi=oqoa5^rJ9tj zFzwX)x*)&3*0+nRYn`77$g}NT|Cr;_l`?0JDB^^M?SInB6&$S+1)Ntw^h?jH=kyVy zH(Lxf#$9^G$jw*|V+G&^j9$gRwC4-}F!C zIk!0&H5+<-r(ORaD3GD8J~S3hD>`hl*61^ojEAp;&y~FXqk3dL%L;(eS&weXA810?# z4ExU6S3!`>jQzrGaXGOOb}O}KpF&gyvDO?yExd{jSZyopiIT~K*@o2Qd2Avlre@0O z@9iKK7TuYxWD|=3K zd(0QQ>iAR_^^Fk#_w2>^^(?#bj?AnaP_qL$=Y8~La%Rg=`#@2$lhEslB2pJ!Ro884ot1`GQ-jxvhgR9iW zV0rigb-xl)$%o>(u=(Gl9%l*luSX4n7eYrPx@1fgX zt9^V!V{mQx@;7{r!ohn{b0FEz-tz_=#Dw5^n#pWQM1jwQUAi|TaXC*9^DtrwKP#MB zJ3kS2%#!TExHWZA;*xqE2f1K!ab;q>kO}FSb6({6+E`6Mc9Z7OGQ4^2i4g1@x$O(k}puPJwUWd$caOnJ)8gbJNf-v^_Da++qd3llU@PUft(^?5f34TL4 z`=XfV^*?$vK)C$B-zG+4Hj_M!6N~;DB%m`wN-T$5D$|)?V zq4`0(U6E_}EsM8;5{!j*oW){x&_I||H?8pNHr}EhG|n??jO<%JpoKdfc+!$olPe&r z#>c+GLr}S;o1H*A=z) zkrq*BVOsVqK&gDW%+$J%ib9ph2B}x8!l`DfX6latG3B*sgY>q{+E0%j+4F6>t;o;U79XNS3?Ut48lqAQYPUykjZ zKucHoBs08;zqWY&Y3b2~B3FXnjz8_KV*Y7TO|L=)MlbHa74Ki-7VYh#H(BXDE@4dm zpl0ixwoGFERtF%FV*SSWGY|QFZqSREOM&fMw;$Sk731YDJi1Xr$i1iNgU~A}o)cS2F|U`)p_; z%YsWoG!CnGg>6i;1YmBeO0c|}y5$WyOpx1JO9A{rkldn104T}J_9PhkhFE_JP`c)D z8|CSXCrEKM-Px%pz0R^WU^8($4z}Ipz6!YPs<1aO@|=qG0U_#I({#BoWOlhFtq6yQ z2}kapR2wLAna`?SF?f>q+t^8%@ab(|Ew^I#aa~<%H~70>cK)kUd0m%BvHsV^{q~j$ z5;tMb6QOkFU_M)8n+`q|_G_*aQ^8~cxfOjrSFu=S`pEMsdKh6!-(vK&9^ckkEF_LA zwe$F>e@tUCHv2CeTShSCG?SwKYii|(^Z9O_^4CX*WvLr33^0dV46cpGvu&Y|F8?42 zM-v-Xr1B}L|NI@I`1ttxgxdTpz^}_Wvp%gOIE0&}r(J&xEVrxX+%7xDI%YgtFMeMSCMflDh)E5R@LmOW(#!Zh zi*Huls1{s*W6&_2^RvqW%6fA$j{~7^Kuh-gef6|$WI1GKC~k4%6&pA^apx@!NHBW; z{m-3Aoj38P?gI1%Qhpc^LUlj@5TI9r12X?xYa7%31thS8Gwj2R>AnOsE)Q_~RAS{` z{3myt14FdeBSf1Oa7LC*6)B_1o+o%gu9I7LrFHU1uM_gj4%P66*BHhKah#TfXqMT{ zC(tmIW2ul}KIcNV#hC`Y6FZyNdPhF2+`v^8q#Twu-s2A$-VqfQeQhEgM0q4o?6HYh zC;JWiOdu6{5SlnNzd;T8@kI*qc%WEX;Zgb9Dk}QsL(J$X$K2LDO!ouI^wloCNF*VA zf^d27h<78RA3ov#{mW{g`hd6+*=I@l2*P(;eUegt(}xKuMeJCi>wzshLN%>Y)q@IH zmA`;iIUi`t+UgN>w|X^kn-TJlhmg9w5LrukiT*5lY#lg$OemNpp zF%HTs;IMaa2mSTfQjJ?%q2k}XfRFJwt(@o}4|`PFs|%lrE_fr#4z^2s@m&u)aAX3l zX{-bwAp(_2MwM9)Srx{B2>%$PEzBrrSL19ioTWB4uiqixD#3k5m`;foFP!bZrEna7&gzz+v$Ps>Ac}T6N}V9IF&|c&y_v;ajmOI_^EQ8tGj5 zru+kd`z}?$|8l19iSjMjr9j$z)XkSuNz(G^bD)uM5HZkQ{Dq)+=8Lvz!0wTW*O>xud= zag?NKc&2zu8gDAYeRY$$%=K}Jto|=6(ZR~7wF3s`8Nu_T#83jj$w42gj!ZKtu$+29 za_2ru6c6#xp2Q5{2ormO+?L)rvC0wao?<+_G}>4=@#d&yZ`pubqph#4I|I%JNp4%N ztE&yKMOWJLlyG0)T<-1do$(Xj(AIQ)LO%B2amnq>SqdAIiT88-+IZ4?Hg@m)_|@S0 zsxaEw&)-+cX4#b6C!oF}qVe{(A%CT%$$a!pK9LJ~iQdP83VjVtpWt-D()@7>ZV6sy zd})R_y?8uP^%4CxrtFIgThKD+J9zyW)4Sp?kMNcDx)2V< zkLg3YriXfg>j6fNjWANlJDDRLo4B#n7vF;NxK8q!w9FTos(GTBR?t-DbKP>XjhF9T zS2Eg9l8qNHGsz9Q<|`p<^S?P;TS4Z@pIXtIz0{KFDt`#zv)`6DJT9jzzBD3Q zzFw=fM%s!+L*$jvM5U)-iF)E;=%4EFWFbiy-Ei$yFCi;!-rWy zSG-aXoD+pa!L*IC=Dygc6PvFU<1%G%Na05~m`1~3cx$9m5&w*F1E&{*1DvW$w&0Z6 z5qG;bnEhFVf08g_q+R#^k~dCOy@3#IAcz-nfak;}yDl*ZWYWhud`RQ%0>`FnAo{LD z=HXP}WnF60>R91DKng9yw0W>fdi%6ibN(aXJud$8oq)7_(M>_g!XNo3zQj5=SC5OI z5mMVoup=AuYBUs#YvN!n{AYl>6A4XdVuTowF(-wXyf)n(Qr&}d3~8(16T3e3i>B{z z_4WqcV{h~aJ1!$>M)r-p*6IzBTxx=58b0C#4^27mlFs z&fB=%D7_G!C)DTc#)_9pz&~mpANWJkx7i#BikUC$+WZjM_S$Q!aw6n(EdvB}AObFo zs4zXrdU*50OTc@+CusuL?EXpKB(rp55KCnxtOUdb7`YZg9a;ri_(n~Tt{%K=rM-K# zGC%#6bGeT}^uknjrPk=xW)+WKg~6O_)56azr{Cozm8Oj{cOn8fcm1v)piX9_#Yo^A zTq%RA-hIwa3A%e^O|#!=3qT;g?v4l~_|v~PYyP9n#?6J5@XX%xbDl!&?cLq8!%8xa z3=#Ds`n9r&k=oyM`}pnd@geK;xo$8{vf9+j5*o;%&k7U@lJQ}ZnVFVgP^CxA@xBhi zBm33Ll<{{x^cqWYm|sggx5;YLgI=M@Isf^#&$)PROBrN%mY$A{tfMAzb0#SBZnybc zk>tXOSAb-{_ZrV^9qHjKA(aZX_nMG>jHOrL@4u(q=p|8N_f@wG_q({rTbcEqEtmXi z)!PX{$i28526R-BF7^jNNg9mFr$5MZ* zK#XF#Sm7R3NjNx$e9SK)Oy-;P_b*5076M|)B>_lfsn0x-T6glrl2j1;4xWRdrTfs6 z8%OX35olWia#2{HLGfV6C6T4_sXZ-KC zk_pyv(uvj-kNe1?HK7dsQ;Dj_e|M1pa(G*;4Mx8a0hwfDU7=?yRf3g@q{hxM9I;amXS$`EKK6#97v!{dTIE z*hSJ$*ilQIw%UdE1D|%mYaKj`901^pBPwto1W%{q%BSGLv?rgUyY{_)Yn@FxI8;gy zsFbFH$4?8YcC?F`Pb*;UxR%(W_xqP3$)n3a150XvW@^PR$qYkF=rdcXFRe>ZNS?AV z8Ylv~5XMdp6F&59G(jN&X~wD4%Z2Qyo?o)xk!3Vjtx`DmoLYticl6Xlra?c6VWoMu z2lP_|;1zhyw9X+i<*9f2pI{kbOI8IfKr3eR=#VmBf5mIdwy{2l5{sAS!D=}RonOh> zt7v9CSVA<_>%pN(*dK+T$kd7nBGf_t=75bFQY1HcZ61quznla_bI)6>$nWdh zSfm)cUin5PZ4FD6bXNT3*94g%Q-xb=>cYOVTTEwIQ;=e6$dQMH+>7zDDun^oKj{Tq zyr#08Ts;XBvY$+LKZfK4uNl>HJp-biz*xR6By)SKq{L4ZN!r=Jk#&_Gw-#KuI3(v` zlx4`tw5_kV;nxdoZ*KEAeDp$ONloD+%WgZRIGEl-6uM%L&47}X4W)N0cTRlpHcjD5 z2AnUAXV-_F(Do?*4rj+uGvlMyzdD?+sSDn@+<<9!AqffsC5hNPrhc9j!jtB&=|)2@ z@R?-2KVMC+|P4 z+dBbotv~w4VKLNCvU61j53v)7r=_KPd7&}bF+ec>5-TIQ%@t;j9(9UHa6{GTyR19^ zxT0;v-8$E-&u+KZQ&d%B`V`SWJtMH&Skd6Lk1~h zw+F&`T>4JyE=o``pCd1ErP-6p$Pzz!SJQTkokoC)_cFupm8hSm$jANd+b_t#HvosXP~%e*CT`0+G& znx#^uQjfYccyip`cBF}ckUB4qZ#TJz=ZA2M`=^cbA2Bs+37#dbH?OfUFMrryBsf3f z{>oXd4`Zqx%F>u_{9#d8lM^u6{W)NHUUf4DEWg{%2L7k(_vI}`mCf|&#(ev#$$j-( z2hh~V`|(DYoc#w__c%r2IU@Wtvsfk7BUD7}u0XzNw+Qt)Yt$hsy798H{d zbT(%E8)oYWA0{~Vr)eOBV}A1ej89rf!<0RA&vpYtod`cys;h3E4|Jj^Mvu4ZPljb0 z&N>q$gJ!}x@{$byRaQ?a@sK-<3RTOK`W5MQpPfl)OlEnk&zF*QMM5Eyd^d6vRUZ`h zaL)!&L{HS|NOxb<&`YQ%&)ZD=T=y9n3vCVRF_L92BkPLTF_Ny-BR)%h z>JLY+9eR;HJUTeTZ$7U{XtM|7!tMY^|K?!u!3zYZ+%@urwpH{M#ccrBz*nK;d(0gy+-jGMe**3h!V2zW_~tS*Nv2BaDw&6zN5UM2s=aeU`&|q z%xsP~IK@IrYLTe?%$O`G&x1W4V0RNq zF$|RUhFzB$^|CxCJqK5*tD-Df@1j3{I@A#JOAO#svW(!O3RC8O$*d=TA>z^l4B@N!BJo+u-hbw@aC<;A6NW544(9L{7iGJ^Vo{|Nuv4|Qr;OJymtV7w5 zUsD}0rXmQL@QQc5oi7NG6>5O_yy_Eb`6~?*Hk~Qkcq!ZflX%sas6bV`P0MXk+b|P- z=)w5&WK)~Y0B+{#rjfz8xC3~xG00j4+nKA@Svp#YIn-&g1o#9i)*QSSo$gJalg8%m zOVs#~C0svay)SQh`=XK>#K#=3moX0LWq$RyWtZ@#?=b==o4ZA6jTduu0D(aiXBKt5 z6W1Oz`O&NQ|jJ&H2|QV{_6Wulo{B0>|4cw`P&8bJ9wWqQ!`G zx)W`owAJm45^7N3^~L~&A6o+`{^!Yy><{dx*d~%pi%{8K z@Xt8cEaBeod2`aeTzxvh7`IE89R~%Jej=-JmVl6fMv$46Q2HYQohT>?wvzJ&8guy( zqu{ZK%RE+y|6+A@acv6!m-Z$8HyJ3*pD7_PFs3~~^vp+JKfb&ovbVDMM0d;8!qF3e zc?%dh-a3C|@8Afqxm--`{swi;`pcf~8+)h|WeLFT`C<1V3+iVf(5gEPQE}zc2MIzj z|8>D-9@gH%iQP7Cjh(Yt*q(sQlC9P5D3M!T@J7(@RVWlH+yD~%*O!R%0VBUQP8RC# zjQ-(4#sp~(FwbxK#N$A|2*o@3hbXEr@w+{kH|Z~!L=nB_u8;SAmYVW2FPd(uK5Cw1 zgOmxfUgNWby8mCzeD^zC?-#8WiRea@Xo(uV6O2x@VG<<>5?zQEbr3`^QDUNpqXZM8 zM2Qx?MjgGzFo@CH1R3?t=YF62Kir?rFKeIkob^8MIeV?W_j{`?1nn%y0OA7zM|^=+ zjjJnW-{R5=170pzJ$P2QjH^n59_Gnww1G#o1+S(*9v106iRsOBHklPW8;y`*4;cuZ-f27R&_-NSen z7Wb@2@m4b?hS9f8)CS8Yyc|BK>hzn$RXnl>f)z!9VI}iY`(cr&(|PcmE@Co~xU!_( z=m=ffEMbi!Nsb92@?S6Ao#Yg7!)LS<1Dtj0@-@aj!pRdgXo0(Rs;u*#+(vJA9CXu~ z-z-SG&}#Ac>MH7q!6R0C@#G7oB{5m zW`A?@ZB98IOVHrsez%<@9s1b!*1J06c)yhp%Gklfo}gGt4h!`CrxVL(8PPNaleqZZ zXW}d6yI_AB@Udi{jb6Xx)4Ph$nAKjRVBE1k2XgsUn=!%*3D*jf>8RcOB~UDV@BD3p z1J!CN96o7i_L>AHz~HN(@eSF!-#fHF9nj_RN7f1WU=p0u16lHkS@MaAx^t z+>gvm+F6^YBVF@7S{vA{-J_PDHAMap&7l9<;_50bwx-em`+S4yiQ&7|PNEbVdQ8%M znnAZB&qhk+`{;rQuRPXBk_pS@rMAD{<_GUCcX3^>?JBOmZV9ov#4~1J3`g(xF5JJ5 z`IDQQE9E^V<$+!P+=vDKx@Dfd(?i53q?-}_?^W#lw$y^iM|jbB_gaZtFB@VI<;aF$ zl#c#DF&v5@IU1U^cc!8XLr{f1gAtj^977jqnhWD%@Dohi2_0ue^GSI43qJtAru3L^@zAi8QHcn@Q#wL#`z5(UEVk7GW?bZHAeYIG` z=^M^!s;Bmh9t%J53OT5;%NEUc^ z(HGcZ^3X+42}q;y4m-ZK^PV(@jE_+9_j#+>9+JqMpq}e1BBS_h&F{25=>=W*!hUX| ztmujuhE40uZmb1Rvai)*;=5hwmJt2b#}BsDTdu0%q8E?eQ9a)1%ZgK%n^#VO)pg zz>K89P_o^YY&(IeP-1*YnkKgJkmRDs^$%EpmJLZs;l^a!vXIZqlxr{L zy3WmZjs(qqkghLLRjH5TWG4MB?$DnqRJGpN`&{cNeyTXya2Ks3tm$$O?EpB9F;ok` zD_Wa@^ry8H>gmCax)9rqAuk2uHZP;lWT)mQdOV^iMe-2PyY`PZ0w6jgeXRRX&Z3&C zJ2=aicRs<(?*2`WuWp$`v>?19-O9^C!`WQJH_>oOh!iHz;LKmNALzHlX_x|wwlnvI z!U@MYt1YLWqwfh%@CPR8SuswOh02P(O8>mw5M0zDM9i;~eNHHD94>-q*CE)R%Kh!^^}_ zG_c;H&Y^aHT36+Dh2uvm9?b@s<|FTM*u*6|1Xb1dD~8YC)>*N7R47wW_~7?a%Nuipx5f#wLkXiTTnsa&MfNdKoS{uSp%2PpMXq(#-fJWnsxQ6xfm_Pa?T zoN8su?9jMBZ8zKb4%u!mo-t;?U^vQ26Y`=BZid9oPAAxZ5m+gGG!qH!m%zy2jZN%? zLl!3oG*FHh$Rz}~5tgZ)n3Ut#L60Th(9^-WTb{N zA`%w(k7JdL@T1LicQrzXg1R5jrIq)ONtHK25@Veg;XY+>YDYbOVHQ&aZ%qF3)aP?4s;JqYaiJ~%ue=vCvUgMNqB^SB4p z5ncuIEc{KO7$s|my9oFN*k_i0^R0sHw>2pKQ_qTSr2ZJkh^*kgSY69y(sO?7tKob@x@_?#Q782YTpQe}REut=X{SpDB#lG5!g zn$V$%<^Q5e10h(R+YtL}309ufn1RWZFR0#9U)M+`lVePO0;C_UbKJC~#GtW@L-Jh9 zucj4pFco4;2p_oA&De(S`}v$gGqHOc*7u(l>=Fi^He)OziaN30RlYb>`MownNvz0+C% zmI3{b;$z#sqzA{3-PHkn|G+)rgZ8D=JaJ>J;9qECy#J%;Bg#ahYA&%TR&S zP~rdaR}*N*gkVplsmPT>ccc$l@zHUW$D!t{o41!}-P^3hW;WaW>b1bao>M)Y36Bl zHw>zeU@82dIh*}LA|GFr;u?Y#;x12w_i-V?r^5;3q6`=%t+fFEpx}n>r2}NA)V%~D znIj6`Toju$?H10CImSt={)hyNJ0OK-N`~}Gqdy>Q8rz%SWHu=dB{)XvH)tRrJ{!8$ zDp5*{pegixiW|7|U5FG6Wu5);Gwn)~C379NOTnw!0ZiDZDP~T>f_bFq&y7CZ{Ur}r zE8S4`1C)U5t38>}!u_fYgd2y>v^(=SenP-VhOETpqDaYKFysyp5|~|<=sR$!5(vAo zUVvS<(t*wTLBkm3kP6UTONdOm&_k7tljGFAFR!0yUfud*%c7Cla9aUWVpQEfpu{ou zhq|*?zIwQ7Ze{cHL?vXOE%Ku=5p6N06XHfgCNUL9*0rw!`22; z?`=F<6bEkC(I^O=tNr!oz+J-%)vdBHjz0}InxvBDJlN8_04)dmQ7zBd;i_F-FkFXIdtRCYqySbe4W9Wt2u}*c#xOMRWe~JvAlKg(jZE?F*c0&C6VjP!OPsn^0hN`DbTJOp? zdgMh6lwZj!2IdSsuN`^3*7SU`_tz1HPC8$YAjmL)Gox^jyv7SY+eAXDUKkL8$l+<5 z(quAXraM=t1%}!$`|+K}q2ZPL(SwBw$1kuuJMxw8p35TAE6%@cFQT(<)4TSJX$FQX zKw6ivc&A3pD4zZeTYgmzg|zt^nTM2MHqjkYC}@JPf~Gv=@M~5dJ2CW{8WU+VH&`91 zFPyP7wvL|D+nk89#z`!gW8Z1l*(qU}+k7rzPk6MziF}r+AEh4V(r~qvA;(ur337_c z1lX1K&u8pb0s_lZ2#3^?ieGqluLXY+rVgc)$-65XovJ-S*yk;8LYW`|{UK&l7D%wD z$JjZ^CEm}ZC*Y-w4TgJpdqweq3Z{q-hXZsWXeR!;VUxdj_f@%{uBFjEpDO-mt8}T7 zhpFV*A}Zo36vC%cGKWHf3z-d2!2%t}GonQ?hVr}HbmV%hdTs;-#ZYviC^}{I*o7^h zzo3@!;q#pb*JUeH(_K2g-t9k@x@7)RR+z-o~l^uMtq=~%UYip_R zl3wWfC&a&cE5A({2(IsN7&Bzxn;ZWDKsHHwpf8ZDEf_XWb&X#SNZad+UV59{DO zB+4DaB7XY_Pt>Bi+-#>YZQ`g-#399|mqF*YNcj5#@2mH57q<>stDnSRw*Td@>SYqU zDo4&$ajg4kk>$n@*s7J-j?IB89ELwm=vZ$U6Q7@|!lKQ+;HlkM4RD1Sl-u)wXqpXZ z*=G9(=#PB?ZD{>O>1rJ&@XtXkpQ+UjZ4ziXVCW{s=MF7j{Hi9A%)cO(>lk}{cCbhY z{gEj`BF{Yd+n*vzj{zCwRF>|T&2nq2&98@ZPEoHONX8obfV*iIV z_~{q28){P5Mo~6^LuD+j)ataK)oZ%x$AU3VoT4mseEv_yZP)8 ztTp2$WaV*zT&mo2IdH%=vU?j&2f2}XOHAE95xqx!`I`!v^dttMSmBDX@-}AKv{<_| z&y#B&kgEz_C(emDGs~vVd>yQnFt1q?L&_lsRyYqka+O|Ye}k$Fyjp7ug5%j$9T^=r zSm~qs?DGTM{JIZNXIOvpAF}$WrT^unyAxrZbawFF{t=^*$oV{qU+S(d;`1+>tM=SO zO^cr_vq9TNW4V*-2ZC$k29n(zPWAeHjFqJTUiIU!JB_$j=EPI1jcx*({x(Af14x%o zfon2*CZFlNU=JM-d@-wZ$7iC$jxf@$#afQ5GKpT=1&ke?NlxTTk~olYRKtp$*osnC zy(OAaX!-KBb@en0X+5zuAv-$zk*adcff8z|ydR+wnYOI&XaGSkIqq5_c7+zd!3z5( z`w5bK1;#d%+D1y;qM#D$Th%=_4eGRkLk2!&A7p zCeY5z(JM`%&i@84Zhw*YUh8n5-?w@^9MBAcPz#1**cV%_0`fxT|(1Gsf zuWKqfPjiN-0Jm8bBeMA=q@g*b>?k$X$!tw$v2^?{loZD6kcjX&Bq1KI8AAs^Oa-y# zXDjRrqflht4cW;hj^%Rgf;aU;HV=;C_SIpRREYJ5PusH9M$$>0Ci=tOZUc_!$~fd2gE=WiBH5UN%Z}3~82`r8)7G4?Mjf zI6)VZPe!I(5+~slClp|dSh%2$Lo9$^65E9$pW>hg%k4K2a_1yg8FP(W)_!tz>4d$H z*b0WEjAFQCdslq_3C}YJRXRTDKVq!~?gCk^&8KHoPY?2DmlQVWw(HsQQSQ z6t($AM)k!!oHvrj=N!CO@RP}>D{;i!MOf-8mn+&lm7C%~G(V`oR6``ZyV5r`*Xp{1 z4#19{Bf7nf7b2W2&-ReYGO)J5muLHLIl$j;5C4g-Q)(aVdH_EAY4`c2rhzi@;;K#b zu2rbwL$LBgKsdKb>2IG=ja{XWpgeMaK7--xx9QTwffKd-MPSG z4rYTdyaRkTl#qVUa(1n-_G|nv{t<7LuEgyCdBc7i9OHi3(j~H5vx| z_|vZ>%p~ZdhtSw^PAa6^a>U`AA;x8iNqD$h`sav2i*tZ zi@zT7LD?S1HGkQ?7&Zpn|Ms=nI6cs?8S)Xq{{aFeU?Sttwr;)&evX`BZu`ZjBB#YK zCf2$8iz1rAK&JaCjQewY{BKxeb?tGe5*zqneA(!^biN18^Xq(Nt2Rl8yxjq#2AaPR z#*c31ou6(_7pwTV2q(3tWqCzHerGl!A~0U=Eq}iJj<`W9J7+1)@$gwFd5^^){eEvU zaQ-mtY5k%KyRI=kGz|&B71zJHIQZv4UMRCk$sy*{Fu~&?nl{4o^2W8NXTSvV`+U_A zlG9yVwJ&R%*s_h*^cksN5#nredwQEUZ>Lxl781~;6&gd{9vpz{y37(iT{=2m;w5n{ zxq?gn-L}n?Y%^@8BfDhTh|28DNVkQsQWjUzsfsr>lmMNQotcmC=4td63m6iLoli|l z`izn5f1yHNztD2&>P!hTamtY+e0+2*EV>@W#LD~5((jN&sQt16@02oB=eIp9ttOy9$bk%b>~W$> z4X!S6wDA5`N)u!BCHFz&Sb{7q6n4L&4-f`eRJE8=%S%sLf#i}$#X@nily3d+45IB5 z4n$dC$Nmo*PxqHZ6)T*~SmZ0W@4gKxN6dDD$`K7VioxTZl2u1JxMGa_*@2*ko6>Cu ze2^flGU?Ud4kMRmD|6mYY<6RFgTn2Q;oP*zakeVfka)EfypxfWb`7D|hp^f>Ys1Yx zv4PbKr{{4@tUz~<(_THTQ8Jclc{wm$;tSKS^fzS!eE~vcQl*Y@adBU!y5$$fpgWe^ zG)_mXyhaP%W^$RpWC9}fxtO=8ZH@y@$+3q2E=5MflK{Wxa&9pgm1;jXXO)5m)f(y3 z%aadb->HGMv~KVGY#+VJ73;a*Sv66ZpBb;Nt9)Qe;yTS@w#g^0=3Ur~4AC2wPz7+V zs|yVvirS;yH|W8$sz{_a-4GDAb!3!j_3BT$tsN2@nQ=-uP0Z^!Q)9A=oN6V7R?JD?iQ=L zc#hAA@S(N$}|0-}z%`^6-|n2}Mow zg*(s8>&#;l^Ts`z5j)z?U~u*0f;^Ah_x^CS!5pHyHp2z1&N*_HMg%m82&~*|J`ZpZ zA6!BKLEqSMiq#LaBGmU{rUV9Mfc?S9uG~U352b$B<-?QxdVB&{kfXv^X{}37D|+{q zrk<|#ATa9nO8lFLFCo5*L6bHEZWl`$jjt5Qf#C7p_M`^d?)&c%6LZE%$-=+}T}z*3 z%HiOhq@#^@V&UU=wei28G|FFycIBfL7k&Cs5Si zKDUbh{*ksfm`>f|9<5F3He3hZBN?u#%yhmC+Fs+*;pWo#a`G1qvc9UMSWZv?Yaxbw z_Q`ZwQddURfypU5=hERUPFa{?$0z!isvY_9gP<}OXu$in_kNNvmdsaWH2ns~Ff$R_xzl{j7|f=R67cG};alq# z#{X#QnFVzvXErTCtS&{Upas}DJXm=p>+_4KY_WWC37D-m-C02dRp+RqL*L`u`w(yT zXx`6o9bq7i8D={o_i!Zg7nDCC6Ea3u$DR)7>!FPfTi;YY%26AwoVl@j3{3GYN03iUD9$4`^9Xi2qYf1YeRn z8?ZKwFC&=0`R&E8!OCCgOSPoPz(=pC{k248q`YGQlE`Nw7E1TxsLwqxa`aC6+SKED zn|UgrIicX$_^Qs)?dY=m?nA?m2vIt!J1Sy1X>L3k|1m}g{zf0FTY4!0G5qeO<8Gi9 zN(ueOJz!VWW9icr|Lzv75Zz`D87FLC4xzWC zY~{eYPlRF+ld*peeePGY0tQ^^-ILBe|9^l^Zl3T_xbHj(NW-5zPN1V{pi!x29sYj+ D6zp&p diff --git a/router/doc/techintro.html b/router/doc/techintro.html deleted file mode 100644 index 1574f5fa2..000000000 --- a/router/doc/techintro.html +++ /dev/null @@ -1,994 +0,0 @@ - - - Introducing I2P - a scalable framework for anonymous communication - - - - -
    -Introducing I2P
    -a scalable framework for anonymous communication
    -$Id: techintro.html,v 1.8.2.1 2006/02/13 07:13:35 jrandom Exp $ -
    -
    - - - - - -
    -
    -* Introduction
    -* Operation
    -  * Overview
    -  * Tunnels
    -  * Network Database
    -  * Transport protocols
    -  * Cryptography
    -
    -
    -
    -* Future
    -  * Restricted routes
    -  * Variable latency
    -  * Open questions
    -
    -
    -
    -* Similar systems
    -  * Tor
    -  * Freenet
    -* Appendix A: Application layer
    -
    -
    -
    - -
    - -

    Introduction

    -

    -I2P is a scalable, self organizing, resilient packet switched anonymous network layer, -upon which any number of different anonymity or security conscious applications -can operate. Each of these applications may make their own anonymity, latency, and -throughput tradeoffs without worrying about the proper implementation of a free -route mixnet, allowing them to blend their activity with the larger anonymity set of -users already running on top of I2P. Applications available already provide the full -range of typical Internet activities - anonymous web browsing, anonymous web hosting, -anonymous blogging and content syndication (with Syndie), -anonymous chat (via IRC or Jabber), anonymous swarming file transfers (with i2p-bt, I2PSnark, and -Azureus), anonymous file sharing (with -I2Phex), anonymous email (with I2Pmail -and susimail), anonymous newsgroups, as well as several -other applications under development. Unlike web sites hosted within content -distribution networks like Freenet or -GNUnet, the services hosted on I2P are fully -interactive - there are traditional web-style search engines, bulletin boards, blogs -you can comment on, database driven sites, and bridges to query static systems like -Freenet without needing to install it locally. -

    - -

    -With all of these anonymity enabled applications, I2P takes on the role of the message -oriented middleware - applications say that they want to send some data to a cryptographic -identifier (a "destination") and I2P takes care of making sure it gets there securely -and anonymously. I2P also bundles a simple streaming library -to allow I2P's anonymous best-effort messages to transfer as reliable, in-order streams, -transparently offering a TCP based congestion control algorithm tuned for the high -bandwidth delay product of the network. While there have been several simple SOCKS -proxies available to tie existing applications into the network, their value has been -limited as nearly every application routinely exposes what, in an anonymous context, -is sensitive information. The only safe way to go is to fully audit an application to -ensure proper operation, and to assist in that we provide a series of APIs in various -languages which can be used to make the most out of the network. -

    - - - - -

    -I2P is not a research project - academic, commercial, or governmental, but is instead -an engineering effort aimed at doing whatever is necessary to provide a sufficient -level of anonymity to those who need it. It has been in active development since -early 2003 with one full time developer and a dedicated group of part time contributors -from all over the world. All of the work done on I2P is open source and -freely available on the website, with the majority -of the code released outright into the public domain, though making use of a few -cryptographic routines under BSD-style licenses. The people working on I2P do not -control what people release client applications under, and there are several GPL'ed -applications available (I2PTunnel, -susimail, I2PSnark, Azureus, -I2Phex). Funding -for I2P comes entirely from donations, and does not receive any tax breaks in any -jurisdiction at this time, as many of the developers are themselves anonymous. -

    - -

    Operation

    -

    Overview

    - -

    -To understand I2P's operation, it is essential to understand a few key concepts. -First, I2P makes a strict separation between the software participating -in the network (a "router") and the anonymous endpoints ("destinations") associated -with individual applications. The fact that someone is running I2P is not usually -a secret. What is hidden is information on what the user is doing, if anything at -all, as well as what router a particular destination is connected to. End users -will typically have several local destinations on their router - for instance, one -proxying in to IRC servers, another supporting the user's anonymous webserver ("eepsite"), -another for an I2Phex instance, another for torrents, etc. -

    - -

    -Another critical concept to understand is the "tunnel" - a directed path through -an explicitly selected set of routers, making use of layered encryption so that -the messages sent in the tunnel's "gateway" appear entirely random at each hop -along the path until it reaches the tunnel's "endpoint". These unidirectional -tunnels can be seen as either "inbound" tunnels or "outbound" tunnels, referring -to whether they are bringing messages to the tunnel's creator or away from them, -respectively. The gateway of an inbound tunnel can receive messages from any -peer and will forward them down through the tunnel until it reaches the (anonymous) -endpoint (the creator). On the other hand, the gateway of an outbound tunnel is -the tunnel's creator, and messages sent through that tunnel are encoded so that -when they reach the outbound tunnel's endpoint, that router has the instructions -necessary to forward the message on to the appropriate location. -

    - -

    -A third critical concept to understand is I2P's "network database" (or "netDb") -- a pair of algorithms used to share network metadata. The two types of metadata -carried are "routerInfo" and "leaseSets" - the routerInfo gives routers the data -necessary for contacting a particular router (their public keys, transport -addresses, etc), while the leaseSet gives routers the information necessary for -contacting a particular destination. Within each leaseSet, there are any number -of "leases", each of which specifies the gateway for one of that destination's -inbound tunnels as well as when that tunnel will expire. The leaseSet also -contains a pair of public keys which can be used for layered garlic encryption. -

    - - - -

    -When Alice wants to send a message to Bob, she first does a lookup in the -netDb to find Bob's leaseSet, giving her his current inbound tunnel gateways. -She then picks one of her outbound tunnels and sends the message -down it with instructions for the outbound tunnel's endpoint to forward the -message on to one of Bob's inbound tunnel gateways. When the outbound -tunnel endpoint receives those instructions, it forwards the message as -requested, and when Bob's inbound tunnel gateway receives it, it is -forwarded down the tunnel to Bob's router. If Alice wants Bob to be able -to reply to the message, she needs to transmit her own destination explicitly -as part of the message itself (taken care of transparently in the -streaming library). Alice may also cut down on -the response time by bundling her most recent leaseSet with the message so -that Bob doesn't need to do a netDb lookup for it when he wants to reply, but this -is optional. -

    - -

    -While the tunnels themselves have layered encryption to prevent unauthorized -disclosure to peers inside the network (as the transport layer itself does to -prevent unauthorized disclosure to peers outside the network), it is necessary -to add an additional end to end layer of encryption to hide the message from the -outbound tunnel endpoint and the inbound tunnel gateway. This -"garlic encryption" lets Alice's router wrap up multiple -messages into a single "garlic message", encrypted to a particular public key -so that intermediary peers cannot determine either how many messages are within -the garlic, what those messages say, or where those individual cloves are -destined. For typical end to end communication between Alice and Bob, the -garlic will be encrypted to the public key published in Bob's leaseSet, -allowing the message to be encrypted without giving out the public key to Bob's -own router. -

    - -

    -Another important fact to keep in mind is that I2P is entirely message based -and that some messages may be lost along the way. Applications using I2P -can use the message oriented interfaces and take care of their own congestion -control and reliability needs, but most would be best served by reusing the -provided streaming library to view I2P as a streams -based network. -

    - -

    Tunnels

    - -

    -Both inbound and outbound tunnels work along similar principles - the tunnel -gateway accumulates a number of tunnel messages, eventually preprocessing them -into something for tunnel delivery. Next, the gateway encrypts that preprocessed -data and forwards it to the first hop. That peer and subsequent tunnel -participants add on a layer of encryption after verifying that it isn't a -duplicate before forward it on to the next peer. Eventually, the -message arrives at the endpoint where the messages are split out again and -forwarded on as requested. The difference arises in what -the tunnel's creator does - for inbound tunnels, the creator is the endpoint -and they simply decrypt all of the layers added, while for outbound tunnels, -the creator is the gateway and they pre-decrypt all of the layers so that after -all of the layers of per-hop encryption are added, the message arrives in the -clear at the tunnel endpoint. -

    - -

    -The choice of specific peers to pass on messages as well as their particular -ordering is important to understanding both I2P's anonymity and performance -characteristics. While the network database (below) has its own criteria for -picking what peers to query and store entries on, tunnels may use any peers in -the network in any order (and even any number of times) in a single tunnel. If -perfect latency and capacity data were globally known, selection and ordering -would be driven by the particular needs of the client in tandem with their threat -model. Unfortunately, latency and capacity data is not trivial to gather -anonymously, and depending upon untrusted peers to provide this information has -its own serious anonymity implications. -

    - -

    -From an anonymity perspective, the simplest technique would be to pick peers -randomly from the entire network, order them randomly, and use those peers -in that order for all eternity. From a performance perspective, the simplest -technique would be to pick the fastest peers with the necessary spare capacity, -spreading the load across different peers to handle transparent failover, and -to rebuild the tunnel whenever capacity information changes. While the former -is both brittle and inefficient, the later requires inaccessible information -and offers insufficient anonymity. I2P is instead working on offering a range -of peer selection strategies, coupled with anonymity aware measurement code to -organize the peers by their profiles. -

    - -

    -As a base, I2P is constantly profiling the peers with which it interacts with -by measuring their indirect behavior - for instance, when a peer responds to -a netDb lookup in 1.3 seconds, that round trip latency is recorded in the -profiles for all of the routers involved in the two tunnels (inbound and -outbound) through which the request and response passed, as well as the queried -peer's profile. Direct measurement, such as transport layer latency or -congestion, is not used as part of the profile, as it can be manipulated and -associated with the measuring router, exposing them to trivial attacks. While -gathering these profiles, a series of calculations are run on each to summarize -its performance - its latency, capacity to handle lots of activity, whether they -are currently overloaded, and how well integrated into the network they seem to -be. These calculations are then compared for active peers to organize the routers -into four tiers - fast and high capacity, high capacity, not failing, and failing. -The thresholds for those tiers are determined dynamically, and while they -currently use fairly simple algorithms, alternatives exist. -

    - -

    -Using this profile data, the simplest reasonable peer selection strategy is to -pick peers randomly from the top tier (fast and high capacity), and this is -currently deployed for client tunnels. Exploratory tunnels (used for netDb -and tunnel management) pick peers randomly from the not failing tier (which -includes routers in 'better' tiers as well), allowing the peer to sample -routers more widely, in effect optimizing the peer selection through randomized -hill climbing. These strategies alone do however leak information regarding the -peers in the router's tip tier through predecessor and netDb harvesting attacks. -In turn, several alternatives exist which, while not balancing the load as evenly, -will address the attacks mounted by particular classes of adversaries. -

    - -

    -By picking a random key and ordering the peers according to their XOR distance -from it, the information leaked is reduced in predecessor and harvesting attacks -according to the peers' failure rate and the tier's churn. Another simple strategy -for dealing with netDb harvesting attacks is to simply fix the inbound tunnel -gateway(s) yet randomize the peers further on in the tunnels. To deal with -predecessor attacks for adversaries which the client contacts, the outbound tunnel -endpoints would also remain fixed. The selection of which peer to fix on the most -exposed point would of course need to have a limit to the duration, as all peers -fail eventually, so it could either be reactively adjusted or proactively avoided -to mimic a measured mean time between failures of other routers. These two strategies -can in turn be combined, using a fixed exposed peer and an XOR based ordering within -the tunnels themselves. A more rigid strategy would fix the exact peers and ordering -of a potential tunnel, only using individual peers if all of them agree to participate -in the same way each time. This varies from the XOR based ordering in that the -predecessor and successor of each peer is always the same, while the XOR only makes -sure their order doesn't change. -

    - -

    -As mentioned before, I2P currently (release 0.6.1.1) includes the tiered random -strategy above, but the others are planned for the 0.6.2 release. A more detailed -discussion of the mechanics involved in tunnel operation, management, and peer -selection can be found in the -tunnel spec. -

    - -

    Network Database

    - -

    -As mentioned earlier, I2P's netDb works to share the network's metadata. Two -algorithms are used to accomplish this - primarily, a small set of routers are -designated as "floodfill peers", while the rest of the routers participate in -the Kademlia derived -distributed hash table for redundancy. To integrate the two algorithms, each -router always uses the Kademlia style store and fetch, but acts as if the -floodfill peers are 'closest' to the key in question. Additionally, when a -peer publishes a key into the netDb, after a brief delay they query another -random floodfill peer, asking them for the key, and if that peer does not have -it, they move on and republish the key again. Behind the scenes, when one of -the floodfill peers receives a new valid key, they republish it to the other -floodfill peers who then cache it locally. -

    - -

    -Each piece of data in the netDb is self authenticating - signed by the -appropriate party and verified by anyone who uses or stores it. In addition, -the data has liveliness information within it, allowing irrelevant entries to be -dropped, newer entries to replace older ones, and, for the paranoid, protection -against certain classes of attack. This is also why I2P bundles the necessary -code for maintaining the correct time, occasionally querying some SNTP servers -(the pool.ntp.org round robin by default) -and detecting skew between routers at the transport layer. -

    - -

    -The routerInfo structure itself contains all of the information that one router -needs to know to securely send messages to another router. This includes their -identity (made up of a 2048bit ElGamal public key, a 1024bit DSA public key, and -a certificate), the transport addresses which they can be reached on, such as -an IP address and port, when the structure was published, and a set of arbitrary -uninterpreted text options. In addition, there is a signature against all of -that data as generated by the included DSA public key. The key for this routerInfo -structure in the netDb is the SHA256 hash of the router's identity. The options -published are often filled with information helpful in debugging I2P's operation, -but when I2P reaches the 1.0 release, the options will be disabled and kept blank. -

    - -

    -The leaseSet structure is similar, in that it includes the I2P destination -(comprised of a 2048bit ElGamal public key, a 1024bit DSA public key, and a -certificate), a list of "leases", and a pair of public keys for garlic encrypting -messages to the destination. Each of the leases specify one of the destination's -inbound tunnel gateways by including the SHA256 of the gateway's identity, a 4 -byte tunnel id on that gateway, and when that tunnel will expire. The key for -the leaseSet in the netDb is the SHA256 of the destination itself. -

    - -

    -As the router currently automatically bundles the leaseSet for the sender inside -a garlic message to the recipient, the leaseSet for destinations which will not -receive unsolicited messages do not need to be published in the netDb at all. If -the destination itself is sensitive, the leaseSet could instead be transmitted -through other means without ever going into the netDb. -

    - -

    -Bootstrapping the netDb itself is simple - once a router has at least one routerInfo -of a reachable peer, they query that router for references to other routers in the -network with the Kademlia healing algorithm. Each routerInfo reference is stored in -an individual file in the router's netDb subdirectory, allowing people to easily -share their references to bootstrap new users. -

    - -

    -Unlike traditional DHTs, the very act of conducting a search distributes the data -as well, since rather passing Kademlia's standard IP+port pairs, references are given -to the routers that the peer should query next (namely, the SHA256 of those routers' -identities). As such, iteratively searching for a particular destination's leaseSet -or router's routerInfo will also provide you with the routerInfo of the peers along -the way. In addition, due to the time sensitivity of the data published, the information -doesn't often need to migrate between peers - since a tunnel is only valid for 10 -minutes, the leaseSet can be dropped after that time has passed. To take into -account Sybil attacks on the netDb, the Kademlia routing location used for any given -key varies over time. For instance, rather than storing a routerInfo on the peers -closest to SHA256(routerInfo.identity), they are stored on the peers closest to -SHA256(routerInfo.identity + YYYYMMDD), requiring an adversary to remount the attack -again daily so as to maintain their closeness to the current routing key. As the -very fact that a router is making a lookup for a given key may expose sensitive data -(and the fact that a router is publishing a given key even more so), all netDb -messages are transmitted through the router's exploratory tunnels. -

    - -

    -The netDb plays a very specific role in the I2P network, and the algorithms have -been tuned towards our needs. This also means that it hasn't been tuned to address the -needs we have yet to run into. As the network grows, the primary floodfill algorithm -will need to be refined to exploit the capacity available, or perhaps replaced with -another technique for securely distributing the network metadata. -

    - -

    Transport protocols

    - -

    -Communication between routers needs to provide confidentiality and integrity -against external adversaries while authenticating that the router contacted -is the one who should receive a given message. The particulars of how routers -communicate with other routers aren't critical - three separate protocols have -been used at different points to provide those bare necessities. To accommodate -the need for high degree communication (as a number of routers will end up -speaking with many others), I2P moved from a TCP based transport -to a UDP based one - "Secure Semireliable UDP", or "SSU". As described in the -SSU spec:

    - -
    -The goal of this protocol is to provide secure, authenticated, -semireliable, and unordered message delivery, exposing only a minimal amount of -data easily discernible to third parties. It should support high degree -communication as well as TCP-friendly congestion control, and may include -PMTU detection. It should be capable of efficiently moving bulk data at rates -sufficient for home users. In addition, it should support techniques for -addressing network obstacles, like most NATs or firewalls. -
    - -

    Cryptography

    - -

    -A bare minimum set of cryptographic primitives are combined together to provide I2P's -layered defenses against a variety of adversaries. At the lowest level, interrouter -communication is protected by the transport layer security - SSU -encrypts each packet with AES256/CBC with both an explicit IV and MAC (HMAC-MD5-128) -after agreeing upon an ephemeral session key through a 2048bit Diffie-Hellman exchange, -station-to-station authentication with the other router's DSA key, plus each network -message has their own hash for local integrity checking. -Tunnel messages passed over the transports have their own -layered AES256/CBC encryption with an explicit IV and verified at the tunnel endpoint -with an additional SHA256 hash. Various other messages are passed along inside -"garlic messages", which are encrypted with ElGamal/AES+SessionTags (explained below). -

    - -

    Garlic messages

    - -

    -Garlic messages are an extension of "onion" layered encryption, allowing the contents -of a single message to contain multiple "cloves" - fully formed messages alongside -their own instructions for delivery. Messages are wrapped into a garlic message whenever -the message would otherwise be passing in cleartext through a peer who should not have -access to the information - for instance, when a router wants to ask another router to -participate in a tunnel, they wrap the request inside a garlic, encrypt that garlic to -the receiving router's 2048bit ElGamal public key, and forward it through a tunnel. -Another example is when a client wants to send a message to a destination - the sender's -router will wrap up that data message (alongside some other messages) into a garlic, -encrypt that garlic to the 2048bit ElGamal public key published in the recipient's -leaseSet, and forward it through the appropriate tunnels. -

    - -

    -The "instructions" attached to each clove inside the encryption layer includes the -ability to request that the clove be forwarded locally, to a remote router, or to a -remote tunnel on a remote router. There are fields in those instructions allowing a -peer to request that the delivery be delayed until a certain time or condition has -been met, though they won't be honored until the -nontrivial delays are deployed. It is possible to -explicitly route garlic messages any number of hops without building tunnels, or even -to reroute tunnel messages by wrapping them in garlic messages and forwarding them a -number of hops prior to delivering them to the next hop in the tunnel, but those -techniques are not currently used in the existing implementation. -

    - -

    Session tags

    - -

    -As an unreliable, unordered, message based system, I2P uses a simple combination of -asymmetric and symmetric encryption algorithms to provide data confidentiality and -integrity to garlic messages. As a whole, the combination is referred to as -ElGamal/AES+SessionTags, but that is an excessively verbose way to describe the simple -use of 2048bit ElGamal, AES256, SHA256, and 32 byte nonces. -

    - -

    -The first time a router wants to encrypt a garlic message to another router, they encrypt -the keying material for an AES256 session key with ElGamal and append the AES256/CBC -encrypted payload after that encrypted ElGamal block. In addition to the encrypted -payload, the AES encrypted section contains the payload length, the SHA256 hash of the -unencrypted payload, as well as a number of "session tags" - random 32 byte nonces. The -next time the sender wants to encrypt a garlic message to another router, rather than -ElGamal encrypt a new session key they simply pick one of the previously delivered session -tags and AES encrypt the payload like before, using the session key used with that -session tag, prepended with the session tag itself. When a router receives a garlic encrypted -message, they check the first 32 bytes to see if it matches an available session tag - if -it does, they simply AES decrypt the message, but if it does not, they ElGamal decrypt the -first block. -

    - -

    -Each session tag can be used only once so as to prevent internal adversaries from unnecessarily -correlating different messages as being between the same routers. The sender of an -ElGamal/AES+SessionTag encrypted message chooses when and how many tags to deliver, -prestocking the recipient with enough tags to cover a volley of messages. Garlic messages -may detect the successful tag delivery by bundling a small additional message as a clove (a -"delivery status message") - when the garlic message arrives at the intended recipient and -is decrypted successfully, this small delivery status message is one of the cloves exposed and -has instructions for the recipient to send the clove back to the original sender (through an -inbound tunnel, of course). When the original sender receives this delivery status message, -they know that the session tags bundled in the garlic message were successfully delivered. -

    - -

    -Session tags themselves have a very short lifetime, after which they are discarded -if not used. In addition, the quantity stored for each key is limited, as are the -number of keys themselves - if too many arrive, either new or old messages may be -dropped. The sender keeps track whether messages using session tags are getting -through, and if there isn't sufficient communication it may drop the ones previously -assumed to be properly delivered, reverting back to the full expensive ElGamal -encryption. -

    - -

    -One alternative is to transmit only a single session tag, and from that, seed a -deterministic PRNG for determining what tags to use or expect. By keeping this -PRNG roughly synchronized between the sender and recipient (the recipient precomputes a -window of the next e.g. 50 tags), the overhead of periodically bundling a large number -of tags is removed, allowing more options in the space/time tradeoff, and perhaps -reducing the number of ElGamal encryptions necessary. However, it would depend -upon the strength of the PRNG to provide the necessary cover against internal -adversaries, though perhaps by limiting the amount of times each PRNG is used, any -weaknesses can be minimized. At the moment, there are no immediate plans to move -towards these synchronized PRNGs. -

    - -

    Future

    -

    -While I2P is currently functional and sufficient for many scenarios, there are -several areas which require further improvement to meet the needs of those -facing more powerful adversaries as well as substantial user experience optimization. -

    - -

    Restricted route operation

    - -

    -I2P is an overlay network designed to be run on top of a functional packet switched -network, exploiting the end to end principle to offer anonymity and security. -While the Internet no longer fully embraces the end to end principle, I2P does require a -substantial portion of the network to be reachable - there may be a number of peers -along the edges running using restricted routes, but I2P does not include an -appropriate routing algorithm for the degenerate case where most peers are -unreachable. It would, however work on top of a network employing such an -algorithm. -

    - -

    -Restricted route operation, where there are limits to what peers are -reachable directly, has several different functional and anonymity -implications, dependent upon how the restricted routes are handled. At the most -basic level, restricted routes exist when a peer is behind a NAT or firewall which -does not allow inbound connections. This was largely addressed in I2P 0.6.0.6 by -integrating distributed hole punching into the transport layer, allowing people -behind most NATs and firewalls to receive unsolicited connections without any -configuration. However, this does not limit the exposure of the peer's IP address to -routers inside the network, as they can simply get introduced to the peer through -the published introducer. -

    - -

    -Beyond the functional handling of restricted routes, there are two levels of -restricted operation that can be used to limit the exposure of one's IP address - -using router-specific tunnels for communication, and offering 'client routers'. For -the former, routers can either build a new pool of tunnels or reuse their exploratory -pool, publishing the inbound gateways to some of them as part of their routerInfo in -place of their transport addresses. When a peer wants to get in touch with them, -they see those tunnel gateways in the netDb and simply send the relevant message to -them through one of the published tunnels. If the peer behind the restricted route -wants to reply, it may do so either directly (if they are willing to expose their IP -to the peer) or indirectly through their outbound tunnels. When the routers that the -peer has direct connections to want to reach it (to forward tunnel messages, for -instance), they simply prioritize their direct connection over the published tunnel -gateway. The concept of 'client routers' simply extends the restricted route by not -publishing any router addresses. Such a router would not even need to publish their -routerInfo in the netDb, merely providing their self signed routerInfo to the peers -that it contacts (necessary to pass the router's public keys). Both levels of -restricted route operation are planned for I2P 2.0. -

    - -

    -There are tradeoffs for those behind restricted routes, as they would likely -participate in other people's tunnels less frequently, and the routers which -they are connected to would be able to infer traffic patterns that would not -otherwise be exposed. On the other hand, if the cost of that exposure is less -than the cost of an IP being made available, it may be worthwhile. This, of course, -assumes that the peers that the router behind a restricted route contacts are not -hostile - either the network is large enough that the probability of using a hostile -peer to get connected is small enough, or trusted (and perhaps temporary) peers are -used instead. -

    - -

    Variable latency

    - -

    -Even though the bulk of I2P's initial efforts have been on low latency communication, -it was designed with variable latency services in mind from the beginning. At the -most basic level, applications running on top of I2P can offer the anonymity of -medium and high latency communication while still blending their traffic patterns -in with low latency traffic. Internally though, I2P can offer its own medium and -high latency communication through the garlic encryption - specifying that the -message should be sent after a certain delay, at a certain time, after a certain -number of messages have passed, or another mix strategy. With the layered encryption, -only the router that the clove exposed the delay request would know that the message -requires high latency, allowing the traffic to blend in further with the low latency -traffic. Once the transmission precondition is met, the router holding on to the -clove (which itself would likely be a garlic message) simply forwards it as -requested - to a router, to a tunnel, or, most likely, to a remote client destination. -

    - -

    -There are a substantial number of ways to exploit this capacity for high latency -comm in I2P, but for the moment, doing so has been scheduled for the I2P 3.0 release. -In the meantime, those requiring the anonymity that high latency comm can offer should -look towards the application layer to provide it. -

    - -

    Open questions

    -
    -How to get rid of the timing constraint?
    -Can we deal with the sessionTags more efficiently?
    -What, if any, batching/mixing strategies should be made available on the tunnels?
    -What other tunnel peer selection and ordering strategies should be available?
    -
    - -

    Similar systems

    -

    -I2P's architecture builds on the concepts of message oriented middleware, the topology -of DHTs, the anonymity and cryptography of free route mixnets, and the adaptability of -packet switched networking. The value comes not from novel concepts of algorithms -though, but from careful engineering combining the research results of existing -systems and papers. While there are a few similar efforts worth reviewing, both for -technical and functional comparisons, two in particular are pulled out here - Tor -and Freenet. -

    - -

    Tor

    -

    website

    - -

    -At first glance, Tor and I2P have many functional and anonymity related similarities. -While I2P's development began before we were aware of the early stage efforts on Tor, -many of the lessons of the original onion routing and ZKS efforts were integrated into -I2P's design. Rather than building an essentially trusted, centralized system with -directory servers, I2P has a self organizing network database with each peer taking on -the responsibility of profiling other routers to determine how best to exploit available -resources. Another key difference is that while both I2P and Tor use layered and -ordered paths (tunnels and circuits/streams), I2P is fundamentally a packet switched -network, while Tor is fundamentally a circuit switched one, allowing I2P to -transparently route around congestion or other network failures, operate redundant -pathways, and load balance the data across available resources. While Tor offers -the useful outproxy functionality by offering integrated outproxy discovery and -selection, I2P leaves such application layer decisions up to applications running on -top of I2P - in fact, I2P has even externalized the TCP-like streaming library itself -to the application layer, allowing developers to experiment with different strategies, -exploiting their domain specific knowledge to offer better performance. -

    - -

    -From an anonymity perspective, there is much similarity when the core networks are -compared. However, there are a few key differences. When dealing with an internal -adversary or most external adversaries, I2P's simplex tunnels expose half as much -traffic data than would be exposed with Tor's duplex circuits by simply looking at -the flows themselves - an HTTP request and response would follow the same path in -Tor, while in I2P the packets making up the request would go out through one or -more outbound tunnels and the packets making up the response would come back through -one or more different inbound tunnels. While I2P's peer selection and ordering -strategies should sufficiently address predecessor attacks, I2P can trivially -mimic Tor's non-redundant duplex tunnels by simply building an inbound and -outbound tunnel along the same routers.

    - -

    -Another anonymity issue comes up in Tor's use of telescopic tunnel creation, as -simple packet counting and timing measurements as the cells in a circuit pass -through an adversary's node exposes statistical information regarding where the -adversary is within the circuit. I2P's unidirectional tunnel creation with a -single message so that this data is not exposed. Protecting the position in a -tunnel is important, as an adversary would otherwise be able to mounting a -series of powerful predecessor, intersection, and traffic confirmation attacks. -

    - -

    -Tor's support for a second tier of "onion proxies" does offer a nontrivial degree -of anonymity while requiring a low cost of entry, while I2P will not offer this -topology until 2.0. -

    - -

    -On the whole, Tor and I2P complement each other in their focus - Tor works towards -offering high speed anonymous Internet outproxying, while I2P works towards offering -a decentralized resilient network in itself. In theory, both can be used to achieve -both purposes, but given limited development resources, they both have their -strengths and weaknesses. The I2P developers have considered the steps necessary to -modify Tor to take advantage of I2P's design, but concerns of Tor's viability under -resource scarcity suggest that I2P's packet switching architecture will be able to -exploit scarce resources more effectively. -

    - -

    Freenet

    -

    website

    - -

    -Freenet played a large part in the initial stages of I2P's design - giving proof to -the viability of a vibrant pseudonymous community completely contained within the -network, demonstrating that the dangers inherent in outproxies could be avoided. -The first seed of I2P began as a replacement communication layer for Freenet, -attempting to factor out the complexities of a scalable, anonymous and secure point -to point communication from the complexities of a censorship resistant distributed -data store. Over time however, some of the anonymity and scalability issues -inherent in Freenet's algorithms made it clear that I2P's focus should stay strictly -on providing a generic anonymous communication layer, rather than as a component of -Freenet. Over the years, the Freenet developers have come to see the weaknesses -in the older design, prompting them to suggest that they will require a "premix" -layer to offer substantial anonymity. In other words, Freenet needs to run on top -of a mixnet such as I2P or Tor, with "client nodes" requesting and publishing data -through the mixnet to the "server nodes" which then fetch and store the data according -to Freenet's heuristic distributed data storage algorithms. -

    - -

    -Freenet's functionality is very complementary to I2P's, as Freenet natively provides -many of the tools for operating medium and high latency systems, while I2P natively -provides the low latency mix network suitable for offering adequate anonymity. The -logic of separating the mixnet from the censorship resistant distributed data store -still seems self evident from an engineering, anonymity, security, and resource -allocation perspective, so hopefully the Freenet team will pursue efforts in that -direction, if not simply reusing (or helping to improve, as necessary) existing -mixnets like I2P or Tor. -

    - -

    -It is worth mentioning that there has recently been discussion and work by the -Freenet developers on a "globally scalable darknet" using restricted routes between -peers of various trust. While insufficient information has been made publicly -available regarding how such a system would operate for a full review, from what -has been said the anonymity and scalability claims seem highly dubious. In -particular, the appropriateness for use in hostile regimes against state level -adversaries has been tremendously overstated, and any analysis on the implications -of resource scarcity upon the scalability of the network has seemingly been avoided. -Further questions regarding susceptibility to traffic analysis, trust, and other topics -do exist, but a more in-depth review of this "globally scalable darknet" will have -to wait until the Freenet team makes more information available. -

    - -

    Appendix A: Application layer

    - -

    -I2P itself doesn't really do much - it simply sends messages to remote destinations -and receives messages targeting local destinations - most of the interesting work -goes on at the layers above it. By itself, I2P could be seen as an anonymous and -secure IP layer, and the bundled streaming library as -an implementation of an anonymous and secure TCP layer on top of it. Beyond that, -I2PTunnel exposes a generic TCP proxying system for -either getting into or out of the I2P network, plus a variety of network -applications provide further functionality for end users. -

    - -

    Streaming library

    - -

    -The streaming library has grown organically for I2P - first mihi implemented the -"mini streaming library" as part of I2PTunnel, which was limited to a window -size of 1 message (requiring an ACK before sending the next one), and then it was -refactored out into a generic streaming interface (mirroring TCP sockets) and the -full streaming implementation was deployed with a sliding window protocol and -optimizations to take into account the high bandwidth x delay product. Individual -streams may adjust the maximum packet size and other options, though the default -of 4KB compressed seems a reasonable tradeoff between the bandwidth costs of -retransmitting lost messages and the latency of multiple messages. -

    - -

    -In addition, in consideration of the relatively high cost of subsequent messages, -the streaming library's protocol for scheduling and delivering messages has been optimized to -allow individual messages passed to contain as much information as is available. -For instance, a small HTTP transaction proxied through the streaming library can -be completed in a single round trip - the first message bundles a SYN, FIN, and -the small payload (an HTTP request typically fits) and the reply bundles the SYN, -FIN, ACK, and the small payload (many HTTP responses fit). While an additional -ACK must be transmitted to tell the HTTP server that the SYN/FIN/ACK has been -received, the local HTTP proxy can deliver the full response to the browser -immediately. -

    - -

    -On the whole, however, the streaming library bears much resemblance to an -abstraction of TCP, with its sliding windows, congestion control algorithms -(both slow start and congestion avoidance), and general packet behavior (ACK, -SYN, FIN, RST, rto calculation, etc). -

    - -

    Naming library and addressbook

    -

    Developed by: mihi, Ragnarok

    - -

    -Naming within I2P has been an oft-debated topic since the very beginning with -advocates across the spectrum of possibilities. However, given I2P's inherent -demand for secure communication and decentralized operation, the traditional -DNS-style naming system is clearly out, as are "majority rules" voting systems. -Instead, I2P ships with a generic naming library and a base implementation -designed to work off a local name to destination mapping, as well as an optional -add-on application called the "addressbook". The addressbook is a web-of-trust -driven secure, distributed, and human readable naming system, sacrificing only -the call for all human readable names to be globally unique by mandating only -local uniqueness. While all messages in I2P are cryptographically addressed -by their destination, different people can have local addressbook entries for -"Alice" which refer to different destinations. People can still discover new -names by importing published addressbooks of peers specified in their web of trust, -by adding in the entries provided through a third party, or (if some people organize -a series of published addressbooks using a first come first serve registration -system) people can choose to treat these addressbooks as name servers, emulating -traditional DNS. -

    - -

    -I2P does not promote the use of DNS-like services though, as the damage done -by hijacking a site can be tremendous - and insecure destinations have no -value. DNSsec itself still falls back on registrars and certificate authorities, -while with I2P, requests sent to a destination cannot be intercepted or the reply -spoofed, as they are encrypted to the destination's public keys, and a destination -itself is just a pair of public keys and a certificate. DNS-style systems on the -other hand allow any of the name servers on the lookup path to mount simple denial -of service and spoofing attacks. Adding on a certificate authenticating the -responses as signed by some centralized certificate authority would address many of -the hostile nameserver issues but would leave open replay attacks as well as -hostile certificate authority attacks. -

    - -

    -Voting style naming is dangerous as well, especially given the effectiveness of -Sybil attacks in anonymous systems - the attacker can simply create an arbitrarily -high number of peers and "vote" with each to take over a given name. Proof-of-work -methods can be used to make identity non-free, but as the network grows the load -required to contact everyone to conduct online voting is implausible, or if the -full network is not queried, different sets of answers may be reachable. -

    - -

    -As with the Internet however, I2P is keeping the design and operation of a -naming system out of the (IP-like) communication layer. The bundled naming library -includes a simple service provider interface which alternate naming systems can -plug into, allowing end users to drive what sort of naming tradeoffs they prefer. -

    - -

    Syndie

    - -

    -Syndie is a safe, anonymous blogging / content publication / content aggregation system. -It lets you create information, share it with others, and read posts from those you're -interested in, all while taking into consideration your needs for security and anonymity. -Rather than building its own content distribution network, Syndie is designed to run on -top of existing networks, syndicating content through eepsites, Tor hidden services, -Freenet freesites, normal websites, usenet newgroups, email lists, RSS feeds, etc. Data -published with Syndie is done so as to offer pseudonymous authentication to anyone -reading or archiving it. -

    - -

    I2PTunnel

    -

    Developed by: mihi

    - -

    -I2PTunnel is probably I2P's most popular and versatile client application, allowing -generic proxying both into and out of the I2P network. I2PTunnel can be viewed as -four separate proxying applications - a "client" which receives inbound TCP connections -and forwards them to a given I2P destination, an "httpclient" (aka "eepproxy") which -acts like an HTTP proxy and forwards the requests to the appropriate I2P destination -(after querying the naming service if necessary), a "server" which receives inbound I2P -streaming connections on a destination and forwards them to a given TCP host+port, -and an "httpserver" which extends the "server" by parsing the HTTP request and -responses to allow safer operation. There is an additional "socksclient" application, -but its use is not encouraged for reasons previously mentioned. -

    - -

    -I2P itself is not an outproxy network - the anonymity and security concerns inherent -in a mix net which forwards data into and out of the mix have kept I2P's design focused -on providing an anonymous network which capable of meeting the user's needs without -requiring external resources. However, the I2PTunnel "httpclient" application offers -a hook for outproxying - if the hostname requested doesn't end in ".i2p", it picks a -random destination from a user-provided set of outproxies and forwards the request to -them. These destinations are simply I2PTunnel "server" instances run by volunteers -who have explicitly chosen to run outproxies - no one is an outproxy by default, and -running an outproxy doesn't automatically tell other people to proxy through you. -While outproxies do have inherent weaknesses, they offer a simple proof of concept for -using I2P and provide some functionality under a threat model which may be sufficient -for some users. -

    - -

    -I2PTunnel enables most of the applications in use. An "httpserver" pointing at a -webserver lets anyone run their own anonymous website (or "eepsite") - a webserver -is bundled with I2P for this purpose, but any webserver can be used. Anyone may -run a "client" pointing at one of the anonymously hosted IRC servers, each of which -are running a "server" pointing at their local IRCd and communicating between IRCds -over their own "client" tunnels. End users also have "client" tunnels pointing at -I2Pmail's POP3 and SMTP destinations (which in turn are -simply "server" instances pointing at POP3 and SMTP servers), as well as "client" -tunnels pointing at I2P's CVS server, allowing anonymous development. At times people have -even run "client" proxies to access the "server" instances pointing at an NNTP server. -

    - -

    i2p-bt

    -

    Developed by: duck, et al

    - -

    -i2p-bt is a port of the mainline python BitTorrent client to run both the tracker and -peer communication over I2P. Tracker requests are forwarded through the eepproxy to -eepsites specified in the torrent file while tracker responses refer to peers by their -destination explicitly, allowing i2p-bt to open up a -streaming lib connection to query them for blocks. -

    - -

    -In addition to i2p-bt, a port of bytemonsoon has been made to I2P, making a few -modifications as necessary to strip any anonymity-compromising information from the -application and to take into consideration the fact that IPs cannot be used for -identifying peers. -

    - -

    I2PSnark

    -

    I2PSnark developed: jrandom, et al, ported from mjw's Snark client

    - -

    -Bundled with the I2P install, I2PSnark offers a simple anonymous bittorrent -client with multitorrent capabilities, exposing all of the functionality through -a plain HTML web interface. -

    - -

    Azureus/azneti2p

    -

    Developed by: parg, et al

    - -

    -The developers of the Azureus BitTorrent client -have created an "azneti2p" plugin, allowing Azureus users to participate in anonymous -swarms over I2P, or simply to access anonymously hosted trackers while contacting -each peer directly. In addition, Azureus' built in tracker lets people run their -own anonymous trackers without running bytemonsoon (which has substantial prerequisites) -or i2p-bt's tracker. The plugin is currently (July 2005) fully functional, but is in early -beta and has a fairly complicated configuration process, though it is hopefully going -to be streamlined further. -

    - -

    I2Phex

    -

    Developed by: sirup

    - -

    -I2Phex is a fairly direct port of the Phex Gnutella filesharing client to run -entirely on top of I2P. While it has disabled some of Phex's functionality, -such as integration with Gnutella webcaches, the basic file sharing and chatting -system is fully functional. -

    - -

    I2Pmail/susimail

    -

    Developed by: postman, susi23, mastiejaner

    - -

    -I2Pmail is more a service than an application - postman offers both internal and -external email with POP3 and SMTP service through I2PTunnel instances accessing a -series of components developed with mastiejaner, allowing people to use their -preferred mail clients to send and receive mail pseudonymously. However, as most -mail clients expose substantial identifying information, I2P bundles susi23's -web based susimail client which has been built specifically with I2P's anonymity -needs in mind. The I2Pmail/mail.i2p service offers transparent virus filtering as -well as denial of service prevention with hashcash augmented quotas. -In addition, each user has control of their batching strategy prior to delivery -through the mail.i2p outproxies, which are separate from the mail.i2p SMTP and -POP3 servers - both the outproxies and inproxies communicate with the mail.i2p -SMTP and POP3 servers through I2P itself, so compromising those non-anonymous -locations does not give access to the mail accounts or activity patterns of the -user. At the moment the developers work on a decentralized mailsystem, called -"v2mail". More information can be found on the eepsite -hq.postman.i2p. -

    - - - diff --git a/router/doc/tunnel-alt-creation.html b/router/doc/tunnel-alt-creation.html deleted file mode 100644 index 0eb4a5d90..000000000 --- a/router/doc/tunnel-alt-creation.html +++ /dev/null @@ -1,163 +0,0 @@ -$Id: tunnel-alt-creation.html,v 1.1.2.1 2006/02/01 20:28:34 jrandom Exp $ -
    -1) Tunnel creation
    -1.1) Tunnel creation request record
    -1.2) Hop processing
    -1.3) Tunnel creation reply record
    -1.4) Request preparation
    -1.5) Request delivery
    -1.6) Endpoint handling
    -1.7) Reply processing
    -2) Notes
    -
    - -

    1) Tunnel creation encryption:

    - -

    The tunnel creation is accomplished by a single message passed along -the path of peers in the tunnel, rewritten in place, and transmitted -back to the tunnel creator. This single tunnel message is made up -of a fixed number of records (8) - one for each potential peer in -the tunnel. Individual records are asymmetrically encrypted to be -read only by a specific peer along the path, while an additional -symmetric layer of encryption is added at each hop so as to expose -the asymmetrically encrypted record only at the appropriate time.

    - -

    1.1) Tunnel creation request record

    - -

    Cleartext of the record, visible only to the hop being asked:

    -  bytes     0-3: tunnel ID to receive messages as
    -  bytes    4-35: local router identity hash
    -  bytes   36-39: next tunnel ID
    -  bytes   40-71: next router identity hash
    -  bytes  72-103: AES-256 tunnel layer key
    -  bytes 104-135: AES-256 tunnel IV key
    -  bytes 136-167: AES-256 reply key
    -  bytes 168-183: reply IV
    -  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
    - -

    The next tunnel ID and next router identity hash fields are used to -specify the next hop in the tunnel, though for an outbound tunnel -endpoint, they specify where the rewritten tunnel creation reply -message should be sent. In addition, the next message ID specifies the -message ID that the message (or reply) should use.

    - -

    The flags field currently has two bits defined:

    - bit 0: if set, allow messages from anyone
    - bit 1: if set, allow messages to anyone, and send the reply to the
    -        specified next hop in a tunnel message
    - -

    That cleartext record is ElGamal 2048 encrypted with the hop's -public encryption key and formatted into a 528 byte record:

    -  bytes   0-15: SHA-256-128 of the current hop's router identity
    -  bytes 16-527: ElGamal-2048 encrypted request record
    - -

    Since the cleartext uses the full field, there is no need for -additional padding beyond SHA256(cleartext) + cleartext.

    - -

    1.2) Hop processing

    - -

    When a hop receives a TunnelBuildMessage, it looks through the 8 -records contained within it for one starting with their own identity -hash (trimmed to 8 bytes). It then decryptes the ElGamal block from -that record and retrieves the protected cleartext. At that point, -they make sure the tunnel request is not a duplicate by feeding the -AES-256 reply key into a bloom filter and making sure the request -time is within an hour of current. Duplicates or invalid requests -are dropped.

    - -

    After deciding whether they will agree to participate in the tunnel -or not, they replace the record that had contained the request with -an encrypted reply block. All other records are AES-256/CBC -encrypted with the included reply key and IV (though each is -encrypted separately, rather than chained across records).

    - -

    1.3) Tunnel creation reply record

    - -

    After the current hop reads their record, they replace it with a -reply record stating whether or not they agree to participate in the -tunnel, and if they do not, they classify their reason for -rejection. This is simply a 1 byte value, with 0x0 meaning they -agree to participate in the tunnel, and higher values meaning higher -levels of rejection. The reply is encrypted with the AES session -key delivered to it in the encrypted block, padded with random data -until it reaches the full record size:

    -  AES-256-CBC(SHA-256(padding+status) + padding + status, key, IV)
    - -

    1.4) Request preparation

    - -

    When building a new request, all of the records must first be -built and asymmetrically encrypted. Each record should then be -decrypted with the reply keys and IVs of the hops earlier in the -path. That decryption should be run in reverse order so that the -asymmetrically encrypted data will show up in the clear at the -right hop after their predecessor encrypts it.

    - -

    The excess records not needed for individual requests are simply -filled with random data by the creator.

    - -

    1.5) Request delivery

    - -

    For outbound tunnels, the delivery is done directly from the tunnel -creator to the first hop, packaging up the TunnelBuildMessage as if -the creator was just another hop in the tunnel. For inbound -tunnels, the delivery is done through an existing outbound tunnel -(and during startup, when no outbound tunnel exists yet, a fake 0 -hop outbound tunnel is used).

    - -

    1.6) Endpoint handling

    - -

    When the request reaches an outbound endpoint (as determined by the -'allow messages to anyone' flag), the hop is processed as usual, -encrypting a reply in place of the record and encrypting all of the -other records, but since there is no 'next hop' to forward the -TunnelBuildMessage on to, it instead places the encrypted reply -records into a TunnelBuildReplyMessage and delivers it to the -reply tunnel specified within the request record. That reply tunnel -forwards the reply records down to the tunnel creator for -processing, as below.

    - -

    When the request reaches the inbound endpoint (also known as the -tunnel creator), the router processes each of the replies, as below.

    - -

    1.7) Reply processing

    - -

    To process the reply records, the creator simply has to AES decrypt -each record individually, using the reply key and IV of each hop in -the tunnel after the peer (in reverse order). This then exposes the -reply specifying whether they agree to participate in the tunnel or -why they refuse. If they all agree, the tunnel is considered -created and may be used immediately, but if anyone refuses, the -tunnel is discarded.

    - -

    2) Notes

    -
      -
    • This does not prevent two hostile peers within a tunnel from -tagging one or more request or reply records to detect that they are -within the same tunnel, but doing so can be detected by the tunnel -creator when reading the reply, causing the tunnel to be marked as -invalid.
    • -
    • This does not include a proof of work on the asymmetrically -encrypted section, though the 16 byte identity hash could be cut in -half with the later replaced by a hashcash function of up to 2^64 -cost. This will not immediately be pursued, however.
    • -
    • This alone does not prevent two hostile peers within a tunnel from -using timing information to determine whether they are in the same -tunnel. The use of batched and synchronized request delivery -could help (batching up requests and sending them off on the -(ntp-synchronized) minute). However, doing so lets peers 'tag' the -requests by delaying them and detecting the delay later in the -tunnel, though perhaps dropping requests not delivered in a small -window would work (though doing that would require a high degree of -clock synchronization). Alternately, perhaps individual hops could -inject a random delay before forwarding on the request?
    • -
    • Are there any nonfatal methods of tagging the request?
    • -
    • This strategy came about during a discussion on the I2P mailing list - between Michael Rogers, Matthew Toseland (toad), and jrandom regarding - the predecessor attack. See:
    • -
    diff --git a/router/doc/tunnel-alt.html b/router/doc/tunnel-alt.html deleted file mode 100644 index 2d5f2be2f..000000000 --- a/router/doc/tunnel-alt.html +++ /dev/null @@ -1,467 +0,0 @@ -$Id: tunnel-alt.html,v 1.9 2005/07/27 14:04:07 jrandom Exp $ -
    -1) Tunnel overview
    -2) Tunnel operation
    -2.1) Message preprocessing
    -2.2) Gateway processing
    -2.3) Participant processing
    -2.4) Endpoint processing
    -2.5) Padding
    -2.6) Tunnel fragmentation
    -2.7) Alternatives
    -2.7.1) Adjust tunnel processing midstream
    -2.7.2) Use bidirectional tunnels
    -2.7.3) Backchannel communication
    -2.7.4) Variable size tunnel messages
    -3) Tunnel building
    -3.1) Peer selection
    -3.1.1) Exploratory tunnel peer selection
    -3.1.2) Client tunnel peer selection
    -3.2) Request delivery
    -3.3) Pooling
    -3.4) Alternatives
    -3.4.1) Telescopic building
    -3.4.2) Non-exploratory tunnels for management
    -4) Tunnel throttling
    -5) Mixing/batching
    -
    - -

    1) Tunnel overview

    - -

    Within I2P, messages are passed in one direction through a virtual -tunnel of peers, using whatever means are available to pass the -message on to the next hop. Messages arrive at the tunnel's -gateway, get bundled up and/or fragmented into fixed sizes tunnel messages, -and are forwarded on to the next hop in the tunnel, which processes and verifies -the validity of the message and sends it on to the next hop, and so on, until -it reaches the tunnel endpoint. That endpoint takes the messages -bundled up by the gateway and forwards them as instructed - either -to another router, to another tunnel on another router, or locally.

    - -

    Tunnels all work the same, but can be segmented into two different -groups - inbound tunnels and outbound tunnels. The inbound tunnels -have an untrusted gateway which passes messages down towards the -tunnel creator, which serves as the tunnel endpoint. For outbound -tunnels, the tunnel creator serves as the gateway, passing messages -out to the remote endpoint.

    - -

    The tunnel's creator selects exactly which peers will participate -in the tunnel, and provides each with the necessary configuration -data. They may have any number of hops, but may be constrained with various -proof-of-work requests to add on additional steps. It is the intent to make -it hard for either participants or third parties to determine the length of -a tunnel, or even for colluding participants to determine whether they are a -part of the same tunnel at all (barring the situation where colluding peers are -next to each other in the tunnel).

    - -

    Beyond their length, there are additional configurable parameters -for each tunnel that can be used, such as a throttle on the frequency of -messages delivered, how padding should be used, how long a tunnel should be -in operation, whether to inject chaff messages, and what, if any, batching -strategies should be employed.

    - -

    In practice, a series of tunnel pools are used for different -purposes - each local client destination has its own set of inbound -tunnels and outbound tunnels, configured to meet its anonymity and -performance needs. In addition, the router itself maintains a series -of pools for participating in the network database and for managing -the tunnels themselves.

    - -

    I2P is an inherently packet switched network, even with these -tunnels, allowing it to take advantage of multiple tunnels running -in parallel, increasing resilience and balancing load. Outside of -the core I2P layer, there is an optional end to end streaming library -available for client applications, exposing TCP-esque operation, -including message reordering, retransmission, congestion control, etc.

    - -

    2) Tunnel operation

    - -

    Tunnel operation has four distinct processes, taken on by various -peers in the tunnel. First, the tunnel gateway accumulates a number -of tunnel messages and preprocesses them into something for tunnel -delivery. Next, that gateway encrypts that preprocessed data, then -forwards it to the first hop. That peer, and subsequent tunnel -participants, unwrap a layer of the encryption, verifying that it isn't -a duplicate, then forward it on to the next peer. -Eventually, the message arrives at the endpoint where the messages -bundled by the gateway are split out again and forwarded on as -requested.

    - -

    Tunnel IDs are 4 byte numbers used at each hop - participants know what -tunnel ID to listen for messages with and what tunnel ID they should be forwarded -on as to the next hop, and each hop chooses the tunnel ID which they receive messages -on. Tunnels themselves are short lived (10 minutes at the -moment), and even if subsequent tunnels are built using the same sequence of -peers, each hop's tunnel ID will change.

    - -

    2.1) Message preprocessing

    - -

    When the gateway wants to deliver data through the tunnel, it first -gathers zero or more I2NP messages, selects how much padding will be used, -fragments it across the necessary number of 1KB tunnel messages, and decides how -each I2NP message should be handled by the tunnel endpoint, encoding that -data into the raw tunnel payload:

    -
      -
    • the first 4 bytes of the SHA256 of the remaining preprocessed data concatenated - with the IV, using the IV as will be seen on the tunnel endpoint (for - outbound tunnels) or the IV as was seen on the tunnel gateway (for inbound - tunnels) (see below for IV processing).
    • -
    • 0 or more bytes containing random nonzero integers
    • -
    • 1 byte containing 0x00
    • -
    • a series of zero or more { instructions, message } pairs
    • -
    - -

    The instructions are encoded with a single control byte, followed by any -necessary additional information. The first bit in that control byte determines -how the remainder of the header is interpreted - if it is not set, the message -is either not fragmented or this is the first fragment in the message. If it is -set, this is a follow on fragment.

    - -

    With the first bit being 0, the instructions are:

    -
      -
    • 1 byte control byte:
      -      bit 0: is follow on fragment?  (1 = true, 0 = false, must be 0)
      -   bits 1-2: delivery type
      -             (0x0 = LOCAL, 0x01 = TUNNEL, 0x02 = ROUTER)
      -      bit 3: delay included?  (1 = true, 0 = false)
      -      bit 4: fragmented?  (1 = true, 0 = false)
      -      bit 5: extended options?  (1 = true, 0 = false)
      -   bits 6-7: reserved
    • -
    • if the delivery type was TUNNEL, a 4 byte tunnel ID
    • -
    • if the delivery type was TUNNEL or ROUTER, a 32 byte router hash
    • -
    • if the delay included flag is true, a 1 byte value:
      -      bit 0: type (0 = strict, 1 = randomized)
      -   bits 1-7: delay exponent (2^value minutes)
    • -
    • if the fragmented flag is true, a 4 byte message ID
    • -
    • if the extended options flag is true:
      -   = a 1 byte option size (in bytes)
      -   = that many bytes
    • -
    • 2 byte size of the I2NP message or this fragment
    • -
    - -

    If the first bit being 1, the instructions are:

    -
      -
    • 1 byte control byte:
      -      bit 0: is follow on fragment?  (1 = true, 0 = false, must be 1)
      -   bits 1-6: fragment number
      -      bit 7: is last? (1 = true, 0 = false)
    • -
    • 4 byte message ID (same one defined in the first fragment)
    • -
    • 2 byte size of this fragment
    • -
    - -

    The I2NP message is encoded in its standard form, and the -preprocessed payload must be padded to a multiple of 16 bytes.

    - -

    2.2) Gateway processing

    - -

    After the preprocessing of messages into a padded payload, the gateway builds -a random 16 byte IV value, iteratively encrypting it and the tunnel message as -necessary, and forwards the tuple {tunnelID, IV, encrypted tunnel message} to the next hop.

    - -

    How encryption at the gateway is done depends on whether the tunnel is an -inbound or an outbound tunnel. For inbound tunnels, they simply select a random -IV, postprocessing and updating it to generate the IV for the gateway and using -that IV along side their own layer key to encrypt the preprocessed data. For outbound -tunnels they must iteratively decrypt the (unencrypted) IV and preprocessed -data with the IV and layer keys for all hops in the tunnel. The result of the outbound -tunnel encryption is that when each peer encrypts it, the endpoint will recover -the initial preprocessed data.

    - -

    2.3) Participant processing

    - -

    When a peer receives a tunnel message, it checks that the message came from -the same previous hop as before (initialized when the first message comes through -the tunnel). If the previous peer is a different router, or if the message has -already been seen, the message is dropped. The participant then encrypts the -received IV with AES256/ECB using their IV key to determine the current IV, uses -that IV with the participant's layer key to encrypt the data, encrypts the -current IV with AES256/ECB using their IV key again, then forwards the tuple -{nextTunnelId, nextIV, encryptedData} to the next hop. This double encryption -of the IV (both before and after use) help address a certain class of -confirmation attacks.

    - -

    Duplicate message detection is handled by a decaying Bloom filter on message -IVs. Each router maintains a single Bloom filter to contain the XOR of the IV and -the first block of the message received for all of the tunnels it is participating -in, modified to drop seen entries after 10-20 minutes (when the tunnels will have -expired). The size of the bloom filter and the parameters used are sufficient to -more than saturate the router's network connection with a negligible chance of -false positive. The unique value fed into the Bloom filter is the XOR of the IV -and the first block so as to prevent nonsequential colluding peers in the tunnel -from tagging a message by resending it with the IV and first block switched.

    - -

    2.4) Endpoint processing

    - -

    After receiving and validating a tunnel message at the last hop in the tunnel, -how the endpoint recovers the data encoded by the gateway depends upon whether -the tunnel is an inbound or an outbound tunnel. For outbound tunnels, the -endpoint encrypts the message with its layer key just like any other participant, -exposing the preprocessed data. For inbound tunnels, the endpoint is also the -tunnel creator so they can merely iteratively decrypt the IV and message, using the -layer and IV keys of each step in reverse order.

    - -

    At this point, the tunnel endpoint has the preprocessed data sent by the gateway, -which it may then parse out into the included I2NP messages and forwards them as -requested in their delivery instructions.

    - -

    2.5) Padding

    - -

    Several tunnel padding strategies are possible, each with their own merits:

    - -
      -
    • No padding
    • -
    • Padding to a random size
    • -
    • Padding to a fixed size
    • -
    • Padding to the closest KB
    • -
    • Padding to the closest exponential size (2^n bytes)
    • -
    - -

    These padding strategies can be used on a variety of levels, addressing the -exposure of message size information to different adversaries. After gathering -and reviewing some statistics -from the 0.4 network, as well as exploring the anonymity tradeoffs, we're starting -with a fixed tunnel message size of 1024 bytes. Within this however, the fragmented -messages themselves are not padded by the tunnel at all (though for end to end -messages, they may be padded as part of the garlic wrapping).

    - -

    2.6) Tunnel fragmentation

    - -

    To prevent adversaries from tagging the messages along the path by adjusting -the message size, all tunnel messages are a fixed 1024 bytes in size. To accommodate -larger I2NP messages as well as to support smaller ones more efficiently, the -gateway splits up the larger I2NP messages into fragments contained within each -tunnel message. The endpoint will attempt to rebuild the I2NP message from the -fragments for a short period of time, but will discard them as necessary.

    - -

    Routers have a lot of leeway as to how the fragments are arranged, whether -they are stuffed inefficiently as discrete units, batched for a brief period to -fit more payload into the 1024 byte tunnel messages, or opportunistically padded -with other messages that the gateway wanted to send out.

    - -

    2.7) Alternatives

    - -

    2.7.1) Adjust tunnel processing midstream

    - -

    While the simple tunnel routing algorithm should be sufficient for most cases, -there are three alternatives that can be explored:

    -
      -
    • Have a peer other than the endpoint temporarily act as the termination -point for a tunnel by adjusting the encryption used at the gateway to give them -the plaintext of the preprocessed I2NP messages. Each peer could check to see -whether they had the plaintext, processing the message when received as if they -did.
    • -
    • Allow routers participating in a tunnel to remix the message before -forwarding it on - bouncing it through one of that peer's own outbound tunnels, -bearing instructions for delivery to the next hop.
    • -
    • Implement code for the tunnel creator to redefine a peer's "next hop" in -the tunnel, allowing further dynamic redirection.
    • -
    - -

    2.7.2) Use bidirectional tunnels

    - -

    The current strategy of using two separate tunnels for inbound and outbound -communication is not the only technique available, and it does have anonymity -implications. On the positive side, by using separate tunnels it lessens the -traffic data exposed for analysis to participants in a tunnel - for instance, -peers in an outbound tunnel from a web browser would only see the traffic of -an HTTP GET, while the peers in an inbound tunnel would see the payload -delivered along the tunnel. With bidirectional tunnels, all participants would -have access to the fact that e.g. 1KB was sent in one direction, then 100KB -in the other. On the negative side, using unidirectional tunnels means that -there are two sets of peers which need to be profiled and accounted for, and -additional care must be taken to address the increased speed of predecessor -attacks. The tunnel pooling and building process outlined below should -minimize the worries of the predecessor attack, though if it were desired, -it wouldn't be much trouble to build both the inbound and outbound tunnels -along the same peers.

    - -

    2.7.3) Backchannel communication

    - -

    At the moment, the IV values used are random values. However, it is -possible for that 16 byte value to be used to send control messages from the -gateway to the endpoint, or on outbound tunnels, from the gateway to any of the -peers. The inbound gateway could encode certain values in the IV once, which -the endpoint would be able to recover (since it knows the endpoint is also the -creator). For outbound tunnels, the creator could deliver certain values to the -participants during the tunnel creation (e.g. "if you see 0x0 as the IV, that -means X", "0x1 means Y", etc). Since the gateway on the outbound tunnel is also -the creator, they can build a IV so that any of the peers will receive the -correct value. The tunnel creator could even give the inbound tunnel gateway -a series of IV values which that gateway could use to communicate with -individual participants exactly one time (though this would have issues regarding -collusion detection)

    - -

    This technique could later be used deliver message mid stream, or to allow the -inbound gateway to tell the endpoint that it is being DoS'ed or otherwise soon -to fail. At the moment, there are no plans to exploit this backchannel.

    - -

    2.7.4) Variable size tunnel messages

    - -

    While the transport layer may have its own fixed or variable message size, -using its own fragmentation, the tunnel layer may instead use variable size -tunnel messages. The difference is an issue of threat models - a fixed size -at the transport layer helps reduce the information exposed to external -adversaries (though overall flow analysis still works), but for internal -adversaries (aka tunnel participants) the message size is exposed. Fixed size -tunnel messages help reduce the information exposed to tunnel participants, but -does not hide the information exposed to tunnel endpoints and gateways. Fixed -size end to end messages hide the information exposed to all peers in the -network.

    - -

    As always, its a question of who I2P is trying to protect against. Variable -sized tunnel messages are dangerous, as they allow participants to use the -message size itself as a backchannel to other participants - e.g. if you see a -1337 byte message, you're on the same tunnel as another colluding peer. Even -with a fixed set of allowable sizes (1024, 2048, 4096, etc), that backchannel -still exists as peers could use the frequency of each size as the carrier (e.g. -two 1024 byte messages followed by an 8192). Smaller messages do incur the -overhead of the headers (IV, tunnel ID, hash portion, etc), but larger fixed size -messages either increase latency (due to batching) or dramatically increase -overhead (due to padding). Fragmentation helps ammortize the overhead, at the -cost of potential message loss due to lost fragments.

    - -

    Timing attacks are also relevent when reviewing the effectiveness of fixed -size messages, though they require a substantial view of network activity -patterns to be effective. Excessive artificial delays in the tunnel will be -detected by the tunnel's creator, due to periodic testing, causing that entire -tunnel to be scrapped and the profiles for peers within it to be adjusted.

    - -

    3) Tunnel building

    - -

    When building a tunnel, the creator must send a request with the necessary -configuration data to each of the hops and wait for all of them to agree before -enabling the tunnel. The requests are encrypted so that only the peers who need -to know a piece of information (such as the tunnel layer or IV key) has that -data. In addition, only the tunnel creator will have access to the peer's -reply. There are three important dimensions to keep in mind when producing -the tunnels: what peers are used (and where), how the requests are sent (and -replies received), and how they are maintained.

    - -

    3.1) Peer selection

    - -

    Beyond the two types of tunnels - inbound and outbound - there are two styles -of peer selection used for different tunnels - exploratory and client. -Exploratory tunnels are used for both network database maintenance and tunnel -maintenance, while client tunnels are used for end to end client messages.

    - -

    3.1.1) Exploratory tunnel peer selection

    - -

    Exploratory tunnels are built out of a random selection of peers from a subset -of the network. The particular subset varies on the local router and on what their -tunnel routing needs are. In general, the exploratory tunnels are built out of -randomly selected peers who are in the peer's "not failing but active" profile -category. The secondary purpose of the tunnels, beyond merely tunnel routing, -is to find underutilized high capacity peers so that they can be promoted for -use in client tunnels.

    - -

    3.1.2) Client tunnel peer selection

    - -

    Client tunnels are built with a more stringent set of requirements - the local -router will select peers out of its "fast and high capacity" profile category so -that performance and reliability will meet the needs of the client application. -However, there are several important details beyond that basic selection that -should be adhered to, depending upon the client's anonymity needs.

    - -

    For some clients who are worried about adversaries mounting a predecessor -attack, the tunnel selection can keep the peers selected in a strict order - -if A, B, and C are in a tunnel, the hop after A is always B, and the hop after -B is always C. A less strict ordering is also possible, assuring that while -the hop after A may be B, B may never be before A. Other configuration options -include the ability for just the inbound tunnel gateways and outbound tunnel -endpoints to be fixed, or rotated on an MTBF rate.

    - -

    In the initial implementation, only random ordering has been implemented, -though more strict ordering will be developed and deployed over time, as well -as controls for the user to select which strategy to use for individual clients.

    - -

    3.2) Request delivery

    - -

    A new tunnel request preparation, delivery, and response method has been -devised, which reduces the number of -predecessors exposed, cuts the number of messages transmitted, verifies proper -connectivity, and avoids the message counting attack of traditional telescopic -tunnel creation. The old technique is listed below as an alternative.

    - -

    Peers may reject tunnel creation requests for a variety of reasons, though -a series of four increasingly severe rejections are known: probabalistic rejection -(due to approaching the router's capacity, or in response to a flood of requests), -transient overload, bandwidth overload, and critical failure. When received, -those four are interpreted by the tunnel creator to help adjust their profile of -the router in question.

    - -

    3.3) Pooling

    - -

    To allow efficient operation, the router maintains a series of tunnel pools, -each managing a group of tunnels used for a specific purpose with their own -configuration. When a tunnel is needed for that purpose, the router selects one -out of the appropriate pool at random. Overall, there are two exploratory tunnel -pools - one inbound and one outbound - each using the router's exploration -defaults. In addition, there is a pair of pools for each local destination - -one inbound and one outbound tunnel. Those pools use the configuration specified -when the local destination connected to the router, or the router's defaults if -not specified.

    - -

    Each pool has within its configuration a few key settings, defining how many -tunnels to keep active, how many backup tunnels to maintain in case of failure, -how frequently to test the tunnels, how long the tunnels should be, whether those -lengths should be randomized, how often replacement tunnels should be built, as -well as any of the other settings allowed when configuring individual tunnels.

    - -

    3.4) Alternatives

    - -

    3.4.1) Telescopic building

    - -

    One question that may arise regarding the use of the exploratory tunnels for -sending and receiving tunnel creation messages is how that impacts the tunnel's -vulnerability to predecessor attacks. While the endpoints and gateways of -those tunnels will be randomly distributed across the network (perhaps even -including the tunnel creator in that set), another alternative is to use the -tunnel pathways themselves to pass along the request and response, as is done -in TOR. This, however, may lead to leaks -during tunnel creation, allowing peers to discover how many hops there are later -on in the tunnel by monitoring the timing or packet count as -the tunnel is built.

    - -

    3.4.2) Non-exploratory tunnels for management

    - -

    A second alternative to the tunnel building process is to give the router -an additional set of non-exploratory inbound and outbound pools, using those for -the tunnel request and response. Assuming the router has a well integrated view -of the network, this should not be necessary, but if the router was partitioned -in some way, using non-exploratory pools for tunnel management would reduce the -leakage of information about what peers are in the router's partition.

    - -

    3.4.3) Exploratory request delivery

    - -

    A third alternative, used until I2P 0.6.2, garlic encrypts individual tunnel -request messages and delivers them to the hops individually, transmitting them -through exploratory tunnels with their reply coming back in a separate -exploratory tunnel. This strategy has been dropped in favor of the one outlined -above.

    - -

    4) Tunnel throttling

    - -

    Even though the tunnels within I2P bear a resemblance to a circuit switched -network, everything within I2P is strictly message based - tunnels are merely -accounting tricks to help organize the delivery of messages. No assumptions are -made regarding reliability or ordering of messages, and retransmissions are left -to higher levels (e.g. I2P's client layer streaming library). This allows I2P -to take advantage of throttling techniques available to both packet switched and -circuit switched networks. For instance, each router may keep track of the -moving average of how much data each tunnel is using, combine that with all of -the averages used by other tunnels the router is participating in, and be able -to accept or reject additional tunnel participation requests based on its -capacity and utilization. On the other hand, each router can simply drop -messages that are beyond its capacity, exploiting the research used on the -normal internet.

    - -

    5) Mixing/batching

    - -

    What strategies should be used at the gateway and at each hop for delaying, -reordering, rerouting, or padding messages? To what extent should this be done -automatically, how much should be configured as a per tunnel or per hop setting, -and how should the tunnel's creator (and in turn, user) control this operation? -All of this is left as unknown, to be worked out for -I2P 3.0

    diff --git a/router/doc/tunnel.html b/router/doc/tunnel.html deleted file mode 100644 index a15d19c12..000000000 --- a/router/doc/tunnel.html +++ /dev/null @@ -1,529 +0,0 @@ -Note: NOT used! see tunnel-alt.html - -$Id: tunnel.html,v 1.10 2005/01/16 01:07:07 jrandom Exp $ -
    -1) Tunnel overview
    -2) Tunnel operation
    -2.1) Message preprocessing
    -2.2) Gateway processing
    -2.3) Participant processing
    -2.4) Endpoint processing
    -2.5) Padding
    -2.6) Tunnel fragmentation
    -2.7) Alternatives
    -2.7.1) Don't use a checksum block
    -2.7.2) Adjust tunnel processing midstream
    -2.7.3) Use bidirectional tunnels
    -2.7.4) Use smaller hashes
    -3) Tunnel building
    -3.1) Peer selection
    -3.1.1) Exploratory tunnel peer selection
    -3.1.2) Client tunnel peer selection
    -3.2) Request delivery
    -3.3) Pooling
    -3.4) Alternatives
    -3.4.1) Telescopic building
    -3.4.2) Non-exploratory tunnels for management
    -4) Tunnel throttling
    -5) Mixing/batching
    -
    - -

    1) Tunnel overview

    - -

    Within I2P, messages are passed in one direction through a virtual -tunnel of peers, using whatever means are available to pass the -message on to the next hop. Messages arrive at the tunnel's -gateway, get bundled up for the path, and are forwarded on to the -next hop in the tunnel, which processes and verifies the validity -of the message and sends it on to the next hop, and so on, until -it reaches the tunnel endpoint. That endpoint takes the messages -bundled up by the gateway and forwards them as instructed - either -to another router, to another tunnel on another router, or locally.

    - -

    Tunnels all work the same, but can be segmented into two different -groups - inbound tunnels and outbound tunnels. The inbound tunnels -have an untrusted gateway which passes messages down towards the -tunnel creator, which serves as the tunnel endpoint. For outbound -tunnels, the tunnel creator serves as the gateway, passing messages -out to the remote endpoint.

    - -

    The tunnel's creator selects exactly which peers will participate -in the tunnel, and provides each with the necessary confiruration -data. They may vary in length from 0 hops (where the gateway -is also the endpoint) to 8 hops (where there are 6 peers after -the gateway and before the endpoint). It is the intent to make -it hard for either participants or third parties to determine -the length of a tunnel, or even for colluding participants to -determine whether they are a part of the same tunnel at all -(barring the situation where colluding peers are next to each other -in the tunnel). Messages that have been corrupted are also dropped -as soon as possible, reducing network load.

    - -

    Beyond their length, there are additional configurable parameters -for each tunnel that can be used, such as a throttle on the size or -frequency of messages delivered, how padding should be used, how -long a tunnel should be in operation, whether to inject chaff -messages, whether to use fragmentation, and what, if any, batching -strategies should be employed.

    - -

    In practice, a series of tunnel pools are used for different -purposes - each local client destination has its own set of inbound -tunnels and outbound tunnels, configured to meet its anonymity and -performance needs. In addition, the router itself maintains a series -of pools for participating in the network database and for managing -the tunnels themselves.

    - -

    I2P is an inherently packet switched network, even with these -tunnels, allowing it to take advantage of multiple tunnels running -in parallel, increasing resiliance and balancing load. Outside of -the core I2P layer, there is an optional end to end streaming library -available for client applications, exposing TCP-esque operation, -including message reordering, retransmission, congestion control, etc.

    - -

    2) Tunnel operation

    - -

    Tunnel operation has four distinct processes, taken on by various -peers in the tunnel. First, the tunnel gateway accumulates a number -of tunnel messages and preprocesses them into something for tunnel -delivery. Next, that gateway encrypts that preprocessed data, then -forwards it to the first hop. That peer, and subsequent tunnel -participants, unwrap a layer of the encryption, verifying the -integrity of the message, then forward it on to the next peer. -Eventually, the message arrives at the endpoint where the messages -bundled by the gateway are split out again and forwarded on as -requested.

    - -

    Tunnel IDs are 4 byte numbers used at each hop - participants know what -tunnel ID to listen for messages with and what tunnel ID they should be forwarded -on as to the next hop. Tunnels themselves are short lived (10 minutes at the -moment), but depending upon the tunnel's purpose, and though subsequent tunnels -may be built using the same sequence of peers, each hop's tunnel ID will change.

    - -

    2.1) Message preprocessing

    - -

    When the gateway wants to deliver data through the tunnel, it first -gathers zero or more I2NP messages (no more than 32KB worth), -selects how much padding will be used, and decides how each I2NP -message should be handled by the tunnel endpoint, encoding that -data into the raw tunnel payload:

    -
      -
    • 2 byte unsigned integer specifying the # of padding bytes
    • -
    • that many random bytes
    • -
    • a series of zero or more { instructions, message } pairs
    • -
    - -

    The instructions are encoded as follows:

    -
      -
    • 1 byte value:
      -   bits 0-1: delivery type
      -             (0x0 = LOCAL, 0x01 = TUNNEL, 0x02 = ROUTER)
      -      bit 2: delay included?  (1 = true, 0 = false)
      -      bit 3: fragmented?  (1 = true, 0 = false)
      -      bit 4: extended options?  (1 = true, 0 = false)
      -   bits 5-7: reserved
    • -
    • if the delivery type was TUNNEL, a 4 byte tunnel ID
    • -
    • if the delivery type was TUNNEL or ROUTER, a 32 byte router hash
    • -
    • if the delay included flag is true, a 1 byte value:
      -      bit 0: type (0 = strict, 1 = randomized)
      -   bits 1-7: delay exponent (2^value minutes)
    • -
    • if the fragmented flag is true, a 4 byte message ID, and a 1 byte value:
      -   bits 0-6: fragment number
      -      bit 7: is last?  (1 = true, 0 = false)
    • -
    • if the extended options flag is true:
      -   = a 1 byte option size (in bytes)
      -   = that many bytes
    • -
    • 2 byte size of the I2NP message
    • -
    - -

    The I2NP message is encoded in its standard form, and the -preprocessed payload must be padded to a multiple of 16 bytes.

    - -

    2.2) Gateway processing

    - -

    After the preprocessing of messages into a padded payload, the gateway -encrypts the payload with the eight keys, building a checksum block so -that each peer can verify the integrity of the payload at any time, as -well as an end to end verification block for the tunnel endpoint to -verify the integrity of the checksum block. The specific details follow.

    - -

    The encryption used is such that decryption -merely requires running over the data with AES in CBC mode, calculating the -SHA256 of a certain fixed portion of the message (bytes 16 through $size-144), -and searching for the first 16 bytes of that hash in the checksum block. There is a fixed number -of hops defined (8 peers) so that we can verify the message -without either leaking the position in the tunnel or having the message -continually "shrink" as layers are peeled off. For tunnels shorter than 8 -hops, the tunnel creator will take the place of the excess hops, decrypting -with their keys (for outbound tunnels, this is done at the beginning, and for -inbound tunnels, the end).

    - -

    The hard part in the encryption is building that entangled checksum block, -which requires essentially finding out what the hash of the payload will look -like at each step, randomly ordering those hashes, then building a matrix of -what each of those randomly ordered hashes will look like at each step. The -gateway itself must pretend that it is one of the peers within the checksum -block so that the first hop cannot tell that the previous hop was the gateway. -To visualize this a bit:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IVPayloadeH[0]eH[1]eH[2]eH[3]eH[4]eH[5]eH[6]eH[7]V
    peer0
    key=K[0]
    recv
    sendIV[0]P[0]H(P[0])V[0]
    peer1
    key=K[1]
    recv
    sendIV[1]P[1]H(P[1])V[1]
    peer2
    key=K[2]
    recv
    sendIV[2]P[2]H(P[2])V[2]
    peer3
    key=K[3]
    recv
    sendIV[3]P[3]H(P[3])V[3]
    peer4
    key=K[4]
    recv
    sendIV[4]P[4]H(P[4])V[4]
    peer5
    key=K[5]
    recv
    sendIV[5]P[5]H(P[5])V[5]
    peer6
    key=K[6]
    recv
    sendIV[6]P[6]H(P[6])V[6]
    peer7
    key=K[7]
    recv
    sendIV[7]P[7]H(P[7])V[7]
    - -

    In the above, P[7] is the same as the original data being passed through the -tunnel (the preprocessed messages), and V[7] is the first 16 bytes of the SHA256 of eH[0-7] as seen on -peer7 after decryption. For -cells in the matrix "higher up" than the hash, their value is derived by encrypting -the cell below it with the key for the peer below it, using the end of the column -to the left of it as the IV. For cells in the matrix "lower down" than the hash, -they're equal to the cell above them, decrypted by the current peer's key, using -the end of the previous encrypted block on that row.

    - -

    With this randomized matrix of checksum blocks, each peer will be able to find -the hash of the payload, or if it is not there, know that the message is corrupt. -The entanglement by using CBC mode increases the difficulty in tagging the -checksum blocks themselves, but it is still possible for that tagging to go -briefly undetected if the columns after the tagged data have already been used -to check the payload at a peer. In any case, the tunnel endpoint (peer 7) knows -for certain whether any of the checksum blocks have been tagged, as that would -corrupt the verification block (V[7]).

    - -

    The IV[0] is a random 16 byte value, and IV[i] is the first 16 bytes of -H(D(IV[i-1], K[i-1]) xor IV_WHITENER). We don't use the same IV along the path, as that would -allow trivial collusion, and we use the hash of the decrypted value to propogate -the IV so as to hamper key leakage. IV_WHITENER is a fixed 16 byte value.

    - -

    When the gateway wants to send the message, they export the right row for the -peer who is the first hop (usually the peer1.recv row) and forward that entirely.

    - -

    2.3) Participant processing

    - -

    When a participant in a tunnel receives a message, they decrypt a layer with their -tunnel key using AES256 in CBC mode with the first 16 bytes as the IV. They then -calculate the hash of what they see as the payload (bytes 16 through $size-144) and -search for that first 16 bytes of that hash within the decrypted checksum block. If no match is found, the -message is discarded. Otherwise, the IV is updated by decrypting it, XORing that value -with the IV_WHITENER, and replacing it with the first 16 bytes of its hash. The -resulting message is then forwarded on to the next peer for processing.

    - -

    To prevent replay attacks at the tunnel level, each participant keeps track of -the IVs received during the tunnel's lifetime, rejecting duplicates. The memory -usage required should be minor, as each tunnel has only a very short lifespan (10m -at the moment). A constant 100KBps through a tunnel with full 32KB messages would -give 1875 messages, requiring less than 30KB of memory. Gateways and endpoints -handle replay by tracking the message IDs and expirations on the I2NP messages -contained in the tunnel.

    - -

    2.4) Endpoint processing

    - -

    When a message reaches the tunnel endpoint, they decrypts and verifies it like -a normal participant. If the checksum block has a valid match, the endpoint then -computes the hash of the checksum block itself (as seen after decryption) and compares -that to the decrypted verification hash (the last 16 bytes). If that verification -hash does not match, the endpoint takes note of the tagging attempt by one of the -tunnel participants and perhaps discards the message.

    - -

    At this point, the tunnel endpoint has the preprocessed data sent by the gateway, -which it may then parse out into the included I2NP messages and forwards them as -requested in their delivery instructions.

    - -

    2.5) Padding

    - -

    Several tunnel padding strategies are possible, each with their own merits:

    - -
      -
    • No padding
    • -
    • Padding to a random size
    • -
    • Padding to a fixed size
    • -
    • Padding to the closest KB
    • -
    • Padding to the closest exponential size (2^n bytes)
    • -
    - -

    Which to use? no padding is most efficient, random padding is what -we have now, fixed size would either be an extreme waste or force us to -implement fragmentation. Padding to the closest exponential size (ala freenet) -seems promising. Perhaps we should gather some stats on the net as to what size -messages are, then see what costs and benefits would arise from different -strategies?

    - -

    2.6) Tunnel fragmentation

    - -

    For various padding and mixing schemes, it may be useful from an anonymity -perspective to fragment a single I2NP message into multiple parts, each delivered -seperately through different tunnel messages. The endpoint may or may not -support that fragmentation (discarding or hanging on to fragments as needed), -and handling fragmentation will not immediately be implemented.

    - -

    2.7) Alternatives

    - -

    2.7.1) Don't use a checksum block

    - -

    One alternative to the above process is to remove the checksum block -completely and replace the verification hash with a plain hash of the payload. -This would simplify processing at the tunnel gateway and save 144 bytes of -bandwidth at each hop. On the other hand, attackers within the tunnel could -trivially adjust the message size to one which is easily traceable by -colluding external observers in addition to later tunnel participants. The -corruption would also incur the waste of the entire bandwidth necessary to -pass on the message. Without the per-hop validation, it would also be possible -to consume excess network resources by building extremely long tunnels, or by -building loops into the tunnel.

    - -

    2.7.2) Adjust tunnel processing midstream

    - -

    While the simple tunnel routing algorithm should be sufficient for most cases, -there are three alternatives that can be explored:

    -
      -
    • Delay a message within a tunnel at an arbitrary hop for either a specified -amount of time or a randomized period. This could be achieved by replacing the -hash in the checksum block with e.g. the first 8 bytes of the hash, followed by -some delay instructions. Alternately, the instructions could tell the -participant to actually interpret the raw payload as it is, and either discard -the message or continue to forward it down the path (where it would be -interpreted by the endpoint as a chaff message). The later part of this would -require the gateway to adjust its encryption algorithm to produce the cleartext -payload on a different hop, but it shouldn't be much trouble.
    • -
    • Allow routers participating in a tunnel to remix the message before -forwarding it on - bouncing it through one of that peer's own outbound tunnels, -bearing instructions for delivery to the next hop. This could be used in either -a controlled manner (with en-route instructions like the delays above) or -probabalistically.
    • -
    • Implement code for the tunnel creator to redefine a peer's "next hop" in -the tunnel, allowing further dynamic redirection.
    • -
    - -

    2.7.3) Use bidirectional tunnels

    - -

    The current strategy of using two seperate tunnels for inbound and outbound -communication is not the only technique available, and it does have anonymity -implications. On the positive side, by using separate tunnels it lessens the -traffic data exposed for analysis to participants in a tunnel - for instance, -peers in an outbound tunnel from a web browser would only see the traffic of -an HTTP GET, while the peers in an inbound tunnel would see the payload -delivered along the tunnel. With bidirectional tunnels, all participants would -have access to the fact that e.g. 1KB was sent in one direction, then 100KB -in the other. On the negative side, using unidirectional tunnels means that -there are two sets of peers which need to be profiled and accounted for, and -additional care must be taken to address the increased speed of predecessor -attacks. The tunnel pooling and building process outlined below should -minimize the worries of the predecessor attack, though if it were desired, -it wouldn't be much trouble to build both the inbound and outbound tunnels -along the same peers.

    - -

    2.7.4) Use smaller blocksize

    - -

    At the moment, our use of AES limits our block size to 16 bytes, which -in turn provides the minimum size for each of the checksum block columns. -If another algorithm was used with a smaller block size, or could otherwise -allow the safe building of the checksum block with smaller portions of the -hash, it might be worth exploring. The 16 bytes used now at each hop should -be more than sufficient.

    - -

    3) Tunnel building

    - -

    When building a tunnel, the creator must send a request with the necessary -configuration data to each of the hops, then wait for the potential participant -to reply stating that they either agree or do not agree. These tunnel request -messages and their replies are garlic wrapped so that only the router who knows -the key can decrypt it, and the path taken in both directions is tunnel routed -as well. There are three important dimensions to keep in mind when producing -the tunnels: what peers are used (and where), how the requests are sent (and -replies received), and how they are maintained.

    - -

    3.1) Peer selection

    - -

    Beyond the two types of tunnels - inbound and outbound - there are two styles -of peer selection used for different tunnels - exploratory and client. -Exploratory tunnels are used for both network database maintenance and tunnel -maintenance, while client tunnels are used for end to end client messages.

    - -

    3.1.1) Exploratory tunnel peer selection

    - -

    Exploratory tunnels are built out of a random selection of peers from a subset -of the network. The particular subset varies on the local router and on what their -tunnel routing needs are. In general, the exploratory tunnels are built out of -randomly selected peers who are in the peer's "not failing but active" profile -category. The secondary purpose of the tunnels, beyond merely tunnel routing, -is to find underutilized high capacity peers so that they can be promoted for -use in client tunnels.

    - -

    3.1.2) Client tunnel peer selection

    - -

    Client tunnels are built with a more stringent set of requirements - the local -router will select peers out of its "fast and high capacity" profile category so -that performance and reliability will meet the needs of the client application. -However, there are several important details beyond that basic selection that -should be adhered to, depending upon the client's anonymity needs.

    - -

    For some clients who are worried about adversaries mounting a predecessor -attack, the tunnel selection can keep the peers selected in a strict order - -if A, B, and C are in a tunnel, the hop after A is always B, and the hop after -B is always C. A less strict ordering is also possible, assuring that while -the hop after A may be B, B may never be before A. Other configuration options -include the ability for just the inbound tunnel gateways and outbound tunnel -endpoints to be fixed, or rotated on an MTBF rate.

    - -

    3.2) Request delivery

    - -

    As mentioned above, once the tunnel creator knows what peers should go into -a tunnel and in what order, the creator builds a series of tunnel request -messages, each containing the necessary information for that peer. For instance, -participating tunnels will be given the 4 byte tunnel ID on which they are to -receive messages, the 4 byte tunnel ID on which they are to send out the messages, -the 32 byte hash of the next hop's identity, and the 32 byte layer key used to -remove a layer from the tunnel. Of course, outbound tunnel endpoints are not -given any "next hop" or "next tunnel ID" information. Inbound tunnel gateways -are however given the 8 layer keys in the order they should be encrypted (as -described above). To allow replies, the request contains a random session tag -and a random session key with which the peer may garlic encrypt their decision, -as well as the tunnel to which that garlic should be sent. In addition to the -above information, various client specific options may be included, such as -what throttling to place on the tunnel, what padding or batch strategies to use, -etc.

    - -

    After building all of the request messages, they are garlic wrapped for the -target router and sent out an exploratory tunnel. Upon receipt, that peer -determines whether they can or will participate, creating a reply message and -both garlic wrapping and tunnel routing the response with the supplied -information. Upon receipt of the reply at the tunnel creator, the tunnel is -considered valid on that hop (if accepted). Once all peers have accepted, the -tunnel is active.

    - -

    3.3) Pooling

    - -

    To allow efficient operation, the router maintains a series of tunnel pools, -each managing a group of tunnels used for a specific purpose with their own -configuration. When a tunnel is needed for that purpose, the router selects one -out of the appropriate pool at random. Overall, there are two exploratory tunnel -pools - one inbound and one outbound - each using the router's exploration -defaults. In addition, there is a pair of pools for each local destination - -one inbound and one outbound tunnel. Those pools use the configuration specified -when the local destination connected to the router, or the router's defaults if -not specified.

    - -

    Each pool has within its configuration a few key settings, defining how many -tunnels to keep active, how many backup tunnels to maintain in case of failure, -how frequently to test the tunnels, how long the tunnels should be, whether those -lengths should be randomized, how often replacement tunnels should be built, as -well as any of the other settings allowed when configuring individual tunnels.

    - -

    3.4) Alternatives

    - -

    3.4.1) Telescopic building

    - -

    One question that may arise regarding the use of the exploratory tunnels for -sending and receiving tunnel creation messages is how that impacts the tunnel's -vulnerability to predecessor attacks. While the endpoints and gateways of -those tunnels will be randomly distributed across the network (perhaps even -including the tunnel creator in that set), another alternative is to use the -tunnel pathways themselves to pass along the request and response, as is done -in TOR. This, however, may lead to leaks -during tunnel creation, allowing peers to discover how many hops there are later -on in the tunnel by monitoring the timing or packet count as the tunnel is -built. Techniques could be used to minimize this issue, such as using each of -the hops as endpoints (per 2.7.2) for a random -number of messages before continuing on to build the next hop.

    - -

    3.4.2) Non-exploratory tunnels for management

    - -

    A second alternative to the tunnel building process is to give the router -an additional set of non-exploratory inbound and outbound pools, using those for -the tunnel request and response. Assuming the router has a well integrated view -of the network, this should not be necessary, but if the router was partitioned -in some way, using non-exploratory pools for tunnel management would reduce the -leakage of information about what peers are in the router's partition.

    - -

    4) Tunnel throttling

    - -

    Even though the tunnels within I2P bear a resemblence to a circuit switched -network, everything within I2P is strictly message based - tunnels are merely -accounting tricks to help organize the delivery of messages. No assumptions are -made regarding reliability or ordering of messages, and retransmissions are left -to higher levels (e.g. I2P's client layer streaming library). This allows I2P -to take advantage of throttling techniques available to both packet switched and -circuit switched networks. For instance, each router may keep track of the -moving average of how much data each tunnel is using, combine that with all of -the averages used by other tunnels the router is participating in, and be able -to accept or reject additional tunnel participation requests based on its -capacity and utilization. On the other hand, each router can simply drop -messages that are beyond its capacity, exploiting the research used on the -normal internet.

    - -

    5) Mixing/batching

    - -

    What strategies should be used at the gateway and at each hop for delaying, -reordering, rerouting, or padding messages? To what extent should this be done -automatically, how much should be configured as a per tunnel or per hop setting, -and how should the tunnel's creator (and in turn, user) control this operation? -All of this is left as unknown, to be worked out for -I2P 3.0

    diff --git a/router/doc/udp.html b/router/doc/udp.html deleted file mode 100644 index 4a855ece9..000000000 --- a/router/doc/udp.html +++ /dev/null @@ -1,759 +0,0 @@ -$Id: udp.html,v 1.19 2006/02/15 00:33:32 jrandom Exp $ - -

    Secure Semireliable UDP (SSU)

    -DRAFT - -

    -The goal of this protocol is to provide secure, authenticated, -semireliable, and unordered message delivery, exposing only a minimal -amount of data easily discernible to third parties. It should -support high degree communication as well as TCP-friendly congestion -control, and may include PMTU detection. It should be capable of -efficiently moving bulk data at rates sufficient for home users. -In addition, it should support techniques for addressing network -obstacles, like most NATs or firewalls.

    - -

    Addressing and introduction

    - -

    To contact an SSU peer, one of two sets of information is necessary: -a direct address, for when the peer is publicly reachable, or an -indirect address, for using a third party to introduce the peer. -There is no restriction on the number of addresses a peer may have.

    - -
    -    Direct: ssu://host:port/introKey[?opts=[A-Z]*]
    -  Indirect: ssu://tag@relayhost:port/relayIntroKey/targetIntroKey[?opts=[A-Z]*]
    -
    - -

    These introduction keys are delivered through an external channel -and must be used when establishing a session key. For the indirect -address, the peer must first contact the relayhost and ask them for -an introduction to the peer known at that relayhost under the given -tag. If possible, the relayhost sends a message to the addressed -peer telling them to contact the requesting peer, and also gives -the requesting peer the IP and port on which the addressed peer is -located. In addition, the peer establishing the connection must -already know the public keys of the peer they are connecting to (but -not necessary to any intermediary relay peer).

    - -

    Each of the addresses may also expose a series of options - special -capabilities of that particular peer. For a list of available -capabilities, see below.

    - -

    Header

    - -

    All UDP datagrams begin with a MAC and an IV, followed by a variable -size payload encrypted with the appropriate key. The MAC used is -HMAC-MD5, truncated to 16 bytes, while the key is a full AES256 -key. The specific construct of the MAC is the first 16 bytes from:

    -
    -  HMAC-MD5(payload || IV || (payloadLength ^ protocolVersion), macKey)
    -
    - -

    The payload itself is AES256/CBC encrypted with the IV and the -sessionKey, with replay prevention addressed within its body, -explained below. The payloadLength in the MAC is a 2 byte unsigned -integer in 2s complement.

    - -

    The protocolVersion is a 2 byte unsigned integer in 2s complement, -and currently set to 0. Peers using a different protocol version will -not be able to communicate with this peer, though earlier versions not -using this flag are.

    - -

    Payload

    - -

    Within the AES encrypted payload, there is a minimal common structure -to the various messages - a one byte flag and a four byte sending -timestamp (*seconds* since the unix epoch). The flag byte contains -the following bitfields:

    -
    -  bits 0-3: payload type
    -     bit 4: rekey?
    -     bit 5: extended options included
    -  bits 6-7: reserved
    -
    - -

    If the rekey flag is set, 64 bytes of keying material follow the -timestamp. If the extended options flag is set, a one byte option -size value is appended to, followed by that many extended option -bytes, which are currently uninterpreted.

    - -

    When rekeying, the first 32 bytes of the keying material is fed -into a SHA256 to produce the new MAC key, and the next 32 bytes are -fed into a SHA256 to produce the new session key, though the keys are -not immediately used. The other side should also reply with the -rekey flag set and that same keying material. Once both sides have -sent and received those values, the new keys should be used and the -previous keys discarded. It may be useful to keep the old keys -around briefly, to address packet loss and reordering.

    - -
    - Header: 37+ bytes
    - +----+----+----+----+----+----+----+----+
    - |                  MAC                  |
    - |                                       |
    - +----+----+----+----+----+----+----+----+
    - |                   IV                  |
    - |                                       |
    - +----+----+----+----+----+----+----+----+
    - |flag|        time       | (optionally  |
    - +----+----+----+----+----+              |
    - | this may have 64 byte keying material |
    - | and/or a one+N byte extended options) |
    - +---------------------------------------|
    -
    - -

    Messages

    - -

    SessionRequest (type 0)

    - - - - - - - -
    Peer:Alice to Bob
    Data:
      -
    • 256 byte X, to begin the DH agreement
    • -
    • 1 byte IP address size
    • -
    • that many byte representation of Bob's IP address
    • -
    • N bytes, currently uninterpreted (later, for challenges)
    • -
    Key used:introKey
    - -
    - +----+----+----+----+----+----+----+----+
    - |         X, as calculated from DH      |
    - |                                       |
    -                 .   .   .               
    - |                                       |
    - +----+----+----+----+----+----+----+----+
    - |size| that many byte IP address (4-16) |
    - +----+----+----+----+----+----+----+----+
    - |           arbitrary amount            |
    - |        of uninterpreted data          |
    -                 .   .   .               
    - |                                       |
    - +----+----+----+----+----+----+----+----+
    -
    - -

    SessionCreated (type 1)

    - - - - - - - -
    Peer:Bob to Alice
    Data:
      -
    • 256 byte Y, to complete the DH agreement
    • -
    • 1 byte IP address size
    • -
    • that many byte representation of Alice's IP address
    • -
    • 2 byte port number (unsigned, big endian 2s complement)
    • -
    • 4 byte relay tag which Alice can publish (else 0x0)
    • -
    • 4 byte timestamp (seconds from the epoch) for use in the DSA - signature
    • -
    • 40 byte DSA signature of the critical exchanged data - (X + Y + Alice's IP + Alice's port + Bob's IP + Bob's port + Alice's - new relay tag + Bob's signed on time), encrypted with another - layer of encryption using the negotiated sessionKey. The IV - is reused here.
    • -
    • 8 bytes padding, encrypted with an additional layer of encryption - using the negotiated session key as part of the DSA block
    • -
    • N bytes, currently uninterpreted (later, for challenges)
    • -
    Key used:introKey, with an additional layer of encryption over the 40 byte - signature and the following 8 bytes padding.
    - -
    - +----+----+----+----+----+----+----+----+
    - |         Y, as calculated from DH      |
    - |                                       |
    -                 .   .   .               
    - |                                       |
    - +----+----+----+----+----+----+----+----+
    - |size| that many byte IP address (4-16) |
    - +----+----+----+----+----+----+----+----+
    - | Port (A)| public relay tag  |  signed
    - +----+----+----+----+----+----+----+----+
    -   on time |                             |
    - +----+----+                             |
    - |              DSA signature            |
    - |                                       |
    - |                                       |
    - |                                       |
    - |         +----+----+----+----+----+----+
    - |         |     (8 bytes of padding) 
    - +----+----+----+----+----+----+----+----+
    -           |                             |
    - +----+----+                             |
    - |           arbitrary amount            |
    - |        of uninterpreted data          |
    -                 .   .   .               
    - |                                       |
    - +----+----+----+----+----+----+----+----+
    -
    - -

    SessionConfirmed (type 2)

    - - - - - - - -
    Peer:Alice to Bob
    Data:
      -
    • 1 byte identity fragment info:
      -bits 0-3: current identity fragment #
      -bits 4-7: total identity fragments
    • -
    • 2 byte size of the current identity fragment
    • -
    • that many byte fragment of Alice's identity.
    • -
    • on the last identity fragment, the signed on time is - included after the identity fragment, and the last 40 - bytes contain the DSA signature of the critical exchanged - data (X + Y + Alice's IP + Alice's port + Bob's IP + Bob's port - + Alice's new relay key + Alice's signed on time)
    • -
    Key used:sessionKey
    - -
    - Fragment 1 through N-1
    - +----+----+----+----+----+----+----+----+
    - |info| cursize |                        |
    - +----+----+----+                        |
    - |      fragment of Alice's full         |
    - |            identity keys              |
    -                 .   .   .               
    - |                                       |
    - +----+----+----+----+----+----+----+----+
    - 
    - Fragment N:
    - +----+----+----+----+----+----+----+----+
    - |info| cursize |                        |
    - +----+----+----+                        |
    - |      fragment of Alice's full         |
    - |            identity keys              |
    -                 .   .   .               
    - |                                       |
    - +----+----+----+----+----+----+----+----+
    - |  signed on time   |                   |
    - +----+----+----+----+                   |
    - |  arbitrary amount of uninterpreted    |
    - |        data, up from the end of the   |
    - |  identity key to 40 bytes prior to    |
    - |       end of the current packet       |
    - +----+----+----+----+----+----+----+----+
    - | DSA signature                         |
    - |                                       |
    - |                                       |
    - |                                       |
    - |                                       |
    - +----+----+----+----+----+----+----+----+
    -
    - -

    RelayRequest (type 3)

    - - - - - - - -
    Peer:Alice to Bob
    Data:
      -
    • 4 byte relay tag
    • -
    • 1 byte IP address size
    • -
    • that many byte representation of Alice's IP address
    • -
    • 2 byte port number (of Alice)
    • -
    • 1 byte challenge size
    • -
    • that many bytes to be relayed to Charlie in the intro
    • -
    • Alice's intro key (so Bob can reply with Charlie's info)
    • -
    • 4 byte nonce of alice's relay request
    • -
    • N bytes, currently uninterpreted
    • -
    Key used:introKey (or sessionKey, if Alice/Bob is established)
    - -
    - +----+----+----+----+----+----+----+----+
    - |      relay tag    |size| that many    |
    - +----+----+----+----+----+         +----|
    - | bytes for Alice's IP address     |port
    - +----+----+----+----+----+----+----+----+
    -  (A) |size| that many challenge bytes   |
    - +----+----+                             |
    - | to be delivered to Charlie            |
    - +----+----+----+----+----+----+----+----+
    - | Alice's intro key                     |
    - |                                       |
    - |                                       |
    - |                                       |
    - +----+----+----+----+----+----+----+----+
    - |       nonce       |                   |
    - +----+----+----+----+                   |
    - | arbitrary amount of uninterpreted data|
    - +----+----+----+----+----+----+----+----+
    -
    - -

    RelayResponse (type 4)

    - - - - - - - -
    Peer:Bob to Alice
    Data:
      -
    • 1 byte IP address size
    • -
    • that many byte representation of Charlie's IP address
    • -
    • 2 byte port number
    • -
    • 1 byte IP address size
    • -
    • that many byte representation of Alice's IP address
    • -
    • 2 byte port number
    • -
    • 4 byte nonce sent by Alice
    • -
    • N bytes, currently uninterpreted
    • -
    Key used:introKey (or sessionKey, if Alice/Bob is established)
    - -
    - +----+----+----+----+----+----+----+----+
    - |size| that many bytes making up        |
    - +----+                        +----+----+
    - | Charlie's IP address        | Port (C)|
    - +----+----+----+----+----+----+----+----+
    - |size| that many bytes making up        |
    - +----+                        +----+----+
    - | Alice's IP address          | Port (A)|
    - +----+----+----+----+----+----+----+----+
    - |       nonce       |                   |
    - +----+----+----+----+                   |
    - | arbitrary amount of uninterpreted data|
    - +----+----+----+----+----+----+----+----+
    -
    - -

    RelayIntro (type 5)

    - - - - - - - -
    Peer:Bob to Charlie
    Data:
      -
    • 1 byte IP address size
    • -
    • that many byte representation of Alice's IP address
    • -
    • 2 byte port number (of Alice)
    • -
    • 1 byte challenge size
    • -
    • that many bytes relayed from Alice
    • -
    • N bytes, currently uninterpreted
    • -
    Key used:sessionKey
    - -
    - +----+----+----+----+----+----+----+----+
    - |size| that many bytes making up        |
    - +----+                        +----+----+
    - | Alice's IP address          | Port (A)|
    - +----+----+----+----+----+----+----+----+
    - |size| that many bytes of challenge     |
    - +----+                                  |
    - | data relayed from Alice               |
    - +----+----+----+----+----+----+----+----+
    - | arbitrary amount of uninterpreted data|
    - +----+----+----+----+----+----+----+----+
    -
    - -

    Data (type 6)

    - - - - - - - -
    Peer:Any
    Data:
      -
    • 1 byte flags:
      -   bit 0: explicit ACKs included
      -   bit 1: ACK bitfields included
      -   bit 2: reserved
      -   bit 3: explicit congestion notification
      -   bit 4: request previous ACKs
      -   bit 5: want reply
      -   bit 6: extended data included
      -   bit 7: reserved
    • -
    • if explicit ACKs are included:
        -
      • a 1 byte number of ACKs
      • -
      • that many 4 byte MessageIds being fully ACKed
      • -
    • -
    • if ACK bitfields are included:
        -
      • a 1 byte number of ACK bitfields
      • -
      • that many 4 byte MessageIds + a 1 or more byte ACK bitfield. - The bitfield uses the 7 low bits of each byte, with the high - bit specifying whether an additional bitfield byte follows it - (1 = true, 0 = the current bitfield byte is the last). These - sequence of 7 bit arrays represent whether a fragment has been - received - if a bit is 1, the fragment has been received. To - clarify, assuming fragments 0, 2, 5, and 9 have been received, - the bitfield bytes would be as follows:
        -byte 0
        -   bit 0: 1 (further bitfield bytes follow)
        -   bit 1: 1 (fragment 0 received)
        -   bit 2: 0 (fragment 1 not received)
        -   bit 3: 1 (fragment 2 received)
        -   bit 4: 0 (fragment 3 not received)
        -   bit 5: 0 (fragment 4 not received)
        -   bit 6: 1 (fragment 5 received)
        -   bit 7: 0 (fragment 6 not received)
        -byte 1
        -   bit 0: 0 (no further bitfield bytes)
        -   bit 1: 0 (fragment 7 not received)
        -   bit 1: 0 (fragment 8 not received)
        -   bit 1: 1 (fragment 9 received)
        -   bit 1: 0 (fragment 10 not received)
        -   bit 1: 0 (fragment 11 not received)
        -   bit 1: 0 (fragment 12 not received)
        -   bit 1: 0 (fragment 13 not received)
      • -
    • -
    • If extended data included:
        -
      • 1 byte data size
      • -
      • that many bytes of extended data (currently uninterpreted)
      • -
      • 1 byte number of fragments
      • -
      • that many message fragments:
          -
        • 4 byte messageId
        • -
        • 3 byte fragment info:
          -  bits 0-6: fragment #
          -     bit 7: isLast (1 = true)
          -  bits 8-9: unused
          -bits 10-23: fragment size
        • -
        • that many bytes
        -
      • N bytes padding, uninterpreted
      • -
    Key used:sessionKey
    - -
    - +----+----+----+----+----+----+----+----+
    - |flag| (additional headers, determined  |
    - +----+                                  |
    - | by the flags, such as ACKs or         |
    - | bitfields                             |
    - +----+----+----+----+----+----+----+----+
    - |#frg|     messageId     |   frag info  |
    - +----+----+----+----+----+----+----+----+
    - | that many bytes of fragment data      |
    -                  .  .  .                                       
    - |                                       |
    - +----+----+----+----+----+----+----+----+
    - |     messageId     |   frag info  |    |
    - +----+----+----+----+----+----+----+    |
    - | that many bytes of fragment data      |
    -                  .  .  .                                       
    - |                                       |
    - +----+----+----+----+----+----+----+----+
    - |     messageId     |   frag info  |    |
    - +----+----+----+----+----+----+----+    |
    - | that many bytes of fragment data      |
    -                  .  .  .                                       
    - |                                       |
    - +----+----+----+----+----+----+----+----+
    - | arbitrary amount of uninterpreted data|
    - +----+----+----+----+----+----+----+----+
    -
    - -

    PeerTest (type 7)

    - - - - - - - -
    Peer:Any
    Data:
      -
    • 4 byte nonce
    • -
    • 1 byte IP address size
    • -
    • that many byte representation of Alice's IP address
    • -
    • 2 byte port number
    • -
    • Alice's introduction key
    • -
    • N bytes, currently uninterpreted
    • -
    Key used:introKey (or sessionKey if the connection has already been established)
    - -
    - +----+----+----+----+----+----+----+----+
    - |    test nonce     |size| that many    |
    - +----+----+----+----+----+              |
    - |bytes making up Alice's IP address     |
    - |----+----+----+----+----+----+----+----+
    - | Port (A)| Alice or Charlie's          |
    - +----+----+                             |
    - | introduction key (Alice's is sent to  |
    - | Bob and Charlie, while Charlie's is   |                                      |
    - | sent to Alice)                        |
    - |         +----+----+----+----+----+----+
    - |         | arbitrary amount of         |
    - |----+----+                             |
    - | uninterpreted data                    |
    - +----+----+----+----+----+----+----+----+
    -
    - -

    Congestion control

    - -

    SSU's need for only semireliable delivery, TCP-friendly operation, -and the capacity for high throughput allows a great deal of latitude in -congestion control. The congestion control algorithm outlined below is -meant to be both efficient in bandwidth as well as simple to implement.

    - -

    Packets are scheduled according to the the router's policy, taking care -not to exceed the router's outbound capacity or to exceed the measured -capacity of the remote peer. The measured capacity should operate along the -lines of TCP's slow start and congestion avoidance, with additive increases -to the sending capacity and multiplicative decreases in face of congestion. -Veering away from TCP, however, routers may give up on some messages after -a given period or number of retransmissions while continuing to transmit -other messages.

    - -

    The congestion detection techniques vary from TCP as well, since each -message has its own unique and nonsequential identifier, and each message -has a limited size - at most, 32KB. To efficiently transmit this feedback -to the sender, the receiver periodically includes a list of fully ACKed -message identifiers and may also include bitfields for partially received -messages, where each bit represents the reception of a fragment. If -duplicate fragments arrive, the message should be ACKed again, or if the -message has still not been fully received, the bitfield should be -retransmitted with any new updates.

    - -

    The simplest possible implementation does not need to pad the packets to -any particular size, but instead just places a single message fragment into -a packet and sends it off (careful not to exceed the MTU). A more efficient -strategy would be to bundle multiple message fragments into the same packet, -so long as it doesn't exceed the MTU, but this is not necessary. Eventually, -a set of fixed packet sizes may be appropriate to further hide the data -fragmentation to external adversaries, but the tunnel, garlic, and end to -end padding should be sufficient for most needs until then.

    - -

    Keys

    - -

    All encryption used is AES256/CBC with 32 byte keys and 16 byte IVs. -The MAC and session keys are negotiated as part of the DH exchange, used -for the HMAC and encryption, respectively. Prior to the DH exchange, -the publicly knowable introKey is used for the MAC and encryption.

    - -

    When using the introKey, both the initial message and any subsequent -reply use the introKey of the responder (Bob) - the responder does -not need to know the introKey of the requestor (Alice). The DSA -signing key used by Bob should already be known to Alice when she -contacts him, though Alice's DSA key may not already be known by -Bob.

    - -

    Upon receiving a message, the receiver checks the from IP address -with any established sessions - if there is one or more matches, -those session's MAC keys are tested sequentially in the HMAC. If none -of those verify or if there are no matching IP addresses, the -receiver tries their introKey in the MAC. If that does not verify, -the packet is dropped. If it does verify, it is interpreted -according to the message type, though if the receiver is overloaded, -it may be dropped anyway.

    - -

    If Alice and Bob have an established session, but Alice loses the -keys for some reason and she wants to contact Bob, she may at any -time simply establish a new session through the SessionRequest and -related messages. If Bob has lost the key but Alice does not know -that, she will first attempt to prod him to reply, by sending a -DataMessage with the wantReply flag set, and if Bob continually -fails to reply, she will assume the key is lost and reestablish a -new one.

    - -

    For the DH key agreement, -RFC3526 2048bit -MODP group (#14) is used:

    -
    -  p = 2^2048 - 2^1984 - 1 + 2^64 * { [2^1918 pi] + 124476 }
    -  g = 2
    -
    - -

    The DSA p, q, and g are shared according to the scope of the -identity which created them.

    - -

    Replay prevention

    - -

    Replay prevention at the SSU layer occurs by rejecting packets -with exceedingly old timestamps or those which reuse an IV. To -detect duplicate IVs, a sequence of Bloom filters are employed to -"decay" periodically so that only recently added IVs are detected.

    - -

    The messageIds used in DataMessages are defined at layers above -the SSU transport and are passed through transparently. These IDs -are not in any particular order - in fact, they are likely to be -entirely random. The SSU layer makes no attempt at messageId -replay prevention - higher layers should take that into account.

    - -

    Introduction

    - -

    Indirect session establishment by means of a third party introduction -is necessary for efficient NAT traversal. Charlie, a router behind a -NAT or firewall which does not allow unsolicited inbound UDP packets, -first contacts a few peers, choosing some to serve as introducers. Each -of these peers (Bob, Bill, Betty, etc) provide Charlie with an introduction -tag - a 4 byte random number - which he then makes available to the public -as methods of contacting him. Alice, a router who has Charlie's published -contact methods, first sends a RelayRequest packet to one or more of the -introducers, asking each to introduce her to Charlie (offering the -introduction tag to identify Charlie). Bob then forwards a RelayIntro -packet to Charlie including Alice's public IP and port number, then sends -Alice back a RelayResponse packet containing Charlie's public IP and port -number. When Charlie receives the RelayIntro packet, he sends off a small -random packet to Alice's IP and port (poking a hole in his NAT/firewall), -and when Alice receive's Bob's RelayResponse packet, she begins a new -full direction session establishment with the specified IP and port.

    - - - -

    Peer testing

    - -

    The automation of collaborative reachability testing for peers is -enabled by a sequence of PeerTest messages. With its proper -execution, a peer will be able to determine their own reachability -and may update its behavior accordingly. The testing process is -quite simple:

    - -
    -        Alice                  Bob                  Charlie
    -    PeerTest ------------------->
    -                             PeerTest-------------------->
    -                                <-------------------PeerTest
    -         <-------------------PeerTest
    -         <------------------------------------------PeerTest
    -    PeerTest------------------------------------------>
    -         <------------------------------------------PeerTest
    -
    - -

    Each of the PeerTest messages carry a nonce identifying the -test series itself, as initialized by Alice. If Alice doesn't -get a particular message that she expects, she will retransmit -accordingly, and based upon the data received or the messages -missing, she will know her reachability. The various end states -that may be reached are as follows:

    - -
      -
    • If she doesn't receive a response from Bob, she will retransmit -up to a certain number of times, but if no response ever arrives, -she will know that her firewall or NAT is somehow misconfigured, -rejecting all inbound UDP packets even in direct response to an -outbound packet. Alternately, Bob may be down or unable to get -Charlie to reply.
    • - -
    • If Alice doesn't receive a PeerTest message with the -expected nonce from a third party (Charlie), she will retransmit -her initial request to Bob up to a certain number of times, even -if she has received Bob's reply already. If Charlie's first message -still doesn't get through but Bob's does, she knows that she is -behind a NAT or firewall that is rejecting unsolicited connection -attempts and that port forwarding is not operating properly (the -IP and port that Bob offered up should be forwarded).
    • - -
    • If Alice receives Bob's PeerTest message and both of Charlie's -PeerTest messages but the enclosed IP and port numbers in Bob's -and Charlie's second messages don't match, she knows that she is -behind a symmetric NAT, rewriting all of her outbound packets with -different 'from' ports for each peer contacted. She will need to -explicitly forward a port and always have that port exposed for -remote connectivity, ignoring further port discovery.
    • - -
    • If Alice receives Charlie's first message but not his second, -she will retransmit her PeerTest message to Charlie up to a -certain number of times, but if no response is received she knows -that Charlie is either confused or no longer online.
    • -
    - -

    Alice should choose Bob arbitrarily from known peers who seem -to be capable of participating in peer tests. Bob in turn should -choose Charlie arbitrarily from peers that he knows who seem to be -capable of participating in peer tests and who are on a different -IP from both Bob and Alice. If the first error condition occurs -(Alice doesn't get PeerTest messages from Bob), Alice may decide -to designate a new peer as Bob and try again with a different nonce.

    - -

    Alice's introduction key is included in all of the PeerTest -messages so that she doesn't need to already have an established -session with Bob and so that Charlie can contact her without knowing -any additional information. Alice may go on to establish a session -with either Bob or Charlie, but it is not required.

    - -

    Message sequences

    - -

    Connection establishment (direct)

    - -
    -        Alice                         Bob
    -    SessionRequest--------------------->
    -          <---------------------SessionCreated
    -    SessionConfirmed------------------->
    -    SessionConfirmed------------------->
    -    SessionConfirmed------------------->
    -    SessionConfirmed------------------->
    -          <--------------------------Data
    -
    - -

    Connection establishment (indirect)

    - -
    -        Alice                         Bob                  Charlie
    -    RelayRequest ---------------------->
    -         <--------------RelayResponse    RelayIntro----------->
    -         <--------------------------------------------Data (ignored)
    -    SessionRequest-------------------------------------------->
    -         <--------------------------------------------SessionCreated
    -    SessionConfirmed------------------------------------------>
    -    SessionConfirmed------------------------------------------>
    -    SessionConfirmed------------------------------------------>
    -    SessionConfirmed------------------------------------------>
    -         <---------------------------------------------------Data
    -
    - -

    Sample datagrams

    - -Minimal data message (no fragments, no ACKs, no NACKs, etc)
    -(Size: 39 bytes) - -
    - +----+----+----+----+----+----+----+----+
    - |                  MAC                  |
    - |                                       |
    - +----+----+----+----+----+----+----+----+
    - |                   IV                  |
    - |                                       |
    - +----+----+----+----+----+----+----+----+
    - |flag|        time       |flag|#frg|    |
    - +----+----+----+----+----+----+----+    |
    - |  padding to fit a full AES256 block   |
    - +----+----+----+----+----+----+----+----+
    -
    - -Minimal data message with payload
    -(Size: 46+fragmentSize bytes) - -
    - +----+----+----+----+----+----+----+----+
    - |                  MAC                  |
    - |                                       |
    - +----+----+----+----+----+----+----+----+
    - |                   IV                  |
    - |                                       |
    - +----+----+----+----+----+----+----+----+
    - |flag|        time       |flag|#frg| 
    - +----+----+----+----+----+----+----+----+
    -   messageId    |   frag info  |         |
    - +----+----+----+----+----+----+         |
    - | that many bytes of fragment data      |
    -                  .  .  .                                       
    - |                                       |
    - +----+----+----+----+----+----+----+----+
    -
    - -

    Peer capabilities

    - -
    -
    B
    -
    If the peer address contains the 'B' capability, that means - they are willing and able to participate in peer tests as - a 'Bob' or 'Charlie'.
    -
    C
    -
    If the peer address contains the 'C' capability, that means - they are willing and able to serve as an introducer - serving - as a Bob for an otherwise unreachable Alice.
    -
    diff --git a/router/doc/udp.png b/router/doc/udp.png deleted file mode 100644 index b4fd6241a1b9bc666f5e71fa498882ca60303cba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34329 zcmb@u1z45a);7FAq@*MiQ3)j^1Ox;{8UYCb>F!Wkx{(%m-}}AScm3J+tu>$d%sIwA?)x4yKvr4|7n=+lfk5DjKYA#KK%C1( zAW)xUqQWz+E{>+~&p8_*aRp3F%%KUHaRh=AA^uQM!7+Y$#6^Y3p^AS!088-YFfpb> zes4Kuulh(=QO`)ZeaNfq&&Dp|%M9f;o!`U?N?$!)!N0g+UtB)8GFWcjwq@4VOCGWk zrDoPfUR1tf(m0!;kfU+wJ*AMBq8XJ&Sj$?-z|UA(_He9ew&=Yj{KO`%v4fv`oZ&K6 zQiLSpVQ4Tc#EZ?>*!JfU2rq$Dxuz*A6bnqmixx^^bcA?jPEG=wp~TatPnDE<3-rJ7 z%!++~^o|ID7)HLlaNl87Lr}2x^yFx5w9;j~#`FFA_icPfO#P8?)eC~Ra1fn^Hgi8$ zhD!K1zu!zwPTrbr&C1LiEVH58iD<5)+X+2wcD3)z)pV}ZO7F_iD6`hlc_Fd9w#LH5 z^!gR@!N9<T|NglI}ZNlA1T(Nks;BhJvGiEMvTQFp|PaUtZjY%QcG%}!6ZV-6g{q$RWvd*B&mG!{{2{0zNN;fEIg^o%F5@@ zpLg3!NJt0^d%I9oIIKxaOP?NZwJkJkZ*NORGd~$hNJwz5Oe`Xi(jb{NDXkH9Y{5qm zXfP0Jr=cU{h%R4tIM|%o-*;S0Zq#e~`7_OeS~jD~K{bVXXD*b%Tj@hHreJHZxv?=;_@kyq34P-asUi ztyYv-Svj&`ySu&J{>BhqF@2IQljMH1QWEPxO-D-`*J@NTvTAkjW4ld1OvJrDsxPg` ziNN$l5pezikLG5X1n#@{?l~@YXFPt(*|C=>oxp9^mdNYo=Eh|)e2bYm%^@H-IPG*z zM!mxRwjIBPxOh`%s$|AP?^;3|sHo8f~V_DIKNuD{AG}a?P^s@(0Y+ayXfo zTFf{vlaO@8Mzd&FIqxj)?(RNtSY>UN5*NSkcDQYtS6Qt84UZwUw6ruoKfkPOz@kLE z%5~r=hqay8H*A}`@k<1wvls}>PcKGZp&-VEVLhv=s!~x=#m2_2Rql}|Sg^&W$t2}= zJe8A|*LGf@Ib={)RJ?1{LhAMW!g8)=#YYy7?`>@*17-^4twxNuZoPbsd@$X*^{%Vz z70o@1prQe@gM$NIU0v9Lu#Ai<`>lJD)6$IUe6YxZjE?s=SgMcND%Zxxb>Oo53-tB% z^mbQAmaH4za#gwte77|K({MLT@`^8>q9pv4vFTkx?ATAMkG_JA@A1cJ}!Dm60r2_zF>pF;*gp$Tmr|k(+?35w@W;EZmv)Wc{n`i{PyIZX?Oph&?*V)IHaD!OsSBu^j0v-$lSg$L7u=*IXVt%7AWRpi|>)+(bO!^^Hu7~!q` zXikbMjpoz7N7T#frnu*HR)@>{@hQ@ZGqmU4Ct3drRoyI_SAxEdj%qQS>~BmB3=F`H zzIk)1M_GGD+|1m(wYfR)Sb&fmxSvFEDHyj1lmQnZYkxc6`A%iXWmvXv4CKf zoRpcHTV*xj)nu@^xQLC5dz+Clr8D}ry3&&;8?9Vp@%L@ga&v>}?r?FHeE86y2f;6@ zDV#1kDoSoaz1XbG?WlObEH^KY-)6RDJ@|Wr4P{o33FliDtuKz7)8gFx%G}E5OE zx&kByzBt*4iHXU}%j@f>44Ao}9?bEs3K28}5Yh1+OozkjpPrc^Atqk$LniBEi|N`) zR2F)yLWd+ z9L8qEd0cjvVP0*yulER)qZO%{mkedBKx&w{{-$Z@oRd0?YBfRJX23Vt)X9Fr`Mct; zK?L+GbMCWrcM>jFp@p8~9~ENV3^SxGO%T5ReZh9rVayHITg$^RYM9@l!9hp+yquiJ zj~- zBq^9VB`)(t?#VSEG#W-o1IaTs#b!_pL@ zetgM%0IA!3wQR1uq9R9$(M>zA1i1r3JDzG(*yr?^6sa(^488kv7tnKa$Gr+$;D*K5 zSwV_}9#Ua7kx7Esf7QIxJLAjxl4J{8xv23#oCMLd&S_8Xge8EUc~vzqmFPO2n4O)S zv$OM~N8dj`>k7VhUnsSDr&m3k_HpM^4wyFzx9y8EdXFEs`d|@pkhQ|*)pkEHET4u& zWSr3 z++kz;^yw2@e-8?xG5K;a$>tA{5{1sZ>j=+p2f{_$#X`(C^t`DM>-XtL%_tk)8U^kz z)iM(gS-sHJS0yn@d~`3`%Xi?wF%Ta?86Q?J_{9q0xa5+|x|Otv{l)7g!Pa}fB{IYd zt53;9S`wXXNcL=vl*$(CcT$srnq7fbB-378)vgpS#X zXH{_^<^K+BqvowwGZZrY$(>))d503>UFU9)y6=8mirHp$sLX!j#*Ir%D((IK^YwM! z3F%dkX?g2FqP!JPU4&FXTO*Rm#y}Z0mj`qeXUG{1`&q4T1a@&n9`PRN* zy9R*mk%`lMJJoDR=o5Y~N}+CS3sci2K#p#wZ*@yQH=+9x)~KUe5^mXN_{Iudzd=n+ zegFPJMtb7mWFU)1@M=}(^Qo^vbcv2PXlacgLg7PLI9jV-6A4E}wfus@Lng9*`rsK7 z5|vnbOurEm5*D6oeGA#R$YxG@k$$g8eO7z6@a%N$tjcL?HaVFpx(-&XlarIHtE;19 zX~)y$m6aI=-Mz5uAyZfuP-Wcp`Y@gLuUSDCKe`3Y|qcQL@U=%Iq!EoyPx^+H> zht45W&DPfQM#j*PW=B2dhG)qzLgMC2!}mK_Y3 z-T3DR@~EgNX0^{Bv$C=Z3%5GNC^Snfu6uCzskFCk8e27edD`(F2AZ3jd;Y>Dv;O?r zKW15ql@v!QE3$g5^oMG-yPLFhaHHPB^0G$04vOOPVoz3y`H-mL{(3z=6e!E1)7r7W4?bFlK5m4bL z=d0xu53OtqSBwBIJuOS;O12Uc`v$An#o0OLN@rIWi)Q&la|e6-#U1BFLYPO_UkN`1 ziaSht>f5)?$Ew_5N$Ou}jQidVrO&s+rlzLW*4A!&dHL{A6M0+ik(3a=LjYV)7Jkp_ z`(18VvAOQveKLfLiwkc${YZFl;;#SGCpZ|78(+Eld1QEed`mWuqM4+mq>0Jm_&B9_ zSoP^n-kAH5`5vugWkba+S7Z!HP({eiQ)vTgozyNaOyIw${q!wnd|qjiFB0cti0dWjSC{y+J6H=7`EYzSb3KWpBZHxwiDXo!rKJ@W6T2Gp z^(vQz>;jLax9S*YVb#_gi`e&yr_b?jyy$mSAvry0^Emx_)v_HQnavI zCM?W)e|-Yt?1O}#iHYRp(;q%i_bTdo_N39!&^*80`YG**lh}y-1`SQ)uU(cKThn8y zG4tWWhx{r|WSCj6Ip=XSGzMWpyMQxxhpO*MqU&ap8^pDdioT~Dn|<=%pJ?6zOwY?(`x2`x^6i0 zBhuq|ibC6Er3l8b*%uyQ8g{{q4YBVXYDt{ddvD$!_ATtu?E4|)yoV6RF7Vh22?^QR z?Hp{)W%vgK1Q-=U%`2~4(zP%>#(U>ZK~YiUpvALix@j(ocnBPfg@vG-J3+YrL&aO} z^9Lp)Fk8~X^Plp>Ab%%+4G9JB?x1+VOkclm-Jp-f5#syhf5w6tZD(=|5LnxIwxm>4 zR9sz;gReiBZxgq={w53GoKsy;P|)DlLr@Uqgx@XKHnD)RQk!J7$n^3KE;`iEUjZ4kT7Ts%rF$EtK{z0%Uspz?qe){!JW zUakb`$Fp2H=I|wZ0(1Vg(^bMSB7vsUHJU4QI3amehbB<<*XH{6)l>J~IXPMLkQs5n z8z+HnAUE9S;pnAfgq}!dfR;uLWlc0 z^}hwT#Zu8oqDof4#YpfktYC7qzFjL(}iI5Trqpm$NwUH<`YK;SM zQd?VFS62rWW7Ym-pkQ_j>(`g%1ud3$v4ay66EP@U*P)u!IO|0lXA4W3Zmbggb{JI0 ze3w|a$Q!c~g|dNvjU-Km5W1h zto9Sj{x(8jv#P}8`)lv#0T;1wuwUdodhVgdqBhB3K6^SZ`7E`q9R50|ioYe0qk z(z#hZR%Tca1eYMYYz&5)C_s!#a6agIKBm660a1raT z{3*23IMMOwQNZ?l@v^&oy8?u!12+^LO z9PT_x5w)|mB|v+=v)BXEE=TgzR8uxBTqdodxu zIaghvaen-Eax!ZW9j(&1$T!C9>oXykF~tC_gMq9|OZ)m&v~b`UfFu!Gfz?D^2>)pe z5A0u4zLZawzODB8<=_%5rX+~|2@f1LH#f1du~j7bY-XhZ_(6F9G_tni z#Ch(M4By=gTQLjKM zk*DnQ=k8R3J%0_Ci)cXUJO?Txyb0<*>ytyf!&}*Ia+;cM6Lsg|xt<;ppvje#L{lvX zJ~f&Y0cj0fNFt9@n8#~G4FxedCc~El#3+?miw8}!fYk#!disolf;WS}Dw;s4FCJD@ zR3yW@Lo6N^c2KaB^zMYYg(an-_de~QuLi{6%H}ADVh&CsRany+q9Od^lFSGQnCMKT&E$*vm3B(?`La&Zqy%Mq@m3_pH za$LJ~m3se9irJpAqJ^u=HiD@0+9}=!SEbh2;Gl$g$>-1WJI-E|5TR%v$87^Tbf0aB zg~Sa-0FTwUfRRy}I@V08VW`?Y_A17Zfz)Gv!heME;2*R#=CW~aB_R=! zx|$lA64RYK9cG-s!28z=iqzY37gnN5opye)$8FeatNjI2P>j%EP8#zc4M0kRj54p-WZIXTYVjGULDh2G zh4su@8em<@^ImM$oWq~DEr-fe`*bsUH5PJ-QWoxo3+!)OA$Dl^mhwywnu2fuk;B5$ zvKlH|ad9jU-v34kagYIqmn?~{CP1un8F4UW_C;T`KARRNU_3{uTVIw{=ioJRcoEB@ z4@%#BViTCvg&$?rd;87KW=8JZc%*M4C@y_lB9&h z*Wl|{iHHgv*0fHYxvvESBMO>HXlUpkV8O@2(%s$t4+O9}QbBV^kyww~m>Kx7>Pj*+ z)%+t8fx(8OqQDzYQ_O>>ST}mFzC2l+iPo+HdSG`2m_6B03i?q8#zr?0X=)Z`KB{IE zR7}`QBbkP4wv4I2uC!bn8p!5v*p39_DzI zFJaBA;l<>kic;U%!FI+w=N4|i7 z7c_r+;i8R5=&34h7()` zE7dhjcJPdNJt#i#cqjY!&qGrGRG?If?&-4QyP$`9b)TPm{vJ#cloZ!};uF&l_km1R|8mr|y*vus*Pz z_=hW990(ZeXF&fufByW@-deTG-YNhnKpa04d9N-@z=XX3X;mq{%w~?9&oyQ+HzT9z z$B(~=|G#UL60oiu?d^+|vRc1?cZ6W&M5wN=4)h#wRiYu}l~xl%fsI0`LuSQ5kuKSm z`}p|qy6mUdh)85_=3G2^#w_Bdsw4Xe1lan6?ehWiLw^6moqzBgf zqcCc5>!sct$Sd3O|0y&o9DXuv2Bo&@VD>Ga&DuO%0I)2ISX&50S`CqI!4fY<(pa8~Dilm2odhXgScK`e-?L`UoJrvgzF3Sa< zKXa5LN&2d)s@Jb^Omy$j(9CQvbP>@?QDVL?D|4D`2sjq&e#&v~+&Rd13_m8UeEj?d zSM1BNm~T(g{}?((xcf@V=f9gnc|jtiYnY5$3swKquC&MY6(=RtCo7PX7v@>1seJ}1 z#XA>lGZh%pyTl0|YHE%Yn-3xH=%q`=9%rXtzVPHWfDUdBq>BODlfA1@DGRGtj7U?w zTxz;utn-%_;3eP?km-U$LeeuI=iGrpm}ofpw(=7Y;MN&6;=IoD;v=%HynP5ymLZhx z4p}Bh&%qF47yhbZ9$dp?5ctq(+#06{>PL~9w$n_cagtjU-9`XiqDqm8qKivK*TV9` zLbA5qwsYlxSz7S|ZsJWCX+?2y)X&{o3<{p@cH!<~kiiGcx_5KbOL#8LfP98P$m03b zNqqQs*|$A8ISC19b{51<_k&Htl#WNKS8@Cpm2+|M@VFDC4~OVfh<*>=woP!mw{6;Z z`$k60i_{jbzH|y!0r^f#%N>+YfZPCx%m+U|gY?-g4?m9-8p~*Fj{#JM5|sC^aS+I* zO^=l8>aP%ScT89*C@ZI@rvrf`^_Fwx`=5?^EUFcZi+ro}{Tqw*$$I6k*>(G>B= zkKGnhqj{7@kxPLlQBs~&%Zjqyi?FTPU|`yoIFd<;51D4Dvt69D?OT{lEL9~2iCpRW7!XXoX~ zNJ(v*;-a7mz*{%E(T-83E>IGzlK3HFIiATG8O_35AVD!QGWxFFgUz4S^XeW%B!nwo z7D$_(Hxnhp9ZgVAUu>Kwz(hXtzX^1ySoY^@)*=o>4)=#S;2n-Win_>m%HGPxW)vA$ z7WdxCiTa^&9s>fCZcQdD^0iyULVx~^&;RmUeAhrxm1TCt=R(}Nru1i8$Y;PoynE<* zMgzu#i*^4`A3ch-j&JjN+KMkPQwF<%&`Np`lO_LWD+?<1|F2e-J=#*`fTi}&K=MXJM1Y<^gf?My4~zm+Q&aWz^+BTg zmX<6YZW{T;30XnH!om=m0RROC1UPLpUarg`F`Ya20w0;vWTXC!u-ANxyFUPUV! zkR+Hj%MI9K0chuHSFf7qs63!RxIUwnbkL(+>va-&rFkceTe6_?-8H?KB$J{+i;^z< z75fU&l;mQ~MNw8S*68iDG+L7iP%prZGAJz}VPa$3#ko$b1 zMad92c?1dUD|nfh%$`1dNr@RG%FfCIjn=ifsZRd z#BUIHA}fQ>pFe|WBs&DQo7mjGrOMk;VKFh^nZyL%-ot-P(6G>zj-;7qdB6QVVXP8c zW0IK;l?}$g-wvWB!8iJ0B(ox3e2R#SjEs&>;OMhMGh8_!0Q+FX$=+VV?@e9;jW_6KRj$!G6ZfFGY&Fdr6zqCS*h#6CMcIB zB_(5JHvR*bCW@@rToLQ30wVzzpKe+tD1YcDxtUQ&Japj)RoHFf{=Y|8CUb_!SBC=J$iH{Ikeq*wk`jqyNzr}kIz`>j z=+-V0AgwK!{<10-1b_VKBdfBh;!%u^atB^`Ar_~jETH#+L_7FPajkjYXXmT%EH%bo z*+Yed9Iw}f(ChnHR=S=k3;&fon&wZ>I^#3}v9M$M&b-EEGq}P}?yrK5_M<)WWKtjc)_foMQa&L5_H5y}x=DvOn}&?#DufgF+mf|59j z(`ee~o#5hphr*_8`EXB)Tt>t&jAYz$A06vHr8wb)S2q=&k)HH3-(hxK1VYeLR%MU? zt@+%fj?zm%6hzG!#B#JNZt_f%Iu5oalw>do9s;*;2&7)F`v_~JAYQaVFvKJqzDz~1 z8Ua_x57tBigO}dE0xa+%KZJQqJXg!rbsb&Er>>aEtS@-Z^BQbBonJ2oMDB_QPq1Vt zFi=sw`^J;G_VD3DCYAhm1qB^qB*Y3y2#OJP!H`W9ga9WDV?VLxMT|#m_#t^gZ*Olb zyD?di=va?*=s0=8g-gh>mLUI#kX?z0lwd0`C}`x9p(H4Lf&}0l1S$67#fvFoAzGzY zV2VrL#KFY{2nKo>GcE0G<7I7I`sCbPW*Qp9v(pna!F$(&fiK$M-v==)rK2BoD%X!Bg z?97|u_(g1TULMQMo8D@q(vKhW!l%3Kjm*i_K^{OdAwAvQEieNTE#JTIk9*?-*MR9Y zzql9&fzH^NE^@$-_wCO7>cB^TpqPMR4B_2XQBxz^8dzOjg%bNoQP8VbKtfIC2?PHP zem~_T%w_I3;m#*0h-tqFdj2BmR|%Y9+!)4khhCOP?Io3h*rde0#$f1sVEpr1g0$F* zw8(pE@ywn@$YOhh;7UmZmXDnXjE8^9Z$Wxdlv(a6ZiN@7lNF((z3XSI~4 z-T36t6NnWT39T0{u@5uixQeosh-%e63cfnbx1oZ1C)*OO@OQJ}LNk;x0F7N-j)2sJ zjvY;p5q{D)04?n3D-s-LDezESio*aD~Ty4A{caA6`7 z!mhyhguc!DTfKQ+ipB@mm35l3QBs?=V9;0 z-bDyaY<{w&HPJDWb(mfddLH8K{R$~AUSg-}wi4dt@VR4QGPjn240PROEJYlnq1URg zl4EU?Bfy|EY!Rwc>3#Jg>kFLmhY$pl!rL-g*^g7T*))~B3S!VE1@ZQVd`a+(A^7iy zx&n+35aM7$bB2U-EU1*sdS-p`Qn-NG{QZD?ArvG0_X3ge%76s>+#@`_2NUhe5Rz@I zFZh;eF>TzyelIe{@w!MC0`54HJ@E)tzXjY*sk|4-Y9L&QN4V~-<GuUyIbG1`SEPfFfIT*;0;&IOL3*SW5^o8iHC zBLpzDM=3o;nA~gCC~#M~IgG&Fj(BO!!C@XLfkYPZ@yFfrGHw93TX-T~zI+Lm3Jy-r^2?Jy^Kh@AUsU>)!f(}TlhBHT zr~O@S?&^d;MIy+wz$pH7eMQ~$ujH_Iot}9J`E3XxG=5@QOug=pPhepJznPnzJzQ-5 zwz&{&CZNP-8e<>`sSP+47FouAJN(42uG z^W(>l)zxE_c->+7_oB041tJ89lUY~BPFKc|j`!#Wh=HJXg6&BA5!PH=5?8Dg7|JPM zf-4{_j1Z|gsL;wJYN)A67(e)rp#FT|lOd=-W3WjeF#_v3-vTrcT$d#nN`QvC!16_a z#$xnKSxQO@@TZVq%{T$HZ>`$t^vp5?E4yG_ zhFI$LJUT}@{VmX3;OqBT_oi5n&XdakX9RHDBU@lGF*Gocy-?2(nORZcGFlVq2aj$5eI}!D3-v1kYSu4o$kVUsQX_iq(xP*vnXW+tcflD zQZZ_H6SAyADyjK5P4kY`J{XWbeqL943s+R5bNY^}XQ|)~&}YDs>JE51J|dzaZVNoE zU>VEL3qJY>|L=GWX;Fr(sFKsGtmQN_V4RfN1!Q7I5IBl_e9%nP^ZMAkcAP8oG68)7 z)o}5ptm8swDp2_5&z?QMcMbRt!2H$6Gc2)J;-$fK#syCBRA4p1`?bGV`nw$<R6Vn&$NSsjA!=!<9 z^AoZQ0DCBaQj-)j6u_JeLI~1VA)Uwr?si-4>w7_5qbk+zCoy;Q-NAKoy8n%TH^!qW zj0WVmQt9-e(&tleEvv-S+u)OaM9>43EA!|PY=U=$K*|8}#`s~ZM`lG*=l9W?A1njlAyK=J-pbjin%)7}M21%Y7x zzcSJPdeiSA>3>lj{L8$K{G$JeY5(y79JRSGCc&+)qfGVg&kOm$7Dp|PUI9Mo&A;(N z7;)B04j*?o?-wb%-^f)OY-kBsrFlG zlzRa+^1Ai@J=v`LiASicQ9cmN1dtd3Ui}sMt96*q>5C%+egoED@!s80_2a2&{^une;?AGo*wGa;h(EV#?DaqXps0SQ1>?z1%tr?H*Byelm?+-I1-_pg zW!EbW^%U!j>y(Q%>ReQOLvS{(r*e*deG6rZahO#U1L`xY1Zuqs6^uZaGglp~E65yN0CMmAFdiy9$@LZvSCW_p8a}_~bF+3yJ%c|wCD*{o z`t0}sM&&up2BS*FmKCFV;#DYyUFuSJ5zeoT>6W);eK6nxozOPc&g2P5@w zxKNaD1Yl1uH*(n2_E3$UYO9bNaF$B3UCpQo-Ea*>aW#|H^U?4&F*Qw>iX|i?i;Il3 zTkgM;6mbRdt5j@B;y(k&0#7WLS^xTK#hP5#WeS-$9G<-Kv9U;R8SWYZcvl=J1L*Yh z^gy^d0gqBOn04wIzj+*gw*Q_~+xSRgOEIT(m)mxpfPDt4IzsL{z6w241ei=F(^roD zO=t8-XTIC2hJ)vVDb87Npl@R&0;OjC8n~Do|y>5(8aK z(c11#r9Ioc)za*zbxmtq+IP`<{l5WVzJ`Z!Vg=+XU*;PRtY>*8Z~SZY8ZD`FVD{Ey zg18~ir~?WB8;6@5<01BVc$Vj9G5_uJc*r967lfEgNH{0 z8an6#T<*i0)pDY!#VbaT8tSiBC|2*<^_7yb^1gveG-q!+2Znm+aD<)*VEAN=t#>$Q z%kZ%lT0mT}A1XG7Zji&BJdek8czAe_GQWcLLrm;!x1>5%GKCY$i6nrFAixJxH-X4o zRmHcb=alBJEZ-;7W#%}5W;E*z8UQEo`as_C@}5L0Yf%j_UxcJ88N~!3PU`8?d9U*q zfJ>ccQ)RinN|$!@55k1n1k^pkh@kY4!B#U-i|v zM$OO7BXhx@K=9?8?XYid`uh3{3qoNA#>T*ZUaQQLe4?=cCXdDC<>kdiwS1jg@QHmy zf+&%|OF)9z+1v9S&Zht?y`{3u;=U0Gmj^8lKxO=lyBjE>{kzTB)8#H$&cUL1P)~6h zN)2-753uHy6cvqBx^VIHd-P-~u434+c#e(_jOehcKke&K*w-X_r^SuB!D~pmpPWLZF}8h@$gw3 zF3a1R7L7KzZ{+u_KU7zr0Zj=4ZFX$or%wPS2KxH?y1L}m)WE4A$9;7vwf>}Gnj71+ zga{3K1KA9J5QCB1mfN@`M({+tU*Awga_UF5#Yj20LjoH+dwPl-H}tCUm}~v2uO)VB zu&r~AomjV;o$nJFoe~+Ep=v8zNQ|9}6rtJ@94~Bz2b&bGw+Hnbi&UovyPablO< zd*p7rZ-ePWAc$G*SN9t&zGp}Oim~!lKuA5^}3c3PTR#rg!lai8p9URO_76c*fUFYwM9J>(~ z2*}Rh$J@dmCNGm~D$)z1Hr{T-nn?@`R;f1Gn#6KW-cyjQ12$>z{&!1UcTUysF8( zNadoPeo?B+7)>F;-=u^n9}?(MS580Ij{aqV*3HK5s@-mHC*Y-z735^sbS%i8DV+un z2Ph%nY=%07N?b0b<0CW)sqvb0-}0h_8qj58RqO+o&+gZ@ftgKtS^$8*4&pr5S6w$c7%fK`;!@pS$HZAC?e6SHy4`4@nIO&-wG2iP@< zITmz_N=Ur=cHR#P02*3aci=o=)X)`>tvOM(QblFpK(28;*lCrK+~reNmSjo?>l7kL zv}<5M+&Yg3Y!V|bYn8}O&)e%mmer}2`9$}4d89S@9~Vv-62)}s`wb2bLegM1MLmOgu;xxc_GN$pqPdVKQulTcqX)9zj5}Ngz0aSAJh=Km zW5Jd#Uu(L|h_A14Y)Db})PpvkQ?PTZb|{^P+&AlwSoe%vMtvbTn5A0KYp3G=3(n=> zRKHi%K0pZqwF(+EE*@SY(1H+FprQIdRp|xI_fV>4T{ZvZT!!iwwnqEdv<@q&grp=i znj!nr_5)}1{;(oN*T>P_zP$p(Q3rCq|Dm8;@*8pn?EmEjV0}Yy>NEicJ^Tn zKZQxXco_`r?1BWpk!vwT^naKd@+x-+!Cdt*0(3cOmMDj+9;#emRAKBXos|jX8uH3! zT~gnDy#oKnr+wf@U$qYSy;t~-gK?!TCJ#1$q(o19`#LD*KF+B&DaN`5nd>gT4*RLM;8QR2t}1rW|q5Vi2w69Kf8OnP~!aE!xz{ z08*<7@tm8R>q?q4bpKfbZ8Fkx3{m5bNydc(n_F98=mSCDiSP9>ur088x_%i1_m23Zrqz(IXQs4g-9$QUAx#5w|N6_V zUQZp(10psR(%yILd#(igO!=ED^WS&rI6s!%t@B_2apX&mYT+z2XRJa?5aewwt;93D zhb)4gG3U+rYFPK5*&19$mQ;=$&pJPV6b9a1QBhGabsQd9F{9k+HEp1+*+Tg;ncnfH z?KYYe^X1D|KEJVegEM%;nnyFpL;oPOF8%ZREdCTa*2F#^-<%8sxsS5=Sw1ULIq{5*p`q*16>>ar7*X{)@6moy^h+sZziuvak_+81`XU zNH;f@I{gZ5dhttaZcY{Ao-Gv9?Dx)!)Tr%qq)J#Dr2aeEFz;KI7Z3dRSfl$J<3p<0Jzz3%XoZ)P>T!Q0t(q8slVr z53+i}TIJq2Sh)#}kzZ?VFU%Yo&hE>+${T-wlW;S!vo_9Xb5-#T<}uWpjb_tOZ!Ym` zq})uBjj21l8}#Y8OfvrVP4MmzUn@_eFFp zTHj+9b@%G5%ZU0_4qvIv@vzp2T}5G6wk3nEtQ%Ber^MoSYh=!OZtP%Djl7gq!CU|O z+!58OkJeE{T7Ho3Nw$npLOe`cgVo)d{8#?`vrrf+JBo@CeRqD5G(J>TN#l2!b(|`M z{&w**+7KwgHgKTA#5v}I8*y{)xh(;9v%e#AD{*#m9p-_{=0}B3Cnco#8(gZfQ*1(E zt9M?Pis`LVT){~i=HtXbP@?T9;hNso^Zpm-_P6RD(WslN`^b$~Selht!uw)0#{dq+ z-)t-Im{zkchiSEi;=T^-)M=o3EM4#aH>TwlW?#9lZ6EtI${+ed_`v$#ErJrY)p}GN zJ2+Qr{v_PET>r*-ytu*I$1tCSMI#<|5S}cj(H6@6=a)p)r-R=HSZsf%N_+8$;TiS6 zMi+~V9Gxs$uW5<$l^Tja$E=D+VG#-h#owKYe;Xw{|1XOAcRGhM=EJ_>XUeO8j7lfw z!>Kene*ud1)S6AF$Bg90+a?r*s28<(28JA^-Ji!DRUzX($MhA{Q@Kog zk>IHJKaL5Q=J7cF(q!;yXa!Ah`afNbZ6Ie_j8%cvZE0z#E&hJ}a3wTg=H!@zw2JKH zQC9AQ^IDK?Fcu@+ivz%V15qC%1*aY4f-?!auoB7Sh`g!Ao&6xgXTN_x34G*zaOY@h zCbT&NM`-Y{xTJTYdQR~2aKD0@FpJ-U#Msj;xeVxJ{}yyrjNqZRwzh&oHvrgL`@DRK z)W!MvM^aL@EII#DK>s-D16s~8y`EZFB;I>|!|feVra{*q*h5P#fbH#K>GTx6B{-G? zpKqU%kui|+C5#SqID32h&A!lq-*r$^mjIo;G6K1b^t@X+l>$2LG}7qE&2xM{Ip0bz zCbva4MwKYnb}!=JjzmMp|mi-TjZT)^{g zc2*XY(?bJ=#*oUvl$8`6JtyaMqu-6$M`3Y+QNomkfYdf1ymoy89c%q^r=`~jo6g=p z*zES3&?eGq#9s8+67x+=%u`M{CZM8z;@x}QyhV1?-t4$IvaFuNAB=fCN6Up;D;MB^ z4^KGY=Res9 z@sLWl94fvIvI~^@4;}!mG5`)C)C-_YOd&10ZAld5V)2ImbLQw*+ANpaTZXTVPLY`G6=p#$|0Yfl(3 zya7W{Z7y6`4L{s~(5v)#mBdR-c5(|g8QopV5xrWJtn-9)-V^nIy7?k#`$-T<7w1^; zF_seE-*XX`UMFIxF`Ty1r>4=d*bk_daXO0(p+`AJdI8~q?W?F;cCl?pJDUufZshKA z&0eAHk;F4rE(5G+rGUEkeE7e4u@M5N`5)VWcBZ5OS+419UCwb!5Qh~DMZgF?u=A$3 z<(=(IUibtg=M%jVl*$mz=yj{M84T=xq{d?MQI--r;-S9yf}DuQU$f*f*#rm;T;Ul) z9Ys=Vza0`~qbzxiR>99GdhdK}2oMp%vsrbe92lCE{sQRrtz&3cINITwN#vg8DJ)_k z1mL1ys8GI!%fMtE$i-${*KV4``EY!PVA5>i`y1+}F^(s#CdY9)Ixh=Tt$8s}1UzAo zn}T5{u;d1TZ4XL%Rs?qSUpoN!=P6#^af45H{#tjh*E?y@;hBhA$LCch zS~2d_P@^GYk!N$kfnVbu@|65wO^u`ubMqht)UO7Hs=J)tb+6F@>-EH;R~T(_IS7@A9l36UgYTNE2_L+ zXF-0;3>Ht?WbThYuTo#sY4_%^fp$>W~%bH9~w()K>Bp2Y>meq9Qv`Z$wi%DEyHx zAV{hBM=38}y;@<|90i^Gi^=s9w^&$0LPGHI@wv!?pi%O80ges;djlNFLKd`y+xjhp zqV4C;UXvoQg+mu1!^VgjOA*=QnP>lbCXOj*ZVG!@w~uKwv?W6SGxWYTHZ**JZa)P* z4-XGGI0QT{@PL*n4-bCRSa66lDrLhl4v=qPqfR`dUxyg~`wOKOPtk;+&{Xy{+pB2__ht0@1eEZj8prI;|3fnz;pXNITVLr>FlreID^9p z@UPvIRZ!Rl?axUavuQj;0-3~LhE|D2XLl`-yKQ&CjJ}e9_Lgef1;V0{fq{&^rGqXk zulf0T9o~m(YJ-r$p+1|n*2rbp+1>rx*jQjR#a%AhgdAg7SXgI!`}ikIaG>bx-z;*2 zA_Uno%?73+Xx{(00(??=SoZCi$#j(K#Wj7#pwQ)2pK_n9gEz3bxjBV#N{(yu=nbWI#87VV}AQ$W|K3C^+tcmV?8#*6Tc+#-LCPZhu%ZzW)A8JBM&#>=$6(g98FO zmUh;vjx3<_7m&k_^9k@n4-NB&R=~CK`d5oHJ1Gv>BX3tuQGg%&kA@tmL}9+(6x9K1 zq5A9CE3gFRec5~^Q~usfDG6WQL+lPg>-vugG5tcx=nUI zK1sp!f@7kN7kF0q|7qrlI|I+sU+weOB+YiViI<+Qy#GZUY3wTgI;?GwoQw?G$FdE} z4N{T}&FL=}Jl?M9qvPa^3Vtje1`O=9^MwYIqfdTy=-#y^MRNH6g|lRE1Ev`0rAvXS zSy`sg1lzI+T}V|YyF>h^8zDe3jl#hYX>1BgN$DnyZ+vIYC_a;~E8thFV$c9qRlm3^PJL~VA< zD-iLn@90*gKzD^jiB09+IF_%bk`~tLnKbL!5VZcnu8=Z^(-!VDSKBRJ5)bP(pWNmw z`YN?~s{8?1Pd)-=;V*~Po|aU@D9kZeKT$WXM(QP;Jba~jF`pY_)y4N8U1JNDQR5PG zy1ySK6iEv1*7I+O-?papm;fqiF|v8`LQ6kMni*! zQfboECUHwiC20@ZRMMW$`{e%pp8NjZ_w#zb{o#e`8s~MK$MN~R*9Q_?R9im=;6eMK@@i>6ZlLB*Gg1JEWn5`!D~o5>Dw(I3261c ztjm_k%&P#&hJHQ>Av9?`$Sxdlt3J9kU$#6Cp8#w)N7U8lVUzE%J%#-_wQp*l9r zpE=iT!r|4x9gRH5*9*&2Bl24U#k9KIbEU|&VdPP|ADoYNT7Q(0JNxC-YLPnb)vu47 zR9d64)^OULgYEFgU1x8yo!B8F8~Jv%e1@c@WW-zR=(IOC-bdUy6up;sNA#UoF>?~9 z&ieRgSHqp%z6<20q)VA-P;0muG)@1cPbx4$LPUF^URkM2(H2=x&`P=|y}Z0osQ%us z@fX75vKM3)!o}7?rpLpR%6o3eS-p{2+kYxz`rS|HcKBqS4=zo2E-!W>nBd&G7Aq-8 z;0`tDE^Oh_jZm3hA(xQcZi_1V*f6JSWa!@SeI~1NSG;R`Zr^28D%-K}UHX6g){cYpZe2!6hlsRPypBLrsLOP?4hpdn}|U zkk=O#7NTy1wfsSbL3(*D9v@CiJRPjI;=!NBSYPrbcYkI$Xxvs}y!9ukt|w#6IKtz{ z&J}ME5s?E+60#EZtE#3MKJ9tn))BGe)YXYP_|Opep>pr7)T!4u(1H9Blm@8~y z4jJUX3BBrYohdU_=era@wfa(pVy!l>`K7A-H#~1b6~Ev*EqPqO zKp$|WoU}50fC&Gyt2?=swqQS**J`1EZ>7vZwu_SuBpC&ZNcs%DowEJD^8D4j#T54%%@{|hy z_DDCLu^sX`Tt*J85}C4j8ncqYoXS;%z%f2BEf((>a^4;Axd~*rI}&c_D3nI|5$9DW zJcquglvE|Xk-2`A3Wi>h19Jw}N#h4vJUJ!tlr%d>&2CFMucY~~M>FcVic%UUGXRKo znF~EQ;*Ad;JO~*o#8v*I8K!i8%B43NKYfC*Om+W$)^$5iBOPXKkeca5)D>{DVMju8 zqobu|l1iT=YkSiMQE_poaamTbi~ypJI1-ATD5-Yn!q>ZfS9h;sq^67z0Qb^=+ z@IsgDKU(M%(v*d>7#6zU;<6+6Z^y()Ncdn~0-*;}faALus?w26HAld=gu@K`C<;Kt ztx@ORA$8GhW9g&VRQ-@$D(|eKt{vA~bUZN`*kahdYUBQ|{r$`6#WW5b(s`ejcM9tT znHY(;EMUzrF_Fh+tjrFv8$b9j6rjC5<5yaYBcq}MSa>#{vH4|g;blCsI44xoJ{fjF zdgYL!fs5~j+z9H}ntCx_D`uaHCa)D8f)+g!4w%c@hw=(QAG`!zv{k@-V#lW3$<}Qcb zBz#l@@7X|Y!`FmJ&Ju*dE>CDJe|3IHP}1PTvBS6)l_Vyrd32|xr-yE~wzkGTG@rfJ z%3u06os_THsEp#7>}Dv>*m-!+^1|@m*wV5kvFNADWs(XOKHbRq`s1Y?YsTnqiQTNK zu149|gH$s}0BX+OTaDC9V zi)Y$`)X;0!+$ZV|Kt!Eh?Sy_+apncv{#(531O&=FexA+MlQUuJQW|lda8aJODEzZe#i>HP8X?2CG3yatzU z&NT|jFg)%kDIaTR>$>dc*E?cb)D9X4Z(NW8+B9rBi^yXG{*S{a>dqY@nz`CO27l^+ zGQL}OVQ)GES@x`AJSC`I=K1Brx+9HjQZmU{U$e-8s5zV65)BEV`)qGGa;}7EJjvCh zl`}_3!7u2cYusj5x>rP`f4ujde(EHWJ5g`y7Ro6KGi)z*U#Fn72X;O$`)ffR2i!m5 zjX*;Oi~!lVn>C|>7wi``S>LmaCSDN;0jr|$4BVmA&s?SZRs@u_CpZ}MC$*O^9X(qR zOtqSu;bUfogBk;g>ciP}f>aVZJgjkpQ`DpZo?I$N=4ik09ZD;x-%onn%!a0TjMLM9 zN7glGDiZ6!hD*z_2He!@9BNG>yXX$iX#2i)zmUG7OIhA@D}`!b=61Rhq_Xr?Bta+1 zFul^FDjqJ{OX`NqnXo>FC)2))9wn9Azs>x1>&6X)B#dBr$cJVdbFDNH8QZzf!ktt8 z6)ARGy+=`LsSl_dL{E%Z+ST9lGcjXGST{hvWzIPyFS?hL}t<%`np{7pqXbZuW z!dr-{7++wg>rklCDqEdDAC2T^P)xL;O`D;6NPPU*cxxEm1z<4W#mOdATfmx#M8Ah# zBQlo`Hx-bQ6+Gdhq-@dQ`0nb3jt0`svbiBKWp)5K3LfL9AJuVlaBv6+*grMoU5m5) zKerh{24u}4dhRuZy!QF%0%pD>J@l-i=b?5c?*0GWx@ZS3y)fsNJX?)>az1!@CYbP# zAwCJ3>=^SZI$wl8PbDiocp48#^$)ZS5Fzrk(YS`Lndg?Zy zM2NFasTM8Z+3Nd0V9ffL70>FFm!A(iFMQaa8XJ52`l@geXrbdb!&wh~a98^?>L@q{W>x6G`?8M!OcGGjAPouK_ddja(YUki8Q~CHaA6JmD`ESd2vamsamZL^Z*>qZ_$2Y_<%E1Y}moOk&dN zWg~squ&O<_SSFccZ+CiEGWsvSk=mkI(o<9Bcwvb9+Z48#`mC?d0 zp)M#}-l8`b4tQBM*O(b5ZbHOgE)5x!-L-^C#~2=Js7#O$2b_FR`w6yDc%qkD{A`d!lGriE z{HQ#3ZM9CB=F=kKdY`c+{nYd(^O=ryZ>@77Rd#i8k*P)-9Tpk6#f>>N)J&#T0>lMT zPLFk0Toy!i@D+M9aZ%A#G~G|%@UxyuqWq5*0I^yg*f(gEAwySi849U@y!8bE*8GHw z0AL1m3g0_jA6b^lZthn3y;$qS(mYrnMD|S2W|=P?v6ZM(`DTEI4r+zOLG*^zk-Nk; zYoHQi=@Qf8byP{F|X~4g!fj1v^6f&#mI(rg`VrT|j{- z?CGDYajP}?&61?FmyCn?&!48<`5m6A*aNW(T^1A;5h?renupL=zdc>(HJ$PH^j))~ zNhe+no(DPufeSEX{0Z}{s31SN}*Xun4QKAFr-d2nfTC53`<%g4bcxcGc$*DKu&njhk z*f|foNHEVH@!h-i*{_%_&o$wE(eGH}4g*K0*C_0FSZ9SWMBtVD4v2p1f&3#aNP)lhPo{Kb<9_P2evHsO8BCrAo5faCsYDhkt_{^;9lt8kR~72 zk2KHkh@9xHa+Hm#7`O&tO0~E2Ar;b@F5nvcVSwmVXG0 zui1uf;u6*BNDk8U#)TMu*Joucx48vzUoK9c(O!-0S{tdYhm;N-o#)1>8R1+S0LD zfWt`8NSE>khX=~7N&pNW3(xLXuV15c#0Hd`mv?xO@LQ;>Gp$^SAcpob-?E@r|2*3d z4nlf{<;udw25h)9*Cw2I)su9cvpXZ;>rXJX$c;d+jEZp$zWDeS!Il)hZ#Lgfq_RR) z;yAV?um|fF7^BJ7XDBbBbAp#L-+P3eMlyBzouQyOdejNEG`|xPxEw+7;a0aC>;&ur zz!e$G&ket#4abGjPtDEuih76(E2VX1|Ae7geG;*3iI6(PdBCWuq{*Rn;nlTOaNg8U zpvw5t(~~fWz8yMV4BSwQ2yIYJ#Kv_0KKD6UQPDxvpY_gwo`Y?U@%!Lx1M(>jKCA|} zEvt>&oosR-h)p=@LUbScF3l2guo+zEtgN(Kk3>|wXS@IDYwAfGXSWwj(z~6n9d61& zsbU*mYCpF)`6B#;eKa`?gzN z-Ww5{(EgRpw~w9>_QBP~#)TFk{P2c;b`FlyxyFfupeb?vYRvOn!MQ?3>;W2>OOl?J z7H>f2e9CY%fVML`BZy!c2$dm527*%bMy+k{*&Ls-jr()o9Q;xF zuB9a9d*QRMVJ|mSIN8l25rM;gXlZ`bVDr@dpCIh` zJqLtzIMDtQS?@(g+*~Jk7C5)Q4-5caG0L&J6YYeQDTI~7Enj)^ zke1fyg`2FsCkh<8;pKg_`zJyji3lC+$nB-xUJ&8h^h90HHFL5<6_$7f*%SSZpBZ4sQ;RQY2|07W{>*PNcDM6sY;Is33qI^PKI@3%v-!Fo73l-@qf91>&nh*Yz>aI(a~0i1 zH1q7J5d}Fu?F|TEX;5hspm{+e4KT(zP`bYJEUF??lEMn%HAfHO#+oM3FMOLQTK~kU zNF-U*$N1N;Ixy@)D7YfPwzxa0DSb1S?SZmvdcioArTbayLT^g z^T9<}pK&rK)T95={v8}d9PL;@L0E9a{E$ z(>BkYwy9c{HBl4jqh}u@UUE307(|jv2WI#{0SIrUrXs9nXbx>{zhg0&dVSv|3P}DY zL;;A(($mw!UIgyUx^uiU=NudaN8#;*z#YKw$1oS;tN*M{6LB9uM@TwSYaT!DLj-r# z#asOHg-B6_VpK0xf8}NEe>s01W&9=)$U|10Eh~-qSJmm+pTkP0<64jj`l%C z1;;gw^7i#NQG2&Hn0);r)h-m%)zvl97^i;~CqVIdl^Bk_@p8JNcJbckx;hJ~^?Wif{lA#Z%-;%;OuFj;lv>2a@ zN0y9&f@$QfprE6V-&9r}YC!N+Nr_4163PV6>b*ij$`M+bRbyx)5Iq)OTH0ZkkMzYq zL~233BpG=l8E3R?xzthB@vlAcKy&|!RNI1v|%sF$699SKwVZYE7WA1f?W@_F*VQpOe-yF{Yt$B_;B3hDb@}ApBv^9)pJ- z_>3U7M`9H64{z<%Ld+3GvNb_7;EP!1 z5@KRrs40*-1$PR{-?B6B*6MH|+ZY((wN)Ddx4}e(Xl;vg58=qi5HIO%H;n)9 zYc6l7G_<%L6p%k`DMDJJJbfA2b@FRQ?W|KX$tvg;-NEDsdt_ozv<=+5^{b^;I%F2- zFwJUSc!jE5)K@`%?$-~N{{G(MB5lLwaHTT*Jmuk__%Cyz@au<`E2ZPf~5U#cM&idFN$w3{R*)gkVwV|K;G)Kum3CBYqLk6c?%bsp}B zF^I5oGb-x|P;-oNZDsl(roiMs?|OO6{N2Pc{fs@T-;ZkU7~7^{7B`Y4M8%@1TcT$Fq3;}Dr2I_+mhJ_USw$jp z#6q~-U0FTV3~BU;JB=Y zvGC2^q8aw;G7sprAJsCs+P~Eb?H*!v8z?raGi5*M$;bH9OJelibe3bkq%qS-m-L00 zw)VZ6#M9oD^$W#V)Qv&G$ezPmp6_~`m!bo*|ol)qE``cpRx^M z*efNrsf8)$y+>x&v!FW)<{H}iYvf;bsoy#9;a03_w&TsI6*nDMGp?br30G12*7{PA zGTUF*J7FZ|-4Jjz#&={*ITHhC?73TU+o|JLkm|DDPa2M19R-o`K59?qlP6VCy@NmW zf_y3;Jo~ZH({`}cThc8u)HpEbHMSze7C}J`w8Ynmd}R7{@{yR|c&69!E(QB*oo88@ zZ;$%FeDz}KacvT3yhVXsWj)Ik9819dv2%H(A6wt^{@m>s2V3fw=Z1b(>Tp!zAcOi5 zxXR3(1N^f%_Cf_@Y;Wj#dV4QIYYzIRE#{3N8o4 zc;G-ItaX|Xws0DG!fP*OP|k9%TV@R z1gyh)z3O!`5}9$PO2JB|yy))Qa?pf#0bx6sh%g6?XY1l|cw6}Rd^p)`d!-@a_|Q}@t@ z+A@6H*ozJ3rU^e6(yhB?*XVEnSm;C|><$c~L$`==HMfFZ0WyLHQWgOdNcO?ivN?Y~ zq#iVx>BS$F$XozuBRb<+vcLEJd3$>{_$HEo5dNO4{4vyjdR} zrRVNGqvbPxj~EoM!Yp5m^693U}q6O4|)Np$A`U&E}r zZLK=eC+=w}4Ej8UJ_<5VY1|Wn$;0>+xU$@a`Ms1AsHxBC##PN@~3y#uQz?Ovkc5p*qe>OkXV6 zc-==w21dqb#_9FWC<~|msHoYHa%VchSi5)ENXRF(*~z>#tt|iyKcC+{YnIw5YxP0! zxp|cg2&fRVpC9woIMj;TO+lK1Ye27dedtYg!~UVUF6eT?-kzRAIYkhstbCpT5BRwT zb$o|d$KsY1ZQKPVDqa3K$8}2zm0tx424ql&1Qm3~2nY7y?auz5 zLqOcn9$^w1p69E_M^Arze7iwMU`&O~4oq8u@l!q{W4G)ot6c@ieeM2y+xcX=yM4bw-Er2y-WMWEu1$v?uXCCau zz)<4j_mwWfX#N3++H=FA=y-j)+@sJ+7e6z9v0~7*2I`Z-+D!d~4%3!-Uj9il-%s(a zXG}gem2-ZBZ8-u8H>C3-+_elh46w|L$Z{QjhI0IT9x!m+YJm9A)*P9=)6gioZ1N}A z@N2J^=U)Ic1V8{^^GNFW+P7h`O^xC^u0d{VX^}-y34%!`(O~fq!gqm|XsN3^-9NBx zP4g%=E{qZ7x^DeI7Y&}Km%rCMpX`nuI?dNZkqP;~cgLxla*GrHfEhd>bqfy<$96ca zcHjV{g{?vXxL}Bi^}!we>y^KJxo_~m3UGs%Z|IbSesMr z+p?Hd?X3O?)Re)Ep8KWw+{W)ex-c~p02s(Z>?Ad6bI*fF%M&Hq1u^tb=i{=-fkfa6 zF>+HTv3BuLm1^!00+IVW>Z6l>bjvRd5hRmuPd-gZN}4X%pDUlj>$DgB8pf&=YK|_S ztCTaanc=iX<_U{bN*;IZKlYg=2BXQ!`!oXx>h(b?9<_FulBXT{M4zg0F$x+|@w8D{`TWUllt=7G1NH zDcgqGW^KZkbGTyJc##ZKB~jxuv%<|eDQ&Y|%RX6>)$>JFxy!3-s&=(7NmUK>NS?{= zmy7XrlomZI=O9=zRoRsIf%_z1!TxOB_!6bz=xIhV8Rs4AOC@h7?qe%#S|R_!p}b(Z zwA)7UM68iaY>6PLV2D$HsAK6IsiSG}>$~>>ObcPDwN^&jD%nG~rdDV;?coS>5!kAB zWbcRQhpx@74gt>1ef~-OSESEVAwZt^LMB4hB_{*`kcX2arH6?v}r0Aa!ZTE>!YwS6UF~aJ@vw zrerTYN>xr7nyq{X8-uU3_d8BX=`U{=MUw!gV%Lo*MsrZ)0QI2L`=!gWQt9M>%T`YN zt8M%Zc&-0U$;R6M<;P~^2uikxQ->o|!XoYz_W<>_62b%`?=&~1EP6+pdw_>{gawn} z%&tDZcBRhkN@zX*hMAFmzlPu7*#A5|>4PXgCMJ*3@n2*rXR8zYg|NjNfFqVKUKzif zu;el&+_egtxIaO)zx>``Uh!`!*?;$R|Mjmi$CKv@@p=w`M{ZK19G`PtH)*@*I7ol` z&zEzfR2;90v&3yFZCSpkBhzeTH-sdF!tVd^PXFtt{>z2O1^WO0+B$E9mQuF(z33X= zU{2C0qtyO+C3jwn9~j<=4}zqil==U_GXL$>##)&A98mGq@Bb0+DXe1ZNHxFkQk`n?S7OnxcS@n-X1)se4rnuIL-Y+uGI=NP9SJ4~_e9trkTf`KLsnxJ z3M%I#1k_noQvQU_NXa{1&Ti#4mC^ zkUQ}qU4Ix7Eexs#7Y*Nd+2Yi3k0sQ8;CjGKdAN#^G$gO_FS;_3#svMkm*3Zqt4=$o zHm>L35N5dCXbt4}`_Ry8nip15&@;PgNiT+_kVv#~hg6l1x!nnFa1OW#q^!tn7jKx$ z(;<}gXkhGG^E4hBz1Jq{@ZV~+pmFK6rop_T&tVu6_o!~*_MsT{MqkIPkU9a6lLu)* z@ZeY#gz6Uh-gt89*h?l9o}OQB?m2NjTxIT4`f)8p31E1|y|+2g+d{nyx?MeT8~k9X zl+e*kcWov`_UFd(kUkv09N(nB&7@fpW0?~NvCxv_9|KLrbl^w?n2zl5&2DZB03G|j z1ufOhb&`*hlMg<`b^BFv_od{SCbeed-Lx)w=`F6eEGj`nR09t^8RIz-Iw)S4gGOWT zaUVg_c71MAjxEsCUs5bga(?TlflG|hnpk!T6V=s6M7=>%fprJgQG_xVXsB29UNJEn z{Enl7X8$@_=VXpeMW(re3`jXgk0Ike)`j4Ngb;KR{a?SHD81Nhor?rsAqYN}iPwbH zWAfbb46qo4#D%o>_@waWecY(3lhgVgeHB=%B`}0EgpP}MmvzX*Aiz)bZ<#xb@$7Kg z058?nCT5g6{s3ys7RJlKUV5vNiu8nLkEcI^)kWop&CyGa7wGo7H+=hcUZx~1?Hl?Y zOk+gxSMTlAG>hPCiQ{=&F~e;4?!4sWKL+(q0oQ;UyGkuO!}wu0>M*D`I-i{hA_wk{ zO3%u2KnD-m*q=4)@VKpm7s4#XwVP*=ale`*g%PAJE$A*cca zXo5V)v@_Z#BRS<)e+wcJ7e&d>F-0kP8V3L3OiDLL$7s4Pz=0 zhf-(7K@<1r(MA!GH^{d?@)+I}%mEvDE>m;j#HuZD%B$;N4Ml?>I8g z+bj{}&O+yhag_zOGz+}c!X(m%yGUXpxR*k3FXG}E20 Date: Sun, 27 Feb 2011 18:06:51 +0000 Subject: [PATCH 264/463] update de translation, small change to pt snark by user --- apps/i2psnark/locale/messages_de.po | 562 +++++++++++-------- apps/i2psnark/locale/messages_pt.po | 148 ++--- apps/i2ptunnel/locale/messages_de.po | 482 ++++++++-------- apps/routerconsole/locale/messages_de.po | 668 ++++++++++++++--------- 4 files changed, 1068 insertions(+), 792 deletions(-) diff --git a/apps/i2psnark/locale/messages_de.po b/apps/i2psnark/locale/messages_de.po index ed5934f52..c2fb29a02 100644 --- a/apps/i2psnark/locale/messages_de.po +++ b/apps/i2psnark/locale/messages_de.po @@ -8,807 +8,899 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-12 23:30+0000\n" -"PO-Revision-Date: 2010-12-19 04:37+0100\n" -"Last-Translator: mixxy \n" +"POT-Creation-Date: 2011-02-27 16:02+0000\n" +"PO-Revision-Date: 2011-02-27 17:33+0100\n" +"Last-Translator: \n" "Language-Team: foo \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "X-Poedit-Language: German\n" -#: ../java/src/org/klomp/snark/SnarkManager.java:94 -#, java-format -msgid "Adding torrents in {0} minutes" -msgstr "Füge Torrents in {0} Minuten hinzu ..." - -#: ../java/src/org/klomp/snark/SnarkManager.java:296 +#: ../java/src/org/klomp/snark/SnarkManager.java:307 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "Gesamtanzahl an Uploadslots geändert auf {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:298 +#: ../java/src/org/klomp/snark/SnarkManager.java:309 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "Minimale Anzahl an Uploadslots ist {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:310 +#: ../java/src/org/klomp/snark/SnarkManager.java:321 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "Upload Bandbreite wurde auf {0}kbyte/s geändert." -#: ../java/src/org/klomp/snark/SnarkManager.java:312 +#: ../java/src/org/klomp/snark/SnarkManager.java:323 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "Minimales Limit der Upload-Bandbreite ist {0} kbyte/s." -#: ../java/src/org/klomp/snark/SnarkManager.java:324 +#: ../java/src/org/klomp/snark/SnarkManager.java:335 #, java-format -msgid "Startup delay limit changed to {0} minutes" -msgstr "Startverzögerung auf {0} Minuten gesetzt" +msgid "Startup delay changed to {0}" +msgstr "Startverzögerung auf {0} gesetzt" -#: ../java/src/org/klomp/snark/SnarkManager.java:371 +#: ../java/src/org/klomp/snark/SnarkManager.java:386 msgid "I2CP and tunnel changes will take effect after stopping all torrents" msgstr "Änderungen an I2CP und am Tunnel werden nach dem Stoppen aller Torrents wirksam" -#: ../java/src/org/klomp/snark/SnarkManager.java:378 +#: ../java/src/org/klomp/snark/SnarkManager.java:393 msgid "Disconnecting old I2CP destination" msgstr "Trenne das alte I2CP Ziel" -#: ../java/src/org/klomp/snark/SnarkManager.java:382 +#: ../java/src/org/klomp/snark/SnarkManager.java:397 #, java-format msgid "I2CP settings changed to {0}" msgstr "I2CP Einstellungen geändert auf {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:386 +#: ../java/src/org/klomp/snark/SnarkManager.java:402 msgid "Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "Verbinden mit den neuen Einstellungen nicht möglich, benutze wieder die alten I2CP-Einstellungen" -#: ../java/src/org/klomp/snark/SnarkManager.java:390 +#: ../java/src/org/klomp/snark/SnarkManager.java:406 msgid "Unable to reconnect with the old settings!" msgstr "Verbinden mit den alten Einstellungen nicht möglich!" -#: ../java/src/org/klomp/snark/SnarkManager.java:392 +#: ../java/src/org/klomp/snark/SnarkManager.java:408 msgid "Reconnected on the new I2CP destination" msgstr "Verbunden auf dem neuem I2CP-Ziel" -#: ../java/src/org/klomp/snark/SnarkManager.java:403 +#: ../java/src/org/klomp/snark/SnarkManager.java:418 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "I2CP-Verbindung neu gestartet für \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:414 +#: ../java/src/org/klomp/snark/SnarkManager.java:429 msgid "Enabled autostart" msgstr "Aktiviere Autostart" -#: ../java/src/org/klomp/snark/SnarkManager.java:416 +#: ../java/src/org/klomp/snark/SnarkManager.java:431 msgid "Disabled autostart" msgstr "Deaktiviere Autostart" -#: ../java/src/org/klomp/snark/SnarkManager.java:422 +#: ../java/src/org/klomp/snark/SnarkManager.java:437 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "OpenTracker aktiviert - Um dies anzuwenden, müssen die Torrents neu gestartet werden." -#: ../java/src/org/klomp/snark/SnarkManager.java:424 +#: ../java/src/org/klomp/snark/SnarkManager.java:439 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "OpenTracker deaktiviert - Um dies anzuwenden, müssen die Torrents neu gestartet werden." -#: ../java/src/org/klomp/snark/SnarkManager.java:431 +#: ../java/src/org/klomp/snark/SnarkManager.java:447 msgid "Open Tracker list changed - torrent restart required to take effect." msgstr "OpenTracker-Liste geändert - Um dies anzuwenden, müssen die Torrents neu gestartet werden" -#: ../java/src/org/klomp/snark/SnarkManager.java:438 +#: ../java/src/org/klomp/snark/SnarkManager.java:454 #, java-format msgid "{0} theme loaded, return to main i2psnark page to view." msgstr "Thema {0} geladen. Gehen Sie zurück zur Hauptseite von i2psnark, um die Änderungen zu sehen!" -#: ../java/src/org/klomp/snark/SnarkManager.java:445 +#: ../java/src/org/klomp/snark/SnarkManager.java:461 msgid "Configuration unchanged." msgstr "Konfiguration nicht geändert." -#: ../java/src/org/klomp/snark/SnarkManager.java:455 +#: ../java/src/org/klomp/snark/SnarkManager.java:471 #, java-format msgid "Unable to save the config to {0}" msgstr "Konnte Konfiguration nicht in {0} speichern" -#: ../java/src/org/klomp/snark/SnarkManager.java:494 +#: ../java/src/org/klomp/snark/SnarkManager.java:536 msgid "Connecting to I2P" msgstr "Verbinde mit I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:497 +#: ../java/src/org/klomp/snark/SnarkManager.java:539 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "Fehler beim Verbinden mit I2P - Kontrollieren Sie die I2CP-Einstellungen!" -#: ../java/src/org/klomp/snark/SnarkManager.java:506 +#: ../java/src/org/klomp/snark/SnarkManager.java:548 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "Fehler: Konnte den Torrent \"{0}\" nicht hinzufügen" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:528 +#: ../java/src/org/klomp/snark/SnarkManager.java:570 #, java-format msgid "Cannot open \"{0}\"" msgstr "Kann dies nicht öffnen: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:541 +#. TODO - if the existing one is a magnet, delete it and add the metainfo instead? +#: ../java/src/org/klomp/snark/SnarkManager.java:586 +#: ../java/src/org/klomp/snark/SnarkManager.java:661 +#: ../java/src/org/klomp/snark/SnarkManager.java:716 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1975 #, java-format -msgid "Warning - Ignoring non-i2p tracker in \"{0}\", will announce to i2p open trackers only" -msgstr "Warnung - Ignoriere nicht-I2P Tracker in \"{0}\", werde nur bei I2P-OpenTrackern bekanntgeben" +msgid "Torrent with this info hash is already running: {0}" +msgstr "Torrent mit diesem Infohash läuft schon: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:543 +#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); +#: ../java/src/org/klomp/snark/SnarkManager.java:593 #, java-format -msgid "Warning - Ignoring non-i2p tracker in \"{0}\", and open trackers are disabled, you must enable open trackers before starting the torrent!" -msgstr "Warnung - Ignoriere nicht-I2P Tracker in \"{0}\" und OpenTracker sind deaktiviert. Sie müssen OpenTracker aktivieren, bevor Sie den Torrent starten!" +msgid "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers only." +msgstr "Warnung - keine I2P Tracker in \"{0}\", werde nur bei I2P-OpenTrackern bekanntgeben" -#: ../java/src/org/klomp/snark/SnarkManager.java:563 +#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); +#: ../java/src/org/klomp/snark/SnarkManager.java:598 +#, java-format +msgid "Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is enabled before starting this torrent." +msgstr "Warnung - keine I2P-Tracker in \"{0}\" gefunden. Stell sicher, dass OpenTracker aktiviert sind, bevor du diesen Torrent startest!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:619 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "Torrent in \"{0}\" ist nicht gültig" -#: ../java/src/org/klomp/snark/SnarkManager.java:578 +#: ../java/src/org/klomp/snark/SnarkManager.java:624 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1998 +#, java-format +msgid "ERROR - Out of memory, cannot create torrent from {0}" +msgstr "Fehler - unzureichender Arbeitsspeicher, kann keinen Torrent von {0} erstellen." + +#: ../java/src/org/klomp/snark/SnarkManager.java:635 #, java-format msgid "Torrent added and started: \"{0}\"" msgstr "Torrent hinzugefügt und gestartet: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:580 +#: ../java/src/org/klomp/snark/SnarkManager.java:637 #, java-format msgid "Torrent added: \"{0}\"" msgstr "Torrent hinzugefügt: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:734 +#: ../java/src/org/klomp/snark/SnarkManager.java:672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490 +#, java-format +msgid "Fetching {0}" +msgstr "Hole {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:675 +#, java-format +msgid "We have no saved peers and no other torrents are running. Fetch of {0} will not succeed until you start another torrent." +msgstr "Wir haben keine Gespeicherten Teilnehmer und keine anderen aktiven Torrents. Das Herunterladen von {0} kann nicht erfolgen, solange du keinen anderen Torrent startest." + +#: ../java/src/org/klomp/snark/SnarkManager.java:679 +#, java-format +msgid "Adding {0}" +msgstr "Hinzufügen {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:726 +#: ../java/src/org/klomp/snark/SnarkManager.java:749 +#: ../java/src/org/klomp/snark/SnarkManager.java:1174 +#, java-format +msgid "Failed to copy torrent file to {0}" +msgstr "Konnte Torrent-Datei nicht nach {0} kopieren" + +#: ../java/src/org/klomp/snark/SnarkManager.java:972 #, java-format msgid "Too many files in \"{0}\" ({1}), deleting it!" msgstr "Zu viele Dateien in \"{0}\" ({1}), wird gelöscht! " -#: ../java/src/org/klomp/snark/SnarkManager.java:736 +#: ../java/src/org/klomp/snark/SnarkManager.java:974 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" msgstr "Torrentdatei \"{0}\" darf nicht auf '.torrent' enden, wird gelöscht!" -#: ../java/src/org/klomp/snark/SnarkManager.java:738 +#: ../java/src/org/klomp/snark/SnarkManager.java:976 #, java-format msgid "No pieces in \"{0}\", deleting it!" msgstr "Keine Teile in \"{0}\", wird entfernt!" -#: ../java/src/org/klomp/snark/SnarkManager.java:740 +#: ../java/src/org/klomp/snark/SnarkManager.java:978 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!" msgstr "Zu viele Teile in \"{0}\", das Limit sind {1}, werden gelöscht!" -#: ../java/src/org/klomp/snark/SnarkManager.java:742 +#: ../java/src/org/klomp/snark/SnarkManager.java:980 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B), deleting it." msgstr "Teile in \"{0}\" sind zu groß ({1}B), lösche es." -#: ../java/src/org/klomp/snark/SnarkManager.java:743 +#: ../java/src/org/klomp/snark/SnarkManager.java:981 #, java-format msgid "Limit is {0}B" msgstr "Limit ist \"{0}\"Bytes" -#: ../java/src/org/klomp/snark/SnarkManager.java:751 +#: ../java/src/org/klomp/snark/SnarkManager.java:989 #, java-format msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" msgstr "Torrents größer als \"{0}\"Bytes werden nicht unterstützt, lösche \"{1}\"." -#: ../java/src/org/klomp/snark/SnarkManager.java:767 +#: ../java/src/org/klomp/snark/SnarkManager.java:1005 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Fehler: Konnte den Torrent \"{0}\" nicht entfernen" -#: ../java/src/org/klomp/snark/SnarkManager.java:794 +#: ../java/src/org/klomp/snark/SnarkManager.java:1026 +#: ../java/src/org/klomp/snark/SnarkManager.java:1044 #, java-format msgid "Torrent stopped: \"{0}\"" msgstr "Torrent angehalten: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:814 +#: ../java/src/org/klomp/snark/SnarkManager.java:1065 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "Torrent entfernt: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:852 +#: ../java/src/org/klomp/snark/SnarkManager.java:1073 +#, java-format +msgid "Adding torrents in {0}" +msgstr "Füge Torrents in {0} hinzu ..." + +#: ../java/src/org/klomp/snark/SnarkManager.java:1122 #, java-format msgid "Download finished: {0}" msgstr "vollständig heruntergeladen:\"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:880 +#: ../java/src/org/klomp/snark/SnarkManager.java:1170 +#, java-format +msgid "Metainfo received for {0}" +msgstr "Metainfo für {0} erhalten" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1171 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525 +#, java-format +msgid "Starting up torrent {0}" +msgstr "Starte Torrent {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1225 msgid "Unable to connect to I2P!" msgstr "Konnte mich nicht mit I2P verbinden!" -#: ../java/src/org/klomp/snark/SnarkManager.java:886 +#: ../java/src/org/klomp/snark/SnarkManager.java:1231 #, java-format msgid "Unable to add {0}" msgstr "Konnte {0} nicht hinzufügen." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:185 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:205 msgid "I2PSnark - Anonymous BitTorrent Client" msgstr "I2PSnark - Anonymer BitTorrent-Klient" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:198 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:218 msgid "Torrents" msgstr "Torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:201 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:208 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:977 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1028 msgid "I2PSnark" msgstr "I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:225 msgid "Refresh page" msgstr "Aktualisiere Seite" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:230 msgid "Forum" msgstr "Forum" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:264 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1483 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 msgid "Status" msgstr "Zustand" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:270 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:272 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:292 msgid "Hide Peers" msgstr "Teilnehmer ausblenden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:277 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:279 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:299 msgid "Show Peers" msgstr "Teilnehmer einblenden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:286 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1643 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659 msgid "Torrent" msgstr "Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310 msgid "Estimated time remaining" msgstr "geschätzte verbleibende Zeit" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:313 msgid "ETA" msgstr "Dauer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317 msgid "Downloaded" msgstr "heruntergeladen" # NOTE: purposely left blank to leave more room in the table header # msgstr "heruntergeladen" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:300 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:314 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:320 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 msgid "RX" msgstr " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:304 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:324 msgid "Uploaded" msgstr "hochgeladen" # NOTE: purposely left blank to leave more room in the table header # msgstr "hochgeladen" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:307 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:324 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344 msgid "TX" msgstr " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:312 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:332 msgid "Down Rate" msgstr "eingehend" # NOTE: purposely left blank to leave more room in the table header # msgstr "Übertragung" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:326 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:337 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 msgid "Rate" msgstr " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342 msgid "Up Rate" msgstr "ausgehend" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:340 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Stop all torrents and the I2P tunnel" msgstr "Stoppe alle Torrents und den I2P-Tunnel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:367 msgid "Stop All" msgstr "Stoppe alle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:351 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376 msgid "Start all torrents and the I2P tunnel" msgstr "Starte alle Torrents und den I2P-Tunnel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:378 msgid "Start All" msgstr "Starte alle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397 msgid "No torrents loaded." msgstr "keine Torrents geladen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402 msgid "Totals" msgstr "Gesamt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:379 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404 #, 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:382 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 #, 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:454 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496 #, java-format -msgid "Fetching {0}" -msgstr "Hole {0}" +msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" +msgstr "ungültige URL - muss mit \"http://\", \"{0}\", oder \"{1}\" anfangen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:458 -msgid "Invalid URL - must start with http://" -msgstr "Ungültige URL - muss mit http:// anfangen" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:489 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571 #, java-format -msgid "Starting up torrent {0}" -msgstr "Starte Torrent {0}" +msgid "Magnet deleted: {0}" +msgstr "Magnetlink wurde gelöscht: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:527 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 #, java-format msgid "Torrent file deleted: {0}" msgstr "Torrentdatei gelöscht: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:533 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:543 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 #, java-format msgid "Data file deleted: {0}" msgstr "Daten gelöscht: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:545 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:585 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595 #, java-format msgid "Data file could not be deleted: {0}" msgstr "Daten konnten nicht gelöscht werden: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:554 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604 #, java-format msgid "Data dir deleted: {0}" msgstr "Datenverzeichnis wurde gelöscht: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:587 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 msgid "Error creating torrent - you must select a tracker" msgstr "Fehler beim Erstellen des Torrents - Sie müssen einen Tracker auswählen!" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:602 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653 #, java-format msgid "Torrent created for \"{0}\"" msgstr "Torrent erstellt für \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:605 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655 #, java-format msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\"" msgstr "Viele I2P-Tracker erfordern eine Registrierung, bevor der Torrent verteilt wird. Bitte tun Sie dies vor dem Start von \"{0}\"!" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:607 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "Fehler beim Erstellen eines Torrents für \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:610 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:660 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "Kann keinen Torrent für nicht existente Daten erstellen: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663 msgid "Error creating torrent - you must enter a file or directory" msgstr "Fehler beim Erstellen des Torrents - Sie müssen eine Datei oder ein Verzeichnis angeben." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "Stoppe alle Torrents und beende den I2P-Tunnel." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:627 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:677 msgid "I2P tunnel closed." msgstr "I2P-Tunnel geschlossen." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680 msgid "Opening the I2P tunnel and starting all torrents." msgstr "Öffne den I2P-Tunnel und starte alle Torrents." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:759 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:764 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:770 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:803 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Tracker Error" msgstr "Trackerfehler" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:762 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:766 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:794 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:799 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:803 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:806 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:826 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:847 #, java-format msgid "1 peer" msgid_plural "{0} peers" msgstr[0] "1 Teilnehmer" msgstr[1] "{0} Teilnehmern" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:824 msgid "Seeding" msgstr "Verteile" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:784 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:828 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770 msgid "Complete" msgstr "vollständig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 msgid "OK" msgstr "OK" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:796 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:840 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845 msgid "Stalled" msgstr "Stillstand" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:805 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:849 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852 msgid "No Peers" msgstr "keine Teilnehmer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854 msgid "Stopped" msgstr "angehalten" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837 -#, java-format -msgid "Details at {0} tracker" -msgstr "Details beim Tracker {0}" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:886 +msgid "Torrent details" +msgstr "Details" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160 msgid "Info" msgstr "Info" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:853 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:913 msgid "View files" msgstr "Zeige Dateien" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:855 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:915 msgid "Open file" msgstr "Öffne Datei" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:865 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1569 -msgid "Open" -msgstr "Öffnen" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:909 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:957 msgid "Stop the torrent" msgstr "Torrent stoppen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:911 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 msgid "Stop" msgstr "Stopp" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:921 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969 msgid "Start the torrent" msgstr "Torrent starten" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:923 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:971 msgid "Start" msgstr "Start" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:933 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "entfernt den Torrent von der aktiven Liste und löscht die .torrent-Datei" #. 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:938 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 #, java-format msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?" msgstr "Sind Sie sicher, dass Sie die Datei \\''{0}.torrent\\'' löschen wollen? (Heruntergeladene Daten werden nicht gelöscht.)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:941 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990 msgid "Remove" msgstr "Entfernen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001 msgid "Delete the .torrent file and the associated data file(s)" msgstr "löscht die .torrent-Datei und dazugehörige 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:955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006 #, java-format msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?" msgstr "Sind Sie sicher, dass Sie die Torrentdatei \\''{0}\\'' und alle heruntergeladenen Daten löschen wollen?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009 msgid "Delete" msgstr "Löschen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:991 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1042 msgid "Unknown" msgstr "Unbekannt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054 msgid "Seed" msgstr "Quelle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1019 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Uninteresting (The peer has no pieces we need)" msgstr "uninteressant (Der Teilnehmer hat keine Teile, die wir benötigen)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1021 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079 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:1035 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1099 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:1037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101 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:1092 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159 +#, java-format +msgid "Details at {0} tracker" +msgstr "Details beim Tracker {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1188 msgid "Add Torrent" msgstr "Torrent hinzufügen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1094 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190 msgid "From URL" msgstr "Quell-URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097 -msgid "Torrent file must originate from an I2P-based tracker" -msgstr "Die Torrentdatei muss von einem Tracker in I2P stammen." +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193 +msgid "Enter the torrent file download URL (I2P only), magnet link, or maggot link" +msgstr "Gib die Download-URL der torrent-Datei (nur I2P), einen Magnet- oder einen Maggotlink an!" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1102 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198 msgid "Add torrent" msgstr "Füge Torrent hinzu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1105 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1201 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "Alternativ können Sie die .torrent-Dateien auch nach {0} kopieren." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1107 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Removing a .torrent will cause it to stop." msgstr "Das Entfernen der .torrent-Datei stoppt den jeweiligen Torrent." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1131 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 msgid "Create Torrent" msgstr "Torrent erstellen" #. out.write("From file:
    \n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1134 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229 msgid "Data to seed" msgstr "Daten zum Verteilen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233 msgid "File or directory to seed (must be within the specified path)" msgstr "Datei oder Verzeichnis zum Verteilen (muss im angegebenen Pfad sein)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1140 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1235 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 msgid "Tracker" msgstr "Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237 msgid "Select a tracker" msgstr "Wähle einen Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155 +#. out.write(_("Open trackers and DHT only")); +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 +msgid "Open trackers only" +msgstr "Benutze nur OpenTracker" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257 msgid "or" msgstr "oder" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1158 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260 msgid "Specify custom tracker announce URL" msgstr "Geben Sie eine Tracker-Announce-URL an!" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1161 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263 msgid "Create torrent" msgstr "Erstelle Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420 msgid "Configuration" msgstr "Einstellungen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1184 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1285 msgid "Data directory" msgstr "Datenverzeichnis" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1186 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287 msgid "Edit i2psnark.config and restart to change" msgstr "Zum Ändern, bearbeite die i2psnark.config und starte neu!" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 msgid "Auto start" msgstr "Autostart" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295 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:1198 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1299 msgid "Theme" msgstr "Aufmachung" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1211 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312 msgid "Startup delay" msgstr "Startverzögerung" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1213 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314 msgid "minutes" msgstr "Minuten" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1338 msgid "Total uploader limit" msgstr "Gesamtlimit an Hochladern" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341 msgid "peers" msgstr "Teilnehmer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1345 msgid "Up bandwidth limit" msgstr "Bandbreitenbegrenzung beim Hochladen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1247 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348 msgid "Half available bandwidth recommended." msgstr "Halbe verfügbare Bandbreite wird empfohlen." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1249 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 msgid "View or change router bandwidth" msgstr "Routerbandbreite ansehen oder ändern" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354 msgid "Use open trackers also" msgstr "Benutze auch OpenTracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file" msgstr "Wenn markiert, wird der Torrent neben dem angegebenen Tracker auch bei den OpenTrackern bekannt gegeben." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1261 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362 msgid "Open tracker announce URLs" msgstr "OpenTracker-Announce-URLs" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1273 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1374 msgid "Inbound Settings" msgstr "Einstellungen eingehend" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1380 msgid "Outbound Settings" msgstr "Einstellungen ausgehend" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1286 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 msgid "I2CP host" msgstr "I2CP-Host" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1393 msgid "I2CP port" msgstr "I2CP-Port" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1303 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1406 msgid "I2CP options" msgstr "I2CP-Optionen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1308 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411 msgid "Save configuration" msgstr "Einstellungen speichern" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436 +#, java-format +msgid "Invalid magnet URL {0}" +msgstr "ungültige Magnet-URL {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470 +#, java-format +msgid "Invalid info hash in magnet URL {0}" +msgstr "ungültiger Infohash im Magnetlink {0}" + #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1500 #, 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:1326 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1501 #, 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:1480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 +msgid "Completion" +msgstr "Fortschritt" + +#. else unknown +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 msgid "Size" msgstr "Größe" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1487 -msgid "Priority" -msgstr "Priorität" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +msgid "Files" +msgstr "Dateien" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492 -msgid "Up to higher level directory" -msgstr "Eine Hierarchie nach oben" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674 +msgid "Pieces" +msgstr "Stücke" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675 +msgid "Piece size" +msgstr "Stückgröße" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697 +msgid "Magnet link" +msgstr "Magnetlink" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753 msgid "Directory" msgstr "Verzeichnis" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723 +msgid "Priority" +msgstr "Priorität" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1728 +msgid "Up to higher level directory" +msgstr "Eine Hierarchie nach oben" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 msgid "Torrent not found?" msgstr "Torrentdatei nicht gefunden?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767 msgid "File not found in torrent?" msgstr "Datei nicht gefunden im Torrent?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1780 msgid "complete" msgstr "vollständig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781 msgid "bytes remaining" msgstr "Bytes ausstehend" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806 +msgid "Open" +msgstr "Öffnen" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1832 msgid "High" msgstr "hoch" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1600 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1837 msgid "Normal" msgstr "normal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1605 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1842 msgid "Skip" msgstr "auslassen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1851 msgid "Save priorities" msgstr "Prioritäten speichern" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1966 #, java-format msgid "Torrent fetched from {0}" msgstr "Torrent geholt von {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1746 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988 #, java-format msgid "Torrent already running: {0}" msgstr "Torrent läuft schon: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1748 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1990 #, java-format msgid "Torrent already in the queue: {0}" msgstr "Torrent ist schon in der Warteschlange: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1755 -#, java-format -msgid "Failed to copy torrent file to {0}" -msgstr "Konnte Torrent-Datei nicht nach {0} kopieren" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1996 #, java-format msgid "Torrent at {0} was not valid" msgstr "Torrent in {0} war nicht gültig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1764 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2003 #, java-format msgid "Torrent was not retrieved from {0}" msgstr "Torrent wurde nicht geladen von {0}" +#~ msgid "Torrent file must originate from an I2P-based tracker" +#~ msgstr "Die Torrentdatei muss von einem Tracker in I2P stammen." #~ msgid " theme locked and loaded." #~ msgstr "Aufmachung geladen" #~ msgid "Estimated Download Time" @@ -821,8 +913,6 @@ msgstr "Torrent wurde nicht geladen von {0}" #~ msgstr "von {0}" #~ msgid "Downloading" #~ msgstr "lade herunter" -#~ msgid "File" -#~ msgstr "Datei" #~ msgid "FileSize" #~ msgstr "Größe" #~ msgid "Download Status" diff --git a/apps/i2psnark/locale/messages_pt.po b/apps/i2psnark/locale/messages_pt.po index 4c9547c31..f0be507fc 100644 --- a/apps/i2psnark/locale/messages_pt.po +++ b/apps/i2psnark/locale/messages_pt.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-12-19 03:16+0000\n" -"PO-Revision-Date: 2010-12-31 01:09+0100\n" +"PO-Revision-Date: 2011-02-27 18:48+0100\n" "Last-Translator: mixxy \n" "Language-Team: foo \n" "MIME-Version: 1.0\n" @@ -21,7 +21,7 @@ msgstr "" #: ../java/src/org/klomp/snark/SnarkManager.java:94 #, java-format msgid "Adding torrents in {0} minutes" -msgstr "Os torrents serão adicionados em {0} minutos ..." +msgstr "Os torrentes serão adicionados em {0} minutos ..." #: ../java/src/org/klomp/snark/SnarkManager.java:296 #, java-format @@ -50,7 +50,7 @@ msgstr "Demora do arranque mudado a {0} minutos" #: ../java/src/org/klomp/snark/SnarkManager.java:371 msgid "I2CP and tunnel changes will take effect after stopping all torrents" -msgstr "Mudanças do I2CP e do túnel terão efeito depois de parar todos os torrents" +msgstr "Mudanças do I2CP e do túnel terão efeito depois de deter todos os torrentes" #: ../java/src/org/klomp/snark/SnarkManager.java:378 msgid "Disconnecting old I2CP destination" @@ -88,15 +88,15 @@ msgstr "Desativado o iniciar automáticamente" #: ../java/src/org/klomp/snark/SnarkManager.java:422 msgid "Enabled open trackers - torrent restart required to take effect." -msgstr "Uso de rastreadores abertos ativado - Para ter efeito é necesário reiniciar os torrents." +msgstr "Uso de rastreadores abertos ativado - Para ter efeito é necesário reiniciar os torrentes." #: ../java/src/org/klomp/snark/SnarkManager.java:424 msgid "Disabled open trackers - torrent restart required to take effect." -msgstr "Uso dos rastreadores abertos desativado - Para ter efeito é necesário reiniciar os torrents." +msgstr "Uso dos rastreadores abertos desativado - Para ter efeito é necesário reiniciar os torrentes." #: ../java/src/org/klomp/snark/SnarkManager.java:431 msgid "Open Tracker list changed - torrent restart required to take effect." -msgstr "Listado de rastreadores abertos mudado - Para ter efeito é necesário reiniciar os torrents." +msgstr "Listado de rastreadores abertos mudado - Para ter efeito é necesário reiniciar os torrentes." #: ../java/src/org/klomp/snark/SnarkManager.java:438 #, java-format @@ -123,7 +123,7 @@ msgstr "Erro ao se conectar com I2P - Verifique a sua configuração I2CP!" #: ../java/src/org/klomp/snark/SnarkManager.java:506 #, java-format msgid "Error: Could not add the torrent {0}" -msgstr "Erro: Não se pode adicionar o torrent {0}." +msgstr "Erro: Não se pode adicionar o torrente {0}." #. catch this here so we don't try do delete it below #: ../java/src/org/klomp/snark/SnarkManager.java:528 @@ -139,7 +139,7 @@ msgstr "Aviso - Se ignorará rastreado não I2P no \"{0}\", anunciando só aos r #: ../java/src/org/klomp/snark/SnarkManager.java:543 #, 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 "Aviso - Se ignorará rastreador não I2P no \"{0}\", rastreadores abertos estão desativados. Tens que ativá-los antes de iniciar o torrent!" +msgstr "Aviso - Se ignorará rastreador não I2P no \"{0}\", rastreadores abertos estão desativados. Tens que ativá-los antes de iniciar o torrente!" #: ../java/src/org/klomp/snark/SnarkManager.java:563 #, java-format @@ -149,12 +149,12 @@ msgstr "O arquivo .torrent em \"{0}\" não é válido." #: ../java/src/org/klomp/snark/SnarkManager.java:578 #, java-format msgid "Torrent added and started: \"{0}\"" -msgstr "Torrent adicionado e iniciado: \"{0}\"" +msgstr "torrente adicionado e iniciado: \"{0}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:580 #, java-format msgid "Torrent added: \"{0}\"" -msgstr "Torrent adicionado: \"{0}\"" +msgstr "torrente adicionado: \"{0}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:734 #, java-format @@ -164,7 +164,7 @@ msgstr "Ha arquivos demais no \"{0}\", se apagará ({1}). " #: ../java/src/org/klomp/snark/SnarkManager.java:736 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" -msgstr "O arquivo de dados do torrent \"{0}\" não pode terminar em \".torrent' e será apagado." +msgstr "O arquivo de dados do torrente \"{0}\" não pode terminar em \".torrent' e será apagado." #: ../java/src/org/klomp/snark/SnarkManager.java:738 #, java-format @@ -189,22 +189,22 @@ msgstr "O limite são \"{0}\"Bytes" #: ../java/src/org/klomp/snark/SnarkManager.java:751 #, java-format msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" -msgstr "Torrents maiores que \"{0}\" Bytes ainda não funcionam, se apagará \"{1}\"." +msgstr "torrentes maiores que \"{0}\" Bytes ainda não funcionam, se apagará \"{1}\"." #: ../java/src/org/klomp/snark/SnarkManager.java:767 #, java-format msgid "Error: Could not remove the torrent {0}" -msgstr "Erro: Não se pode quitar o torrent \"{0}\"." +msgstr "Erro: Não se pode quitar o torrente \"{0}\"." #: ../java/src/org/klomp/snark/SnarkManager.java:794 #, java-format msgid "Torrent stopped: \"{0}\"" -msgstr "Torrent parado: \"{0}\"" +msgstr "torrente detido: \"{0}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:814 #, java-format msgid "Torrent removed: \"{0}\"" -msgstr "Torrent quitado: \"{0}\"" +msgstr "torrente quitado: \"{0}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:852 #, java-format @@ -226,7 +226,7 @@ msgstr "I2PSnark - Cliente de BitTorrent Anônimo" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:198 msgid "Torrents" -msgstr "Torrents" +msgstr "torrentes" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:201 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:208 @@ -250,17 +250,17 @@ msgstr "Estado" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:270 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:272 msgid "Hide Peers" -msgstr "ocultar pares" +msgstr "ocultar parceiros" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:277 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:279 msgid "Show Peers" -msgstr "mostrar pares" +msgstr "mostrar parceiros" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:286 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1464 msgid "Torrent" -msgstr "Torrent" +msgstr "torrente" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290 msgid "Estimated time remaining" @@ -307,15 +307,15 @@ msgstr "Taça de subida" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:340 msgid "Stop all torrents and the I2P tunnel" -msgstr "Parar todos os torrents e o túnel I2P" +msgstr "Deter todos os torrentes e o túnel I2P" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342 msgid "Stop All" -msgstr "Parar tudos" +msgstr "Deter tudos" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:351 msgid "Start all torrents and the I2P tunnel" -msgstr "Iniciar todos os torrents e o túnel I2P" +msgstr "Iniciar todos os torrentes e o túnel I2P" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:353 msgid "Start All" @@ -323,7 +323,7 @@ msgstr "Arrancar todos" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 msgid "No torrents loaded." -msgstr "Não carregado nenhum torrent" +msgstr "Não carregado nenhum torrente" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377 msgid "Totals" @@ -333,15 +333,15 @@ msgstr "Total" #, java-format msgid "1 torrent" msgid_plural "{0} torrents" -msgstr[0] "1 torrent" -msgstr[1] "{0} torrents" +msgstr[0] "1 torrente" +msgstr[1] "{0} torrentes" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:382 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" -msgstr[0] "1 par conectado" -msgstr[1] "{0} pares conectados" +msgstr[0] "1 parceiro conectado" +msgstr[1] "{0} parceiros conectados" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:454 #, java-format @@ -355,13 +355,13 @@ msgstr "Endereço não válido - tem que começar com http://" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:489 #, java-format msgid "Starting up torrent {0}" -msgstr "Iniciando o torrent {0}" +msgstr "Iniciando o torrente {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:527 #, java-format msgid "Torrent file deleted: {0}" -msgstr "Apagado o arquivo torrent: {0}" +msgstr "Apagado o arquivo torrente: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:533 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:543 @@ -382,35 +382,35 @@ msgstr "Apagada a pasta de dados: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:587 msgid "Error creating torrent - you must select a tracker" -msgstr "Erro ao criar o torrent - Tens que elegir um rastreador." +msgstr "Erro ao criar o torrente - Tens que elegir um rastreador." #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:602 #, java-format msgid "Torrent created for \"{0}\"" -msgstr "Torrent criado para \"{0}\"" +msgstr "torrente criado para \"{0}\"" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:605 #, java-format msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\"" -msgstr "Muitos rastreadores no I2P exigem que você registre novos torrents antes de poder semeá-los. Por favor, faça isto antes de iniciar \"{0}\"!" +msgstr "Muitos rastreadores no I2P exigem que você registre novos torrentes antes de poder semeá-los. Por favor, faça isto antes de iniciar \"{0}\"!" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:607 #, java-format msgid "Error creating a torrent for \"{0}\"" -msgstr "Erro ao criar o torrent \"{0}\"" +msgstr "Erro ao criar o torrente \"{0}\"" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:610 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" -msgstr "Não se pode criar um torrent para dados que não existam: {0}" +msgstr "Não se pode criar um torrente para dados que não existam: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:613 msgid "Error creating torrent - you must enter a file or directory" -msgstr "Erro ao criar o torrent - Tens que especificar um arquivo ou uma pasta." +msgstr "Erro ao criar o torrente - Tens que especificar um arquivo ou uma pasta." #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616 msgid "Stopping all torrents and closing the I2P tunnel." -msgstr "Parando todos os torrents e fechando o túnel I2P" +msgstr "Detindo todos os torrentes e fechando o túnel I2P" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:627 msgid "I2P tunnel closed." @@ -418,7 +418,7 @@ msgstr "Túnel I2P fechado" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630 msgid "Opening the I2P tunnel and starting all torrents." -msgstr "Abrendo o túnel I2P e iniciando os torrents ..." +msgstr "Abrendo o túnel I2P e iniciando os torrentes ..." #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:759 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:764 @@ -437,8 +437,8 @@ msgstr "Erro do rastreador" #, java-format msgid "1 peer" msgid_plural "{0} peers" -msgstr[0] "1 par" -msgstr[1] "{0} pares" +msgstr[0] "1 parceiro" +msgstr[1] "{0} parceiros" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 @@ -463,7 +463,7 @@ msgstr "estancado" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:805 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808 msgid "No Peers" -msgstr "sem pares" +msgstr "sem parceiros" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810 msgid "Stopped" @@ -493,15 +493,15 @@ msgstr "abrir" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:909 msgid "Stop the torrent" -msgstr "Parar o torrent" +msgstr "Deter o torrente" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:911 msgid "Stop" -msgstr "Parar" +msgstr "Deter" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:921 msgid "Start the torrent" -msgstr "Iniciar o torrent" +msgstr "Iniciar o torrente" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:923 msgid "Start" @@ -509,7 +509,7 @@ msgstr "Iniciar" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:933 msgid "Remove the torrent from the active list, deleting the .torrent file" -msgstr "Retire o torrent da lista ativa, apagando o arquivo .torrent" +msgstr "Retire o torrente da lista ativa, apagando o arquivo .torrent" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. @@ -525,7 +525,7 @@ msgstr "Quitar" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:950 msgid "Delete the .torrent file and the associated data file(s)" -msgstr "Apagar o arquivo torrent e o(s) arquivo(s) de dados pertenecentes" +msgstr "Apagar o arquivo torrente e o(s) arquivo(s) de dados pertenecentes" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. @@ -533,7 +533,7 @@ msgstr "Apagar o arquivo torrent e o(s) arquivo(s) de dados pertenecentes" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:955 #, java-format msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?" -msgstr "Está seguro de que quer apagar o arquivo torrent \\''{0}\\'' e todos os dados descarregados deste torrent?" +msgstr "Está seguro de que quer apagar o arquivo torrente \\''{0}\\'' e todos os dados descarregados deste torrente?" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958 msgid "Delete" @@ -549,23 +549,23 @@ msgstr "Semeador" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1019 msgid "Uninteresting (The peer has no pieces we need)" -msgstr "não interessante (O par não tem peças que precisamos.)" +msgstr "não interessante (O parceiro não tem peças que precisamos.)" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1021 msgid "Choked (The peer is not allowing us to request pieces)" -msgstr "sufocado (De momento o par não está nos permitindo pedir mais peças.c)" +msgstr "sufocado (De momento o parceiro não está nos permitindo pedir mais peças.c)" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1035 msgid "Uninterested (We have no pieces the peer needs)" -msgstr "desinteressado (Não temos as peças que o par quer.)" +msgstr "desinteressado (Não temos as peças que o parceiro quer.)" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1037 msgid "Choking (We are not allowing the peer to request pieces)" -msgstr "sufocando (De momento não estamos permitindo que os pares peçam mais peças)" +msgstr "sufocando (De momento não estamos permitindo que os parceiros peçam mais peças)" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1092 msgid "Add Torrent" -msgstr "Adicionar um torrent" +msgstr "Adicionar um torrente" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1094 msgid "From URL" @@ -573,16 +573,16 @@ msgstr "URL fonte:" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097 msgid "Torrent file must originate from an I2P-based tracker" -msgstr "O arquivo torrent tem que incluir um rastreador I2P." +msgstr "O arquivo torrente tem que incluir um rastreador I2P." #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1102 msgid "Add torrent" -msgstr "Adicionar torrent" +msgstr "Adicionar torrente" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1105 #, java-format msgid "You can also copy .torrent files to: {0}." -msgstr "Também pode copiar arquivos torrent a {0}." +msgstr "Também pode copiar arquivos torrentes a {0}." #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1107 msgid "Removing a .torrent will cause it to stop." @@ -590,7 +590,7 @@ msgstr "A remoção de um arquivo .torrent fará com que ele pare." #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1131 msgid "Create Torrent" -msgstr "Criar um torrent" +msgstr "Criar um torrente" #. out.write("From file:
    \n"); #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1134 @@ -619,7 +619,7 @@ msgstr "Especifique o URL de rastreador personalizado" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1161 msgid "Create torrent" -msgstr "Criar torrent" +msgstr "Criar torrente" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317 @@ -640,7 +640,7 @@ msgstr "Iniciar automáticamente" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194 msgid "If checked, automatically start torrents that are added" -msgstr "se marcado, os torrents adicionados se iniciarão automaticamente" +msgstr "se marcado, os torrentes adicionados se iniciarão automaticamente" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198 msgid "Theme" @@ -660,7 +660,7 @@ msgstr "Limite global de subidores" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240 msgid "peers" -msgstr "pares" +msgstr "parceiros" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244 msgid "Up bandwidth limit" @@ -680,7 +680,7 @@ msgstr "usar também rastreadores abertos" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257 msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file" -msgstr "Se marcado, anunciar os torrents aos rastreadores abertos, assim como aos rastreadores listados no arquivo torrent" +msgstr "Se marcado, anunciar os torrentes aos rastreadores abertos, assim como aos rastreadores listados no arquivo torrente" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1261 msgid "Open tracker announce URLs" @@ -743,11 +743,11 @@ msgstr "Pasta" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522 msgid "Torrent not found?" -msgstr "Não achei o arquivo torrent?" +msgstr "Não achei o arquivo torrente?" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530 msgid "File not found in torrent?" -msgstr "Arquivo não achado no torrent?" +msgstr "Arquivo não achado no torrente?" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543 msgid "complete" @@ -776,41 +776,41 @@ msgstr "Guardar prioridades" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726 #, java-format msgid "Torrent fetched from {0}" -msgstr "Torrent obtido de {0}" +msgstr "torrente obtido de {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1746 #, java-format msgid "Torrent already running: {0}" -msgstr "Torrent já em marcha: {0}" +msgstr "torrente já em marcha: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1748 #, java-format msgid "Torrent already in the queue: {0}" -msgstr "Torrent já na cola: {0}" +msgstr "torrente já na cola: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1755 #, java-format msgid "Failed to copy torrent file to {0}" -msgstr "Não se pode copiar o torrent para {0}." +msgstr "Não se pode copiar o torrente para {0}." #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 #, java-format msgid "Torrent at {0} was not valid" -msgstr "Torrent em {0} não foi válido" +msgstr "torrente em {0} não foi válido" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1764 #, java-format msgid "Torrent was not retrieved from {0}" -msgstr "Não se pode obter torrent de {0}" +msgstr "Não se pode obter torrente de {0}" #~ msgid " theme locked and loaded." #~ msgstr "tema carregado" #~ msgid "Hide All Attached Peers [connected/total in swarm]" -#~ msgstr "Ocultar todos os pares [conectados/total neste torrent]" +#~ msgstr "Ocultar todos os pares [conectados/total neste torrente]" #~ msgid "Show All Attached Peers [connected/total in swarm]" -#~ msgstr "Mostrar todos os pares [conectados/total neste torrent]" +#~ msgstr "Mostrar todos os pares [conectados/total neste torrente]" #~ msgid "Loaded Torrents" -#~ msgstr "Torrents carregados" +#~ msgstr "torrentes carregados" #~ msgid "Estimated Download Time" #~ msgstr "tempo restante da descarga" #~ msgid "1" @@ -818,9 +818,9 @@ msgstr "Não se pode obter torrent de {0}" #~ msgstr[0] "1" #~ msgstr[1] "{0}" #~ msgid "Torrent file {0} does not exist" -#~ msgstr "Arquivo do torrent {0} não existe" +#~ msgstr "Arquivo do torrente {0} não existe" #~ msgid "Copying torrent to {0}" -#~ msgstr "Copiando torrent para {0}" +#~ msgstr "Copiando torrente para {0}" #~ msgid "from {0}" #~ msgstr "de {0}" #~ msgid "Downloading" @@ -836,7 +836,7 @@ msgstr "Não se pode obter torrent de {0}" #~ msgid "size: {0}B" #~ msgstr "Tamaño: {0}Bytes" #~ msgid "Directory to store torrents and data" -#~ msgstr "Carpeta para guardar los archivos torrent y los datos" +#~ msgstr "Carpeta para guardar os arquivos torrentes e os dados" #~ msgid "Do not download" #~ msgstr "No descargues" #~ msgid "Details" @@ -848,7 +848,7 @@ msgstr "Não se pode obter torrent de {0}" #~ msgstr "" #~ "Rastreador fuera de I2P en \"{0}\", borrando de la lista de rastreadores" #~ msgid "{0} torrents" -#~ msgstr "{0} Torrents" +#~ msgstr "{0} torrentes" #~ msgid "Uninteresting" #~ msgstr "no interesante" #~ msgid "Choked" diff --git a/apps/i2ptunnel/locale/messages_de.po b/apps/i2ptunnel/locale/messages_de.po index d253333ae..d9f49c3ad 100644 --- a/apps/i2ptunnel/locale/messages_de.po +++ b/apps/i2ptunnel/locale/messages_de.po @@ -8,94 +8,118 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2ptunnel\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-04 17:23+0000\n" -"PO-Revision-Date: 2010-12-19 04:36+0100\n" -"Last-Translator: mixxy \n" +"POT-Creation-Date: 2011-02-27 16:03+0000\n" +"PO-Revision-Date: 2011-02-27 17:38+0100\n" +"Last-Translator: \n" "Language-Team: foo \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: German\n" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:475 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474 #, java-format msgid "To visit the destination in your host database, click
    here. To visit the conflicting addresshelper destination, click here." msgstr "Um das Ziel in Ihrer Host-Datenbank zu besuchen, klicken Sie hier, und um das Ziel aus der kollidierenden Adresshelfer-Anfrage zu besuchen, hier!" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:932 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931 msgid "Click a link below to look for an address helper by using a \"jump\" service:" msgstr "Durch Klicken auf einen der untenstehenden Links bekommen Sie einen Adresshelfer von einem \"Sprung\"-Service:" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:170 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336 +msgid "internal" +msgstr "intern" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:171 msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit." msgstr "Ungültige Formulareingabe - wahrscheinlich haben Sie den \"Zurück\"-Knopf Ihres Browsers betätigt. Bitte neuladen!" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:217 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218 msgid "Configuration reloaded for all tunnels" msgstr "Einstellungen für alle Tunnel neugeladen" #. and give them something to look at in any case -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:229 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:230 msgid "Starting tunnel" msgstr "Starte Tunnel ..." #. and give them something to look at in any case -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:242 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:243 msgid "Stopping tunnel" msgstr "Beende Tunnel ..." -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:389 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:311 +msgid "Configuration changes saved" +msgstr "Änderungen der Einstellungen gespeichert" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314 +msgid "Failed to save configuration" +msgstr "Einstellungen nicht gespeichert" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398 msgid "New Tunnel" msgstr "Neuer Tunnel" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:409 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418 msgid "Standard client" msgstr "Standardklient" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:410 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419 msgid "HTTP client" msgstr "HTTP-Klient" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:411 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420 msgid "IRC client" msgstr "IRC-Klient" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:412 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:421 msgid "Standard server" msgstr "Standardserver" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:413 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:422 msgid "HTTP server" msgstr "HTTP-Server" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:414 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:423 msgid "SOCKS 4/4a/5 proxy" msgstr "SOCKS-4/4a/5-Proxy" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:415 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:424 msgid "SOCKS IRC proxy" msgstr "SOCKS-IRC-Proxy" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:416 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:425 msgid "CONNECT/SSL/HTTPS proxy" msgstr "CONNECT/SSL/HTTPS-Proxy" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:417 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:426 msgid "IRC server" msgstr "IRC-Server" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:427 msgid "Streamr client" msgstr "Streamr-Klient" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:428 msgid "Streamr server" msgstr "Streamr-Server" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:429 msgid "HTTP bidir" msgstr "HTTP Bidir" +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290 +msgid "Host not set" +msgstr "Host nicht gesetzt" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:521 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:272 +msgid "Port not set" +msgstr "Port nicht gesetzt" + #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:73 msgid "I2P Tunnel Manager - Edit Client Tunnel" msgstr "I2P-Tunnel-Manager - Kliententunnel bearbeiten" @@ -120,14 +144,14 @@ msgstr "Name" #: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:279 msgid "Type" msgstr "Typ" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:120 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:120 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:226 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:367 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:386 msgid "Description" msgstr "Beschreibung" @@ -138,357 +162,340 @@ msgstr "Ziel" #: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:162 msgid "Access Point" msgstr "Zugriffspunkt" #: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:150 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:192 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:153 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:167 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:213 msgid "required" msgstr "benötigt" -#: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:159 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:178 msgid "Reachable by" msgstr "Erreichbar von" -#: ../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 "Lokal (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 "Überall (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 (Bitte geben Sie ihre LAN-Adressen an!)" - -#: ../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 "Anderen" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:195 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:180 msgid "Outproxies" msgstr "Ausgehende Proxies" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:187 msgid "Tunnel Destination" msgstr "Ziel des Tunnels" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:214 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:199 msgid "name or destination" msgstr "Name oder Ziel" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202 msgid "b32 not recommended" msgstr "B32-Adressen nicht empfohlen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208 msgid "Shared Client" msgstr "versch. Klienten" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:212 msgid "(Share tunnels with other clients and irc/httpclients? Change requires restart of client proxy)" msgstr "(Soll dieser Tunnel mit anderen Klienten und IRC/HTTP-Klienten geteilt werden? Änderungen benötigen Neustart des Klientenproxys)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:231 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:216 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:124 msgid "Auto Start" msgstr "Automatischer Start" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:128 msgid "(Check the Box for 'YES')" msgstr "(Aktiviere das Kästchen für 'ja')" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:237 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:258 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:243 msgid "Advanced networking options" msgstr "Erweiterte Netzwerkoptionen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224 msgid "(NOTE: when this client proxy is configured to share tunnels, then these options are for all the shared proxy clients!)" msgstr "(HINWEIS: Ist dieser Proxy konfiguriert, Tunnel mit anderen Klienten zu teilen, so gelten diese Optionen für alle Klienten des Proxys!)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:241 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:260 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245 msgid "Tunnel Options" msgstr "Tunneloptionen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:262 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:247 msgid "Length" msgstr "Länge" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:250 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:269 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:254 msgid "0 hop tunnel (low anonymity, low latency)" msgstr "0-Hop-Tunnel (geringe Anonymität, geringe Latenz)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:254 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:273 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:258 msgid "1 hop tunnel (medium anonymity, medium latency)" msgstr "1-Hop-Tunnel (mittlere Anonymität, mittlere Latenz)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:258 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:277 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:262 msgid "2 hop tunnel (high anonymity, high latency)" msgstr "2-Hop-Tunnel (hohe Anonymität, hohe Latenz)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:262 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:281 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:266 msgid "3 hop tunnel (very high anonymity, poor performance)" msgstr "3-Hop-Tunnel (sehr hohe Anonymität, geringe Leistung)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:271 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:290 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:256 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:275 msgid "hop tunnel (very poor performance)" msgstr "Hop-Tunnel (sehr geringe Leistung)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:261 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:280 msgid "Variance" msgstr "Varianz" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:283 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:268 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:287 msgid "0 hop variance (no randomisation, consistant performance)" msgstr "0-Hop-Varianz (keine zufällige Längenveränderung, konsistente Leistung)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:287 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:272 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:291 msgid "+ 0-1 hop variance (medium additive randomisation, subtractive performance)" msgstr "+ 0-1 Hop Varianz (mittlere zufällige Verlängerung, verringert die Leistung)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:291 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295 msgid "+ 0-2 hop variance (high additive randomisation, subtractive performance)" msgstr "+ 0-2 Hops Varianz (hohe zufällige Verlängerung, verringerte Leistung)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:295 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:314 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:299 msgid "+/- 0-1 hop variance (standard randomisation, standard performance)" msgstr "+/- 0-1 Hop Varianz (geringe zufällige Längenänderung, Standardleistung)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:299 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:284 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:303 msgid "+/- 0-2 hop variance (not recommended)" msgstr "+/- 0-2 Hops Varianz (nicht empfohlen)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:311 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:315 msgid "hop variance" msgstr "Hops Varianz" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:320 msgid "Count" msgstr "Anzahl" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:323 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:342 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:327 msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)" msgstr "1 eingehender, 1 ausgehender Tunnel (geringe Bandbreitennutzung, weniger zuverlässig)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:327 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:346 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:331 msgid "2 inbound, 2 outbound tunnels (standard bandwidth usage, standard reliability)" msgstr "2 eingehende, 2 ausgehende Tunnel (Standardbandbreitennutzung, zuverlässig)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:331 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:350 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335 msgid "3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)" msgstr "3 eingehende, 3 ausgehende Tunnel (hohe Bandbreitennutzung, zuverlässiger)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:340 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:344 msgid "tunnels" msgstr "Tunnel" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:345 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349 msgid "Backup Count" msgstr "Anzahl an Ersatztunneln" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:352 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:371 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:356 msgid "0 backup tunnels (0 redundancy, no added resource usage)" msgstr "0 Ersatztunnel (0 Redundanz, keine zusätzliche Ressourcennutzung)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:356 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:375 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:360 msgid "1 backup tunnel each direction (low redundancy, low resource usage)" msgstr "1 Ersatztunnel in jede Richtung (geringe Redundanz, geringe Ressourcennutzung)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:360 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:379 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364 msgid "2 backup tunnels each direction (medium redundancy, medium resource usage)" msgstr "2 Ersatztunnel in jede Richtung (mittlere Redundanz, mittlere Ressourcennutzung)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:364 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:383 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:349 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:368 msgid "3 backup tunnels each direction (high redundancy, high resource usage)" msgstr "3 Ersatztunnel in jede Richtung (hohe Redundanz, hohe Ressourcennutzung)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:373 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:392 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:358 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377 msgid "backup tunnels" msgstr "Ersatztunnel" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:380 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:384 msgid "Profile" msgstr "Profil" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:387 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:406 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:372 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:391 msgid "interactive connection" msgstr "Interaktive Verbindung" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:391 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:410 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:376 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:395 msgid "bulk connection (downloads/websites/BT)" msgstr "Mengenverbindung (Download/Webseiten/BitTorrent)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:393 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:378 msgid "Delay Connect" msgstr "Verbindung verzögern" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:382 msgid "for request/response connections" msgstr "für Verbindungen mit Anfragen/Antworten" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:401 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:414 -msgid "I2CP Options" -msgstr "I2CP-Optionen" +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399 +msgid "Router I2CP Address" +msgstr "I2CP-Adresse des Routers" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:403 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:146 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:416 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401 msgid "Host" msgstr "Host" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:407 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:152 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:420 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:396 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:148 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:244 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:266 msgid "Port" msgstr "Port" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:413 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:452 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:406 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479 msgid "Reduce tunnel quantity when idle" msgstr "Anzahl an Tunneln im Leerlauf reduzieren" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:415 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:429 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:437 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:449 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:459 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:479 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:493 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:426 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:442 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:454 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:408 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:422 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:430 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:442 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:452 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:472 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:419 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481 msgid "Enable" msgstr "aktiviert" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:419 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:458 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:412 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:485 msgid "Reduced tunnel count" msgstr "Reduzierte Tunnelanzahl" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:423 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:443 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:462 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:416 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:489 msgid "Idle minutes" msgstr "Minuten Inaktivität" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:427 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420 msgid "Close tunnels when idle" msgstr "nicht genutzte Tunnel schließen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:426 msgid "New Keys on Reopen" msgstr "Neue Schlüssel beim Wiederöffnen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:441 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435 msgid "Disable" msgstr "deaktiviert" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:447 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440 msgid "Delay tunnel open until required" msgstr "Aufbau des Tunnela verzögern, bis dieser benötigt wird" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:457 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:450 msgid "Persistent private key" msgstr "Dauerhafter privater Schlüssel" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:463 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:456 msgid "File" msgstr "Datei" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:467 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:460 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:220 msgid "Local destination" msgstr "lokales Ziel" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:471 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464 msgid "(if known)" msgstr "(falls bekannt)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:477 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:470 msgid "Local Authorization" msgstr "lokale Autorisation" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:483 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:497 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490 msgid "Username" msgstr "Benutzername" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:487 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:501 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:480 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:494 msgid "Password" msgstr "Passwort" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:491 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484 msgid "Outproxy Authorization" msgstr "Outproxy Autorisation" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:507 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:498 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502 +msgid "Jump URL List" +msgstr "List der Sprung-URLs" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:508 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525 msgid "Custom options" msgstr "Eigene Optionen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:511 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:502 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:512 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:529 msgid "NOTE: If tunnel is currently running, most changes will not take effect until tunnel is stopped and restarted." msgstr "HINWEIS: Falls der Tunnel gerade aktiv ist, werden die meisten Änderungen erst nach einem Neustart des Tunnels wirksam." -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:513 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:504 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:514 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531 msgid "Cancel" msgstr "Abbrechen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:517 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:508 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535 msgid "Delete" msgstr "Löschen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:519 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:510 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:520 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537 msgid "Save" msgstr "Speichern" @@ -504,92 +511,124 @@ msgstr "Servereinstellungen ändern" msgid "New server settings" msgstr "Neue Servereinstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:214 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:199 msgid "Website name" msgstr "Name der Webseite" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:218 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:203 msgid "(leave blank for outproxies)" msgstr "(für ausgehende Proxies leer lassen)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:208 msgid "Private key file" msgstr "private Schlüsseldatei" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:230 msgid "Add to local addressbook" msgstr "zum lokalen Adressbuch hinzufügen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:252 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:237 msgid "Hostname Signature" msgstr "Signatur des Namens" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:424 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417 msgid "Encrypt Leaseset" msgstr "Leaseset verschlüsseln" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:430 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423 msgid "Encryption Key" msgstr "Schlüssel zum verschlüsseln" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:434 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427 msgid "Generate New Key" msgstr "Erzeuge neuen Schlüssel" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429 msgid "Generate" msgstr "Erzeugen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:438 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:496 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:523 msgid "(Tunnel must be stopped first)" msgstr "(Tunnel muss zuerst beendet sein)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:440 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433 msgid "Restricted Access List" msgstr "Zugang beschränken" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:446 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439 +msgid "Whitelist" +msgstr "Zugangsliste" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443 +msgid "Blacklist" +msgstr "Sperrliste" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447 msgid "Access List" msgstr "Zugangsliste" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:450 -msgid "(Restrict to these clients only)" -msgstr "(Zugang wird auf diese Klienten beschränkt)" +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451 +msgid "Inbound connection limits (0=unlimited)" +msgstr "Begrenzung eingehender Verbindungen (0=unbegrenzt)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:466 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453 +msgid "Per client" +msgstr "pro Klient" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455 +msgid "Per minute" +msgstr "pro Minute" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459 +msgid "Per hour" +msgstr "pro Stunde" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463 +msgid "Per day" +msgstr "pro Tag" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467 +msgid "Total" +msgstr "Gesamt" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475 +msgid "Max concurrent connections (0=unlimited)" +msgstr "max. Anzahl gleichzeitiger Verbindungen (0=unbegrenzt)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493 msgid "New Certificate type" msgstr "Neuer Zertifizierungstyp" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:468 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495 msgid "None" msgstr "Keiner" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:472 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499 msgid "Hashcash (effort)" msgstr "Hashcash (Durchsatz)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:478 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505 msgid "Hashcash Calc Time" msgstr "Hashcash Berechnungszeit" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:480 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507 msgid "Estimate" msgstr "Abschätzung" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:482 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509 msgid "Hidden" msgstr "Versteckt" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:486 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513 msgid "Signed (signed by)" msgstr "Signiert (unterschrieben von)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:492 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519 msgid "Modify Certificate" msgstr "Zertifikat modifizieren" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:494 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521 msgid "Modify" msgstr "Modifizieren" @@ -639,7 +678,7 @@ msgstr "Vorschau" #: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:297 msgid "Status" msgstr "Status" @@ -652,30 +691,30 @@ msgid "No Preview" msgstr "Keine Vorschau" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:184 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:285 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:304 msgid "Starting..." msgstr "Starte ..." #: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:339 msgid "Stop" msgstr "Stopp" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:198 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:332 msgid "Running" msgstr "Aktiv" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:212 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:346 msgid "Stopped" msgstr "Gestoppt" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:334 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:353 msgid "Start" msgstr "Start" @@ -684,12 +723,12 @@ msgid "New server tunnel" msgstr "Neuer Servertunnel" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:236 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:377 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:396 msgid "Standard" msgstr "Standard" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:238 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:379 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:398 msgid "Create" msgstr "Erstellen" @@ -698,27 +737,40 @@ msgid "I2P Client Tunnels" msgstr "I2P-Klienten-Tunnel" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:248 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:274 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:283 msgid "Interface" msgstr "Interface" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:299 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:318 msgid "Standby" msgstr "Wartestellung" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:344 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:363 msgid "Outproxy" msgstr "Ausgehender Proxy" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:348 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:367 msgid "Destination" msgstr "Ziel" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:362 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:381 msgid "none" msgstr "Keiner" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:375 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394 msgid "New client tunnel" msgstr "Neuer Kliententunnel" +#~ msgid "Locally (127.0.0.1)" +#~ msgstr "Lokal (127.0.0.1)" +#~ msgid "Everyone (0.0.0.0)" +#~ msgstr "Überall (0.0.0.0)" +#~ msgid "LAN Hosts (Please specify your LAN address)" +#~ msgstr "LAN-Hosts (Bitte geben Sie ihre LAN-Adressen an!)" +#~ msgid "Other" +#~ msgstr "Anderen" +#~ msgid "I2CP Options" +#~ msgstr "I2CP-Optionen" +#~ msgid "(Restrict to these clients only)" +#~ msgstr "(Zugang wird auf diese Klienten beschränkt)" + diff --git a/apps/routerconsole/locale/messages_de.po b/apps/routerconsole/locale/messages_de.po index 4c323cd8e..c911f0ed8 100644 --- a/apps/routerconsole/locale/messages_de.po +++ b/apps/routerconsole/locale/messages_de.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-28 00:08+0000\n" -"PO-Revision-Date: 2011-01-01 21:19+0100\n" -"Last-Translator: mixxy \n" +"POT-Creation-Date: 2011-02-27 16:02+0000\n" +"PO-Revision-Date: 2011-02-27 18:31+0100\n" +"Last-Translator: \n" "Language-Team: echelon , Sperreingang \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -26,7 +27,7 @@ msgstr "" #. {0,number,####} prevents 1234 from being output as 1,234 in the English locale. #. If you want the digit separator in your locale, translate as {0}. #. alternates: msec, msecs -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1103 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1141 #, java-format msgid "1 ms" msgid_plural "{0,number,####} ms" @@ -36,7 +37,7 @@ msgstr[1] "{0,number,####} ms" #. seconds #. Note to translators: quantity will always be greater than one. #. alternates: secs, sec. 'seconds' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1108 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1146 #, java-format msgid "1 sec" msgid_plural "{0} sec" @@ -46,7 +47,7 @@ msgstr[1] "{0} s" #. minutes #. Note to translators: quantity will always be greater than one. #. alternates: mins, min. 'minutes' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1113 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1151 #, java-format msgid "1 min" msgid_plural "{0} min" @@ -56,42 +57,42 @@ msgstr[1] "{0} Minuten" #. hours #. Note to translators: quantity will always be greater than one. #. alternates: hrs, hr., hrs. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1118 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1156 #, java-format msgid "1 hour" msgid_plural "{0} hours" msgstr[0] "1 Stunde" msgstr[1] "{0} Stunden" -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1120 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1158 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313 msgid "n/a" msgstr "k.A." #. days #. Note to translators: quantity will always be greater than one. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1124 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1162 #, java-format msgid "1 day" msgid_plural "{0} days" msgstr[0] "1 Tag" msgstr[1] "{0} Tage" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:126 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:122 #, java-format msgid "Banned by router hash: {0}" msgstr "Gesperrt über Routerprüfsumme: {0}" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:128 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:124 msgid "Banned by router hash" msgstr "Gesperrt über Routerprüfsumme" #. Temporary reason, until the job finishes -#: ../../../router/java/src/net/i2p/router/Blocklist.java:673 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:669 msgid "IP banned" msgstr "IP gesperrt" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:743 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:739 #, java-format msgid "IP banned by blocklist.txt entry {0}" msgstr "IP gesperrt wegen blocklist.txt-Eintrags {0}" @@ -145,35 +146,41 @@ msgstr "Akzeptiere Tunnelanfragen" msgid "Rejecting tunnels" msgstr "Weise Tunnelanfragen zurück" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:68 -msgid "Ensure that nothing blocks outbound HTTP, check logs and if nothing helps, read the FAQ about reseeding manually." -msgstr "Stellen Sie bitte sicher, dass nichts ausgehenden HTTP-Transfer blockiert, überprüfen 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:101 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:105 +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 msgid "Reseeding" msgstr "Reseeden" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:124 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:128 #, java-format msgid "Reseed fetched only 1 router." msgid_plural "Reseed fetched only {0} routers." -msgstr[0] "Nur Daten eines Routers per Ressed erhalten" +msgstr[0] "Nur Daten eines Routers per Reseed erhalten" msgstr[1] "Nur {0} Routerinformationen per Reseed erhalten" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:131 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:135 msgid "Reseed failed." msgstr "Reseed fehlgeschlagen" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:232 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:136 +#, java-format +msgid "See {0} for help." +msgstr "Für Hilfe, siehe {0}!" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:137 +msgid "reseed configuration page" +msgstr "Einstellungen für den Reseed" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:239 msgid "Reseeding: fetching seed URL." msgstr "Reseed: Hole die Seed-URL" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:273 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281 #, java-format msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." msgstr "Reseed: Holen der Router-Informationen von Seed-URL ({0} erfolgreich, {1} Fehler)." -#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:513 +#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:512 msgid "NetDb entry" msgstr "NetzDB-Eintrag" @@ -182,39 +189,40 @@ msgstr "NetzDB-Eintrag" msgid "No transports (hidden or starting up?)" msgstr "Keine Transporte (Versteckter Modus oder Start?)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:452 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:450 msgid "Unreachable on any transport" msgstr "Unerreichbar auf allen Transporten" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:501 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:499 msgid "Router Transport Addresses" msgstr "Router-Transport-Adresse" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:506 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:504 #, java-format msgid "{0} is used for outbound connections only" msgstr "{0} wird nur für ausgehende Verbindungen genutzt" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:520 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123 msgid "Help" msgstr "Hilfe" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 msgid "Your transport connection limits are automatically set based on your configured bandwidth." msgstr "Ihre Verbindungseinstellungen werden, basierend auf der von Ihnen zur Verfügung gestellten Bandbreite, automatisch vorgenommen." -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 msgid "To override these limits, add the settings i2np.ntcp.maxConnections=nnn and i2np.udp.maxConnections=nnn on the advanced configuration page." msgstr "Um diese Einstellungen zu umgehen, fügen Sie folgende Einstellungen der Seite \"Erweiterte Einstellungen\" hinzu: i2np.ntcp.maxConnections=nnn und i2np.udp.maxConnections=nnn" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 msgid "Definitions" msgstr "Definitionen" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:735 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1891 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890 #: ../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 @@ -224,149 +232,149 @@ msgstr "Definitionen" msgid "Peer" msgstr "Teilnehmer" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 msgid "The remote peer, identified by router hash" msgstr "Der entfernte Teilnehmer, über seine Router-Prüfsumme erkannt" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:527 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:736 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 msgid "Dir" msgstr "Richtung" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 msgid "Inbound connection" msgstr "Eingehende Verbindungen" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 msgid "Outbound connection" msgstr "Ausgehende Verbindungen" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 msgid "They offered to introduce us (help other peers traverse our firewall)" msgstr "Sie boten an, uns bekannt zu machen (anderen Teilnehmern helfen, unsere Firewall zu überwinden)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 msgid "We offered to introduce them (help other peers traverse their firewall)" msgstr "Wir bieten an, sie bekannt zu machen (anderen Teilnehmern helfen, ihre Firewall zu überwinden)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "How long since a packet has been received / sent" msgstr "Vergangene Zeit seit ein Paket empfangen/gesendet wurde" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1896 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895 msgid "Idle" msgstr "Untätig" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1901 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1900 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "In/Out" msgstr "Ein-/Ausgehend" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 msgid "The smoothed inbound / outbound transfer rate (KBytes per second)" msgstr "Die geglättete ein-/ausgehende Transferrate (KBytes pro Sekunde)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 msgid "How long ago this connection was established" msgstr "Wie lange die Verbindung schon besteht" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1906 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905 msgid "Up" msgstr "Verbunden" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1908 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1907 msgid "Skew" msgstr "Differenz" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 msgid "The difference between the peer's clock and your own" msgstr "Der Unterschied zwischen Ihrer und der Uhr des Teilnehmers" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 msgid "The congestion window, which is how many bytes can be sent without an acknowledgement" msgstr "Der Pufferspeicher, der angibt, wieviele Bytes Sie ohne Bestätigung senden können" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 msgid "The number of sent messages awaiting acknowledgement" msgstr "Die Anzahl der gesendeten Nachrichten, die auf Bestätigung warten" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 msgid "The maximum number of concurrent messages to send" msgstr "Die maximale Anzahl von gleichzeitig sendbaren Nachrichten" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 msgid "The number of pending sends which exceed congestion window" msgstr "Die Anzahl der ausstehenden Sendeanforderungen, die den Pufferspeicher überschreiten." -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 msgid "The slow start threshold" msgstr "Der Grenzwert zum verzögertem Starten" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 msgid "The round trip time in milliseconds" msgstr "Die Rundenzeit zum Server und zurück in Millisekunden" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 msgid "Dev" msgstr "Abweichung" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 msgid "The standard deviation of the round trip time in milliseconds" msgstr "Standardabweichung der Rundenzeit (in Millisekunden)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 msgid "The retransmit timeout in milliseconds" msgstr "Der Timeout beim erneuten Senden (in Millisekunden)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 msgid "Current maximum send packet size / estimated maximum receive packet size (bytes)" msgstr "Derzeit maximale Größe der gesendeten Pakete / geschätzte maximale Größe der empfangenen Pakete (Bytes)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1925 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 msgid "TX" msgstr "Gesendet" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 msgid "The total number of packets sent to the peer" msgstr "Gesamtanzahl der an den Teilnehmer gesendeten Pakete" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:742 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926 msgid "RX" msgstr "Empfangen" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 msgid "The total number of packets received from the peer" msgstr "Gesamtanzahl der vom Teilnehmer empfangenen Pakete" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1930 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1929 msgid "Dup TX" msgstr "Mehrfach gesendet" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 msgid "The total number of packets retransmitted to the peer" msgstr "Gesamtanzahl der an den Teilnehmer erneut gesendeten Pakete" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1932 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1931 msgid "Dup RX" msgstr "Mehrfach empfangen" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 msgid "The total number of duplicate packets received from the peer" msgstr "Gesamtanzahl der vom Teilnehmer erneut empfangenen Pakete" @@ -381,12 +389,12 @@ msgid "NTCP connections" msgstr "NTCP-Verbindungen" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:731 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1886 msgid "Limit" msgstr "Obere Grenze" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1888 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 msgid "Timeout" msgstr "Timeout" @@ -399,13 +407,13 @@ msgid "Backlogged?" msgstr "Rückstau" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:758 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1950 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1949 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 msgid "Inbound" msgstr "ankommend" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1952 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1951 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 msgid "Outbound" msgstr "abgehend" @@ -415,135 +423,135 @@ msgstr "abgehend" msgid "peers" msgstr "Teilnehmer" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1886 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1885 msgid "UDP connections" msgstr "UDP-Verbindungen" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1893 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1892 msgid "Sort by peer hash" msgstr "Nach Router Prüfsumme sortieren" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 msgid "Direction/Introduction" msgstr "Richtung/Bekanntmachung" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1897 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1896 msgid "Sort by idle inbound" msgstr "Sortieren nach untätigen eingehenden Verbindungen" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1899 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1898 msgid "Sort by idle outbound" msgstr "Sortieren nach untätigen ausgehenden Verbindungen" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1902 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1901 msgid "Sort by inbound rate" msgstr "Sortieren nach eingehender Transferrate" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1904 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1903 msgid "Sort by outbound rate" msgstr "Sortieren nach ausgehender Transferrate" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1907 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1906 msgid "Sort by connection uptime" msgstr "Sortieren nach Lebensdauer der Verbindung" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1909 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1908 msgid "Sort by clock skew" msgstr "Sortieren nach Zeitunterschied" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1912 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1911 msgid "Sort by congestion window" msgstr "Sortieren nach Größe des Pufferspeichers" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1914 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1913 msgid "Sort by slow start threshold" msgstr "Sortieren nach Grenzwert des verzögerten Startens" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1916 msgid "Sort by round trip time" msgstr "Sortieren nach Rundenzeit" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1919 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918 msgid "Sort by round trip time deviation" msgstr "Sortieren nach Abweichung der Rundenzeit" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1921 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1920 msgid "Sort by retransmission timeout" msgstr "Sortieren nach Timeout beim erneuten Senden" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1923 msgid "Sort by outbound maximum transmit unit" msgstr "Sortieren nach maximaler ausgehender Transferpaketgröße" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1925 msgid "Sort by packets sent" msgstr "Sortieren nach Anzahl gesendeter Pakete" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1928 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927 msgid "Sort by packets received" msgstr "Sortieren nach Anzahl empfangener Pakete" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1931 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1930 msgid "Sort by packets retransmitted" msgstr "Sortieren nach Anzahl erneut gesendeter Pakete" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1933 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1932 msgid "Sort by packets received more than once" msgstr "Sortieren nach Anzahl mehrfach empfangener Pakete" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1954 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1953 msgid "We offered to introduce them" msgstr "Wir bieten an, diese bekannt zu machen" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1956 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1955 msgid "They offered to introduce us" msgstr "Diese boten an, uns bekannt zu machen" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1960 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1959 msgid "Choked" msgstr "gedrosselt" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1968 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1967 msgid "1 fail" msgstr "1 Fehler" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1970 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1969 #, java-format msgid "{0} fails" msgstr "{0} fehlgeschlagen" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1976 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1975 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:162 msgid "Banned" msgstr "Gesperrt" #. buf.append("

    InboundOutbound





    InboundOutbound
    <%=intl._("Max log file size")%>:" >
    " >
    <%=intl._("Default log level")%>:
    <%=intl._("(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)")%>
    ").append(_("Network Database Router Statistics")).append("
    "); + buf.append("
    ") + .append(_("Network Database Router Statistics")) + .append("
    "); // versions table List versionList = new ArrayList(versions.objects()); if (!versionList.isEmpty()) { @@ -276,7 +278,7 @@ public class NetDbRenderer { } buf.append("
    \n"); } - buf.append("
    "); + buf.append(""); out.write(buf.toString()); buf.setLength(0); @@ -291,7 +293,7 @@ public class NetDbRenderer { } } buf.append("
    \n"); - buf.append("
    "); + buf.append(""); out.write(buf.toString()); buf.setLength(0); From 8bbcb0b337116aa1fa22040ee83980c3b2558c90 Mon Sep 17 00:00:00 2001 From: zzz Date: Wed, 9 Mar 2011 15:56:23 +0000 Subject: [PATCH 282/463] split up form, fix HTML warnings --- apps/routerconsole/jsp/configclients.jsp | 52 +++++++++++++++--------- 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/apps/routerconsole/jsp/configclients.jsp b/apps/routerconsole/jsp/configclients.jsp index ec34b1079..c106352ea 100644 --- a/apps/routerconsole/jsp/configclients.jsp +++ b/apps/routerconsole/jsp/configclients.jsp @@ -27,18 +27,18 @@ button span.hide{ " /> -
    +
    <% String prev = System.getProperty("net.i2p.router.web.ConfigClientsHandler.nonce"); if (prev != null) System.setProperty("net.i2p.router.web.ConfigClientsHandler.noncePrev", prev); - System.setProperty("net.i2p.router.web.ConfigClientsHandler.nonce", new java.util.Random().nextLong()+""); %> - " > - <% /* set hidden default */ %> - + String pageNonce = Long.toString(new java.util.Random().nextLong()); + System.setProperty("net.i2p.router.web.ConfigClientsHandler.nonce", pageNonce); %>

    <%=intl._("Client Configuration")%>

    <%=intl._("The Java clients listed below are started by the router and run in the same JVM.")%>

    -

    -

    <%=intl._("To change other client options, edit the file")%> + + + +

    <%=intl._("To change other client options, edit the file")%> <%=net.i2p.router.startup.ClientAppConfig.configFile(net.i2p.I2PAppContext.getGlobalContext()).getAbsolutePath()%>. <%=intl._("All changes require restart to take effect.")%>


    @@ -47,9 +47,12 @@ button span.hide{ " /> <% } %> " /> -
    +
    -

    <%=intl._("Advanced Client Interface Configuration")%>

    +

    <%=intl._("Advanced Client Interface Configuration")%>

    +
    + +

    <%=intl._("External I2CP (I2P Client Protocol) Interface Configuration")%>
    > <%=intl._("Enabled without SSL")%>
    @@ -89,32 +92,41 @@ button span.hide{


    " /> " /> -
    +

    <%=intl._("WebApp Configuration")%>

    <%=intl._("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).")%>

    <%=intl._("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.")%> -

    +

    +
    + -

    - <%=intl._("All changes require restart to take effect.")%> +

    <%=intl._("All changes require restart to take effect.")%>


    " /> -
    +
    + <% if (clientshelper.showPlugins()) { %>

    <%=intl._("Plugin Configuration")%>

    <%=intl._("The plugins listed below are started by the webConsole client.")%> -

    +

    +
    + -


    +
    " /> -

    <%=intl._("Plugin Installation")%>

    +

    + +

    <%=intl._("Plugin Installation")%>

    <%=intl._("To install a plugin, enter the download URL:")%> -

    +

    +
    + +


    " /> -
    +
    <% } %> - + From 6b6aaab8811604c5f629d5bce35fd61cfd741a31 Mon Sep 17 00:00:00 2001 From: zzz Date: Wed, 9 Mar 2011 17:16:28 +0000 Subject: [PATCH 283/463] * configui.jsp: Fix lang setting broken by previous nonce change * Console: Consolidate nonce handling --- .../src/net/i2p/router/web/FormHandler.java | 22 +++++++++++++++++-- apps/routerconsole/jsp/config.jsp | 5 +---- apps/routerconsole/jsp/configadvanced.jsp | 5 +---- apps/routerconsole/jsp/configclients.jsp | 7 +++--- apps/routerconsole/jsp/configkeyring.jsp | 5 +---- apps/routerconsole/jsp/configlogging.jsp | 5 +---- apps/routerconsole/jsp/configpeer.jsp | 5 +---- apps/routerconsole/jsp/configreseed.jsp | 5 +---- apps/routerconsole/jsp/configservice.jsp | 5 +---- apps/routerconsole/jsp/configstats.jsp | 5 +---- apps/routerconsole/jsp/configtunnels.jsp | 5 +---- apps/routerconsole/jsp/configui.jsp | 14 ++++++++---- apps/routerconsole/jsp/configupdate.jsp | 5 +---- 13 files changed, 43 insertions(+), 50 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java index 71089ce73..9fa61080d 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java @@ -26,6 +26,8 @@ public class FormHandler { private final List _notices; private boolean _processed; private boolean _valid; + private static final String NONCE_SUFFIX = ".nonce"; + private static final String PREV_SUFFIX = "Prev"; public FormHandler() { _errors = new ArrayList(); @@ -162,8 +164,8 @@ public class FormHandler { return; } - String nonce = System.getProperty(getClass().getName() + ".nonce"); - String noncePrev = System.getProperty(getClass().getName() + ".noncePrev"); + String nonce = System.getProperty(getClass().getName() + NONCE_SUFFIX); + String noncePrev = nonce + PREV_SUFFIX; if ( ( (nonce == null) || (!_nonce.equals(nonce)) ) && ( (noncePrev == null) || (!_nonce.equals(noncePrev)) ) ) { @@ -201,6 +203,22 @@ public class FormHandler { } } + /** + * Generate a new nonce, store old and new in the system properties. + * Only call once per page! + * @return a new random long as a String + * @since 0.8.5 + */ + public String getNewNonce() { + String prop = getClass().getName() + NONCE_SUFFIX; + String prev = System.getProperty(prop); + if (prev != null) + System.setProperty(prop + PREV_SUFFIX, prev); + String rv = Long.toString(_context.random().nextLong()); + System.setProperty(prop, rv); + return rv; + } + /** translate a string */ public String _(String s) { return Messages.getString(s, _context); diff --git a/apps/routerconsole/jsp/config.jsp b/apps/routerconsole/jsp/config.jsp index 74f1bf465..83548e6a3 100644 --- a/apps/routerconsole/jsp/config.jsp +++ b/apps/routerconsole/jsp/config.jsp @@ -22,10 +22,7 @@
    - <% String prev = System.getProperty("net.i2p.router.web.ConfigNetHandler.nonce"); - if (prev != null) System.setProperty("net.i2p.router.web.ConfigNetHandler.noncePrev", prev); - System.setProperty("net.i2p.router.web.ConfigNetHandler.nonce", new java.util.Random().nextLong()+""); %> - " > + " >

    <%=intl._("Bandwidth limiter")%>

    <%=intl._("I2P will work best if you configure your rates to match the speed of your internet connection.")%> diff --git a/apps/routerconsole/jsp/configadvanced.jsp b/apps/routerconsole/jsp/configadvanced.jsp index a327c0290..9acfd65ec 100644 --- a/apps/routerconsole/jsp/configadvanced.jsp +++ b/apps/routerconsole/jsp/configadvanced.jsp @@ -25,10 +25,7 @@

    - <% String prev = System.getProperty("net.i2p.router.web.ConfigAdvancedHandler.nonce"); - if (prev != null) System.setProperty("net.i2p.router.web.ConfigAdvancedHandler.noncePrev", prev); - System.setProperty("net.i2p.router.web.ConfigAdvancedHandler.nonce", new java.util.Random().nextLong()+""); %> - " > + " >

    <%=intl._("Advanced I2P Configuration")%>



    diff --git a/apps/routerconsole/jsp/configclients.jsp b/apps/routerconsole/jsp/configclients.jsp index c106352ea..9d74d4990 100644 --- a/apps/routerconsole/jsp/configclients.jsp +++ b/apps/routerconsole/jsp/configclients.jsp @@ -28,10 +28,9 @@ button span.hide{
    - <% String prev = System.getProperty("net.i2p.router.web.ConfigClientsHandler.nonce"); - if (prev != null) System.setProperty("net.i2p.router.web.ConfigClientsHandler.noncePrev", prev); - String pageNonce = Long.toString(new java.util.Random().nextLong()); - System.setProperty("net.i2p.router.web.ConfigClientsHandler.nonce", pageNonce); %> +<% + String pageNonce = formhandler.getNewNonce(); +%>

    <%=intl._("Client Configuration")%>

    <%=intl._("The Java clients listed below are started by the router and run in the same JVM.")%>

    diff --git a/apps/routerconsole/jsp/configkeyring.jsp b/apps/routerconsole/jsp/configkeyring.jsp index 7438f5580..9188f56df 100644 --- a/apps/routerconsole/jsp/configkeyring.jsp +++ b/apps/routerconsole/jsp/configkeyring.jsp @@ -27,10 +27,7 @@

    - <% String prev = System.getProperty("net.i2p.router.web.ConfigKeyringHandler.nonce"); - if (prev != null) System.setProperty("net.i2p.router.web.ConfigKeyringHandler.noncePrev", prev); - System.setProperty("net.i2p.router.web.ConfigKeyringHandler.nonce", new java.util.Random().nextLong()+""); %> - " > + " >

    <%=intl._("Manual Keyring Addition")%>

    <%=intl._("Enter keys for encrypted remote destinations here.")%> <%=intl._("Keys for local destinations must be entered on the")%> <%=intl._("I2PTunnel page")%>. diff --git a/apps/routerconsole/jsp/configlogging.jsp b/apps/routerconsole/jsp/configlogging.jsp index bd80b8086..4c5904a90 100644 --- a/apps/routerconsole/jsp/configlogging.jsp +++ b/apps/routerconsole/jsp/configlogging.jsp @@ -21,10 +21,7 @@

    - <% String prev = System.getProperty("net.i2p.router.web.ConfigLoggingHandler.nonce"); - if (prev != null) System.setProperty("net.i2p.router.web.ConfigLoggingHandler.noncePrev", prev); - System.setProperty("net.i2p.router.web.ConfigLoggingHandler.nonce", new java.util.Random().nextLong()+""); %> - " > + " >

    <%=intl._("Configure I2P Logging Options")%>

    diff --git a/apps/routerconsole/jsp/configpeer.jsp b/apps/routerconsole/jsp/configpeer.jsp index 188ca56d4..f3a7097e6 100644 --- a/apps/routerconsole/jsp/configpeer.jsp +++ b/apps/routerconsole/jsp/configpeer.jsp @@ -29,10 +29,7 @@ %>
    - <% String prev = System.getProperty("net.i2p.router.web.ConfigPeerHandler.nonce"); - if (prev != null) System.setProperty("net.i2p.router.web.ConfigPeerHandler.noncePrev", prev); - System.setProperty("net.i2p.router.web.ConfigPeerHandler.nonce", new java.util.Random().nextLong()+""); %> - " /> + " > diff --git a/apps/routerconsole/jsp/configreseed.jsp b/apps/routerconsole/jsp/configreseed.jsp index 593e410d3..87707444a 100644 --- a/apps/routerconsole/jsp/configreseed.jsp +++ b/apps/routerconsole/jsp/configreseed.jsp @@ -23,10 +23,7 @@
    -<% String prev = System.getProperty("net.i2p.router.web.ConfigReseedHandler.nonce"); - if (prev != null) System.setProperty("net.i2p.router.web.ConfigReseedHandler.noncePrev", prev); - System.setProperty("net.i2p.router.web.ConfigReseedHandler.nonce", new java.util.Random().nextLong()+""); %> -" > +" >

    <%=intl._("Reseeding Configuration")%>

    <%=intl._("Reseeding is the bootstrapping process used to find other routers when you first install I2P, or when your router has too few router references remaining.")%> <%=intl._("If reseeding has failed, you should first check your network connection.")%> diff --git a/apps/routerconsole/jsp/configservice.jsp b/apps/routerconsole/jsp/configservice.jsp index d6864e5fb..21990fc0f 100644 --- a/apps/routerconsole/jsp/configservice.jsp +++ b/apps/routerconsole/jsp/configservice.jsp @@ -19,10 +19,7 @@

    - <% String prev = System.getProperty("net.i2p.router.web.ConfigServiceHandler.nonce"); - if (prev != null) System.setProperty("net.i2p.router.web.ConfigServiceHandler.noncePrev", prev); - System.setProperty("net.i2p.router.web.ConfigServiceHandler.nonce", new java.util.Random().nextLong()+""); %> - " > + " >

    <%=intl._("Shutdown the router")%>

    <%=intl._("Graceful shutdown lets the router satisfy the agreements it has already made before shutting down, but may take a few minutes.")%> <%=intl._("If you need to kill the router immediately, that option is available as well.")%>

    diff --git a/apps/routerconsole/jsp/configstats.jsp b/apps/routerconsole/jsp/configstats.jsp index fde10837d..4e6a4af97 100644 --- a/apps/routerconsole/jsp/configstats.jsp +++ b/apps/routerconsole/jsp/configstats.jsp @@ -67,11 +67,8 @@ function toggleAll(category) " />
    - <% String prev = System.getProperty("net.i2p.router.web.ConfigStatsHandler.nonce"); - if (prev != null) System.setProperty("net.i2p.router.web.ConfigStatsHandler.noncePrev", prev); - System.setProperty("net.i2p.router.web.ConfigStatsHandler.nonce", new java.util.Random().nextLong()+""); %> - " > + " >

    <%=intl._("Configure I2P Stat Collection")%>

    <%=intl._("Enable full stats?")%>

    - <% String prev = System.getProperty("net.i2p.router.web.ConfigTunnelsHandler.nonce"); - if (prev != null) System.setProperty("net.i2p.router.web.ConfigTunnelsHandler.noncePrev", prev); - System.setProperty("net.i2p.router.web.ConfigTunnelsHandler.nonce", new java.util.Random().nextLong()+""); %> - " > + " > <%=intl._("Note")%>: <%=intl._("Exploratory tunnel setting changes are stored in the router.config file.")%> diff --git a/apps/routerconsole/jsp/configui.jsp b/apps/routerconsole/jsp/configui.jsp index 9f3d32e4f..e67b11340 100644 --- a/apps/routerconsole/jsp/configui.jsp +++ b/apps/routerconsole/jsp/configui.jsp @@ -24,10 +24,16 @@

    <%=uihelper._("Router Console Theme")%>

    - <% String prev = System.getProperty("net.i2p.router.web.ConfigUIHandler.nonce"); - if (prev != null) System.setProperty("net.i2p.router.web.ConfigUIHandler.noncePrev", prev); - System.setProperty("net.i2p.router.web.ConfigUIHandler.nonce", new java.util.Random().nextLong()+""); %> - " > +<% + /** lang setting is done in css.jsi, not in ConfigUIHandler */ + String consoleNonce = System.getProperty("router.consoleNonce"); + if (consoleNonce == null) { + consoleNonce = Long.toString(new java.util.Random().nextLong()); + System.setProperty("router.consoleNonce", consoleNonce); + } +%> + + " > <% String userAgent = request.getHeader("User-Agent"); diff --git a/apps/routerconsole/jsp/configupdate.jsp b/apps/routerconsole/jsp/configupdate.jsp index 47b8b9310..4b1bf4bc6 100644 --- a/apps/routerconsole/jsp/configupdate.jsp +++ b/apps/routerconsole/jsp/configupdate.jsp @@ -23,10 +23,7 @@
    - <% String prev = System.getProperty("net.i2p.router.web.ConfigUpdateHandler.nonce"); - if (prev != null) System.setProperty("net.i2p.router.web.ConfigUpdateHandler.noncePrev", prev); - System.setProperty("net.i2p.router.web.ConfigUpdateHandler.nonce", new java.util.Random().nextLong()+""); %> - " > + " > <% /* set hidden default */ %>

    <%=intl._("Check for I2P and news updates")%>

    From f71dfe50f94d4354488f6d312671b3871e4aee34 Mon Sep 17 00:00:00 2001 From: zzz Date: Wed, 9 Mar 2011 17:57:48 +0000 Subject: [PATCH 284/463] * eepget: Don't set X-Accept-Encoding header (ticket #422) --- core/java/src/net/i2p/util/EepGet.java | 2 -- core/java/src/net/i2p/util/EepHead.java | 2 -- core/java/src/net/i2p/util/PartialEepGet.java | 2 -- 3 files changed, 6 deletions(-) diff --git a/core/java/src/net/i2p/util/EepGet.java b/core/java/src/net/i2p/util/EepGet.java index 24155e59e..955ae8238 100644 --- a/core/java/src/net/i2p/util/EepGet.java +++ b/core/java/src/net/i2p/util/EepGet.java @@ -952,8 +952,6 @@ public class EepGet { buf.append(_alreadyTransferred); buf.append("-\r\n"); } - if (_shouldProxy) - buf.append("X-Accept-Encoding: x-i2p-gzip;q=1.0, identity;q=0.5, deflate;q=0, gzip;q=0, *;q=0\r\n"); if (!_allowCaching) { buf.append("Cache-control: no-cache\r\n" + "Pragma: no-cache\r\n"); diff --git a/core/java/src/net/i2p/util/EepHead.java b/core/java/src/net/i2p/util/EepHead.java index 5c0d9c8fc..bb8304a39 100644 --- a/core/java/src/net/i2p/util/EepHead.java +++ b/core/java/src/net/i2p/util/EepHead.java @@ -202,8 +202,6 @@ public class EepHead extends EepGet { buf.append("HEAD ").append(_actualURL).append(" HTTP/1.1\r\n"); buf.append("Host: ").append(url.getHost()).append("\r\n"); buf.append("Accept-Encoding: \r\n"); - if (_shouldProxy) - buf.append("X-Accept-Encoding: x-i2p-gzip;q=1.0, identity;q=0.5, deflate;q=0, gzip;q=0, *;q=0\r\n"); // This will be replaced if we are going through I2PTunnelHTTPClient buf.append("User-Agent: " + USER_AGENT + "\r\n"); buf.append("Connection: close\r\n\r\n"); diff --git a/core/java/src/net/i2p/util/PartialEepGet.java b/core/java/src/net/i2p/util/PartialEepGet.java index 5b18bc761..1b44fce25 100644 --- a/core/java/src/net/i2p/util/PartialEepGet.java +++ b/core/java/src/net/i2p/util/PartialEepGet.java @@ -114,8 +114,6 @@ public class PartialEepGet extends EepGet { buf.append(_fetchSize - 1); buf.append("\r\n"); - if (_shouldProxy) - buf.append("X-Accept-Encoding: x-i2p-gzip;q=1.0, identity;q=0.5, deflate;q=0, gzip;q=0, *;q=0\r\n"); buf.append("Cache-control: no-cache\r\n" + "Pragma: no-cache\r\n"); // This will be replaced if we are going through I2PTunnelHTTPClient From b6a04264777a404fab3c776bf2bdc96563e92456 Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 10 Mar 2011 14:04:16 +0000 Subject: [PATCH 285/463] * logs.jsp: Fix NPE (ticket #430) --- apps/routerconsole/jsp/logs.jsp | 2 +- history.txt | 9 +++++++++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/apps/routerconsole/jsp/logs.jsp b/apps/routerconsole/jsp/logs.jsp index da33b9179..c2cbd2f71 100644 --- a/apps/routerconsole/jsp/logs.jsp +++ b/apps/routerconsole/jsp/logs.jsp @@ -18,7 +18,7 @@ <%=intl._("You may use the username \"guest\" and password \"guest\" if you do not wish to register.")%>

    <%=intl._("Please include this information in bug reports")%>:

    -I2P version:
    +I2P version: <%=net.i2p.router.RouterVersion.FULL_VERSION%>
    Java version: <%=System.getProperty("java.vendor")%> <%=System.getProperty("java.version")%> (<%=System.getProperty("java.runtime.name")%> <%=System.getProperty("java.runtime.version")%>)
    Platform: <%=System.getProperty("os.name")%> <%=System.getProperty("os.arch")%> <%=System.getProperty("os.version")%>
    Processor: <%=net.i2p.util.NativeBigInteger.cpuModel()%> (<%=net.i2p.util.NativeBigInteger.cpuType()%>)
    diff --git a/history.txt b/history.txt index 0e951f9a0..9f778d525 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,12 @@ +2011-03-10 zzz + * configclients.jsp: Split form up, fix HTML warnings + * configui.jsp: Fix lang setting broken by previous nonce change + * Console: Consolidate nonce handling + * eepget: Don't send X-Accept-Encoding header to proxy (ticket #422) + * logs.jsp: Fix NPE (ticket #430) + * netdb.jsp: Fix table alignment + * Tunnel Preprocessor: Use entropy for padding more efficiently + 2011-03-08 zzz * Clock: Cleanups and javadocs * Console: diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index f6e6df3a5..4e28a2c8d 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 = 4; + public final static long BUILD = 5; /** for example "-test" */ public final static String EXTRA = ""; From a5b55728baf20d6bb1f3ef86b98791ec8605ec65 Mon Sep 17 00:00:00 2001 From: duck Date: Fri, 11 Mar 2011 21:47:00 +0000 Subject: [PATCH 286/463] I18N for susimail, including dutch translation. --- apps/susimail/build.xml | 33 +- apps/susimail/bundle-messages.sh | 102 ++++ apps/susimail/locale/messages_en.po | 434 ++++++++++++++++++ apps/susimail/locale/messages_nl.po | 434 ++++++++++++++++++ .../src/src/i2p/susi/webmail/Messages.java | 34 ++ .../src/src/i2p/susi/webmail/WebMail.java | 222 ++++----- build.xml | 1 + 7 files changed, 1156 insertions(+), 104 deletions(-) create mode 100644 apps/susimail/bundle-messages.sh create mode 100644 apps/susimail/locale/messages_en.po create mode 100644 apps/susimail/locale/messages_nl.po create mode 100644 apps/susimail/src/src/i2p/susi/webmail/Messages.java diff --git a/apps/susimail/build.xml b/apps/susimail/build.xml index 0f7aae9bc..b38edf9b9 100644 --- a/apps/susimail/build.xml +++ b/apps/susimail/build.xml @@ -22,7 +22,7 @@ - + @@ -50,6 +50,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/susimail/bundle-messages.sh b/apps/susimail/bundle-messages.sh new file mode 100644 index 000000000..10b6f150a --- /dev/null +++ b/apps/susimail/bundle-messages.sh @@ -0,0 +1,102 @@ +# +# Update messages_xx.po and messages_xx.class files, +# from both java and jsp sources. +# Requires installed programs xgettext, msgfmt, msgmerge, and find. +# +# usage: +# bundle-messages.sh (generates the resource bundle from the .po file) +# bundle-messages.sh -p (updates the .po file from the source tags, then generates the resource bundle) +# +# zzz - public domain +# +CLASS=i2p.susi.webmail.messages +TMPFILE=javafiles.txt +export TZ=UTC + +if [ "$1" = "-p" ] +then + POUPDATE=1 +fi + +# on windows, one must specify the path of commnad find +# since windows has its own retarded version of find. +if which find|grep -q -i windows ; then + export PATH=.:/bin:/usr/local/bin:$PATH +fi +# Fast mode - update ondemond +# set LG2 to the language you need in envrionment varibales to enable this + +# add ../java/ so the refs will work in the po file +JPATHS="src" +for i in locale/messages_*.po +do + # get language + LG=${i#locale/messages_} + LG=${LG%.po} + + # skip, if specified + if [ $LG2 ]; then + [ $LG != $LG2 ] && continue || echo INFO: Language update is set to [$LG2] only. + fi + + if [ "$POUPDATE" = "1" ] + then + # make list of java files newer than the .po file + find $JPATHS -name *.java -newer $i > $TMPFILE + fi + + if [ -s src/WEB-INF/classes/i2p/susi/webmail/messages_$LG.class -a \ + src/WEB-INF/classes/i2p/susi/webmail/messages_$LG.class -nt $i -a \ + ! -s $TMPFILE ] + then + continue + fi + + if [ "$POUPDATE" = "1" ] + then + echo "Updating the $i file from the tags..." + # extract strings from java and jsp files, and update messages.po files + # translate calls must be one of the forms: + # _("foo") + # _x("foo") + # To start a new translation, copy the header from an old translation to the new .po file, + # then ant distclean poupdate. + find $JPATHS -name *.java > $TMPFILE + xgettext -f $TMPFILE -F -L java --from-code=UTF-8 --add-comments\ + --keyword=_ --keyword=_x \ + -o ${i}t + if [ $? -ne 0 ] + then + echo 'Warning - xgettext failed, not updating translations' + rm -f ${i}t + break + fi + msgmerge -U --backup=none $i ${i}t + if [ $? -ne 0 ] + then + echo 'Warning - msgmerge failed, not updating translations' + rm -f ${i}t + break + fi + rm -f ${i}t + # so we don't do this again + touch $i + fi + + if [ "$LG" != "en" ] + then + # only generate for non-source language + echo "Generating ${CLASS}_$LG ResourceBundle..." + + # convert to class files in build/obj + msgfmt --java --statistics -r $CLASS -l $LG -d src/WEB-INF/classes $i + if [ $? -ne 0 ] + then + echo 'Warning - msgfmt failed, not updating translations' + break + fi + fi +done +rm -f $TMPFILE +# todo: return failure +exit 0 diff --git a/apps/susimail/locale/messages_en.po b/apps/susimail/locale/messages_en.po new file mode 100644 index 000000000..940ec1220 --- /dev/null +++ b/apps/susimail/locale/messages_en.po @@ -0,0 +1,434 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the susimail package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P susimail\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-03-11 20:33+0000\n" +"PO-Revision-Date: 2010-06-15 14:09+0100\n" +"Last-Translator: duck \n" +"Language-Team: duck \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: src/src/i2p/susi/webmail/WebMail.java:454 +msgid "unknown" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:473 +msgid "Warning: no transfer encoding found, fallback to 7bit." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:478 +#, java-format +msgid "No encoder found for encoding \\''{0}\\''." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:484 +msgid "Warning: no charset found, fallback to US-ASCII." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:498 +#, java-format +msgid "Charset \\''{0}\\'' not supported." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:502 +#, java-format +msgid "Part ({0}) not shown, because of {1}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:525 +msgid "Download" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:525 +msgid "File is packed into a zipfile for security reasons." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:525 +#, java-format +msgid "attachment ({0})." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:529 +#, java-format +msgid "Attachment ({0})." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:579 +msgid "Need username for authentication." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:583 +msgid "Need password for authentication." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:587 +msgid "Need hostname for connect." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:592 +msgid "Need port number for pop3 connect." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:599 +msgid "POP3 port number is not in range 0..65535." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:605 +msgid "POP3 port number is invalid." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:611 +msgid "Need port number for smtp connect." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:618 +msgid "SMTP port number is not in range 0..65535." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:624 +msgid "SMTP port number is invalid." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:671 +msgid "User logged out." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:675 +msgid "Internal error, lost connection." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:771 +#, java-format +msgid "On {0} {1} wrote:" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:818 +msgid "begin forwarded mail" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:840 +msgid "end forwarded mail" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:847 +#: src/src/i2p/susi/webmail/WebMail.java:1701 +msgid "Could not fetch mail body." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:875 +msgid "Message id not valid." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:958 +#, java-format +msgid "No Encoding found for {0}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:962 +#, java-format +msgid "Could not encode data: {0}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:967 +#, java-format +msgid "Error reading uploaded file: {0}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1045 +msgid "Error parsing download parameter." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1089 +msgid "Invalid pagesize number, resetting to default value." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1113 +msgid "No messages marked for deletion." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1133 +#, java-format +msgid "Error deleting message: {0}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1144 +#, java-format +msgid "{0} messages deleted." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1264 +#: src/src/i2p/susi/webmail/WebMail.java:1587 +msgid "Login" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1266 +#, java-format +msgid "{0} Messages" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1268 +msgid "Show Message" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1325 +#, java-format +msgid "Error decoding content: {0}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1330 +msgid "Error decoding content: No encoder found." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1377 +msgid "no subject" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1394 +msgid "Found no valid sender address." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1400 +#, java-format +msgid "Found no valid address in \\''{0}\\''." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1419 +msgid "No recipients found." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1426 +msgid "Quoted printable encoder not available." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1431 +msgid "Header line encoder not available." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1482 +msgid "Mail sent." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1519 +msgid "Send" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1520 +msgid "Cancel" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1521 +msgid "Delete Attachment" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1522 +#: src/src/i2p/susi/webmail/WebMail.java:1607 +#: src/src/i2p/susi/webmail/WebMail.java:1688 +msgid "Reload Config" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1523 +#: src/src/i2p/susi/webmail/WebMail.java:1608 +#: src/src/i2p/susi/webmail/WebMail.java:1689 +msgid "Logout" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1546 +#: src/src/i2p/susi/webmail/WebMail.java:1693 +msgid "From:" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1547 +msgid "To:" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1548 +msgid "Cc:" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1549 +msgid "Bcc:" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1550 +#: src/src/i2p/susi/webmail/WebMail.java:1695 +msgid "Subject:" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1551 +msgid "Bcc to self" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1554 +msgid "New Attachment:" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1554 +msgid "Upload File" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1560 +msgid "Attachments:" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1582 +msgid "User" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1583 +msgid "Pass" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1584 +msgid "Host" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1585 +msgid "POP3-Port" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1586 +msgid "SMTP-Port" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1587 +msgid "Create Account" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1587 +msgid "Reset" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1599 +msgid "Really delete the marked messages?" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1599 +msgid "Yes, really delete them!" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1601 +#: src/src/i2p/susi/webmail/WebMail.java:1680 +msgid "New" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1602 +#: src/src/i2p/susi/webmail/WebMail.java:1681 +msgid "Reply" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1603 +#: src/src/i2p/susi/webmail/WebMail.java:1682 +msgid "Reply All" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1604 +#: src/src/i2p/susi/webmail/WebMail.java:1683 +msgid "Forward" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1605 +#: src/src/i2p/susi/webmail/WebMail.java:1684 +msgid "Delete" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1606 +msgid "Check Mail" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1610 +msgid "Sender" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1611 +msgid "Subject" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1612 +msgid "Date" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1613 +msgid "Size" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1639 +#, java-format +msgid "{0} Bytes" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1644 +msgid "Mark All" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1645 +msgid "Invert Selection" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1646 +msgid "Clear" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1649 +#: src/src/i2p/susi/webmail/WebMail.java:1650 +msgid "First" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1649 +#: src/src/i2p/susi/webmail/WebMail.java:1650 +#: src/src/i2p/susi/webmail/WebMail.java:1685 +msgid "Previous" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1651 +#, java-format +msgid "Page {0} of {1}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1653 +#: src/src/i2p/susi/webmail/WebMail.java:1654 +msgid "Last" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1653 +#: src/src/i2p/susi/webmail/WebMail.java:1654 +#: src/src/i2p/susi/webmail/WebMail.java:1686 +msgid "Next" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1657 +msgid "Pagesize:" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1658 +msgid "Set" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1668 +msgid "Really delete this messages?" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1668 +msgid "Yes, really delete it!" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1687 +msgid "Back to Folder" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1694 +msgid "Date:" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1705 +msgid "Could not fetch mail." +msgstr "" diff --git a/apps/susimail/locale/messages_nl.po b/apps/susimail/locale/messages_nl.po new file mode 100644 index 000000000..e5b951883 --- /dev/null +++ b/apps/susimail/locale/messages_nl.po @@ -0,0 +1,434 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the susimail package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P susimail\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-03-11 20:33+0000\n" +"PO-Revision-Date: 2010-06-15 14:09+0100\n" +"Last-Translator: duck \n" +"Language-Team: duck \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: src/src/i2p/susi/webmail/WebMail.java:454 +msgid "unknown" +msgstr "onbekend" + +#: src/src/i2p/susi/webmail/WebMail.java:473 +msgid "Warning: no transfer encoding found, fallback to 7bit." +msgstr "Waarschuwing: geen transfer encoding gevonden, terugval naar 7bit." + +#: src/src/i2p/susi/webmail/WebMail.java:478 +#, java-format +msgid "No encoder found for encoding \\''{0}\\''." +msgstr "Geen encoder gevonden voor de encoding \\''{0}\\''." + +#: src/src/i2p/susi/webmail/WebMail.java:484 +msgid "Warning: no charset found, fallback to US-ASCII." +msgstr "Waarschuwing: geen charset gevonden, terugval naar US-ASCII." + +#: src/src/i2p/susi/webmail/WebMail.java:498 +#, java-format +msgid "Charset \\''{0}\\'' not supported." +msgstr "Charset \\''{0}\\'' niet ondersteund." + +#: src/src/i2p/susi/webmail/WebMail.java:502 +#, java-format +msgid "Part ({0}) not shown, because of {1}" +msgstr "Deel ({0}) niet getoond, vanwege {1}" + +#: src/src/i2p/susi/webmail/WebMail.java:525 +msgid "Download" +msgstr "Download" + +#: src/src/i2p/susi/webmail/WebMail.java:525 +msgid "File is packed into a zipfile for security reasons." +msgstr "Bestand is verpakt in een zipbestand wegens veiligheid." + +#: src/src/i2p/susi/webmail/WebMail.java:525 +#, java-format +msgid "attachment ({0})." +msgstr "bijlage ({0})." + +#: src/src/i2p/susi/webmail/WebMail.java:529 +#, java-format +msgid "Attachment ({0})." +msgstr "Bijlage ({0})." + +#: src/src/i2p/susi/webmail/WebMail.java:579 +msgid "Need username for authentication." +msgstr "Gebruikersnaam nodig voor authenticatie." + +#: src/src/i2p/susi/webmail/WebMail.java:583 +msgid "Need password for authentication." +msgstr "Wachtwoord nodig voor authenticatie." + +#: src/src/i2p/susi/webmail/WebMail.java:587 +msgid "Need hostname for connect." +msgstr "Hostnaam nodig voor verbinding." + +#: src/src/i2p/susi/webmail/WebMail.java:592 +msgid "Need port number for pop3 connect." +msgstr "Poortnummer nodig voor pop3 verbinding." + +#: src/src/i2p/susi/webmail/WebMail.java:599 +msgid "POP3 port number is not in range 0..65535." +msgstr "POP3 poortnummer valt niet in het bereik 0..65535." + +#: src/src/i2p/susi/webmail/WebMail.java:605 +msgid "POP3 port number is invalid." +msgstr "POP3 poortnummer is ongeldig." + +#: src/src/i2p/susi/webmail/WebMail.java:611 +msgid "Need port number for smtp connect." +msgstr "Poortnummer nodig voor smtp verbinding." + +#: src/src/i2p/susi/webmail/WebMail.java:618 +msgid "SMTP port number is not in range 0..65535." +msgstr "SMTP poortnummer valt niet in het bereik 0..65535." + +#: src/src/i2p/susi/webmail/WebMail.java:624 +msgid "SMTP port number is invalid." +msgstr "SMTP poortnummer is ongeldig." + +#: src/src/i2p/susi/webmail/WebMail.java:671 +msgid "User logged out." +msgstr "Gebruiker is uitgelogged." + +#: src/src/i2p/susi/webmail/WebMail.java:675 +msgid "Internal error, lost connection." +msgstr "Interne fout, verbinding verbroken." + +#: src/src/i2p/susi/webmail/WebMail.java:771 +#, java-format +msgid "On {0} {1} wrote:" +msgstr "Op {0} schreef {1}:" + +#: src/src/i2p/susi/webmail/WebMail.java:818 +msgid "begin forwarded mail" +msgstr "begin doorgestuurde mail" + +#: src/src/i2p/susi/webmail/WebMail.java:840 +msgid "end forwarded mail" +msgstr "einde doorgestuurde mail" + +#: src/src/i2p/susi/webmail/WebMail.java:847 +#: src/src/i2p/susi/webmail/WebMail.java:1701 +msgid "Could not fetch mail body." +msgstr "Kon de body van het bericht niet ophalen." + +#: src/src/i2p/susi/webmail/WebMail.java:875 +msgid "Message id not valid." +msgstr "Message id is ongeldig." + +#: src/src/i2p/susi/webmail/WebMail.java:958 +#, java-format +msgid "No Encoding found for {0}" +msgstr "Geen Encoding gevonden voor {0}" + +#: src/src/i2p/susi/webmail/WebMail.java:962 +#, java-format +msgid "Could not encode data: {0}" +msgstr "Kon de data niet encoden: {0}" + +#: src/src/i2p/susi/webmail/WebMail.java:967 +#, java-format +msgid "Error reading uploaded file: {0}" +msgstr "Fout bij lezen van geupload bestand: {0}" + +#: src/src/i2p/susi/webmail/WebMail.java:1045 +msgid "Error parsing download parameter." +msgstr "Fout bij verwerken download parameter." + +#: src/src/i2p/susi/webmail/WebMail.java:1089 +msgid "Invalid pagesize number, resetting to default value." +msgstr "Ongeldig nummer voor paginagrootte, herstel naar standaardwaarde." + +#: src/src/i2p/susi/webmail/WebMail.java:1113 +msgid "No messages marked for deletion." +msgstr "Geen berichten gemarkeerd voor verwijdering." + +#: src/src/i2p/susi/webmail/WebMail.java:1133 +#, java-format +msgid "Error deleting message: {0}" +msgstr "Fout bij verwijderen van bericht: {0}" + +#: src/src/i2p/susi/webmail/WebMail.java:1144 +#, java-format +msgid "{0} messages deleted." +msgstr "{0} berichten verwijderd." + +#: src/src/i2p/susi/webmail/WebMail.java:1264 +#: src/src/i2p/susi/webmail/WebMail.java:1587 +msgid "Login" +msgstr "Login" + +#: src/src/i2p/susi/webmail/WebMail.java:1266 +#, java-format +msgid "{0} Messages" +msgstr "{0} Berichten" + +#: src/src/i2p/susi/webmail/WebMail.java:1268 +msgid "Show Message" +msgstr "Toon Bericht" + +#: src/src/i2p/susi/webmail/WebMail.java:1325 +#, java-format +msgid "Error decoding content: {0}" +msgstr "Fout bij decoden van inhoud: {0}" + +#: src/src/i2p/susi/webmail/WebMail.java:1330 +msgid "Error decoding content: No encoder found." +msgstr "Fout bij decoden van inhoud: Geen encoder gevonden." + +#: src/src/i2p/susi/webmail/WebMail.java:1377 +msgid "no subject" +msgstr "geen onderwerp" + +#: src/src/i2p/susi/webmail/WebMail.java:1394 +msgid "Found no valid sender address." +msgstr "Geen geldig afzender adres gevonden." + +#: src/src/i2p/susi/webmail/WebMail.java:1400 +#, java-format +msgid "Found no valid address in \\''{0}\\''." +msgstr "Geen geldig adres gevonden in \\''{0}\\''." + +#: src/src/i2p/susi/webmail/WebMail.java:1419 +msgid "No recipients found." +msgstr "Geen ontvangers gevonden." + +#: src/src/i2p/susi/webmail/WebMail.java:1426 +msgid "Quoted printable encoder not available." +msgstr "Gequote print encoder niet beschikbaar." + +#: src/src/i2p/susi/webmail/WebMail.java:1431 +msgid "Header line encoder not available." +msgstr "Kopregel encoder niet beschikbaar." + +#: src/src/i2p/susi/webmail/WebMail.java:1482 +msgid "Mail sent." +msgstr "Mail verzonden." + +#: src/src/i2p/susi/webmail/WebMail.java:1519 +msgid "Send" +msgstr "Verstuur" + +#: src/src/i2p/susi/webmail/WebMail.java:1520 +msgid "Cancel" +msgstr "Annuleer" + +#: src/src/i2p/susi/webmail/WebMail.java:1521 +msgid "Delete Attachment" +msgstr "Verwijder Bijlage" + +#: src/src/i2p/susi/webmail/WebMail.java:1522 +#: src/src/i2p/susi/webmail/WebMail.java:1607 +#: src/src/i2p/susi/webmail/WebMail.java:1688 +msgid "Reload Config" +msgstr "Herlaad Configuratie" + +#: src/src/i2p/susi/webmail/WebMail.java:1523 +#: src/src/i2p/susi/webmail/WebMail.java:1608 +#: src/src/i2p/susi/webmail/WebMail.java:1689 +msgid "Logout" +msgstr "Uitloggen" + +#: src/src/i2p/susi/webmail/WebMail.java:1546 +#: src/src/i2p/susi/webmail/WebMail.java:1693 +msgid "From:" +msgstr "Van:" + +#: src/src/i2p/susi/webmail/WebMail.java:1547 +msgid "To:" +msgstr "Aan:" + +#: src/src/i2p/susi/webmail/WebMail.java:1548 +msgid "Cc:" +msgstr "Cc:" + +#: src/src/i2p/susi/webmail/WebMail.java:1549 +msgid "Bcc:" +msgstr "Bcc:" + +#: src/src/i2p/susi/webmail/WebMail.java:1550 +#: src/src/i2p/susi/webmail/WebMail.java:1695 +msgid "Subject:" +msgstr "Onderwerp:" + +#: src/src/i2p/susi/webmail/WebMail.java:1551 +msgid "Bcc to self" +msgstr "Bcc zelf" + +#: src/src/i2p/susi/webmail/WebMail.java:1554 +msgid "New Attachment:" +msgstr "Nieuwe Bijlage:" + +#: src/src/i2p/susi/webmail/WebMail.java:1554 +msgid "Upload File" +msgstr "Upload Bestand" + +#: src/src/i2p/susi/webmail/WebMail.java:1560 +msgid "Attachments:" +msgstr "Bijlagen" + +#: src/src/i2p/susi/webmail/WebMail.java:1582 +msgid "User" +msgstr "Gebruiker" + +#: src/src/i2p/susi/webmail/WebMail.java:1583 +msgid "Pass" +msgstr "Wachtwoord" + +#: src/src/i2p/susi/webmail/WebMail.java:1584 +msgid "Host" +msgstr "Host" + +#: src/src/i2p/susi/webmail/WebMail.java:1585 +msgid "POP3-Port" +msgstr "POP3-Poort" + +#: src/src/i2p/susi/webmail/WebMail.java:1586 +msgid "SMTP-Port" +msgstr "SMTP-Poort" + +#: src/src/i2p/susi/webmail/WebMail.java:1587 +msgid "Create Account" +msgstr "Account Aanmaken" + +#: src/src/i2p/susi/webmail/WebMail.java:1587 +msgid "Reset" +msgstr "Herstel" + +#: src/src/i2p/susi/webmail/WebMail.java:1599 +msgid "Really delete the marked messages?" +msgstr "Wil je de gemarkeerde berichten daadwerkelijk verwijderen?" + +#: src/src/i2p/susi/webmail/WebMail.java:1599 +msgid "Yes, really delete them!" +msgstr "Ja, verwijder ze!" + +#: src/src/i2p/susi/webmail/WebMail.java:1601 +#: src/src/i2p/susi/webmail/WebMail.java:1680 +msgid "New" +msgstr "Nieuw" + +#: src/src/i2p/susi/webmail/WebMail.java:1602 +#: src/src/i2p/susi/webmail/WebMail.java:1681 +msgid "Reply" +msgstr "Beantwoorden" + +#: src/src/i2p/susi/webmail/WebMail.java:1603 +#: src/src/i2p/susi/webmail/WebMail.java:1682 +msgid "Reply All" +msgstr "Allen Beantwoorden" + +#: src/src/i2p/susi/webmail/WebMail.java:1604 +#: src/src/i2p/susi/webmail/WebMail.java:1683 +msgid "Forward" +msgstr "Doorsturen" + +#: src/src/i2p/susi/webmail/WebMail.java:1605 +#: src/src/i2p/susi/webmail/WebMail.java:1684 +msgid "Delete" +msgstr "Verwijder" + +#: src/src/i2p/susi/webmail/WebMail.java:1606 +msgid "Check Mail" +msgstr "Controlleer Mail" + +#: src/src/i2p/susi/webmail/WebMail.java:1610 +msgid "Sender" +msgstr "Verzender" + +#: src/src/i2p/susi/webmail/WebMail.java:1611 +msgid "Subject" +msgstr "Onderwerp" + +#: src/src/i2p/susi/webmail/WebMail.java:1612 +msgid "Date" +msgstr "Datum" + +#: src/src/i2p/susi/webmail/WebMail.java:1613 +msgid "Size" +msgstr "Grootte" + +#: src/src/i2p/susi/webmail/WebMail.java:1639 +#, java-format +msgid "{0} Bytes" +msgstr "{0} Bytes" + +#: src/src/i2p/susi/webmail/WebMail.java:1644 +msgid "Mark All" +msgstr "Allen Markeren" + +#: src/src/i2p/susi/webmail/WebMail.java:1645 +msgid "Invert Selection" +msgstr "Selectie Omkeren" + +#: src/src/i2p/susi/webmail/WebMail.java:1646 +msgid "Clear" +msgstr "Selectie Wissen" + +#: src/src/i2p/susi/webmail/WebMail.java:1649 +#: src/src/i2p/susi/webmail/WebMail.java:1650 +msgid "First" +msgstr "Eerste" + +#: src/src/i2p/susi/webmail/WebMail.java:1649 +#: src/src/i2p/susi/webmail/WebMail.java:1650 +#: src/src/i2p/susi/webmail/WebMail.java:1685 +msgid "Previous" +msgstr "Vorige" + +#: src/src/i2p/susi/webmail/WebMail.java:1651 +#, java-format +msgid "Page {0} of {1}" +msgstr "Pagina {0} van {1}" + +#: src/src/i2p/susi/webmail/WebMail.java:1653 +#: src/src/i2p/susi/webmail/WebMail.java:1654 +msgid "Last" +msgstr "Laatste" + +#: src/src/i2p/susi/webmail/WebMail.java:1653 +#: src/src/i2p/susi/webmail/WebMail.java:1654 +#: src/src/i2p/susi/webmail/WebMail.java:1686 +msgid "Next" +msgstr "Volgende" + +#: src/src/i2p/susi/webmail/WebMail.java:1657 +msgid "Pagesize:" +msgstr "Paginagrootte:" + +#: src/src/i2p/susi/webmail/WebMail.java:1658 +msgid "Set" +msgstr "Instellen" + +#: src/src/i2p/susi/webmail/WebMail.java:1668 +msgid "Really delete this messages?" +msgstr "Werkelijk deze berichten verwijderen?" + +#: src/src/i2p/susi/webmail/WebMail.java:1668 +msgid "Yes, really delete it!" +msgstr "Ja, verwijder ze!" + +#: src/src/i2p/susi/webmail/WebMail.java:1687 +msgid "Back to Folder" +msgstr "Terug naar de Map" + +#: src/src/i2p/susi/webmail/WebMail.java:1694 +msgid "Date:" +msgstr "Datum:" + +#: src/src/i2p/susi/webmail/WebMail.java:1705 +msgid "Could not fetch mail." +msgstr "Kon de mail niet ophalen." diff --git a/apps/susimail/src/src/i2p/susi/webmail/Messages.java b/apps/susimail/src/src/i2p/susi/webmail/Messages.java new file mode 100644 index 000000000..4a4a1ac9d --- /dev/null +++ b/apps/susimail/src/src/i2p/susi/webmail/Messages.java @@ -0,0 +1,34 @@ +package i2p.susi.webmail; + +import net.i2p.I2PAppContext; +import net.i2p.util.Translate; + +/** + * Translate strings for this package. + * @since 0.8.5 + */ +public class Messages { + private static final String BUNDLE_NAME = "i2p.susi.webmail.messages"; + private final I2PAppContext _context; + + public Messages() { + _context = I2PAppContext.getGlobalContext(); + } + + /** lang in routerconsole.lang property, else current locale */ + public String _(String key) { + return Translate.getString(key, _context, BUNDLE_NAME); + } + + public static String getString(String s) { + return Translate.getString(s, I2PAppContext.getGlobalContext(), BUNDLE_NAME); + } + + public static String getString(String s, Object o) { + return Translate.getString(s, o, I2PAppContext.getGlobalContext(), BUNDLE_NAME); + } + + public static String getString(String s, Object o, Object o2) { + return Translate.getString(s, o, o2, I2PAppContext.getGlobalContext(), BUNDLE_NAME); + } +} diff --git a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java index b356c73d1..7bad6e0b2 100644 --- a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java +++ b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java @@ -27,6 +27,7 @@ import i2p.susi.debug.Debug; import i2p.susi.util.Config; import i2p.susi.util.Folder; import i2p.susi.util.ReadBuffer; +import i2p.susi.webmail.Messages; import i2p.susi.webmail.encoding.DecodingException; import i2p.susi.webmail.encoding.Encoding; import i2p.susi.webmail.encoding.EncodingException; @@ -450,7 +451,7 @@ public class WebMail extends HttpServlet ( mailPart.description != null ? mailPart.description + ", " : "" ) + ( mailPart.filename != null ? mailPart.filename + ", " : "" ) + ( mailPart.name != null ? mailPart.name + ", " : "" ) + - ( mailPart.type != null ? mailPart.type : "unknown" ) ); + ( mailPart.type != null ? mailPart.type : _("unknown") ) ); if( level == 0 && mailPart.version == null ) { /* @@ -469,18 +470,18 @@ public class WebMail extends HttpServlet String encoding = mailPart.encoding; if( encoding == null ) { encoding = "7bit"; - reason += "Warning: no transfer encoding found, fallback to 7bit." + br; + reason += _("Warning: no transfer encoding found, fallback to 7bit.") + br; } Encoding e = EncodingFactory.getEncoding( encoding ); if( e == null ) { showBody = false; - reason += "No encoder found for encoding '" + quoteHTML( encoding ) + "'."; + reason += _("No encoder found for encoding \\''{0}\\''.", quoteHTML( encoding )); } else { String charset = mailPart.charset; if( charset == null ) { charset = "US-ASCII"; - reason += "Warning: no charset found, fallback to US-ASCII." + br; + reason += _("Warning: no charset found, fallback to US-ASCII.") + br; } try { ReadBuffer decoded = e.decode( mailPart.buffer.content, mailPart.beginBody, mailPart.end - mailPart.beginBody ); @@ -494,11 +495,11 @@ public class WebMail extends HttpServlet } catch( UnsupportedEncodingException uee ) { showBody = false; - reason = "Charset '" + quoteHTML( mailPart.charset ) + "' not supported." + br; + reason = _("Charset \\''{0}\\'' not supported.", quoteHTML( mailPart.charset )) + br; } catch (Exception e1) { showBody = false; - reason += "Part (" + ident + ") not shown, because of " + e1.getClass().getName() + br; + reason += _("Part ({0}) not shown, because of {1}", ident, e1.getClass().getName()) + br; } } } @@ -521,11 +522,11 @@ public class WebMail extends HttpServlet if( prepareAttachment ) { if( html ) { out.println( "

    " ); - out.println( "Download attachment (" + ident + "). File is packed into a zipfile for security reasons." ); + out.println( "" + _("Download") + " " + _("attachment ({0}).", ident) + " " + _("File is packed into a zipfile for security reasons.") ); out.println( "

    " ); } else { - out.println( "Attachment (" + ident + ")." ); + out.println( _("Attachment ({0}).", ident) ); } } if( html ) @@ -575,52 +576,52 @@ public class WebMail extends HttpServlet if( buttonPressed( request, LOGIN ) ) { if( user == null || user.length() == 0 ) { - sessionObject.error += "Need username for authentication.
    "; + sessionObject.error += _("Need username for authentication.") + "
    "; doContinue = false; } if( pass == null || pass.length() == 0 ) { - sessionObject.error += "Need password for authentication.
    "; + sessionObject.error += _("Need password for authentication.") + "
    "; doContinue = false; } if( host == null || host.length() == 0 ) { - sessionObject.error += "Need hostname for connect.
    "; + sessionObject.error += _("Need hostname for connect.") + "
    "; doContinue = false; } int pop3PortNo = 0; if( pop3Port == null || pop3Port.length() == 0 ) { - sessionObject.error += "Need port number for pop3 connect.
    "; + sessionObject.error += _("Need port number for pop3 connect.") + "
    "; doContinue = false; } else { try { pop3PortNo = Integer.parseInt( pop3Port ); if( pop3PortNo < 0 || pop3PortNo > 65535 ) { - sessionObject.error += "POP3 port number is not in range 0..65535.
    "; + sessionObject.error += _("POP3 port number is not in range 0..65535.") + "
    "; doContinue = false; } } catch( NumberFormatException nfe ) { - sessionObject.error += "POP3 port number is invalid.
    "; + sessionObject.error += _("POP3 port number is invalid.") + "
    "; doContinue = false; } } int smtpPortNo = 0; if( smtpPort == null || smtpPort.length() == 0 ) { - sessionObject.error += "Need port number for smtp connect.
    "; + sessionObject.error += _("Need port number for smtp connect.") + "
    "; doContinue = false; } else { try { smtpPortNo = Integer.parseInt( smtpPort ); if( smtpPortNo < 0 || smtpPortNo > 65535 ) { - sessionObject.error += "SMTP port number is not in range 0..65535.
    "; + sessionObject.error += _("SMTP port number is not in range 0..65535.") + "
    "; doContinue = false; } } catch( NumberFormatException nfe ) { - sessionObject.error += "SMTP port number is invalid.
    "; + sessionObject.error += _("SMTP port number is invalid.") + "
    "; doContinue = false; } } @@ -667,11 +668,11 @@ public class WebMail extends HttpServlet sessionObject.mailbox.close(); sessionObject.mailbox = null; } - sessionObject.info += "User logged out.
    "; + sessionObject.info += _("User logged out.") + "
    "; sessionObject.state = STATE_AUTH; } else if( sessionObject.mailbox == null ) { - sessionObject.error += "Internal error, lost connection.
    "; + sessionObject.error += _("Internal error, lost connection.") + "
    "; sessionObject.state = STATE_AUTH; } } @@ -767,7 +768,7 @@ public class WebMail extends HttpServlet sessionObject.subject = "Re: " + mail.formattedSubject; StringWriter text = new StringWriter(); PrintWriter pw = new PrintWriter( text ); - pw.println( "On " + mail.formattedDate + " " + sessionObject.replyTo + " wrote:" ); + pw.println( _("On {0} {1} wrote:", mail.formattedDate, sessionObject.replyTo) ); StringWriter text2 = new StringWriter(); PrintWriter pw2 = new PrintWriter( text2 ); showPart( pw2, mail.part, 0, TEXT_ONLY ); @@ -814,7 +815,7 @@ public class WebMail extends HttpServlet pw.println(); pw.println(); pw.println(); - pw.println( "---- begin forwarded mail ----" ); + pw.println( "---- " + _("begin forwarded mail") + " ----" ); pw.println( "From: " + sender ); if( mail.to != null ) { String pad = "To: "; @@ -836,14 +837,14 @@ public class WebMail extends HttpServlet pw.print( "Date: " + mail.dateString ); pw.println(); showPart( pw, mail.part, 0, TEXT_ONLY ); - pw.println( "---- end forwarded mail ----" ); + pw.println( "---- " + _("end forwarded mail") + " ----" ); pw.flush(); sessionObject.body = text.toString(); } sessionObject.state = STATE_NEW; } else { - sessionObject.error += "Could not fetch mail body.
    "; + sessionObject.error += _("Could not fetch mail body.") + "
    "; } } } @@ -871,7 +872,7 @@ public class WebMail extends HttpServlet } catch( NumberFormatException nfe ) { - sessionObject.error += "Message id not valid.
    "; + sessionObject.error += _("Message id not valid.") + "
    "; } } } @@ -954,16 +955,16 @@ public class WebMail extends HttpServlet sessionObject.attachments.add( attachment ); } else { - sessionObject.error += "No Encoding found for " + encodeTo + "
    "; + sessionObject.error += _("No Encoding found for {0}", encodeTo) + "
    "; } } catch (EncodingException e1) { - sessionObject.error += "Could not encode data: " + e1.getMessage(); + sessionObject.error += _("Could not encode data: {0}", e1.getMessage()); } } } catch (IOException e) { - sessionObject.error += "Error reading uploaded file: " + e.getMessage() + "
    "; + sessionObject.error += _("Error reading uploaded file: {0}", e.getMessage()) + "
    "; } } } @@ -1041,7 +1042,7 @@ public class WebMail extends HttpServlet sessionObject.showAttachment = part; } catch( NumberFormatException nfe ) { - sessionObject.error += "Error parsing download parameter."; + sessionObject.error += _("Error parsing download parameter."); } } } @@ -1085,7 +1086,7 @@ public class WebMail extends HttpServlet sessionObject.folder.setPageSize( pageSize ); } catch( NumberFormatException nfe ) { - sessionObject.error += "Invalid pagesize number, resetting to default value.
    "; + sessionObject.error += _("Invalid pagesize number, resetting to default value.") + "
    "; } } if( buttonPressed( request, PREVPAGE ) ) { @@ -1109,7 +1110,7 @@ public class WebMail extends HttpServlet if( m != -1 ) sessionObject.reallyDelete = true; else - sessionObject.error += "No messages marked for deletion.
    "; + sessionObject.error += _("No messages marked for deletion.") + "
    "; } else { int numberDeleted = 0; @@ -1129,7 +1130,7 @@ public class WebMail extends HttpServlet numberDeleted++; } else - sessionObject.error += "Error deleting message: " + sessionObject.mailbox.lastError() + "
    "; + sessionObject.error += _("Error deleting message: {0}", sessionObject.mailbox.lastError()) + "
    "; } } } @@ -1140,7 +1141,7 @@ public class WebMail extends HttpServlet sessionObject.mailbox.performDelete(); sessionObject.folder.setElements( sessionObject.mailbox.getUIDLs() ); sessionObject.pageChanged = true; - sessionObject.info += numberDeleted + " messages deleted."; + sessionObject.info += _("{0} messages deleted.", numberDeleted); } sessionObject.reallyDelete = false; } @@ -1260,11 +1261,11 @@ public class WebMail extends HttpServlet * build subtitle */ if( sessionObject.state == STATE_AUTH ) - subtitle = "Login"; + subtitle = _("Login"); else if( sessionObject.state == STATE_LIST ) - subtitle = "" + sessionObject.mailbox.getNumMails() + " Messages"; + subtitle = _("{0} Messages", sessionObject.mailbox.getNumMails()); else if( sessionObject.state == STATE_SHOW ) - subtitle = "Show Message"; + subtitle = _("Show Message"); response.setContentType( "text/html" ); out.println( "\n" ); @@ -1321,12 +1322,12 @@ public class WebMail extends HttpServlet content = encoding.decode( part.buffer.content, part.beginBody + 2, part.end - part.beginBody - 2 ); } catch (DecodingException e) { - sessionObject.error += "Error decoding content: " + e.getMessage() + "
    "; + sessionObject.error += _("Error decoding content: {0}", e.getMessage()) + "
    "; content = null; } } else { - sessionObject.error += "Error decoding content: No encoder found."; + sessionObject.error += _("Error decoding content: No encoder found."); content = null; } } @@ -1373,7 +1374,7 @@ public class WebMail extends HttpServlet String to = request.getParameter( NEW_TO ); String cc = request.getParameter( NEW_CC ); String bcc = request.getParameter( NEW_BCC ); - String subject = request.getParameter( NEW_SUBJECT, "no subject" ); + String subject = request.getParameter( NEW_SUBJECT, _("no subject") ); String text = request.getParameter( NEW_TEXT, "" ); String prop = Config.getProperty( CONFIG_SENDER_FIXED, "true" ); @@ -1390,13 +1391,13 @@ public class WebMail extends HttpServlet if( from == null || !Mail.validateAddress( from ) ) { ok = false; - sessionObject.error += "Found no valid sender address.
    "; + sessionObject.error += _("Found no valid sender address.") + "
    "; } else { sender = Mail.getAddress( from ); if( sender == null || sender.length() == 0 ) { ok = false; - sessionObject.error += "Found no valid address in '" + quoteHTML( from ) + "'.
    "; + sessionObject.error += _("Found no valid address in \\''{0}\\''.", quoteHTML( from )) + "
    "; } } @@ -1415,19 +1416,19 @@ public class WebMail extends HttpServlet if( recipients.isEmpty() ) { ok = false; - sessionObject.error += "No recipients found.
    "; + sessionObject.error += _("No recipients found.") + "
    "; } Encoding qp = EncodingFactory.getEncoding( "quoted-printable" ); Encoding hl = EncodingFactory.getEncoding( "HEADERLINE" ); if( qp == null ) { ok = false; - sessionObject.error += "Quoted printable encoder not available."; + sessionObject.error += _("Quoted printable encoder not available."); } if( hl == null ) { ok = false; - sessionObject.error += "Header line encoder not available."; + sessionObject.error += _("Header line encoder not available."); } if( ok ) { @@ -1478,7 +1479,7 @@ public class WebMail extends HttpServlet sessionObject.user, sessionObject.pass, sender, recipients.toArray(), body.toString() ) ) { - sessionObject.info += "Mail sent."; + sessionObject.info += _("Mail sent."); if( sessionObject.attachments != null ) sessionObject.attachments.clear(); @@ -1515,11 +1516,11 @@ public class WebMail extends HttpServlet */ private void showCompose( PrintWriter out, SessionObject sessionObject, RequestWrapper request ) { - out.println( button( SEND, "Send" ) + - button( CANCEL, "Cancel" ) + spacer + - (sessionObject.attachments != null && (!sessionObject.attachments.isEmpty()) ? button( DELETE_ATTACHMENT, "Delete Attachment" ) : button2( DELETE_ATTACHMENT, "Delete Attachment" ) ) + spacer + - button( RELOAD, "Reload Config" ) + spacer + - button( LOGOUT, "Logout" ) ); + out.println( button( SEND, _("Send") ) + + button( CANCEL, _("Cancel") ) + spacer + + (sessionObject.attachments != null && (!sessionObject.attachments.isEmpty()) ? button( DELETE_ATTACHMENT, _("Delete Attachment") ) : button2( DELETE_ATTACHMENT, _("Delete Attachment") ) ) + spacer + + button( RELOAD, _("Reload Config") ) + spacer + + button( LOGOUT, _("Logout") ) ); String from = (String)request.getParameter( NEW_FROM ); String fixed = Config.getProperty( CONFIG_SENDER_FIXED, "true" ); @@ -1542,21 +1543,21 @@ public class WebMail extends HttpServlet out.println( "\n" + "\n" + - "\n" + - "\n" + - "\n" + - "\n" + - "\n" + - "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + "\n" + - "" ); + "" ); if( sessionObject.attachments != null && !sessionObject.attachments.isEmpty() ) { boolean wroteHeader = false; for( Iterator it = sessionObject.attachments.iterator(); it.hasNext(); ) { if( !wroteHeader ) { - out.println( "" ); + out.println( "" ); wroteHeader = true; } Attachment attachment = (Attachment)it.next(); @@ -1578,12 +1579,12 @@ public class WebMail extends HttpServlet String smtp = Config.getProperty( CONFIG_PORTS_SMTP, "" + DEFAULT_SMTPPORT ); out.println( "

    From:
    To:
    Cc:
    Bcc:
    Subject:
     Bcc to self
    " + _("From:") + "
    " + _("To:") + "
    " + _("Cc:") + "
    " + _("Bcc:") + "
    " + _("Subject:") + "
     " + _("Bcc to self") + "
    " + "

    New Attachment:
    " + _("New Attachment:") + "
    Attachments:
    " + _("Attachments:") + "
    \n" + - "\n" + - "\n" + - "\n" + - "\n" + - "\n" + - "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + "
    User
    Pass
    Host
    POP3-Port
    SMTP-Port
    Create Account " + button( LOGIN, "Login" ) + "
    " + _("User") + "
    " + _("Pass") + "
    " + _("Host") + "
    " + _("POP3-Port") + "
    " + _("SMTP-Port") + "
    " + _("Create Account") + " " + button( LOGIN, _("Login") ) + "
    "); } /** @@ -1595,21 +1596,21 @@ public class WebMail extends HttpServlet private void showFolder( PrintWriter out, SessionObject sessionObject, RequestWrapper request ) { if( sessionObject.reallyDelete ) { - out.println( "

    Really delete the marked messages? " + button( REALLYDELETE, "Yes, really delete them!" ) + "

    " ); + out.println( "

    " + _("Really delete the marked messages?") + " " + button( REALLYDELETE, _("Yes, really delete them!") ) + "

    " ); } - out.println( button( NEW, "New" ) + spacer + - button( REPLY, "Reply" ) + - button( REPLYALL, "Reply All" ) + - button( FORWARD, "Forward" ) + spacer + - button( DELETE, "Delete" ) + spacer + - button( REFRESH, "Check Mail" ) + spacer + - button( RELOAD, "Reload Config" ) + spacer + - button( LOGOUT, "Logout" ) + "\n" + + out.println( button( NEW, _("New") ) + spacer + + button( REPLY, _("Reply") ) + + button( REPLYALL, _("Reply All") ) + + button( FORWARD, _("Forward") ) + spacer + + button( DELETE, _("Delete") ) + spacer + + button( REFRESH, _("Check Mail") ) + spacer + + button( RELOAD, _("Reload Config") ) + spacer + + button( LOGOUT, _("Logout") ) + "
    \n" + "\n" + - thSpacer + "" + - thSpacer + "" + - thSpacer + "" + - thSpacer + "" ); + thSpacer + "" + + thSpacer + "" + + thSpacer + "" + + thSpacer + "" ); int bg = 0; int i = 0; for( Iterator it = sessionObject.folder.currentPageIterator(); it != null && it.hasNext(); ) { @@ -1635,26 +1636,26 @@ public class WebMail extends HttpServlet ", invert=" + sessionObject.invert + ", clear=" + sessionObject.clear ); out.println( "" ); + ( idChecked ? "checked" : "" ) + ">" + ( RELEASE ? "" : "" + i ) + "" ); bg = 1 - bg; i++; } out.println( "\n

    " + sortHeader( SORT_SENDER, "Sender" ) + "" + sortHeader( SORT_SUBJECT, "Subject" ) + "" + sortHeader( SORT_DATE, "Date" ) + sortHeader( SORT_ID, "" ) + "" + sortHeader( SORT_SIZE, "Size" ) + "
    " + sortHeader( SORT_SENDER, _("Sender") ) + "" + sortHeader( SORT_SUBJECT, _("Subject") ) + "" + sortHeader( SORT_DATE, _("Date") ) + sortHeader( SORT_ID, "" ) + "" + sortHeader( SORT_SIZE, _("Size") ) + "
    " + ( RELEASE ? "" : "" + i ) + "" + link + mail.shortSender + " " + link + mail.shortSubject + " " + mail.formattedDate + " " + mail.size + " Bytes
    " + link + mail.shortSender + " " + link + mail.shortSubject + " " + mail.formattedDate + " " + _("{0} Bytes", mail.size) + "

    " + - button( MARKALL, "Mark All" ) + - button( INVERT, "Invert Selection" ) + - button( CLEAR, "Clear" ) + + button( MARKALL, _("Mark All") ) + + button( INVERT, _("Invert Selection") ) + + button( CLEAR, _("Clear") ) + "
    " + ( sessionObject.folder.isFirstPage() ? - button2( FIRSTPAGE, "First" ) + button2( PREVPAGE, "Previous" ) : - button( FIRSTPAGE, "First" ) + button( PREVPAGE, "Previous" ) ) + - "      Page " + sessionObject.folder.getCurrentPage() + " of " + sessionObject.folder.getPages() + "      " + + button2( FIRSTPAGE, _("First") ) + button2( PREVPAGE, _("Previous") ) : + button( FIRSTPAGE, _("First") ) + button( PREVPAGE, _("Previous") ) ) + + "      " + _("Page {0} of {1}", sessionObject.folder.getCurrentPage(), sessionObject.folder.getPages()) + "      " + ( sessionObject.folder.isLastPage() ? - button2( NEXTPAGE, "Next" ) + button2( LASTPAGE, "Last" ) : - button( NEXTPAGE, "Next" ) + button( LASTPAGE, "Last" ) ) + + button2( NEXTPAGE, _("Next") ) + button2( LASTPAGE, _("Last") ) : + button( NEXTPAGE, _("Next") ) + button( LASTPAGE, _("Last") ) ) + "
    " + - "Pagesize: " + - button( SETPAGESIZE, "Set" ) ); + _("Pagesize:") + " " + + button( SETPAGESIZE, _("Set") ) ); } /** * @@ -1664,7 +1665,7 @@ public class WebMail extends HttpServlet private void showMessage( PrintWriter out, SessionObject sessionObject ) { if( sessionObject.reallyDelete ) { - out.println( "

    Really delete this messages? " + button( REALLYDELETE, "Yes, really delete it!" ) + "

    " ); + out.println( "

    " + _("Really delete this messages?") + " " + button( REALLYDELETE, _("Yes, really delete it!") ) + "

    " ); } Mail mail = sessionObject.mailCache.getMail( sessionObject.showUIDL, MailCache.FETCH_ALL ); if( mail != null && mail.body != null && mail.part == null ) { @@ -1676,33 +1677,48 @@ public class WebMail extends HttpServlet out.println( quoteHTML( new String( mail.body.content, mail.body.offset, mail.body.length ) ) ); out.println( "-->" ); } - out.println( button( NEW, "New" ) + spacer + - button( REPLY, "Reply" ) + - button( REPLYALL, "Reply All" ) + - button( FORWARD, "Forward" ) + spacer + - button( DELETE, "Delete" ) + spacer + - ( sessionObject.folder.isFirstElement( sessionObject.showUIDL ) ? button2( PREV, "Previous" ) : button( PREV, "Previous" ) ) + - ( sessionObject.folder.isLastElement( sessionObject.showUIDL ) ? button2( NEXT, "Next" ) : button( NEXT, "Next" ) ) + spacer + - button( LIST, "Back to Folder" ) + spacer + - button( RELOAD, "Reload Config" ) + spacer + - button( LOGOUT, "Logout" ) ); + out.println( button( NEW, _("New") ) + spacer + + button( REPLY, _("Reply") ) + + button( REPLYALL, _("Reply All") ) + + button( FORWARD, _("Forward") ) + spacer + + button( DELETE, _("Delete") ) + spacer + + ( sessionObject.folder.isFirstElement( sessionObject.showUIDL ) ? button2( PREV, _("Previous") ) : button( PREV, _("Previous") ) ) + + ( sessionObject.folder.isLastElement( sessionObject.showUIDL ) ? button2( NEXT, _("Next") ) : button( NEXT, _("Next") ) ) + spacer + + button( LIST, _("Back to Folder") ) + spacer + + button( RELOAD, _("Reload Config") ) + spacer + + button( LOGOUT, _("Logout") ) ); if( mail != null ) { out.println( "\n" + "\n" + - "\n" + - "\n" + - "\n" + + "\n" + + "\n" + + "\n" + "" ); if( mail.body != null ) { showPart( out, mail.part, 0, SHOW_HTML ); } else { - out.println( "" ); + out.println( "" ); } } else { - out.println( "" ); + out.println( "" ); } out.println( "\n

    From:" + quoteHTML( mail.formattedSender ) + "
    Date:" + mail.quotedDate + "
    Subject:" + quoteHTML( mail.formattedSubject ) + "
    " + _("From:") + "" + quoteHTML( mail.formattedSender ) + "
    " + _("Date:") + "" + mail.quotedDate + "
    " + _("Subject:") + "" + quoteHTML( mail.formattedSubject ) + "

    Could not fetch mail body.

    " + _("Could not fetch mail body.") + "

    Could not fetch mail.

    " + _("Could not fetch mail.") + "


    " ); } + + /** translate */ + private static String _(String s) { + return Messages.getString(s); + } + + /** translate */ + private static String _(String s, Object o) { + return Messages.getString(s, o); + } + + /** translate */ + private static String _(String s, Object o, Object o2) { + return Messages.getString(s, o, o2); + } } diff --git a/build.xml b/build.xml index 396c4909f..678abccf9 100644 --- a/build.xml +++ b/build.xml @@ -223,6 +223,7 @@ + From 1657f151f6a851e3c1d05c2e737732246940da62 Mon Sep 17 00:00:00 2001 From: duck Date: Fri, 11 Mar 2011 21:53:18 +0000 Subject: [PATCH 287/463] Update history --- history.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/history.txt b/history.txt index 9f778d525..6c5591b44 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,6 @@ +2011-03-11 duck + * Susimail: translation support, including dutch translation. + 2011-03-10 zzz * configclients.jsp: Split form up, fix HTML warnings * configui.jsp: Fix lang setting broken by previous nonce change From 5def26ab9302d3841c4c996d15520b518e6fcf46 Mon Sep 17 00:00:00 2001 From: duck Date: Fri, 11 Mar 2011 22:23:25 +0000 Subject: [PATCH 288/463] Add Susimail to Transifex config --- .tx/config | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.tx/config b/.tx/config index e0c7bde27..114a89996 100644 --- a/.tx/config +++ b/.tx/config @@ -24,6 +24,11 @@ trans.nl = apps/susidns/locale/messages_nl.po trans.ru = apps/susidns/locale/messages_ru.po trans.zh_CN = apps/susidns/locale/messages_zh.po +[I2P.susimail] +source_file = apps/susimail/locale/messages_en.po +source_lang = en +trans.nl = apps/susimail/locale/messages_nl.po + [I2P.i2psnark] source_file = apps/i2psnark/locale/messages_en.po source_lang = en From 133017d2dbd9b323508689085210d141d7914e1b Mon Sep 17 00:00:00 2001 From: m1xxy Date: Sat, 12 Mar 2011 02:29:13 +0000 Subject: [PATCH 289/463] Susimail translation de --- apps/susimail/locale/messages_de.po | 435 ++++++++++++++++++++++++++++ 1 file changed, 435 insertions(+) create mode 100644 apps/susimail/locale/messages_de.po diff --git a/apps/susimail/locale/messages_de.po b/apps/susimail/locale/messages_de.po new file mode 100644 index 000000000..86455c9d1 --- /dev/null +++ b/apps/susimail/locale/messages_de.po @@ -0,0 +1,435 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the susimail package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P susimail\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-03-11 20:33+0000\n" +"PO-Revision-Date: 2011-03-12 03:18+0100\n" +"Last-Translator: mixxy \n" +"Language-Team: mixxy \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: src/src/i2p/susi/webmail/WebMail.java:454 +msgid "unknown" +msgstr "unbekannt" + +#: src/src/i2p/susi/webmail/WebMail.java:473 +msgid "Warning: no transfer encoding found, fallback to 7bit." +msgstr "Warnung: keine Übertragungskodierung gefunden, Rückgriff auf 7-bit" + +#: src/src/i2p/susi/webmail/WebMail.java:478 +#, java-format +msgid "No encoder found for encoding \\''{0}\\''." +msgstr "kein Kodierer für Kodierung \\''{0}\\'' gefunden" + +#: src/src/i2p/susi/webmail/WebMail.java:484 +msgid "Warning: no charset found, fallback to US-ASCII." +msgstr "Warnung: kein Zeichensatz gefunden; Rückgriff auf US-ASCII" + +#: src/src/i2p/susi/webmail/WebMail.java:498 +#, java-format +msgid "Charset \\''{0}\\'' not supported." +msgstr "Zeichensatz \\''{0}\\'' nicht unterstützt" + +#: src/src/i2p/susi/webmail/WebMail.java:502 +#, java-format +msgid "Part ({0}) not shown, because of {1}" +msgstr "Teil ({0}) aufgrund von {1} nicht angezeigt" + +#: src/src/i2p/susi/webmail/WebMail.java:525 +msgid "Download" +msgstr "Herunterladen" + +#: src/src/i2p/susi/webmail/WebMail.java:525 +msgid "File is packed into a zipfile for security reasons." +msgstr "Die Datei wurde aus Sicherheitsgründen in ein Zip-Archiv gepackt." + +#: src/src/i2p/susi/webmail/WebMail.java:525 +#, java-format +msgid "attachment ({0})." +msgstr "Anhang ({0})." + +#: src/src/i2p/susi/webmail/WebMail.java:529 +#, java-format +msgid "Attachment ({0})." +msgstr "Anhang ({0})." + +#: src/src/i2p/susi/webmail/WebMail.java:579 +msgid "Need username for authentication." +msgstr "Benutzername zur Authentifizierung benötigt" + +#: src/src/i2p/susi/webmail/WebMail.java:583 +msgid "Need password for authentication." +msgstr "Passwort zur Authentifizierung benötigt" + +#: src/src/i2p/susi/webmail/WebMail.java:587 +msgid "Need hostname for connect." +msgstr "Host-Name für die Verbindung benötigt" + +#: src/src/i2p/susi/webmail/WebMail.java:592 +msgid "Need port number for pop3 connect." +msgstr "POP3-Port für die Verbindung benötigt" + +#: src/src/i2p/susi/webmail/WebMail.java:599 +msgid "POP3 port number is not in range 0..65535." +msgstr "Der POP3-Port liegt nicht im Bereich 0-65535." + +#: src/src/i2p/susi/webmail/WebMail.java:605 +msgid "POP3 port number is invalid." +msgstr "ungültiger POP3-Port" + +#: src/src/i2p/susi/webmail/WebMail.java:611 +msgid "Need port number for smtp connect." +msgstr "SMTP-Port für die SMTP-Verbindung benötigt" + +#: src/src/i2p/susi/webmail/WebMail.java:618 +msgid "SMTP port number is not in range 0..65535." +msgstr "Der SMTP-Port liegt nicht im Bereich 0-65535." + +#: src/src/i2p/susi/webmail/WebMail.java:624 +msgid "SMTP port number is invalid." +msgstr "ungültiger SMTP-Port" + +#: src/src/i2p/susi/webmail/WebMail.java:671 +msgid "User logged out." +msgstr "Benutzer wurde abgemeldet" + +#: src/src/i2p/susi/webmail/WebMail.java:675 +msgid "Internal error, lost connection." +msgstr "interner Fehler; Verbindung unterbrochen" + +#: src/src/i2p/susi/webmail/WebMail.java:771 +#, java-format +msgid "On {0} {1} wrote:" +msgstr "Am {0} schrieb {1}:" + +#: src/src/i2p/susi/webmail/WebMail.java:818 +msgid "begin forwarded mail" +msgstr "Anfang weitergeleiteter Nachricht" + +#: src/src/i2p/susi/webmail/WebMail.java:840 +msgid "end forwarded mail" +msgstr "Ende weitergeleiteter Nachricht" + +#: src/src/i2p/susi/webmail/WebMail.java:847 +#: src/src/i2p/susi/webmail/WebMail.java:1701 +msgid "Could not fetch mail body." +msgstr "konnte den Körper der Nachricht nicht holen" + +#: src/src/i2p/susi/webmail/WebMail.java:875 +msgid "Message id not valid." +msgstr "ungültige Nachrichten-ID" + +#: src/src/i2p/susi/webmail/WebMail.java:958 +#, java-format +msgid "No Encoding found for {0}" +msgstr "keine Kodierung für {0} gefunden" + +#: src/src/i2p/susi/webmail/WebMail.java:962 +#, java-format +msgid "Could not encode data: {0}" +msgstr "Konte Daten nicht kodieren: {0}" + +#: src/src/i2p/susi/webmail/WebMail.java:967 +#, java-format +msgid "Error reading uploaded file: {0}" +msgstr "Fehler beim Lesen der hochzuladenen Datei: {0}" + +#: src/src/i2p/susi/webmail/WebMail.java:1045 +msgid "Error parsing download parameter." +msgstr "Fehler beim Parsen des Download-Parameters" + +#: src/src/i2p/susi/webmail/WebMail.java:1089 +msgid "Invalid pagesize number, resetting to default value." +msgstr "ungültige Seitengröße, wird auf Standardwert zurückgesetzt" + +#: src/src/i2p/susi/webmail/WebMail.java:1113 +msgid "No messages marked for deletion." +msgstr "Keine Nachrichten zum Löschen markiert" + +#: src/src/i2p/susi/webmail/WebMail.java:1133 +#, java-format +msgid "Error deleting message: {0}" +msgstr "Fehler beim Löschen der Nachricht: {0}" + +#: src/src/i2p/susi/webmail/WebMail.java:1144 +#, java-format +msgid "{0} messages deleted." +msgstr "{0} Nachrichten gelöscht" + +#: src/src/i2p/susi/webmail/WebMail.java:1264 +#: src/src/i2p/susi/webmail/WebMail.java:1587 +msgid "Login" +msgstr "Anmelden" + +#: src/src/i2p/susi/webmail/WebMail.java:1266 +#, java-format +msgid "{0} Messages" +msgstr "{0} Nachrichten" + +#: src/src/i2p/susi/webmail/WebMail.java:1268 +msgid "Show Message" +msgstr "Nachricht anzeigen" + +#: src/src/i2p/susi/webmail/WebMail.java:1325 +#, java-format +msgid "Error decoding content: {0}" +msgstr "Fehler beim Dekodieren des Inhalts: {0}" + +#: src/src/i2p/susi/webmail/WebMail.java:1330 +msgid "Error decoding content: No encoder found." +msgstr "Fehler bei der Dekodierung: kein Kodierer gefunden" + +#: src/src/i2p/susi/webmail/WebMail.java:1377 +msgid "no subject" +msgstr "kein Betreff" + +#: src/src/i2p/susi/webmail/WebMail.java:1394 +msgid "Found no valid sender address." +msgstr "Keine gültige Absenderadresse vorgefunden" + +#: src/src/i2p/susi/webmail/WebMail.java:1400 +#, java-format +msgid "Found no valid address in \\''{0}\\''." +msgstr "keine gültige Adresse in \\''{0}\\''" + +#: src/src/i2p/susi/webmail/WebMail.java:1419 +msgid "No recipients found." +msgstr "Keine Empfänger gefunden" + +#: src/src/i2p/susi/webmail/WebMail.java:1426 +msgid "Quoted printable encoder not available." +msgstr "Der angegebene druckbare Kodierer ist nicht verfügbar." + +#: src/src/i2p/susi/webmail/WebMail.java:1431 +msgid "Header line encoder not available." +msgstr "Kodierer für die Kopfzeilen nicht verfügbar" + +#: src/src/i2p/susi/webmail/WebMail.java:1482 +msgid "Mail sent." +msgstr "Mail versandt." + +#: src/src/i2p/susi/webmail/WebMail.java:1519 +msgid "Send" +msgstr "Senden" + +#: src/src/i2p/susi/webmail/WebMail.java:1520 +msgid "Cancel" +msgstr "Abbruch" + +#: src/src/i2p/susi/webmail/WebMail.java:1521 +msgid "Delete Attachment" +msgstr "Anhang löschen" + +#: src/src/i2p/susi/webmail/WebMail.java:1522 +#: src/src/i2p/susi/webmail/WebMail.java:1607 +#: src/src/i2p/susi/webmail/WebMail.java:1688 +msgid "Reload Config" +msgstr "Einstellungen neu laden" + +#: src/src/i2p/susi/webmail/WebMail.java:1523 +#: src/src/i2p/susi/webmail/WebMail.java:1608 +#: src/src/i2p/susi/webmail/WebMail.java:1689 +msgid "Logout" +msgstr "Abmelden" + +#: src/src/i2p/susi/webmail/WebMail.java:1546 +#: src/src/i2p/susi/webmail/WebMail.java:1693 +msgid "From:" +msgstr "Von:" + +#: src/src/i2p/susi/webmail/WebMail.java:1547 +msgid "To:" +msgstr "An:" + +#: src/src/i2p/susi/webmail/WebMail.java:1548 +msgid "Cc:" +msgstr "Kopie an:" + +#: src/src/i2p/susi/webmail/WebMail.java:1549 +msgid "Bcc:" +msgstr "Blindkopie an:" + +#: src/src/i2p/susi/webmail/WebMail.java:1550 +#: src/src/i2p/susi/webmail/WebMail.java:1695 +msgid "Subject:" +msgstr "Betreff:" + +#: src/src/i2p/susi/webmail/WebMail.java:1551 +msgid "Bcc to self" +msgstr "Blindkopie zurück?" + +#: src/src/i2p/susi/webmail/WebMail.java:1554 +msgid "New Attachment:" +msgstr "Neuer Anhang:" + +#: src/src/i2p/susi/webmail/WebMail.java:1554 +msgid "Upload File" +msgstr "Datei hochladen" + +#: src/src/i2p/susi/webmail/WebMail.java:1560 +msgid "Attachments:" +msgstr "Anhänge:" + +#: src/src/i2p/susi/webmail/WebMail.java:1582 +msgid "User" +msgstr "Benutzer" + +#: src/src/i2p/susi/webmail/WebMail.java:1583 +msgid "Pass" +msgstr "Passwort" + +#: src/src/i2p/susi/webmail/WebMail.java:1584 +msgid "Host" +msgstr "Host" + +#: src/src/i2p/susi/webmail/WebMail.java:1585 +msgid "POP3-Port" +msgstr "POP3-Port" + +#: src/src/i2p/susi/webmail/WebMail.java:1586 +msgid "SMTP-Port" +msgstr "SMTP-Port" + +#: src/src/i2p/susi/webmail/WebMail.java:1587 +msgid "Create Account" +msgstr "Konto anlegen" + +#: src/src/i2p/susi/webmail/WebMail.java:1587 +msgid "Reset" +msgstr "Zurücksetzen" + +#: src/src/i2p/susi/webmail/WebMail.java:1599 +msgid "Really delete the marked messages?" +msgstr "Sollen die markierten Nachrichten wirklich gelöscht werden?" + +#: src/src/i2p/susi/webmail/WebMail.java:1599 +msgid "Yes, really delete them!" +msgstr "Ja, löschen" + +#: src/src/i2p/susi/webmail/WebMail.java:1601 +#: src/src/i2p/susi/webmail/WebMail.java:1680 +msgid "New" +msgstr "Verfassen" + +#: src/src/i2p/susi/webmail/WebMail.java:1602 +#: src/src/i2p/susi/webmail/WebMail.java:1681 +msgid "Reply" +msgstr "Antworten" + +#: src/src/i2p/susi/webmail/WebMail.java:1603 +#: src/src/i2p/susi/webmail/WebMail.java:1682 +msgid "Reply All" +msgstr "Allen antworten" + +#: src/src/i2p/susi/webmail/WebMail.java:1604 +#: src/src/i2p/susi/webmail/WebMail.java:1683 +msgid "Forward" +msgstr "Weiterleiten" + +#: src/src/i2p/susi/webmail/WebMail.java:1605 +#: src/src/i2p/susi/webmail/WebMail.java:1684 +msgid "Delete" +msgstr "Löschen" + +#: src/src/i2p/susi/webmail/WebMail.java:1606 +msgid "Check Mail" +msgstr "Nachrichten abrufen" + +#: src/src/i2p/susi/webmail/WebMail.java:1610 +msgid "Sender" +msgstr "Absender" + +#: src/src/i2p/susi/webmail/WebMail.java:1611 +msgid "Subject" +msgstr "Betreff" + +#: src/src/i2p/susi/webmail/WebMail.java:1612 +msgid "Date" +msgstr "Datum" + +#: src/src/i2p/susi/webmail/WebMail.java:1613 +msgid "Size" +msgstr "Größe" + +#: src/src/i2p/susi/webmail/WebMail.java:1639 +#, java-format +msgid "{0} Bytes" +msgstr "{0} Bytes" + +#: src/src/i2p/susi/webmail/WebMail.java:1644 +msgid "Mark All" +msgstr "Alles markieren" + +#: src/src/i2p/susi/webmail/WebMail.java:1645 +msgid "Invert Selection" +msgstr "Markierung umkehren" + +#: src/src/i2p/susi/webmail/WebMail.java:1646 +msgid "Clear" +msgstr "Verwerfen" + +#: src/src/i2p/susi/webmail/WebMail.java:1649 +#: src/src/i2p/susi/webmail/WebMail.java:1650 +msgid "First" +msgstr "erste" + +#: src/src/i2p/susi/webmail/WebMail.java:1649 +#: src/src/i2p/susi/webmail/WebMail.java:1650 +#: src/src/i2p/susi/webmail/WebMail.java:1685 +msgid "Previous" +msgstr "vorherige" + +#: src/src/i2p/susi/webmail/WebMail.java:1651 +#, java-format +msgid "Page {0} of {1}" +msgstr "Seite {0} von {1}" + +#: src/src/i2p/susi/webmail/WebMail.java:1653 +#: src/src/i2p/susi/webmail/WebMail.java:1654 +msgid "Last" +msgstr "letzte" + +#: src/src/i2p/susi/webmail/WebMail.java:1653 +#: src/src/i2p/susi/webmail/WebMail.java:1654 +#: src/src/i2p/susi/webmail/WebMail.java:1686 +msgid "Next" +msgstr "nächste" + +#: src/src/i2p/susi/webmail/WebMail.java:1657 +msgid "Pagesize:" +msgstr "Seitengröße" + +#: src/src/i2p/susi/webmail/WebMail.java:1658 +msgid "Set" +msgstr "festlegen" + +#: src/src/i2p/susi/webmail/WebMail.java:1668 +msgid "Really delete this messages?" +msgstr "Diese Nachricht wirklich löschen?" + +#: src/src/i2p/susi/webmail/WebMail.java:1668 +msgid "Yes, really delete it!" +msgstr "Ja, wirklich löschen" + +#: src/src/i2p/susi/webmail/WebMail.java:1687 +msgid "Back to Folder" +msgstr "Zurück zur Übersicht" + +#: src/src/i2p/susi/webmail/WebMail.java:1694 +msgid "Date:" +msgstr "Datum:" + +#: src/src/i2p/susi/webmail/WebMail.java:1705 +msgid "Could not fetch mail." +msgstr "Konnte Nachrichten nicht abrufen." + From 7f616f20ae0f19f52660a80735da8e3a66526a10 Mon Sep 17 00:00:00 2001 From: m1xxy Date: Sat, 12 Mar 2011 02:37:18 +0000 Subject: [PATCH 290/463] Susimail fix typo --- apps/susimail/locale/messages_de.po | 2 +- apps/susimail/src/src/i2p/susi/webmail/WebMail.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/susimail/locale/messages_de.po b/apps/susimail/locale/messages_de.po index 86455c9d1..e74ce9820 100644 --- a/apps/susimail/locale/messages_de.po +++ b/apps/susimail/locale/messages_de.po @@ -414,7 +414,7 @@ msgid "Set" msgstr "festlegen" #: src/src/i2p/susi/webmail/WebMail.java:1668 -msgid "Really delete this messages?" +msgid "Really delete this message?" msgstr "Diese Nachricht wirklich löschen?" #: src/src/i2p/susi/webmail/WebMail.java:1668 diff --git a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java index 7bad6e0b2..02506a646 100644 --- a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java +++ b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java @@ -1665,7 +1665,7 @@ public class WebMail extends HttpServlet private void showMessage( PrintWriter out, SessionObject sessionObject ) { if( sessionObject.reallyDelete ) { - out.println( "

    " + _("Really delete this messages?") + " " + button( REALLYDELETE, _("Yes, really delete it!") ) + "

    " ); + out.println( "

    " + _("Really delete this message?") + " " + button( REALLYDELETE, _("Yes, really delete it!") ) + "

    " ); } Mail mail = sessionObject.mailCache.getMail( sessionObject.showUIDL, MailCache.FETCH_ALL ); if( mail != null && mail.body != null && mail.part == null ) { From 46e8add16aa041a3a75a8f2853eba4b8394b2861 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 12 Mar 2011 16:08:11 +0000 Subject: [PATCH 291/463] * Blocklist: Add bogons since they won't change any more --- installer/resources/blocklist.txt | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/installer/resources/blocklist.txt b/installer/resources/blocklist.txt index 99570520c..6108d1782 100644 --- a/installer/resources/blocklist.txt +++ b/installer/resources/blocklist.txt @@ -4,7 +4,8 @@ # edit the file in the configuration directory, NOT the install directory. # # Blocking is now enabled by default. -# To disable blocking, set router.blocklist.enable=false on configadvanced.jsp and restart. +# To disable blocking, set router.blocklist.enable=false on configadvanced.jsp, +# or simply delete this file or remove all the entries below, and restart. # # Add additional entries as desired, sorting not required. # This file is only read at router startup. @@ -14,8 +15,8 @@ # For example, http://www.bluetack.co.uk/config/splist.zip is very broad and includes Tor users, it is not recommended. # A more reasonable list: http://www.bluetack.co.uk/config/level1.zip # -# You may also wish to add the bogons from http://www.cymru.com/Documents/bogon-list.html , -# but you will have to update your blocklist manually as IP ranges are assigned. +# We have included the bogons from http://www.team-cymru.org/Services/Bogons/http.html , +# but you will have to update your blocklist manually if the bogon list changes. # You must update this list yourself, it is not overwritten by the update process. # # * Acceptable formats (IPV4 only): @@ -34,7 +35,19 @@ # * For further information and downloads: # * http://www.bluetack.co.uk/forums/index.php?autocom=faq&CODE=02&qid=17 # * http://blocklist.googlepages.com/ -# * http://www.cymru.com/Documents/bogon-list.html +# * http://www.team-cymru.org/Services/Bogons/http.html # Chinese Floodfill Flooder:159.226.40.7 Friend of the Chinese Floodfill Flooder:159.226.40.3 +The Team Cymru Bogon List v6.8 03 FEB 2011:0.0.0.0/8 +The Team Cymru Bogon List v6.8 03 FEB 2011:10.0.0.0/8 +The Team Cymru Bogon List v6.8 03 FEB 2011:127.0.0.0/8 +The Team Cymru Bogon List v6.8 03 FEB 2011:169.254.0.0/16 +The Team Cymru Bogon List v6.8 03 FEB 2011:172.16.0.0/12 +The Team Cymru Bogon List v6.8 03 FEB 2011:192.0.0.0/24 +The Team Cymru Bogon List v6.8 03 FEB 2011:192.0.2.0/24 +The Team Cymru Bogon List v6.8 03 FEB 2011:192.168.0.0/16 +The Team Cymru Bogon List v6.8 03 FEB 2011:198.18.0.0/15 +The Team Cymru Bogon List v6.8 03 FEB 2011:198.51.100.0/24 +The Team Cymru Bogon List v6.8 03 FEB 2011:203.0.113.0/24 +The Team Cymru Bogon List v6.8 03 FEB 2011:224.0.0.0/3 From cfc17d59b4b90ca40a07e2efe4dd7da4d32bf2c1 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 12 Mar 2011 16:08:52 +0000 Subject: [PATCH 292/463] * BuildHandler: Loop double-check --- .../src/net/i2p/router/tunnel/pool/BuildHandler.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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 afdd0600b..d604c1bf3 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java +++ b/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java @@ -418,9 +418,19 @@ class BuildHandler { if ((!isOutEnd) && _context.routerHash().equals(nextPeer)) { // We are 2 hops in a row? Drop it without a reply. // No way to recognize if we are every other hop, but see below - _log.error("Dropping build request where we are in two consecutive hops"); + _log.error("Dropping build request, we the next hop"); return; } + // previous test should be sufficient to keep it from getting here but maybe not? + if (!isInGW) { + Hash from = state.fromHash; + if (from == null) + from = state.from.calculateHash(); + if (_context.routerHash().equals(from)) { + _log.error("Dropping build request, we are the previous hop"); + return; + } + } if ((!isOutEnd) && (!isInGW)) { Hash from = state.fromHash; if (from == null) From 8e672ea548b497150ecc1b03596080b1a69b7312 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 12 Mar 2011 16:09:57 +0000 Subject: [PATCH 293/463] * LogWriter: Prevent NPE after permissions fail --- core/java/src/net/i2p/util/LogWriter.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/java/src/net/i2p/util/LogWriter.java b/core/java/src/net/i2p/util/LogWriter.java index 51108e18b..c141cc243 100644 --- a/core/java/src/net/i2p/util/LogWriter.java +++ b/core/java/src/net/i2p/util/LogWriter.java @@ -77,7 +77,8 @@ class LogWriter implements Runnable { writeRecord(rec); } try { - _currentOut.flush(); + if (_currentOut != null) + _currentOut.flush(); } catch (IOException ioe) { if (++_diskFullMessageCount < MAX_DISKFULL_MESSAGES) System.err.println("Error writing the router log - disk full? " + ioe); @@ -180,7 +181,8 @@ class LogWriter implements Runnable { try { _currentOut = new BufferedWriter(new OutputStreamWriter(new SecureFileOutputStream(f), "UTF-8")); } catch (IOException ioe) { - System.err.println("Error rotating into [" + f.getAbsolutePath() + "]" + ioe); + if (++_diskFullMessageCount < MAX_DISKFULL_MESSAGES) + System.err.println("Error creating log file [" + f.getAbsolutePath() + "]" + ioe); } } From 0f91899aa9709f5afe5fc9da9997158a5fc23762 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 12 Mar 2011 16:11:10 +0000 Subject: [PATCH 294/463] * Console: Fix HTML errors in form message box, logs.jsp, netdb.jsp, profiles.jsp, stats.jsp --- .../java/src/net/i2p/router/web/FormHandler.java | 12 ++++++------ .../java/src/net/i2p/router/web/LogsHelper.java | 3 +-- .../java/src/net/i2p/router/web/NetDbRenderer.java | 9 ++++----- .../net/i2p/router/web/ProfileOrganizerRenderer.java | 3 +-- .../java/src/net/i2p/router/web/StatsGenerator.java | 3 ++- .../resources/themes/console/classic/console.css | 4 ++-- installer/resources/themes/console/dark/console.css | 4 ++-- installer/resources/themes/console/light/console.css | 4 ++-- .../resources/themes/console/midnight/console.css | 4 ++-- 9 files changed, 22 insertions(+), 24 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java index 9fa61080d..2f16cd359 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java @@ -95,18 +95,18 @@ public class FormHandler { if (_errors.isEmpty() && _notices.isEmpty()) return ""; StringBuilder buf = new StringBuilder(512); - buf.append("

    "); + buf.append("

    "); if (!_errors.isEmpty()) { - buf.append(""); + buf.append("
    "); buf.append(render(_errors)); - buf.append(""); + buf.append("
    "); } if (!_notices.isEmpty()) { - buf.append(""); + buf.append("
    "); buf.append(render(_notices)); - buf.append(""); + buf.append("
    "); } - buf.append("

    "); + buf.append("
    "); return buf.toString(); } 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 3ccd355c2..f4c42a23b 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java @@ -53,7 +53,6 @@ public class LogsHelper extends HelperBase { boolean colorize = Boolean.valueOf(_context.getProperty("routerconsole.logs.color")).booleanValue(); StringBuilder buf = new StringBuilder(16*1024); buf.append("
      "); - buf.append("\n"); for (int i = msgs.size(); i > 0; i--) { String msg = msgs.get(i - 1); msg = msg.replace("&", "&").replace("<", "<").replace(">", ">"); @@ -87,7 +86,7 @@ public class LogsHelper extends HelperBase { } buf.append("\n"); } - buf.append("
    \n"); + buf.append("\n"); return buf.toString(); } 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 048e91787..0fda16b63 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java @@ -264,7 +264,7 @@ public class NetDbRenderer { buf.append("\n"); - } else { } - buf.append("\n"); + buf.append("
    ") .append(_("Network Database Router Statistics")) - .append("
    "); + .append("
    "); // versions table List versionList = new ArrayList(versions.objects()); if (!versionList.isEmpty()) { @@ -345,9 +345,9 @@ public class NetDbRenderer { } else { buf.append("" + _("Peer info for") + ": ").append(hash).append("\n"); if (full) { - buf.append("[Back]
    \n"); + buf.append("[Back]
    \n"); } else { - buf.append("[").append(_("Full entry")).append("]
    \n"); + buf.append("[").append(_("Full entry")).append("]
    \n"); } } @@ -393,9 +393,8 @@ public class NetDbRenderer { buf.append(DataHelper.stripHTML(key)).append(" = ").append(DataHelper.stripHTML(val)).append("
    \n"); } buf.append("
    \n"); } private static final int SSU = 1; diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java index f452df2ba..3f4d28b8a 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java @@ -213,7 +213,6 @@ class ProfileOrganizerRenderer { buf.append("
    ").append(DataHelper.stripHTML(info.getCapabilities())).append(" ").append(num(prof.getIntegrationValue())).append("
    + buf.append("\n"); + int cur = 1; + Set clients = _context.clientManager().listClients(); + for (Destination dest : clients) { + buf.append("\n"); + cur++; + } + buf.append("
    \n"); TunnelPoolSettings exploratoryIn = _context.tunnelManager().getInboundSettings(); TunnelPoolSettings exploratoryOut = _context.tunnelManager().getOutboundSettings(); - buf.append(""); renderForm(buf, 0, "exploratory", _("Exploratory tunnels"), exploratoryIn, exploratoryOut); - int cur = 1; - Set clients = _context.clientManager().listClients(); - for (Iterator iter = clients.iterator(); iter.hasNext(); ) { - Destination dest = (Destination)iter.next(); + cur = 1; + for (Destination dest : clients) { TunnelPoolSettings in = _context.tunnelManager().getInboundSettings(dest.calculateHash()); TunnelPoolSettings out = _context.tunnelManager().getOutboundSettings(dest.calculateHash()); @@ -41,9 +48,7 @@ public class ConfigTunnelsHelper extends HelperBase { name = dest.calculateHash().toBase64().substring(0,6); String prefix = dest.calculateHash().toBase64().substring(0,4); - buf.append(""); - renderForm(buf, cur, prefix, _("Client tunnels for") + " " + _(name), in, out); + renderForm(buf, cur, prefix, _("Client tunnels for {0}", _(name)), in, out); cur++; } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHelper.java index 2e03ad93f..10b587db6 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHelper.java @@ -82,7 +82,7 @@ public class ConfigUpdateHelper extends HelperBase { for (int i = 0; i < PERIODS.length; i++) { buf.append("\n"); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ShitlistRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/ShitlistRenderer.java index 12c667872..967981130 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ShitlistRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ShitlistRenderer.java @@ -43,6 +43,11 @@ public class ShitlistRenderer { Map entries = new TreeMap(new HashComparator()); entries.putAll(_context.shitlist().getEntries()); + if (entries.isEmpty()) { + buf.append("").append(_("none")).append(""); + out.write(buf.toString()); + return; + } buf.append("
      "); diff --git a/apps/routerconsole/jsp/configstats.jsp b/apps/routerconsole/jsp/configstats.jsp index 4e6a4af97..d522f56d8 100644 --- a/apps/routerconsole/jsp/configstats.jsp +++ b/apps/routerconsole/jsp/configstats.jsp @@ -15,15 +15,19 @@ function toggleAll(category) var inputs = document.getElementsByTagName("input"); for(index = 0; index < inputs.length; index++) { - if(inputs[index].id == category) + var classes = inputs[index].className.split(' '); + for (var idx = 0; idx < classes.length; idx++) { - if(inputs[index].checked == 0) + if(classes[idx] == category) { - inputs[index].checked = 1; - } - else if(inputs[index].checked == 1) - { - inputs[index].checked = 0; + if(inputs[index].checked == 0) + { + inputs[index].checked = 1; + } + else if(inputs[index].checked == 1) + { + inputs[index].checked = 0; + } } } if(category == '*') @@ -75,15 +79,15 @@ function toggleAll(category) if (statshelper.getIsFull()) { %>checked="true" <% } %> > (<%=intl._("change requires restart to take effect")%>)
      <%=intl._("Stat file")%>:
      -<%=intl._("Filter")%>: (<%=intl._("toggle all")%>)

      +<%=intl._("Filter")%>: (<%=intl._("toggle all")%>)

      -

    +
    <% while (statshelper.hasMoreStats()) { while (statshelper.groupRequired()) { %> - @@ -93,11 +97,11 @@ function toggleAll(category) } // end iterating over required groups for the current stat %> <% @@ -110,4 +114,4 @@ function toggleAll(category) " > " > -
    + > <%=statshelper.getCurrentGroupName()%> - (<%=intl._("toggle all")%>) + (<%=intl._("toggle all")%>)
    <%=intl._("Log")%>
    - checked="true" <% } %> > <% if (statshelper.getCurrentCanBeGraphed()) { %> - checked="true" <% } %> ><% } %> <%=statshelper.getCurrentStatName()%>:
    <%=statshelper.getCurrentStatDescription()%>

    + diff --git a/apps/routerconsole/jsp/configtunnels.jsp b/apps/routerconsole/jsp/configtunnels.jsp index 6e22b1e2d..15c266d8c 100644 --- a/apps/routerconsole/jsp/configtunnels.jsp +++ b/apps/routerconsole/jsp/configtunnels.jsp @@ -41,4 +41,4 @@ " > " > -

    + From b23f278c3f8f5edde42d59dc43fd9b2cec1fbac6 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 12 Mar 2011 18:00:58 +0000 Subject: [PATCH 296/463] ngettext cleanups --- .../net/i2p/router/web/ProfileOrganizerRenderer.java | 12 +++++++++--- .../java/src/net/i2p/router/web/StatsGenerator.java | 7 +++---- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java index 3f4d28b8a..58dc81f77 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java @@ -70,11 +70,11 @@ class ProfileOrganizerRenderer { int failing = 0; StringBuilder buf = new StringBuilder(16*1024); buf.append("

    ").append(_("Peer Profiles")).append("

    \n

    "); - buf.append(_("Showing {0} recent profiles.", order.size())).append('\n'); + buf.append(_(order.size(), "Showing 1 recent profile.", "Showing {0} recent profiles.")).append('\n'); if (older > 0) - buf.append(_("Hiding {0} older profiles.", older)).append('\n'); + buf.append(_(older, "Hiding 1 older profile.", "Hiding {0} older profiles.")).append('\n'); if (standard > 0) - buf.append("").append(_("Hiding {0} standard profiles.", standard)).append("\n"); + buf.append("").append(_(standard, "Hiding 1 standard profile.", "Hiding {0} standard profiles.")).append("\n"); buf.append("

    "); buf.append(""); buf.append(""); @@ -359,4 +359,10 @@ class ProfileOrganizerRenderer { private String _(String s, Object o) { return Messages.getString(s, o, _context); } + + /** translate (ngettext) @since 0.8.5 */ + public String _(int n, String s, String p) { + return Messages.getString(n, s, p, _context); + } + } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java b/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java index b5569962c..2f1917307 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java @@ -198,10 +198,9 @@ public class StatsGenerator { buf.append("; "); } - // breaking the sentence like before makes translation in my language impossible. - buf.append(_("There were {0} event(s) in this period", curRate.getLastEventCount())); - // buf.append(' '); - buf.append(_(" which ended {0} ago.", DataHelper.formatDuration2(now - curRate.getLastCoalesceDate()))); + buf.append(ngettext((int)curRate.getLastEventCount(), "There was 1 event in this period.", "There were {0} events in this period.")); + buf.append(' '); + buf.append(_("The period ended {0} ago.", DataHelper.formatDuration2(now - curRate.getLastCoalesceDate()))); } else { buf.append(" ").append(_("No events")).append(" "); } From 3ecc38cc9ce9b95dfafa1f0cc832228302e53c72 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 12 Mar 2011 18:03:32 +0000 Subject: [PATCH 297/463] -6 --- history.txt | 10 ++++++++++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/history.txt b/history.txt index 6c5591b44..8bf5c2aef 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,13 @@ +2011-03-12 zzz + * Blocklist: Add bogons since they won't change any more + * BuildHandler: Loop double-check + * Console: + - Fix HTML errors in form message box, + logs.jsp, netdb.jsp, profiles.jsp, stats.jsp, + configpeer.jsp, configtunnels.jsp, configupdate.jsp + - ngettext cleanups + * LogWriter: Prevent NPE after permissions fail + 2011-03-11 duck * Susimail: translation support, including dutch translation. diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 4e28a2c8d..c10128fe6 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 = 5; + public final static long BUILD = 6; /** for example "-test" */ public final static String EXTRA = ""; From e3a81f6091f61797044fe04190378b2b631e6a65 Mon Sep 17 00:00:00 2001 From: duck Date: Sat, 12 Mar 2011 21:00:04 +0000 Subject: [PATCH 298/463] Susimail: use ngettext, fix typo (thanks m1xxy) --- apps/susimail/locale/messages_en.po | 22 ++++++++++------- apps/susimail/locale/messages_nl.po | 24 ++++++++++++------- .../src/src/i2p/susi/webmail/Messages.java | 4 ++++ .../src/src/i2p/susi/webmail/WebMail.java | 11 ++++++--- 4 files changed, 41 insertions(+), 20 deletions(-) diff --git a/apps/susimail/locale/messages_en.po b/apps/susimail/locale/messages_en.po index 940ec1220..aac4c983f 100644 --- a/apps/susimail/locale/messages_en.po +++ b/apps/susimail/locale/messages_en.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P susimail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-03-11 20:33+0000\n" +"POT-Creation-Date: 2011-03-12 20:49+0000\n" "PO-Revision-Date: 2010-06-15 14:09+0100\n" "Last-Translator: duck \n" "Language-Team: duck \n" @@ -163,8 +163,10 @@ msgstr "" #: src/src/i2p/susi/webmail/WebMail.java:1144 #, java-format -msgid "{0} messages deleted." -msgstr "" +msgid "1 message deleted." +msgid_plural "{0} messages deleted." +msgstr[0] "" +msgstr[1] "" #: src/src/i2p/susi/webmail/WebMail.java:1264 #: src/src/i2p/susi/webmail/WebMail.java:1587 @@ -173,8 +175,10 @@ msgstr "" #: src/src/i2p/susi/webmail/WebMail.java:1266 #, java-format -msgid "{0} Messages" -msgstr "" +msgid "1 Message" +msgid_plural "{0} Messages" +msgstr[0] "" +msgstr[1] "" #: src/src/i2p/susi/webmail/WebMail.java:1268 msgid "Show Message" @@ -363,8 +367,10 @@ msgstr "" #: src/src/i2p/susi/webmail/WebMail.java:1639 #, java-format -msgid "{0} Bytes" -msgstr "" +msgid "1 Byte" +msgid_plural "{0} Bytes" +msgstr[0] "" +msgstr[1] "" #: src/src/i2p/susi/webmail/WebMail.java:1644 msgid "Mark All" @@ -414,7 +420,7 @@ msgid "Set" msgstr "" #: src/src/i2p/susi/webmail/WebMail.java:1668 -msgid "Really delete this messages?" +msgid "Really delete this message?" msgstr "" #: src/src/i2p/susi/webmail/WebMail.java:1668 diff --git a/apps/susimail/locale/messages_nl.po b/apps/susimail/locale/messages_nl.po index e5b951883..411a02eb6 100644 --- a/apps/susimail/locale/messages_nl.po +++ b/apps/susimail/locale/messages_nl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P susimail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-03-11 20:33+0000\n" +"POT-Creation-Date: 2011-03-12 20:49+0000\n" "PO-Revision-Date: 2010-06-15 14:09+0100\n" "Last-Translator: duck \n" "Language-Team: duck \n" @@ -163,8 +163,10 @@ msgstr "Fout bij verwijderen van bericht: {0}" #: src/src/i2p/susi/webmail/WebMail.java:1144 #, java-format -msgid "{0} messages deleted." -msgstr "{0} berichten verwijderd." +msgid "1 message deleted." +msgid_plural "{0} messages deleted." +msgstr[0] "1 bericht verwijderd." +msgstr[1] "{0} berichten verwijderd." #: src/src/i2p/susi/webmail/WebMail.java:1264 #: src/src/i2p/susi/webmail/WebMail.java:1587 @@ -173,8 +175,10 @@ msgstr "Login" #: src/src/i2p/susi/webmail/WebMail.java:1266 #, java-format -msgid "{0} Messages" -msgstr "{0} Berichten" +msgid "1 Message" +msgid_plural "{0} Messages" +msgstr[0] "1 Bericht" +msgstr[1] "{0} Berichten" #: src/src/i2p/susi/webmail/WebMail.java:1268 msgid "Show Message" @@ -363,8 +367,10 @@ msgstr "Grootte" #: src/src/i2p/susi/webmail/WebMail.java:1639 #, java-format -msgid "{0} Bytes" -msgstr "{0} Bytes" +msgid "1 Byte" +msgid_plural "{0} Bytes" +msgstr[0] "1 Byte" +msgstr[1] "{0} Bytes" #: src/src/i2p/susi/webmail/WebMail.java:1644 msgid "Mark All" @@ -414,8 +420,8 @@ msgid "Set" msgstr "Instellen" #: src/src/i2p/susi/webmail/WebMail.java:1668 -msgid "Really delete this messages?" -msgstr "Werkelijk deze berichten verwijderen?" +msgid "Really delete this message?" +msgstr "Werkelijk dit bericht verwijderen?" #: src/src/i2p/susi/webmail/WebMail.java:1668 msgid "Yes, really delete it!" diff --git a/apps/susimail/src/src/i2p/susi/webmail/Messages.java b/apps/susimail/src/src/i2p/susi/webmail/Messages.java index 4a4a1ac9d..84b97450e 100644 --- a/apps/susimail/src/src/i2p/susi/webmail/Messages.java +++ b/apps/susimail/src/src/i2p/susi/webmail/Messages.java @@ -31,4 +31,8 @@ public class Messages { public static String getString(String s, Object o, Object o2) { return Translate.getString(s, o, o2, I2PAppContext.getGlobalContext(), BUNDLE_NAME); } + + public static String getString(int n, String s, String p) { + return Translate.getString(n, s, p, I2PAppContext.getGlobalContext(), BUNDLE_NAME); + } } diff --git a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java index 02506a646..c07947c28 100644 --- a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java +++ b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java @@ -1141,7 +1141,7 @@ public class WebMail extends HttpServlet sessionObject.mailbox.performDelete(); sessionObject.folder.setElements( sessionObject.mailbox.getUIDLs() ); sessionObject.pageChanged = true; - sessionObject.info += _("{0} messages deleted.", numberDeleted); + sessionObject.info += ngettext("1 message deleted.", "{0} messages deleted.", numberDeleted); } sessionObject.reallyDelete = false; } @@ -1263,7 +1263,7 @@ public class WebMail extends HttpServlet if( sessionObject.state == STATE_AUTH ) subtitle = _("Login"); else if( sessionObject.state == STATE_LIST ) - subtitle = _("{0} Messages", sessionObject.mailbox.getNumMails()); + subtitle = ngettext("1 Message", "{0} Messages", sessionObject.mailbox.getNumMails()); else if( sessionObject.state == STATE_SHOW ) subtitle = _("Show Message"); @@ -1636,7 +1636,7 @@ public class WebMail extends HttpServlet ", invert=" + sessionObject.invert + ", clear=" + sessionObject.clear ); out.println( "" ); + ( idChecked ? "checked" : "" ) + ">" + ( RELEASE ? "" : "" + i ) + "" ); bg = 1 - bg; i++; } @@ -1721,4 +1721,9 @@ public class WebMail extends HttpServlet private static String _(String s, Object o, Object o2) { return Messages.getString(s, o, o2); } + + /** translate */ + private String ngettext(String s, String p, int n) { + return Messages.getString(n, s, p); + } } From 3f141e72b8195baf6b31b08b8782382dc2b88dda Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 12 Mar 2011 21:32:29 +0000 Subject: [PATCH 299/463] ngettext fixes thx duck --- .../java/src/net/i2p/router/web/ConfigTunnelsHelper.java | 6 +++++- .../java/src/net/i2p/router/web/HelperBase.java | 2 +- .../src/net/i2p/router/web/ProfileOrganizerRenderer.java | 8 ++++---- .../java/src/net/i2p/router/web/StatsGenerator.java | 8 ++++---- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHelper.java index de988279f..419725ee4 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHelper.java @@ -196,12 +196,16 @@ public class ConfigTunnelsHelper extends HelperBase { // buf.append("\n"); } + /** to fool xgettext so the following isn't tagged */ + private static final String DUMMY1 = "1 "; + private static final String DUMMY2 = "{0} "; + private void renderOptions(StringBuilder buf, int min, int max, int now, String prefix, String name) { for (int i = min; i <= max; i++) { buf.append("\n"); } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/HelperBase.java b/apps/routerconsole/java/src/net/i2p/router/web/HelperBase.java index 8ceec1098..2bee07833 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/HelperBase.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/HelperBase.java @@ -63,7 +63,7 @@ public abstract class HelperBase { } /** translate (ngettext) @since 0.7.14 */ - public String _(int n, String s, String p) { + public String ngettext(String s, String p, int n) { return Messages.getString(n, s, p, _context); } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java index 58dc81f77..f1b4779dd 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java @@ -70,11 +70,11 @@ class ProfileOrganizerRenderer { int failing = 0; StringBuilder buf = new StringBuilder(16*1024); buf.append("

    ").append(_("Peer Profiles")).append("

    \n

    "); - buf.append(_(order.size(), "Showing 1 recent profile.", "Showing {0} recent profiles.")).append('\n'); + buf.append(ngettext("Showing 1 recent profile.", "Showing {0} recent profiles.", order.size())).append('\n'); if (older > 0) - buf.append(_(older, "Hiding 1 older profile.", "Hiding {0} older profiles.")).append('\n'); + buf.append(ngettext("Hiding 1 older profile.", "Hiding {0} older profiles.", older)).append('\n'); if (standard > 0) - buf.append("").append(_(standard, "Hiding 1 standard profile.", "Hiding {0} standard profiles.")).append("\n"); + buf.append("").append(ngettext("Hiding 1 standard profile.", "Hiding {0} standard profiles.", standard)).append("\n"); buf.append("

    "); buf.append("
    " + ( RELEASE ? "" : "" + i ) + "" + link + mail.shortSender + " " + link + mail.shortSubject + " " + mail.formattedDate + " " + _("{0} Bytes", mail.size) + "
    " + link + mail.shortSender + " " + link + mail.shortSubject + " " + mail.formattedDate + " " + ngettext("1 Byte", "{0} Bytes", mail.size) + "

    "); buf.append(""); @@ -361,7 +361,7 @@ class ProfileOrganizerRenderer { } /** translate (ngettext) @since 0.8.5 */ - public String _(int n, String s, String p) { + public String ngettext(String s, String p, int n) { return Messages.getString(n, s, p, _context); } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java b/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java index 2f1917307..cd39b4a25 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java @@ -141,7 +141,7 @@ public class StatsGenerator { buf.append("
  • ").append(_("Lifetime average frequency")).append(": "); buf.append(DataHelper.formatDuration2(freq.getFrequency())); buf.append(" ("); - buf.append(ngettext((int) freq.getEventCount(), "1 event", "{0} events")); + buf.append(ngettext("1 event", "{0} events", (int) freq.getEventCount())); buf.append(")

  • \n"); } @@ -198,7 +198,7 @@ public class StatsGenerator { buf.append("; "); } - buf.append(ngettext((int)curRate.getLastEventCount(), "There was 1 event in this period.", "There were {0} events in this period.")); + buf.append(ngettext("There was 1 event in this period.", "There were {0} events in this period.", (int)curRate.getLastEventCount())); buf.append(' '); buf.append(_("The period ended {0} ago.", DataHelper.formatDuration2(now - curRate.getLastCoalesceDate()))); } else { @@ -231,7 +231,7 @@ public class StatsGenerator { buf.append("
  • ").append(_("Lifetime average value")).append(": "); buf.append(num(rate.getLifetimeAverageValue())); buf.append(" ("); - buf.append(ngettext((int) rate.getLifetimeEventCount(), "1 event", "{0} events")); + buf.append(ngettext("1 event", "{0} events", (int) rate.getLifetimeEventCount())); buf.append(")
  • " + "" + "
    \n"); @@ -262,7 +262,7 @@ public class StatsGenerator { } /** translate a string */ - private String ngettext(int n, String s, String p) { + private String ngettext(String s, String p, int n) { return Messages.getString(n, s, p, _context); } } From 21a3657da54381f36c3d67a4b62d0b4463415a86 Mon Sep 17 00:00:00 2001 From: HungryHobo Date: Sat, 12 Mar 2011 21:53:55 +0000 Subject: [PATCH 300/463] Add NT service as an installer option on Windows --- installer/install.xml | 30 +++++++++++++++++++ .../resources/install_i2p_service_winnt.bat | 1 + .../resources/uninstall_i2p_service_winnt.bat | 1 + 3 files changed, 32 insertions(+) diff --git a/installer/install.xml b/installer/install.xml index 7c28ad1ce..740474afb 100644 --- a/installer/install.xml +++ b/installer/install.xml @@ -105,6 +105,7 @@ + @@ -178,6 +179,35 @@ + + + Automatically start I2P in the background + + + + + + + + + + + + + + + + + + + + + + diff --git a/installer/resources/install_i2p_service_winnt.bat b/installer/resources/install_i2p_service_winnt.bat index fb668c64a..a6eb0495d 100644 --- a/installer/resources/install_i2p_service_winnt.bat +++ b/installer/resources/install_i2p_service_winnt.bat @@ -31,5 +31,6 @@ rem :startup "%_WRAPPER_EXE%" -i %_WRAPPER_CONF% if not errorlevel 1 goto :eof +if %2=="--nopause" goto :eof pause diff --git a/installer/resources/uninstall_i2p_service_winnt.bat b/installer/resources/uninstall_i2p_service_winnt.bat index e36af92a1..6dfee7474 100644 --- a/installer/resources/uninstall_i2p_service_winnt.bat +++ b/installer/resources/uninstall_i2p_service_winnt.bat @@ -31,5 +31,6 @@ rem :startup "%_WRAPPER_EXE%" -r %_WRAPPER_CONF% if not errorlevel 1 goto :eof +if "%2"=="--nopause" goto :eof pause From dca9f32d3fa08b93300f239ebcadd14e0144e1e8 Mon Sep 17 00:00:00 2001 From: HungryHobo Date: Sat, 12 Mar 2011 22:19:05 +0000 Subject: [PATCH 301/463] Make the actual installation the last step before the "Done" screen --- installer/install.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer/install.xml b/installer/install.xml index 740474afb..4adcf1609 100644 --- a/installer/install.xml +++ b/installer/install.xml @@ -107,12 +107,12 @@ - + From e6b24277b60b49cf31271cc3d616396542ea1afd Mon Sep 17 00:00:00 2001 From: m1xxy Date: Sun, 13 Mar 2011 11:06:33 +0000 Subject: [PATCH 302/463] readme tweaks --- installer/resources/readme/readme.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/installer/resources/readme/readme.html b/installer/resources/readme/readme.html index a9eda7181..40133b404 100644 --- a/installer/resources/readme/readme.html +++ b/installer/resources/readme/readme.html @@ -12,7 +12,7 @@
  • Anonymous E-Mail
    Postman's I2P-based mail system can be accessed either via I2P's built-in mail client (susimail) or using any mail client that supports smtp and pop3. Accounts can send and receive mail from the normal internet. For an - account, visit hq.postman.i2p. Additionally, I2P-Bote is a new serverless, end-to-end encrypted e-mail system providing a web + account, visit hq.postman.i2p. Additionally, I2P-Bote is a new serverless, end-to-end encrypted e-mail system with an integrated remailer, providing a web interface and an integrated addressbook. It is developed by HungryHobo and can be installed as a plugin.
  • @@ -20,7 +20,7 @@ In addition, Sponge develops a bittorrent client called Robert written in Python. There is also a port of eMule to I2P called iMule [Needs developers!], an anonymous, secure implementation of a Gnutella network, accessible using I2Phex [maintained by Complication, seeking new developers!], and additional facilities including browser-based file hosting.
  • Anonymous Chat
    Start your IRC client (e.g. Chatzilla, Pidgin, XChat) - and connect to the server at 127.0.0.1 port 6668. You do not need to configure a proxy in your IRC client; I2P provides you with a local IRC tunnel (configured in your IRC client as an IRC server or remote host). + and connect to the server at 127.0.0.1 port 6668. You do not need to configure a proxy in your IRC client; I2P provides you with a local IRC tunnel (configured in your IRC client as an IRC server or remote host). Your local I2P IRC tunnel on localhost:6668 will direct you to one of two IRC servers hosted on I2P by Postman and Badger, but neither you nor they know where the other is, and your mom, ISP or government is unable to intercept your conversation! Once you're there, #i2p-help,#i2p,#i2p-chat and #i2p-dev are just a few of the available channels you may wish to /join. There's also an I2P-based Instant Messenger for unmonitorable and uncensorable anonymous chat, as well as alternative IRC servers, Jabber servers, website-based chat, and more. @@ -110,7 +110,7 @@
  • Getting Support Online
    You may also want to review the information on the I2P website, - post messages to the I2P discussion forum, + post messages to the I2P discussion forum ((on the public internet)), or swing by #i2p-help, #i2p or #i2p-chat on I2P's internal IRC network (irc.postman.i2p or irc.freshcoffee.i2p). These channels are also available outside of I2P's encrypted, anonymous network via Freenode IRC.
  • From ac5785c796a86975adb1b78f8fb3fb0ee31428b9 Mon Sep 17 00:00:00 2001 From: m1xxy Date: Sun, 13 Mar 2011 11:32:43 +0000 Subject: [PATCH 303/463] update susimail de translation --- apps/susimail/locale/messages_de.po | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/apps/susimail/locale/messages_de.po b/apps/susimail/locale/messages_de.po index e74ce9820..f00349039 100644 --- a/apps/susimail/locale/messages_de.po +++ b/apps/susimail/locale/messages_de.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: I2P susimail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-03-11 20:33+0000\n" -"PO-Revision-Date: 2011-03-12 03:18+0100\n" +"POT-Creation-Date: 2011-03-12 22:04+0000\n" +"PO-Revision-Date: 2011-03-13 12:31+0100\n" "Last-Translator: mixxy \n" "Language-Team: mixxy \n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: src/src/i2p/susi/webmail/WebMail.java:454 @@ -163,8 +163,10 @@ msgstr "Fehler beim Löschen der Nachricht: {0}" #: src/src/i2p/susi/webmail/WebMail.java:1144 #, java-format -msgid "{0} messages deleted." -msgstr "{0} Nachrichten gelöscht" +msgid "1 message deleted." +msgid_plural "{0} messages deleted." +msgstr[0] "Eine Nachricht gelöscht" +msgstr[1] "{0} Nachrichten gelöscht" #: src/src/i2p/susi/webmail/WebMail.java:1264 #: src/src/i2p/susi/webmail/WebMail.java:1587 @@ -173,8 +175,10 @@ msgstr "Anmelden" #: src/src/i2p/susi/webmail/WebMail.java:1266 #, java-format -msgid "{0} Messages" -msgstr "{0} Nachrichten" +msgid "1 Message" +msgid_plural "{0} Messages" +msgstr[0] "Eine Nachricht" +msgstr[1] "{0} Nachrichten" #: src/src/i2p/susi/webmail/WebMail.java:1268 msgid "Show Message" @@ -363,8 +367,10 @@ msgstr "Größe" #: src/src/i2p/susi/webmail/WebMail.java:1639 #, java-format -msgid "{0} Bytes" -msgstr "{0} Bytes" +msgid "1 Byte" +msgid_plural "{0} Bytes" +msgstr[0] "1 Byte" +msgstr[1] "{0} Bytes" #: src/src/i2p/susi/webmail/WebMail.java:1644 msgid "Mark All" From be4be9716d1ded095d7ea416e2183d3cad0ff898 Mon Sep 17 00:00:00 2001 From: m1xxy Date: Sun, 13 Mar 2011 12:39:52 +0000 Subject: [PATCH 304/463] readme tweaks --- installer/resources/readme/readme.html | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/installer/resources/readme/readme.html b/installer/resources/readme/readme.html index 40133b404..bf0f5d6a1 100644 --- a/installer/resources/readme/readme.html +++ b/installer/resources/readme/readme.html @@ -12,9 +12,7 @@
  • Anonymous E-Mail
    Postman's I2P-based mail system can be accessed either via I2P's built-in mail client (susimail) or using any mail client that supports smtp and pop3. Accounts can send and receive mail from the normal internet. For an - account, visit hq.postman.i2p. Additionally, I2P-Bote is a new serverless, end-to-end encrypted e-mail system with an integrated remailer, providing a web - interface and an integrated addressbook. It is developed by HungryHobo - and can be installed as a plugin.
  • + account, visit hq.postman.i2p. Additionally, I2P-Bote is a new I2P-internal serverless, secure (end-to-end encrypted) e-mail system with an integrated anonymous/pseudonymous remailer, providing a web interface and a built-in addressbook. It is developed by HungryHobo, and can be installed as a plugin.
  • Anonymous File Transfer
    I2PSnark is integrated into I2P, providing anonymous, encrypted BitTorrent transfers. In addition, Sponge develops a bittorrent client called Robert written in Python. @@ -110,7 +108,7 @@
  • Getting Support Online
    You may also want to review the information on the I2P website, - post messages to the I2P discussion forum ((on the public internet)), + post messages to the I2P discussion forum (also reachable on the internet), or swing by #i2p-help, #i2p or #i2p-chat on I2P's internal IRC network (irc.postman.i2p or irc.freshcoffee.i2p). These channels are also available outside of I2P's encrypted, anonymous network via Freenode IRC.
  • From 295e1daa2234e44e1a49c5b958a4a4582d30d5ca Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 19 Mar 2011 16:37:53 +0000 Subject: [PATCH 305/463] test scripts update --- tests/scripts/checkpo.sh | 1 + tests/scripts/checkutf8.sh | 1 + 2 files changed, 2 insertions(+) diff --git a/tests/scripts/checkpo.sh b/tests/scripts/checkpo.sh index 2e03f8be6..13f080833 100755 --- a/tests/scripts/checkpo.sh +++ b/tests/scripts/checkpo.sh @@ -13,6 +13,7 @@ DIRS="\ apps/i2ptunnel/locale \ apps/i2psnark/locale \ apps/susidns/locale \ + apps/susimail/locale \ apps/desktopgui/locale" for i in `find $DIRS -maxdepth 1 -type f -name *.po` diff --git a/tests/scripts/checkutf8.sh b/tests/scripts/checkutf8.sh index 8efce06bf..4753cbd30 100755 --- a/tests/scripts/checkutf8.sh +++ b/tests/scripts/checkutf8.sh @@ -16,6 +16,7 @@ DIRS="\ apps/i2ptunnel/locale \ apps/i2psnark/locale \ apps/susidns/locale \ + apps/susimail/locale \ apps/desktopgui/locale \ installer/resources/eepsite.help/help \ installer/resources/initialNews \ From 5eb6bf1b1d2fbf6ef5c5c4a46df330bacf521aa1 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 19 Mar 2011 16:39:04 +0000 Subject: [PATCH 306/463] change i2ptunnel clients to 3 hops for new installs --- installer/resources/i2ptunnel.config | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/installer/resources/i2ptunnel.config b/installer/resources/i2ptunnel.config index 7b0e37b18..0a7f3fe40 100644 --- a/installer/resources/i2ptunnel.config +++ b/installer/resources/i2ptunnel.config @@ -21,6 +21,10 @@ tunnel.0.option.i2cp.reduceIdleTime=900000 tunnel.0.option.i2cp.reduceOnIdle=true tunnel.0.option.i2cp.reduceQuantity=1 tunnel.0.option.i2p.streaming.connectDelay=1000 +tunnel.0.option.inbound.length=3 +tunnel.0.option.inbound.lengthVariance=0 +tunnel.0.option.outbound.length=3 +tunnel.0.option.outbound.lengthVariance=0 tunnel.0.startOnLoad=true # irc @@ -44,6 +48,10 @@ tunnel.1.option.i2cp.reduceOnIdle=true tunnel.1.option.i2cp.reduceQuantity=1 tunnel.1.option.i2p.streaming.connectDelay=1000 tunnel.1.option.i2p.streaming.maxWindowSize=16 +tunnel.1.option.inbound.length=3 +tunnel.1.option.inbound.lengthVariance=0 +tunnel.1.option.outbound.length=3 +tunnel.1.option.outbound.lengthVariance=0 tunnel.1.startOnLoad=true # I2P's mtn server @@ -61,6 +69,10 @@ tunnel.2.option.outbound.nickname=shared clients tunnel.2.option.i2cp.reduceIdleTime=900000 tunnel.2.option.i2cp.reduceOnIdle=true tunnel.2.option.i2cp.reduceQuantity=1 +tunnel.2.option.inbound.length=3 +tunnel.2.option.inbound.lengthVariance=0 +tunnel.2.option.outbound.length=3 +tunnel.2.option.outbound.lengthVariance=0 tunnel.2.startOnLoad=false # local eepserver @@ -94,6 +106,10 @@ tunnel.4.option.i2cp.reduceIdleTime=900000 tunnel.4.option.i2cp.reduceOnIdle=true tunnel.4.option.i2cp.reduceQuantity=1 tunnel.4.option.i2p.streaming.connectDelay=1000 +tunnel.4.option.inbound.length=3 +tunnel.4.option.inbound.lengthVariance=0 +tunnel.4.option.outbound.length=3 +tunnel.4.option.outbound.lengthVariance=0 tunnel.4.startOnLoad=true tunnel.4.targetDestination=smtp.postman.i2p tunnel.4.type=client @@ -112,6 +128,10 @@ tunnel.5.option.i2cp.reduceIdleTime=900000 tunnel.5.option.i2cp.reduceOnIdle=true tunnel.5.option.i2cp.reduceQuantity=1 tunnel.5.option.i2p.streaming.connectDelay=1000 +tunnel.5.option.inbound.length=3 +tunnel.5.option.inbound.lengthVariance=0 +tunnel.5.option.outbound.length=3 +tunnel.5.option.outbound.lengthVariance=0 tunnel.5.startOnLoad=true tunnel.5.targetDestination=pop.postman.i2p tunnel.5.type=client @@ -133,5 +153,9 @@ tunnel.6.option.i2cp.reduceIdleTime=900000 tunnel.6.option.i2cp.reduceOnIdle=true tunnel.6.option.i2cp.reduceQuantity=1 tunnel.6.option.i2p.streaming.connectDelay=1000 +tunnel.6.option.inbound.length=3 +tunnel.6.option.inbound.lengthVariance=0 +tunnel.6.option.outbound.length=3 +tunnel.6.option.outbound.lengthVariance=0 tunnel.6.startOnLoad=true From f96342d33ab9bca60eb6095fbcee06dc898de70d Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 19 Mar 2011 16:39:22 +0000 Subject: [PATCH 307/463] backport equals() fix --- core/java/src/net/i2p/stat/Rate.java | 37 +++++++--------------------- 1 file changed, 9 insertions(+), 28 deletions(-) diff --git a/core/java/src/net/i2p/stat/Rate.java b/core/java/src/net/i2p/stat/Rate.java index 8473d58eb..21e496739 100644 --- a/core/java/src/net/i2p/stat/Rate.java +++ b/core/java/src/net/i2p/stat/Rate.java @@ -3,6 +3,7 @@ package net.i2p.stat; import java.io.IOException; import java.util.Properties; +import net.i2p.data.DataHelper; import net.i2p.util.Log; /** @@ -471,48 +472,28 @@ public class Rate { coalesce(); } + /** + * This is used in StatSummarizer and SummaryListener. + * We base it on the stat we are tracking, not the stored data. + */ @Override public boolean equals(Object obj) { if ((obj == null) || !(obj instanceof Rate)) return false; if (obj == this) return true; Rate r = (Rate) obj; return _period == r.getPeriod() && _creationDate == r.getCreationDate() && - //_lastCoalesceDate == r.getLastCoalesceDate() && - _currentTotalValue == r.getCurrentTotalValue() && _currentEventCount == r.getCurrentEventCount() - && _currentTotalEventTime == r.getCurrentTotalEventTime() && _lastTotalValue == r.getLastTotalValue() - && _lastEventCount == r.getLastEventCount() && _lastTotalEventTime == r.getLastTotalEventTime() - && _extremeTotalValue == r.getExtremeTotalValue() && _extremeEventCount == r.getExtremeEventCount() - && _extremeTotalEventTime == r.getExtremeTotalEventTime() - && _lifetimeTotalValue == r.getLifetimeTotalValue() && _lifetimeEventCount == r.getLifetimeEventCount() - && _lifetimeTotalEventTime == r.getLifetimeTotalEventTime(); + // do this the easy way to avoid NPEs. + // Alternative: compare name and group name (very carefully to avoid NPEs) + _stat == r._stat; } /** * It doesn't appear that Rates are ever stored in a Set or Map * (RateStat stores in an array) so let's make this easy. - * We can always make something faster if it's actually used. */ @Override public int hashCode() { -/***** - int hash = 5; - hash = 67 * hash + (int)(Double.doubleToLongBits(this._currentTotalValue) ^ (Double.doubleToLongBits(this._currentTotalValue) >>> 32)); - hash = 67 * hash + (int)(this._currentEventCount ^ (this._currentEventCount >>> 32)); - hash = 67 * hash + (int)(this._currentTotalEventTime ^ (this._currentTotalEventTime >>> 32)); - hash = 67 * hash + (int)(Double.doubleToLongBits(this._lastTotalValue) ^ (Double.doubleToLongBits(this._lastTotalValue) >>> 32)); - hash = 67 * hash + (int)(this._lastEventCount ^ (this._lastEventCount >>> 32)); - hash = 67 * hash + (int)(this._lastTotalEventTime ^ (this._lastTotalEventTime >>> 32)); - hash = 67 * hash + (int)(Double.doubleToLongBits(this._extremeTotalValue) ^ (Double.doubleToLongBits(this._extremeTotalValue) >>> 32)); - hash = 67 * hash + (int)(this._extremeEventCount ^ (this._extremeEventCount >>> 32)); - hash = 67 * hash + (int)(this._extremeTotalEventTime ^ (this._extremeTotalEventTime >>> 32)); - hash = 67 * hash + (int)(Double.doubleToLongBits(this._lifetimeTotalValue) ^ (Double.doubleToLongBits(this._lifetimeTotalValue) >>> 32)); - hash = 67 * hash + (int)(this._lifetimeEventCount ^ (this._lifetimeEventCount >>> 32)); - hash = 67 * hash + (int)(this._lifetimeTotalEventTime ^ (this._lifetimeTotalEventTime >>> 32)); - hash = 67 * hash + (int)(this._creationDate ^ (this._creationDate >>> 32)); - hash = 67 * hash + (int)(this._period ^ (this._period >>> 32)); - return hash; -******/ - return toString().hashCode(); + return DataHelper.hashCode(_stat) ^ ((int)_period) ^ ((int) _creationDate); } @Override From 34d951aa6b796f8843ad025dbad2f6497c05a4dc Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 19 Mar 2011 16:40:10 +0000 Subject: [PATCH 308/463] recognize links as a text browser --- .../i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java | 3 ++- apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index f3ef456dc..369fd3d2b 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -351,7 +351,8 @@ public class I2PSnarkServlet extends Default { // Using a unique name fixes Opera, except for the buttons with js confirms, see below String ua = req.getHeader("User-Agent"); boolean isDegraded = ua != null && (ua.startsWith("Lynx") || ua.startsWith("w3m") || - ua.startsWith("ELinks") || ua.startsWith("Dillo")); + ua.startsWith("ELinks") || ua.startsWith("Links") || + ua.startsWith("Dillo")); boolean noThinsp = isDegraded || (ua != null && ua.startsWith("Opera")); if (_manager.util().connected()) { diff --git a/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java index 8a1b92046..33aa93df2 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java @@ -70,6 +70,7 @@ public class CSSHelper extends HelperBase { */ public boolean allowIFrame(String ua) { return ua == null || !(ua.startsWith("Lynx") || ua.startsWith("w3m") || - ua.startsWith("ELinks") || ua.startsWith("Dillo")); + ua.startsWith("ELinks") || ua.startsWith("Links") || + ua.startsWith("Dillo")); } } From 14986fbfa159f403cf82e42dffc68bfff651547a Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 19 Mar 2011 17:19:54 +0000 Subject: [PATCH 309/463] * Profiles: - Nicer profile dump - More efficient profile lookup for display - Fix dumpprofile NPE - Change file suffix from .dat to .txt.gz --- .../router/web/ProfileOrganizerRenderer.java | 6 +- .../src/net/i2p/router/web/StatHelper.java | 70 ++++++++--- apps/routerconsole/jsp/dumpprofile.jsp | 3 +- apps/routerconsole/jsp/viewprofile.jsp | 30 +++++ .../src/net/i2p/stat/PersistenceHelper.java | 22 +++- core/java/src/net/i2p/stat/Rate.java | 33 +++-- .../router/peermanager/ProfileOrganizer.java | 9 +- .../peermanager/ProfilePersistenceHelper.java | 119 +++++++++++------- .../i2p/router/peermanager/TunnelHistory.java | 20 +-- 9 files changed, 219 insertions(+), 93 deletions(-) create mode 100644 apps/routerconsole/jsp/viewprofile.jsp diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java index f1b4779dd..d83720d07 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java @@ -171,8 +171,10 @@ class ProfileOrganizerRenderer { buf.append(' ').append(fails).append('/').append(total).append(' ').append(_("Test Fails")); } buf.append(" "); - buf.append("
    \n"); buf.append(""); // let's not build the whole page in memory (~500 bytes per peer) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/StatHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/StatHelper.java index 2b7e81fb4..6cfc7bdcf 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/StatHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/StatHelper.java @@ -1,37 +1,73 @@ package net.i2p.router.web; -import java.util.Iterator; +import java.io.IOException; import java.util.Set; +import net.i2p.data.DataFormatException; import net.i2p.data.Hash; -import net.i2p.router.RouterContext; /** - * uuuugly. dump the peer profile data if given a peer. + * Dump the peer profile data if given a full B64 peer string or prefix. * */ public class StatHelper extends HelperBase { private String _peer; + /** + * Caller should strip HTML (XSS) + */ public void setPeer(String peer) { _peer = peer; } + /** + * Look up based on a b64 prefix or full b64. + * Prefix is inefficient. + */ public String getProfile() { - RouterContext ctx = (RouterContext)net.i2p.router.RouterContext.listContexts().get(0); - Set peers = ctx.profileOrganizer().selectAllPeers(); - for (Iterator iter = peers.iterator(); iter.hasNext(); ) { - Hash peer = (Hash)iter.next(); + if (_peer == null || _peer.length() <= 0) + return "No peer specified"; + if (_peer.length() >= 44) + return outputProfile(); + Set peers = _context.profileOrganizer().selectAllPeers(); + for (Hash peer : peers) { if (peer.toBase64().startsWith(_peer)) { - try { - WriterOutputStream wos = new WriterOutputStream(_out); - ctx.profileOrganizer().exportProfile(peer, wos); - wos.flush(); - _out.flush(); - return ""; - } catch (Exception e) { - e.printStackTrace(); - } + return dumpProfile(peer); } } - return "Unknown"; + return "Unknown peer " + _peer; + } + + /** + * Look up based on the full b64 - efficient + * @since 0.8.5 + */ + private String outputProfile() { + Hash peer = new Hash(); + try { + peer.fromBase64(_peer); + return dumpProfile(peer); + } catch (DataFormatException dfe) { + return "Bad peer hash " + _peer; + } + } + + /** + * dump the profile + * @since 0.8.5 + */ + private String dumpProfile(Hash peer) { + try { + WriterOutputStream wos = new WriterOutputStream(_out); + boolean success = _context.profileOrganizer().exportProfile(peer, wos); + if (success) { + wos.flush(); + _out.flush(); + return ""; + } else { + return "Unknown peer " + _peer; + } + } catch (IOException e) { + e.printStackTrace(); + return "IO Error " + e; + } } } diff --git a/apps/routerconsole/jsp/dumpprofile.jsp b/apps/routerconsole/jsp/dumpprofile.jsp index dfdcc0b6e..af6c8de74 100644 --- a/apps/routerconsole/jsp/dumpprofile.jsp +++ b/apps/routerconsole/jsp/dumpprofile.jsp @@ -1,5 +1,6 @@ <%@page contentType="text/plain" %>" +/>" +/>" /><% helper.storeWriter(out); %> diff --git a/apps/routerconsole/jsp/viewprofile.jsp b/apps/routerconsole/jsp/viewprofile.jsp new file mode 100644 index 000000000..36897d4a9 --- /dev/null +++ b/apps/routerconsole/jsp/viewprofile.jsp @@ -0,0 +1,30 @@ +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> + + + +<%@include file="css.jsi" %> +<%=intl.title("Peer Profile")%> + +<%@include file="summary.jsi" %> +

    <%=intl._("Peer Profile")%>

    +
    +<% + String peerB64 = request.getParameter("peer"); + if (peerB64 == null || peerB64.length() <= 0) { + out.print("No peer specified"); + } else { + peerB64 = net.i2p.data.DataHelper.stripHTML(peerB64); // XSS +%> + +" /> + +<% stathelper.storeWriter(out); %> +

    <%=intl._("Profile for peer {0}", peerB64)%>

    +
    +
    +
    +<% + } +%> +
    diff --git a/core/java/src/net/i2p/stat/PersistenceHelper.java b/core/java/src/net/i2p/stat/PersistenceHelper.java index d8c1312d4..1d5c6a466 100644 --- a/core/java/src/net/i2p/stat/PersistenceHelper.java +++ b/core/java/src/net/i2p/stat/PersistenceHelper.java @@ -1,10 +1,16 @@ package net.i2p.stat; +import java.util.Date; import java.util.Properties; +import net.i2p.data.DataHelper; import net.i2p.util.Log; -/** object orientation gives you hairy palms. */ +/** + * Output rate data. + * This is used via ProfilePersistenceHelper and the output + * must be compatible. + */ class PersistenceHelper { private final static Log _log = new Log(PersistenceHelper.class); private final static String NL = System.getProperty("line.separator"); @@ -15,6 +21,18 @@ class PersistenceHelper { buf.append(prefix).append(name).append('=').append(value).append(NL).append(NL); } + /** @since 0.8.5 */ + public final static void addDate(StringBuilder buf, String prefix, String name, String description, long value) { + String when = value > 0 ? (new Date(value)).toString() : "Never"; + add(buf, prefix, name, description + ' ' + when, value); + } + + /** @since 0.8.5 */ + public final static void addTime(StringBuilder buf, String prefix, String name, String description, long value) { + String when = DataHelper.formatDuration(value); + add(buf, prefix, name, description + ' ' + when, value); + } + public final static void add(StringBuilder buf, String prefix, String name, String description, long value) { buf.append("# ").append(prefix).append(name).append(NL); buf.append("# ").append(description).append(NL); @@ -48,4 +66,4 @@ class PersistenceHelper { } return 0; } -} \ No newline at end of file +} diff --git a/core/java/src/net/i2p/stat/Rate.java b/core/java/src/net/i2p/stat/Rate.java index 21e496739..8bf5bcf47 100644 --- a/core/java/src/net/i2p/stat/Rate.java +++ b/core/java/src/net/i2p/stat/Rate.java @@ -400,42 +400,41 @@ public class Rate { } public void store(String prefix, StringBuilder buf) throws IOException { - PersistenceHelper.add(buf, prefix, ".period", "Number of milliseconds in the period", _period); - PersistenceHelper.add(buf, prefix, ".creationDate", - "When was this rate created? (milliseconds since the epoch, GMT)", _creationDate); - PersistenceHelper.add(buf, prefix, ".lastCoalesceDate", - "When did we last coalesce this rate? (milliseconds since the epoch, GMT)", + PersistenceHelper.addTime(buf, prefix, ".period", "Length of the period:", _period); + PersistenceHelper.addDate(buf, prefix, ".creationDate", + "When was this rate created?", _creationDate); + PersistenceHelper.addDate(buf, prefix, ".lastCoalesceDate", + "When did we last coalesce this rate?", _lastCoalesceDate); - PersistenceHelper.add(buf, prefix, ".currentDate", - "When did this data get written? (milliseconds since the epoch, GMT)", now()); + PersistenceHelper.addDate(buf, prefix, ".currentDate", + "When was this data written?", now()); PersistenceHelper.add(buf, prefix, ".currentTotalValue", "Total value of data points in the current (uncoalesced) period", _currentTotalValue); - PersistenceHelper - .add(buf, prefix, ".currentEventCount", + PersistenceHelper.add(buf, prefix, ".currentEventCount", "How many events have occurred in the current (uncoalesced) period?", _currentEventCount); - PersistenceHelper.add(buf, prefix, ".currentTotalEventTime", - "How many milliseconds have the events in the current (uncoalesced) period consumed?", + PersistenceHelper.addTime(buf, prefix, ".currentTotalEventTime", + "How much time have the events in the current (uncoalesced) period consumed?", _currentTotalEventTime); PersistenceHelper.add(buf, prefix, ".lastTotalValue", "Total value of data points in the most recent (coalesced) period", _lastTotalValue); PersistenceHelper.add(buf, prefix, ".lastEventCount", "How many events have occurred in the most recent (coalesced) period?", _lastEventCount); - PersistenceHelper.add(buf, prefix, ".lastTotalEventTime", - "How many milliseconds have the events in the most recent (coalesced) period consumed?", + PersistenceHelper.addTime(buf, prefix, ".lastTotalEventTime", + "How much time have the events in the most recent (coalesced) period consumed?", _lastTotalEventTime); PersistenceHelper.add(buf, prefix, ".extremeTotalValue", "Total value of data points in the most extreme period", _extremeTotalValue); PersistenceHelper.add(buf, prefix, ".extremeEventCount", "How many events have occurred in the most extreme period?", _extremeEventCount); - PersistenceHelper.add(buf, prefix, ".extremeTotalEventTime", - "How many milliseconds have the events in the most extreme period consumed?", + PersistenceHelper.addTime(buf, prefix, ".extremeTotalEventTime", + "How much time have the events in the most extreme period consumed?", _extremeTotalEventTime); PersistenceHelper.add(buf, prefix, ".lifetimeTotalValue", "Total value of data points since this stat was created", _lifetimeTotalValue); PersistenceHelper.add(buf, prefix, ".lifetimeEventCount", "How many events have occurred since this stat was created?", _lifetimeEventCount); - PersistenceHelper.add(buf, prefix, ".lifetimeTotalEventTime", - "How many milliseconds have the events since this stat was created consumed?", + PersistenceHelper.addTime(buf, prefix, ".lifetimeTotalEventTime", + "How much total time was consumed by the events since this stat was created?", _lifetimeTotalEventTime); } diff --git a/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java b/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java index fe33c3447..31fd6c374 100644 --- a/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java +++ b/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java @@ -256,10 +256,15 @@ public class ProfileOrganizer { return false; } - public void exportProfile(Hash profile, OutputStream out) throws IOException { + /** + * @return true if successful, false if not found + */ + public boolean exportProfile(Hash profile, OutputStream out) throws IOException { PeerProfile prof = getProfile(profile); - if (prof != null) + boolean rv = prof != null; + if (rv) _persistenceHelper.writeProfile(prof, out); + return rv; } /** diff --git a/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java b/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java index 592c1f267..07782fe25 100644 --- a/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java +++ b/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java @@ -8,6 +8,7 @@ import java.io.FilenameFilter; import java.io.InputStream; import java.io.IOException; import java.io.OutputStream; +import java.util.Date; import java.util.HashSet; import java.util.Iterator; import java.util.Properties; @@ -24,13 +25,24 @@ import net.i2p.util.Log; import net.i2p.util.SecureDirectory; import net.i2p.util.SecureFileOutputStream; +/** + * Write profiles to disk at shutdown, + * read at startup. + * The files are gzip compressed, however we unfortunately store them + * with a ".dat" extension instead of ".txt.gz", so it isn't apparent. + * TODO: Migrate to new extension. + */ class ProfilePersistenceHelper { - private Log _log; - private RouterContext _context; + private final Log _log; + private final RouterContext _context; public final static String PROP_PEER_PROFILE_DIR = "router.profileDir"; public final static String DEFAULT_PEER_PROFILE_DIR = "peerProfiles"; private final static String NL = System.getProperty("line.separator"); + private static final String PREFIX = "profile-"; + private static final String SUFFIX = ".txt.gz"; + private static final String UNCOMPRESSED_SUFFIX = ".txt"; + private static final String OLD_SUFFIX = ".dat"; /** * If we haven't been able to get a message through to the peer in 3 days, @@ -76,58 +88,49 @@ class ProfilePersistenceHelper { if (_log.shouldLog(Log.DEBUG)) _log.debug("Writing the profile to " + f.getName() + " took " + delay + "ms"); } + /** write out the data from the profile to the stream */ public void writeProfile(PeerProfile profile, OutputStream out) throws IOException { String groups = null; if (_context.profileOrganizer().isFailing(profile.getPeer())) { - groups = "failing"; + groups = "Failing"; } else if (!_context.profileOrganizer().isHighCapacity(profile.getPeer())) { - groups = "not failing"; + groups = "Standard"; } else { if (_context.profileOrganizer().isFast(profile.getPeer())) - groups = "fast and high capacity"; + groups = "Fast, High Capacity"; else - groups = "high capacity"; + groups = "High Capacity"; if (_context.profileOrganizer().isWellIntegrated(profile.getPeer())) - groups = groups + ", well integrated"; + groups = groups + ", Integrated"; } StringBuilder buf = new StringBuilder(512); buf.append("########################################################################").append(NL); - buf.append("# profile for ").append(profile.getPeer().toBase64()).append(NL); + buf.append("# Profile for peer ").append(profile.getPeer().toBase64()).append(NL); if (_us != null) buf.append("# as calculated by ").append(_us.toBase64()).append(NL); buf.append("#").append(NL); - buf.append("# capacity: ").append(profile.getCapacityValue()).append(NL); - buf.append("# integration: ").append(profile.getIntegrationValue()).append(NL); - buf.append("# speedValue: ").append(profile.getSpeedValue()).append(NL); - buf.append("#").append(NL); + buf.append("# Speed: ").append(profile.getSpeedValue()).append(NL); + buf.append("# Capacity: ").append(profile.getCapacityValue()).append(NL); + buf.append("# Integration: ").append(profile.getIntegrationValue()).append(NL); buf.append("# Groups: ").append(groups).append(NL); + buf.append("#").append(NL); buf.append("########################################################################").append(NL); buf.append("##").append(NL); - buf.append("# Capacity bonus: used to affect the capacity score after all other calculations are done").append(NL); - buf.append("capacityBonus=").append(profile.getCapacityBonus()).append(NL); - buf.append("# Integration bonus: used to affect the integration score after all other calculations are done").append(NL); - buf.append("integrationBonus=").append(profile.getIntegrationBonus()).append(NL); - buf.append("# Speed bonus: used to affect the speed score after all other calculations are done").append(NL); - buf.append("speedBonus=").append(profile.getSpeedBonus()).append(NL); - buf.append(NL).append(NL); - buf.append("# Last heard about: when did we last get a reference to this peer? (milliseconds since the epoch)").append(NL); - buf.append("lastHeardAbout=").append(profile.getLastHeardAbout()).append(NL); - buf.append("# First heard about: when did we first get a reference to this peer? (milliseconds since the epoch)").append(NL); - buf.append("firstHeardAbout=").append(profile.getFirstHeardAbout()).append(NL); - buf.append("# Last sent to successfully: when did we last send the peer a message successfully? (milliseconds from the epoch)").append(NL); - buf.append("lastSentToSuccessfully=").append(profile.getLastSendSuccessful()).append(NL); - buf.append("# Last failed send: when did we last fail to send a message to the peer? (milliseconds from the epoch)").append(NL); - buf.append("lastFailedSend=").append(profile.getLastSendFailed()).append(NL); - buf.append("# Last heard from: when did we last get a message from the peer? (milliseconds from the epoch)").append(NL); - buf.append("lastHeardFrom=").append(profile.getLastHeardFrom()).append(NL); - buf.append("# moving average as to how fast the peer replies").append(NL); - buf.append("tunnelTestTimeAverage=").append(profile.getTunnelTestTimeAverage()).append(NL); - buf.append("tunnelPeakThroughput=").append(profile.getPeakThroughputKBps()).append(NL); - buf.append("tunnelPeakTunnelThroughput=").append(profile.getPeakTunnelThroughputKBps()).append(NL); - buf.append("tunnelPeakTunnel1mThroughput=").append(profile.getPeakTunnel1mThroughputKBps()).append(NL); + add(buf, "capacityBonus", profile.getCapacityBonus(), "Manual adjustment to the capacity score"); + add(buf, "integrationBonus", profile.getIntegrationBonus(), "Manual adjustment to the integration score"); + add(buf, "speedBonus", profile.getSpeedBonus(), "Manual adjustment to the speed score"); + addDate(buf, "lastHeardAbout", profile.getLastHeardAbout(), "When did we last get a reference to this peer?"); + addDate(buf, "firstHeardAbout", profile.getFirstHeardAbout(), "When did we first get a reference to this peer?"); + addDate(buf, "lastSentToSuccessfully", profile.getLastSendSuccessful(), "When did we last send the peer a message successfully?"); + addDate(buf, "lastFailedSend", profile.getLastSendFailed(), "When did we last fail to send a message to the peer?"); + addDate(buf, "lastHeardFrom", profile.getLastHeardFrom(), "When did we last get a message from the peer?"); + add(buf, "tunnelTestTimeAverage", profile.getTunnelTestTimeAverage(), "Moving average as to how fast the peer replies"); + add(buf, "tunnelPeakThroughput", profile.getPeakThroughputKBps(), "KBytes/sec"); + add(buf, "tunnelPeakTunnelThroughput", profile.getPeakTunnelThroughputKBps(), "KBytes/sec"); + add(buf, "tunnelPeakTunnel1mThroughput", profile.getPeakTunnel1mThroughputKBps(), "KBytes/sec"); buf.append(NL); out.write(buf.toString().getBytes()); @@ -148,12 +151,29 @@ class ProfilePersistenceHelper { } } - public Set readProfiles() { + /** @since 0.8.5 */ + private static void addDate(StringBuilder buf, String name, long val, String description) { + String when = val > 0 ? (new Date(val)).toString() : "Never"; + add(buf, name, val, description + ' ' + when); + } + + /** @since 0.8.5 */ + private static void add(StringBuilder buf, String name, long val, String description) { + buf.append("# ").append(name).append(NL).append("# ").append(description).append(NL); + buf.append(name).append('=').append(val).append(NL).append(NL); + } + + /** @since 0.8.5 */ + private static void add(StringBuilder buf, String name, double val, String description) { + buf.append("# ").append(name).append(NL).append("# ").append(description).append(NL); + buf.append(name).append('=').append(val).append(NL).append(NL); + } + + public Set readProfiles() { long start = _context.clock().now(); - Set files = selectFiles(); - Set profiles = new HashSet(files.size()); - for (Iterator iter = files.iterator(); iter.hasNext();) { - File f = (File)iter.next(); + Set files = selectFiles(); + Set profiles = new HashSet(files.size()); + for (File f : files) { PeerProfile profile = readProfile(f); if (profile != null) profiles.add(profile); @@ -164,10 +184,11 @@ class ProfilePersistenceHelper { return profiles; } - private Set selectFiles() { + private Set selectFiles() { File files[] = getProfileDir().listFiles(new FilenameFilter() { public boolean accept(File dir, String filename) { - return (filename.startsWith("profile-") && filename.endsWith(".dat")); + return (filename.startsWith(PREFIX) && + (filename.endsWith(SUFFIX) || filename.endsWith(OLD_SUFFIX) || filename.endsWith(UNCOMPRESSED_SUFFIX))); } }); Set rv = new HashSet(files.length); @@ -200,6 +221,14 @@ class ProfilePersistenceHelper { ", since we haven't heard from them in a long time"); file.delete(); return null; + } else if (file.getName().endsWith(OLD_SUFFIX)) { + // migrate to new file name, ignore failure + String newName = file.getAbsolutePath(); + newName = newName.substring(0, newName.length() - OLD_SUFFIX.length()) + SUFFIX; + boolean success = file.renameTo(new File(newName)); + if (!success) + // new file exists and on Windows? + file.delete(); } profile.setCapacityBonus(getLong(props, "capacityBonus")); @@ -300,8 +329,8 @@ class ProfilePersistenceHelper { } private Hash getHash(String name) { - String key = name.substring("profile-".length()); - key = key.substring(0, key.length() - ".dat".length()); + String key = name.substring(PREFIX.length()); + key = key.substring(0, 44); //Hash h = new Hash(); try { //h.fromBase64(key); @@ -317,7 +346,7 @@ class ProfilePersistenceHelper { } private File pickFile(PeerProfile profile) { - return new File(getProfileDir(), "profile-" + profile.getPeer().toBase64() + ".dat"); + return new File(getProfileDir(), PREFIX + profile.getPeer().toBase64() + SUFFIX); } private File getProfileDir() { @@ -339,7 +368,7 @@ class ProfilePersistenceHelper { rnd.nextBytes(data); Hash peer = new Hash(data); try { - File f = new File(dir, "profile-" + peer.toBase64() + ".dat"); + File f = new File(dir, PREFIX + peer.toBase64() + SUFFIX); f.createNewFile(); System.out.println("Created " + peer.toBase64()); } catch (IOException ioe) {} diff --git a/router/java/src/net/i2p/router/peermanager/TunnelHistory.java b/router/java/src/net/i2p/router/peermanager/TunnelHistory.java index 208415ca0..bc6109bca 100644 --- a/router/java/src/net/i2p/router/peermanager/TunnelHistory.java +++ b/router/java/src/net/i2p/router/peermanager/TunnelHistory.java @@ -2,6 +2,7 @@ package net.i2p.router.peermanager; import java.io.IOException; import java.io.OutputStream; +import java.util.Date; import java.util.Properties; import net.i2p.router.RouterContext; @@ -138,12 +139,12 @@ public class TunnelHistory { buf.append("#################").append(NL); buf.append("# Tunnel history").append(NL); buf.append("###").append(NL); - add(buf, "lastAgreedTo", _lastAgreedTo, "When did the peer last agree to participate in a tunnel? (milliseconds since the epoch)"); - add(buf, "lastFailed", _lastFailed, "When was the last time a tunnel that the peer agreed to participate failed? (milliseconds since the epoch)"); - add(buf, "lastRejectedCritical", _lastRejectedCritical, "When was the last time the peer refused to participate in a tunnel? (milliseconds since the epoch)"); - add(buf, "lastRejectedBandwidth", _lastRejectedBandwidth, "When was the last time the peer refused to participate in a tunnel? (milliseconds since the epoch)"); - add(buf, "lastRejectedTransient", _lastRejectedTransient, "When was the last time the peer refused to participate in a tunnel? (milliseconds since the epoch)"); - add(buf, "lastRejectedProbabalistic", _lastRejectedProbabalistic, "When was the last time the peer refused to participate in a tunnel? (milliseconds since the epoch)"); + addDate(buf, "lastAgreedTo", _lastAgreedTo, "When did the peer last agree to participate in a tunnel?"); + addDate(buf, "lastFailed", _lastFailed, "When was the last time a tunnel that the peer agreed to participate failed?"); + addDate(buf, "lastRejectedCritical", _lastRejectedCritical, "When was the last time the peer refused to participate in a tunnel (Critical response code)?"); + addDate(buf, "lastRejectedBandwidth", _lastRejectedBandwidth, "When was the last time the peer refused to participate in a tunnel (Bandwidth response code)?"); + addDate(buf, "lastRejectedTransient", _lastRejectedTransient, "When was the last time the peer refused to participate in a tunnel (Transient load response code)?"); + addDate(buf, "lastRejectedProbabalistic", _lastRejectedProbabalistic, "When was the last time the peer refused to participate in a tunnel (Probabalistic response code)?"); add(buf, "lifetimeAgreedTo", _lifetimeAgreedTo, "How many tunnels has the peer ever agreed to participate in?"); add(buf, "lifetimeFailed", _lifetimeFailed, "How many tunnels has the peer ever agreed to participate in that failed prematurely?"); add(buf, "lifetimeRejected", _lifetimeRejected, "How many tunnels has the peer ever refused to participate in?"); @@ -152,8 +153,13 @@ public class TunnelHistory { _failRate.store(out, "tunnelHistory.failRate"); } + private static void addDate(StringBuilder buf, String name, long val, String description) { + String when = val > 0 ? (new Date(val)).toString() : "Never"; + add(buf, name, val, description + ' ' + when); + } + private static void add(StringBuilder buf, String name, long val, String description) { - buf.append("# ").append(name.toUpperCase()).append(NL).append("# ").append(description).append(NL); + buf.append("# ").append(name).append(NL).append("# ").append(description).append(NL); buf.append("tunnels.").append(name).append('=').append(val).append(NL).append(NL); } From b11516f75830780bf233ae877f77eacff5049373 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 19 Mar 2011 18:34:39 +0000 Subject: [PATCH 310/463] remove cache directives --- apps/routerconsole/jsp/css.jsi | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/routerconsole/jsp/css.jsi b/apps/routerconsole/jsp/css.jsi index e259d0707..8e133a127 100644 --- a/apps/routerconsole/jsp/css.jsi +++ b/apps/routerconsole/jsp/css.jsi @@ -10,9 +10,12 @@ if (request.getCharacterEncoding() == null) request.setCharacterEncoding("UTF-8"); - response.setHeader("Pragma", "no-cache"); - response.setHeader("Cache-Control","no-cache"); - response.setDateHeader("Expires", 0); + // Now that we use POST for most forms, these prevent the back button from working after a form submit + // Just let the browser do its thing + //response.setHeader("Pragma", "no-cache"); + //response.setHeader("Cache-Control","no-cache"); + //response.setDateHeader("Expires", 0); + // the above will b0rk if the servlet engine has already flushed // the response prior to including this file, so it should be // near the top From c0422134f9218f59ad96df16ba5535c29d7a68df Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 19 Mar 2011 18:46:18 +0000 Subject: [PATCH 311/463] * i2psnark: Fix peers stuck at uninteresting after magnet fetch --- .../java/src/org/klomp/snark/PeerCoordinator.java | 4 ++++ apps/i2psnark/java/src/org/klomp/snark/PeerState.java | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java index 3aec9394c..11f0fff86 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java @@ -426,6 +426,10 @@ public class PeerCoordinator implements PeerListener _log.info("New connection to peer: " + peer + " for " + name); } + // We may have gotten the metainfo after the peer was created. + if (metainfo != null) + peer.setMetaInfo(metainfo); + // Add it to the beginning of the list. // And try to optimistically make it a uploader. // Can't add to beginning since we converted from a List to a Queue diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerState.java b/apps/i2psnark/java/src/org/klomp/snark/PeerState.java index aadc5cba2..111ddbbe6 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerState.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerState.java @@ -496,10 +496,14 @@ class PeerState implements DataLoader } /** - * Switch from magnet mode to normal mode + * Switch from magnet mode to normal mode. + * If we already have the metainfo, this does nothing. + * @param meta non-null * @since 0.8.4 */ public void setMetaInfo(MetaInfo meta) { + if (metainfo != null) + return; BitField oldBF = bitfield; if (oldBF != null) { if (oldBF.size() != meta.getPieces()) @@ -511,7 +515,7 @@ class PeerState implements DataLoader //bitfield = new BitField(meta.getPieces()); } metainfo = meta; - if (bitfield.count() > 0) + if (bitfield != null && bitfield.count() > 0) setInteresting(true); } From fa8f2290af190421119d0347820b1167342e6e5a Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 20 Mar 2011 13:34:14 +0000 Subject: [PATCH 312/463] set firstHeardAbout; tweak dump order --- history.txt | 13 +++++++++++++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- .../src/net/i2p/router/peermanager/PeerProfile.java | 9 ++++++++- .../i2p/router/peermanager/ProfileManagerImpl.java | 1 + .../peermanager/ProfilePersistenceHelper.java | 6 +++--- 5 files changed, 26 insertions(+), 5 deletions(-) diff --git a/history.txt b/history.txt index 8bf5c2aef..04e9e58e7 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,16 @@ +2011-03-20 zzz + * Console: Remove cache directives + * i2psnark: Fix peers stuck at uninteresting after metainfo fetch + * i2ptunnel: Change all clients to 3 hops by default (new installs only) + * Profiles: + - Nicer profile dump + - More efficient profile lookup for display + - Fix dumpprofile NPE + - Change file suffix from .dat to .txt.gz + - Set firstHeardAbout on creation + * Rate: Fix equals() + * Recognize links and links2 as text browsers + 2011-03-12 zzz * Blocklist: Add bogons since they won't change any more * BuildHandler: Loop double-check diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index c10128fe6..fecba78d6 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 = 6; + public final static long BUILD = 7; /** for example "-test" */ public final static String EXTRA = ""; diff --git a/router/java/src/net/i2p/router/peermanager/PeerProfile.java b/router/java/src/net/i2p/router/peermanager/PeerProfile.java index 6818abb96..034f559ae 100644 --- a/router/java/src/net/i2p/router/peermanager/PeerProfile.java +++ b/router/java/src/net/i2p/router/peermanager/PeerProfile.java @@ -62,6 +62,10 @@ public class PeerProfile { public PeerProfile(RouterContext context, Hash peer) { this(context, peer, true); } + + /** + * @param expand must be true (see below) + */ public PeerProfile(RouterContext context, Hash peer, boolean expand) { _context = context; _log = context.logManager().getLog(PeerProfile.class); @@ -125,7 +129,10 @@ public class PeerProfile { } - /** when did we first hear about this peer? */ + /** + * When did we first hear about this peer? + * Currently unused, candidate for removal. + */ public long getFirstHeardAbout() { return _firstHeardAbout; } public void setFirstHeardAbout(long when) { _firstHeardAbout = when; } diff --git a/router/java/src/net/i2p/router/peermanager/ProfileManagerImpl.java b/router/java/src/net/i2p/router/peermanager/ProfileManagerImpl.java index 712a3cba6..5a0a69f0b 100644 --- a/router/java/src/net/i2p/router/peermanager/ProfileManagerImpl.java +++ b/router/java/src/net/i2p/router/peermanager/ProfileManagerImpl.java @@ -341,6 +341,7 @@ public class ProfileManagerImpl implements ProfileManager { PeerProfile prof = _context.profileOrganizer().getProfile(peer); if (prof == null) { prof = new PeerProfile(_context, peer); + prof.setFirstHeardAbout(_context.clock().now()); _context.profileOrganizer().addProfile(prof); } return prof; diff --git a/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java b/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java index 07782fe25..e278063aa 100644 --- a/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java +++ b/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java @@ -119,14 +119,14 @@ class ProfilePersistenceHelper { buf.append("#").append(NL); buf.append("########################################################################").append(NL); buf.append("##").append(NL); + add(buf, "speedBonus", profile.getSpeedBonus(), "Manual adjustment to the speed score"); add(buf, "capacityBonus", profile.getCapacityBonus(), "Manual adjustment to the capacity score"); add(buf, "integrationBonus", profile.getIntegrationBonus(), "Manual adjustment to the integration score"); - add(buf, "speedBonus", profile.getSpeedBonus(), "Manual adjustment to the speed score"); - addDate(buf, "lastHeardAbout", profile.getLastHeardAbout(), "When did we last get a reference to this peer?"); addDate(buf, "firstHeardAbout", profile.getFirstHeardAbout(), "When did we first get a reference to this peer?"); + addDate(buf, "lastHeardAbout", profile.getLastHeardAbout(), "When did we last get a reference to this peer?"); + addDate(buf, "lastHeardFrom", profile.getLastHeardFrom(), "When did we last get a message from the peer?"); addDate(buf, "lastSentToSuccessfully", profile.getLastSendSuccessful(), "When did we last send the peer a message successfully?"); addDate(buf, "lastFailedSend", profile.getLastSendFailed(), "When did we last fail to send a message to the peer?"); - addDate(buf, "lastHeardFrom", profile.getLastHeardFrom(), "When did we last get a message from the peer?"); add(buf, "tunnelTestTimeAverage", profile.getTunnelTestTimeAverage(), "Moving average as to how fast the peer replies"); add(buf, "tunnelPeakThroughput", profile.getPeakThroughputKBps(), "KBytes/sec"); add(buf, "tunnelPeakTunnelThroughput", profile.getPeakTunnelThroughputKBps(), "KBytes/sec"); From bfb4560dc230af247e9cb83524a136309766ad07 Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 20 Mar 2011 18:14:30 +0000 Subject: [PATCH 313/463] maxMemory() fixes for silly GNU returning Long.MAX_VALUE --- core/java/src/net/i2p/crypto/DHSessionKeyBuilder.java | 4 +++- core/java/src/net/i2p/crypto/YKGenerator.java | 4 +++- core/java/src/net/i2p/data/DataHelper.java | 9 +++++++++ core/java/src/net/i2p/data/RouterInfo.java | 3 ++- core/java/src/net/i2p/data/SDSCache.java | 2 ++ core/java/src/net/i2p/util/ByteCache.java | 2 ++ core/java/src/net/i2p/util/SimpleScheduler.java | 2 ++ core/java/src/net/i2p/util/SimpleTimer.java | 2 ++ core/java/src/net/i2p/util/SimpleTimer2.java | 2 ++ router/java/src/net/i2p/router/JobQueue.java | 2 ++ router/java/src/net/i2p/router/Router.java | 5 ++++- router/java/src/net/i2p/router/RouterContext.java | 2 ++ .../net/i2p/router/transport/ntcp/NTCPSendFinisher.java | 2 ++ .../src/net/i2p/router/transport/ntcp/NTCPTransport.java | 2 ++ .../net/i2p/router/transport/udp/MessageReceiver.java | 2 ++ .../src/net/i2p/router/transport/udp/PacketHandler.java | 2 ++ .../src/net/i2p/router/tunnel/TunnelGatewayPumper.java | 2 ++ 17 files changed, 45 insertions(+), 4 deletions(-) diff --git a/core/java/src/net/i2p/crypto/DHSessionKeyBuilder.java b/core/java/src/net/i2p/crypto/DHSessionKeyBuilder.java index 192bde062..160cc1354 100644 --- a/core/java/src/net/i2p/crypto/DHSessionKeyBuilder.java +++ b/core/java/src/net/i2p/crypto/DHSessionKeyBuilder.java @@ -82,7 +82,9 @@ public class DHSessionKeyBuilder { // add to the defaults for every 128MB of RAM, up to 512MB long maxMemory = Runtime.getRuntime().maxMemory(); - int factor = Math.min(4, (int) (1 + (maxMemory / (128*1024*1024l)))); + if (maxMemory == Long.MAX_VALUE) + maxMemory = 127*1024*1024l; + int factor = (int) Math.max(1l, Math.min(4l, 1 + (maxMemory / (128*1024*1024l)))); int defaultMin = DEFAULT_DH_PRECALC_MIN * factor; int defaultMax = DEFAULT_DH_PRECALC_MAX * factor; MIN_NUM_BUILDERS = ctx.getProperty(PROP_DH_PRECALC_MIN, defaultMin); diff --git a/core/java/src/net/i2p/crypto/YKGenerator.java b/core/java/src/net/i2p/crypto/YKGenerator.java index 165749a7c..ef8546e2f 100644 --- a/core/java/src/net/i2p/crypto/YKGenerator.java +++ b/core/java/src/net/i2p/crypto/YKGenerator.java @@ -60,7 +60,9 @@ class YKGenerator { // add to the defaults for every 128MB of RAM, up to 1GB long maxMemory = Runtime.getRuntime().maxMemory(); - int factor = Math.min(8, (int) (1 + (maxMemory / (128*1024*1024l)))); + if (maxMemory == Long.MAX_VALUE) + maxMemory = 127*1024*1024l; + int factor = (int) Math.max(1l, Math.min(8l, 1 + (maxMemory / (128*1024*1024l)))); int defaultMin = DEFAULT_YK_PRECALC_MIN * factor; int defaultMax = DEFAULT_YK_PRECALC_MAX * factor; MIN_NUM_BUILDERS = ctx.getProperty(PROP_YK_PRECALC_MIN, defaultMin); diff --git a/core/java/src/net/i2p/data/DataHelper.java b/core/java/src/net/i2p/data/DataHelper.java index 4e3db770b..1aa5e9040 100644 --- a/core/java/src/net/i2p/data/DataHelper.java +++ b/core/java/src/net/i2p/data/DataHelper.java @@ -1195,6 +1195,10 @@ public class DataHelper { case 2: return str + "M"; case 3: return str + "G"; case 4: return str + "T"; + case 5: return str + "P"; + case 6: return str + "E"; + case 7: return str + "Z"; + case 8: return str + "Y"; default: return bytes + ""; } } @@ -1221,12 +1225,17 @@ public class DataHelper { case 2: return str + " M"; case 3: return str + " G"; case 4: return str + " T"; + case 5: return str + " P"; + case 6: return str + " E"; + case 7: return str + " Z"; + case 8: return str + " Y"; default: return bytes + " "; } } /** * Strip out any HTML (simply removing any less than / greater than symbols) + * @param orig may be null, returns empty string if null */ public static String stripHTML(String orig) { if (orig == null) return ""; diff --git a/core/java/src/net/i2p/data/RouterInfo.java b/core/java/src/net/i2p/data/RouterInfo.java index b4aae94b1..7d6ff8a8e 100644 --- a/core/java/src/net/i2p/data/RouterInfo.java +++ b/core/java/src/net/i2p/data/RouterInfo.java @@ -52,7 +52,8 @@ public class RouterInfo extends DatabaseEntry { /** should we cache the byte and string versions _byteified ? **/ private boolean _shouldCache; /** maybe we should check if we are floodfill? */ - private static final boolean CACHE_ALL = Runtime.getRuntime().maxMemory() > 128*1024*1024l; + private static final boolean CACHE_ALL = Runtime.getRuntime().maxMemory() > 128*1024*1024l && + Runtime.getRuntime().maxMemory() < Long.MAX_VALUE; public static final String PROP_NETWORK_ID = "netId"; public static final String PROP_CAPABILITIES = "caps"; diff --git a/core/java/src/net/i2p/data/SDSCache.java b/core/java/src/net/i2p/data/SDSCache.java index 562c49c79..8698f6a78 100644 --- a/core/java/src/net/i2p/data/SDSCache.java +++ b/core/java/src/net/i2p/data/SDSCache.java @@ -50,6 +50,8 @@ public class SDSCache { private static final double FACTOR; static { long maxMemory = Runtime.getRuntime().maxMemory(); + if (maxMemory == Long.MAX_VALUE) + maxMemory = 96*1024*1024l; FACTOR = Math.max(MIN_FACTOR, Math.min(MAX_FACTOR, maxMemory / (128*1024*1024d))); } diff --git a/core/java/src/net/i2p/util/ByteCache.java b/core/java/src/net/i2p/util/ByteCache.java index 3ef72ca10..2d3eb482d 100644 --- a/core/java/src/net/i2p/util/ByteCache.java +++ b/core/java/src/net/i2p/util/ByteCache.java @@ -69,6 +69,8 @@ public final class ByteCache { private static final int MAX_CACHE; static { long maxMemory = Runtime.getRuntime().maxMemory(); + if (maxMemory == Long.MAX_VALUE) + maxMemory = 96*1024*1024l; MAX_CACHE = (int) Math.min(4*1024*1024l, Math.max(128*1024l, maxMemory / 128)); } diff --git a/core/java/src/net/i2p/util/SimpleScheduler.java b/core/java/src/net/i2p/util/SimpleScheduler.java index 951f5929e..61e2e66b3 100644 --- a/core/java/src/net/i2p/util/SimpleScheduler.java +++ b/core/java/src/net/i2p/util/SimpleScheduler.java @@ -43,6 +43,8 @@ public class SimpleScheduler { _log = _context.logManager().getLog(SimpleScheduler.class); _name = name; long maxMemory = Runtime.getRuntime().maxMemory(); + if (maxMemory == Long.MAX_VALUE) + maxMemory = 96*1024*1024l; _threads = (int) Math.max(MIN_THREADS, Math.min(MAX_THREADS, 1 + (maxMemory / (32*1024*1024)))); _executor = new ScheduledThreadPoolExecutor(_threads, new CustomThreadFactory()); _executor.prestartAllCoreThreads(); diff --git a/core/java/src/net/i2p/util/SimpleTimer.java b/core/java/src/net/i2p/util/SimpleTimer.java index ee3f35120..b19b5d691 100644 --- a/core/java/src/net/i2p/util/SimpleTimer.java +++ b/core/java/src/net/i2p/util/SimpleTimer.java @@ -44,6 +44,8 @@ public class SimpleTimer { runner.setDaemon(true); runner.start(); long maxMemory = Runtime.getRuntime().maxMemory(); + if (maxMemory == Long.MAX_VALUE) + maxMemory = 128*1024*1024l; int threads = (int) Math.max(MIN_THREADS, Math.min(MAX_THREADS, 1 + (maxMemory / (32*1024*1024)))); for (int i = 1; i <= threads ; i++) { I2PThread executor = new I2PThread(new Executor(_context, _log, _readyEvents, runn)); diff --git a/core/java/src/net/i2p/util/SimpleTimer2.java b/core/java/src/net/i2p/util/SimpleTimer2.java index a497915e2..955f8faa3 100644 --- a/core/java/src/net/i2p/util/SimpleTimer2.java +++ b/core/java/src/net/i2p/util/SimpleTimer2.java @@ -43,6 +43,8 @@ public class SimpleTimer2 { _name = name; _count = 0; long maxMemory = Runtime.getRuntime().maxMemory(); + if (maxMemory == Long.MAX_VALUE) + maxMemory = 96*1024*1024l; _threads = (int) Math.max(MIN_THREADS, Math.min(MAX_THREADS, 1 + (maxMemory / (32*1024*1024)))); _executor = new CustomScheduledThreadPoolExecutor(_threads, new CustomThreadFactory()); _executor.prestartAllCoreThreads(); diff --git a/router/java/src/net/i2p/router/JobQueue.java b/router/java/src/net/i2p/router/JobQueue.java index 70a1b3bfe..7f5cb008f 100644 --- a/router/java/src/net/i2p/router/JobQueue.java +++ b/router/java/src/net/i2p/router/JobQueue.java @@ -61,6 +61,8 @@ public class JobQueue { private static final int RUNNERS; static { long maxMemory = Runtime.getRuntime().maxMemory(); + if (maxMemory == Long.MAX_VALUE) + maxMemory = 128*1024*1024l; if (maxMemory < 64*1024*1024) RUNNERS = 3; else if (maxMemory < 256*1024*1024) diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java index 5904d04ea..79f05bbd4 100644 --- a/router/java/src/net/i2p/router/Router.java +++ b/router/java/src/net/i2p/router/Router.java @@ -1432,7 +1432,10 @@ private static class CoalesceStatsEvent implements SimpleTimer.TimedEvent { ctx.statManager().createRateStat("router.highCapacityPeers", "How many high capacity peers we know", "Throttle", new long[] { 5*60*1000, 60*60*1000 }); ctx.statManager().createRateStat("router.fastPeers", "How many fast peers we know", "Throttle", new long[] { 5*60*1000, 60*60*1000 }); _maxMemory = Runtime.getRuntime().maxMemory(); - ctx.statManager().createRateStat("router.memoryUsed", "(Bytes) Max is " + (_maxMemory / (1024*1024)) + "MB", "Router", new long[] { 60*1000 }); + String legend = "(Bytes)"; + if (_maxMemory < Long.MAX_VALUE) + legend += " Max is " + DataHelper.formatSize(_maxMemory) + 'B'; + ctx.statManager().createRateStat("router.memoryUsed", legend, "Router", new long[] { 60*1000 }); } private RouterContext getContext() { return _ctx; } public void timeReached() { diff --git a/router/java/src/net/i2p/router/RouterContext.java b/router/java/src/net/i2p/router/RouterContext.java index ee891b230..4ac21fce5 100644 --- a/router/java/src/net/i2p/router/RouterContext.java +++ b/router/java/src/net/i2p/router/RouterContext.java @@ -93,6 +93,8 @@ public class RouterContext extends I2PAppContext { // or about 2 seconds per buffer - so about 200x faster // to fill than to drain - so we don't need too many long maxMemory = Runtime.getRuntime().maxMemory(); + if (maxMemory == Long.MAX_VALUE) + maxMemory = 96*1024*1024l; long buffs = Math.min(16, Math.max(2, maxMemory / (14 * 1024 * 1024))); envProps.setProperty("prng.buffers", "" + buffs); } diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPSendFinisher.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPSendFinisher.java index 24b86fd5b..630036204 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/NTCPSendFinisher.java +++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPSendFinisher.java @@ -34,6 +34,8 @@ class NTCPSendFinisher { private static final int THREADS; static { long maxMemory = Runtime.getRuntime().maxMemory(); + if (maxMemory == Long.MAX_VALUE) + maxMemory = 96*1024*1024l; THREADS = (int) Math.max(MIN_THREADS, Math.min(MAX_THREADS, 1 + (maxMemory / (32*1024*1024)))); } diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java index 62d57810e..326f659ef 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java +++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java @@ -491,6 +491,8 @@ public class NTCPTransport extends TransportImpl { _pumper.startPumping(); long maxMemory = Runtime.getRuntime().maxMemory(); + if (maxMemory == Long.MAX_VALUE) + maxMemory = 128*1024*1024l; int nr, nw; if (maxMemory < 32*1024*1024) { nr = nw = 1; diff --git a/router/java/src/net/i2p/router/transport/udp/MessageReceiver.java b/router/java/src/net/i2p/router/transport/udp/MessageReceiver.java index 4988a0685..dede98ef7 100644 --- a/router/java/src/net/i2p/router/transport/udp/MessageReceiver.java +++ b/router/java/src/net/i2p/router/transport/udp/MessageReceiver.java @@ -39,6 +39,8 @@ class MessageReceiver { _completeMessages = new LinkedBlockingQueue(); long maxMemory = Runtime.getRuntime().maxMemory(); + if (maxMemory == Long.MAX_VALUE) + maxMemory = 96*1024*1024l; if (maxMemory < 32*1024*1024) _threadCount = 1; else if (maxMemory < 64*1024*1024) diff --git a/router/java/src/net/i2p/router/transport/udp/PacketHandler.java b/router/java/src/net/i2p/router/transport/udp/PacketHandler.java index ffbcf48ac..824f4a928 100644 --- a/router/java/src/net/i2p/router/transport/udp/PacketHandler.java +++ b/router/java/src/net/i2p/router/transport/udp/PacketHandler.java @@ -48,6 +48,8 @@ class PacketHandler { _introManager = introManager; long maxMemory = Runtime.getRuntime().maxMemory(); + if (maxMemory == Long.MAX_VALUE) + maxMemory = 96*1024*1024l; int num_handlers; if (maxMemory < 32*1024*1024) num_handlers = 1; diff --git a/router/java/src/net/i2p/router/tunnel/TunnelGatewayPumper.java b/router/java/src/net/i2p/router/tunnel/TunnelGatewayPumper.java index 7f29f5743..38c72dfaf 100644 --- a/router/java/src/net/i2p/router/tunnel/TunnelGatewayPumper.java +++ b/router/java/src/net/i2p/router/tunnel/TunnelGatewayPumper.java @@ -26,6 +26,8 @@ public class TunnelGatewayPumper implements Runnable { _wantsPumping = new LinkedBlockingQueue(); _stop = false; long maxMemory = Runtime.getRuntime().maxMemory(); + if (maxMemory == Long.MAX_VALUE) + maxMemory = 96*1024*1024l; _pumpers = (int) Math.max(MIN_PUMPERS, Math.min(MAX_PUMPERS, 1 + (maxMemory / (32*1024*1024)))); for (int i = 0; i < _pumpers; i++) new I2PThread(this, "Tunnel GW pumper " + (i+1) + '/' + _pumpers, true).start(); From 3ba9f872edd145f398798e558f9398d1b75625de Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 20 Mar 2011 18:28:29 +0000 Subject: [PATCH 314/463] fix manifest error --- apps/i2psnark/java/build.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/i2psnark/java/build.xml b/apps/i2psnark/java/build.xml index 8b8c34060..e500dcc61 100644 --- a/apps/i2psnark/java/build.xml +++ b/apps/i2psnark/java/build.xml @@ -79,7 +79,7 @@ - + From 642376b0b6d3e67b8d1dde4ce93d30c3ad73b02e Mon Sep 17 00:00:00 2001 From: zzz Date: Mon, 21 Mar 2011 14:27:46 +0000 Subject: [PATCH 315/463] HTML fixes --- apps/i2ptunnel/jsp/edit.jsp | 16 ++++++++++------ apps/i2ptunnel/jsp/editServer.jsp | 13 +++++-------- apps/i2ptunnel/jsp/index.jsp | 9 ++++++--- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/apps/i2ptunnel/jsp/edit.jsp b/apps/i2ptunnel/jsp/edit.jsp index 2da356e9c..e35f23c0f 100644 --- a/apps/i2ptunnel/jsp/edit.jsp +++ b/apps/i2ptunnel/jsp/edit.jsp @@ -1,13 +1,17 @@ -<%@page pageEncoding="UTF-8"%> -<%@page contentType="text/html" import="net.i2p.i2ptunnel.web.EditBean" %><% +<% + // NOTE: Do the header carefully so there is no whitespace before the <%@page pageEncoding="UTF-8" +%><%@page contentType="text/html" import="net.i2p.i2ptunnel.web.EditBean" +%><% String tun = request.getParameter("tunnel"); if (tun != null) { try { int curTunnel = Integer.parseInt(tun); if (EditBean.staticIsClient(curTunnel)) { - %><% + %><% } else { - %><% + %><% } } catch (NumberFormatException nfe) { %>Invalid tunnel parameter<% @@ -16,9 +20,9 @@ String tun = request.getParameter("tunnel"); String type = request.getParameter("type"); int curTunnel = -1; if (EditBean.isClient(type)) { - %><% + %><% } else { - %><% + %><% } } %> diff --git a/apps/i2ptunnel/jsp/editServer.jsp b/apps/i2ptunnel/jsp/editServer.jsp index e7a28bcd3..45e96f73d 100644 --- a/apps/i2ptunnel/jsp/editServer.jsp +++ b/apps/i2ptunnel/jsp/editServer.jsp @@ -188,7 +188,7 @@ <% if (!"".equals(editBean.getDestinationBase64(curTunnel))) { %> - <%=intl._("Add to local addressbook")%> + <%=intl._("Add to local addressbook")%> <% } %> @@ -340,7 +340,7 @@ - + <%=intl._("(Tunnel must be stopped first)")%> @@ -374,7 +374,7 @@
    - +
    @@ -453,7 +453,6 @@
    class="tickbox" /> -
    @@ -465,13 +464,12 @@ - +
    class="tickbox" /> -
    class="tickbox" /> -
    - + <%=intl._("(Tunnel must be stopped first)")%>
    diff --git a/apps/i2ptunnel/jsp/index.jsp b/apps/i2ptunnel/jsp/index.jsp index a5e07c532..9b4149195 100644 --- a/apps/i2ptunnel/jsp/index.jsp +++ b/apps/i2ptunnel/jsp/index.jsp @@ -1,10 +1,13 @@ <% + // NOTE: Do the header carefully so there is no whitespace before the -<%@page pageEncoding="UTF-8"%> -<%@page contentType="text/html" import="net.i2p.i2ptunnel.web.IndexBean"%> + +%><%@page pageEncoding="UTF-8" +%><%@page contentType="text/html" import="net.i2p.i2ptunnel.web.IndexBean" +%> From 4c0a4a22960c64c042629de689f8787b396c55d4 Mon Sep 17 00:00:00 2001 From: duck Date: Mon, 21 Mar 2011 18:06:58 +0000 Subject: [PATCH 316/463] Update english routerconsole tags --- apps/routerconsole/locale/messages_en.po | 1324 ++++++++++++---------- 1 file changed, 698 insertions(+), 626 deletions(-) diff --git a/apps/routerconsole/locale/messages_en.po b/apps/routerconsole/locale/messages_en.po index e3ea2629b..3da36a223 100644 --- a/apps/routerconsole/locale/messages_en.po +++ b/apps/routerconsole/locale/messages_en.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-03-03 18:27+0000\n" +"POT-Creation-Date: 2011-03-21 18:01+0000\n" "PO-Revision-Date: 2010-06-15 14:09+0100\n" "Last-Translator: duck \n" "Language-Team: duck \n" @@ -64,7 +64,7 @@ msgstr[0] "" msgstr[1] "" #: ../../../core/java/src/net/i2p/data/DataHelper.java:1158 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:314 msgid "n/a" msgstr "" @@ -145,36 +145,36 @@ msgstr "" msgid "Rejecting tunnels" msgstr "" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:105 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:125 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 msgid "Reseeding" msgstr "" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:128 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:141 #, java-format msgid "Reseed fetched only 1 router." msgid_plural "Reseed fetched only {0} routers." msgstr[0] "" msgstr[1] "" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:135 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:148 msgid "Reseed failed." msgstr "" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:136 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:149 #, java-format msgid "See {0} for help." msgstr "" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:137 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:150 msgid "reseed configuration page" msgstr "" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:239 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:293 msgid "Reseeding: fetching seed URL." msgstr "" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:335 #, java-format msgid "" "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." @@ -203,7 +203,7 @@ msgid "{0} is used for outbound connections only" msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:518 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129 msgid "Help" msgstr "" @@ -220,7 +220,7 @@ msgid "" msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 msgid "Definitions" msgstr "" @@ -231,7 +231,7 @@ msgstr "" #: ../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/ProfileOrganizerRenderer.java:189 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:238 msgid "Peer" msgstr "" @@ -416,13 +416,13 @@ msgstr "" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:758 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1949 -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87 msgid "Inbound" msgstr "" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1951 -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87 msgid "Outbound" msgstr "" @@ -547,20 +547,20 @@ msgstr "" msgid "Dropping tunnel requests: Overloaded" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:460 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:470 msgid "Rejecting tunnels: Request overload" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:485 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:495 msgid "Rejecting tunnels: Connection limit" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:685 -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:706 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:695 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:716 msgid "Dropping tunnel requests: High load" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:698 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:708 msgid "Dropping tunnel requests: Queue time" msgstr "" @@ -1490,12 +1490,12 @@ msgstr "" msgid "Zimbabwe" msgstr "" -#: ../java/src/net/i2p/router/web/CSSHelper.java:58 +#: ../java/src/net/i2p/router/web/CSSHelper.java:60 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:35 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:37 #: ../java/strings/Strings.java:29 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:119 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:233 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:125 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:257 msgid "I2P Router Console" msgstr "" @@ -1516,27 +1516,27 @@ msgid "" msgstr "" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:355 msgid "Save Client Configuration" msgstr "" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:39 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:405 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427 msgid "Save Interface Configuration" msgstr "" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:441 msgid "Save WebApp Configuration" msgstr "" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:47 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:453 msgid "Save Plugin Configuration" msgstr "" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:51 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:461 msgid "Install Plugin" msgstr "" @@ -1590,7 +1590,7 @@ msgstr "" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:392 #: ../java/src/net/i2p/router/web/SummaryHelper.java:384 msgid "Client" msgstr "" @@ -1673,7 +1673,7 @@ msgid "Edit" msgstr "" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:94 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351 msgid "Add Client" msgstr "" @@ -1704,7 +1704,7 @@ msgid "Plugin" msgstr "" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:161 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:273 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185 msgid "Version" msgstr "" @@ -1739,14 +1739,12 @@ msgstr "" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:262 #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:78 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331 msgid "Check for updates" msgstr "" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:263 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:242 msgid "Update" msgstr "" @@ -1760,12 +1758,12 @@ msgid "Delete" msgstr "" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:18 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:343 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:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:341 msgid "Delete key" msgstr "" @@ -1865,7 +1863,7 @@ msgstr "" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:101 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381 #: ../java/strings/Strings.java:72 msgid "Tunnels" msgstr "" @@ -1879,7 +1877,7 @@ msgid "Clients" msgstr "" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:293 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:315 msgid "Keyring" msgstr "" @@ -1889,13 +1887,13 @@ msgstr "" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:107 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:255 #: ../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:387 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:389 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:143 msgid "Stats" msgstr "" @@ -1908,13 +1906,13 @@ msgstr "" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:264 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:29 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:34 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:360 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:516 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:307 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:341 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:352 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:377 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:344 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:378 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:534 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:370 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:362 msgid "Save changes" msgstr "" @@ -2018,7 +2016,7 @@ msgid "or {0} bytes per month maximum" msgstr "" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:20 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:333 msgid "Ban peer until restart" msgstr "" @@ -2038,7 +2036,7 @@ 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:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:335 msgid "Unban peer" msgstr "" @@ -2051,7 +2049,7 @@ 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:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:361 msgid "Adjust peer bonuses" msgstr "" @@ -2064,7 +2062,7 @@ msgid "Bad capacity value" msgstr "" #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:17 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:368 msgid "Save changes and reseed now" msgstr "" @@ -2084,7 +2082,7 @@ 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:293 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:311 msgid "Shutdown immediately" msgstr "" @@ -2131,7 +2129,7 @@ msgid "Restart in {0}" msgstr "" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:53 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:291 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:309 msgid "Shutdown gracefully" msgstr "" @@ -2144,7 +2142,7 @@ 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:295 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:313 msgid "Cancel graceful shutdown" msgstr "" @@ -2153,7 +2151,7 @@ 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:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 msgid "Graceful restart" msgstr "" @@ -2162,7 +2160,7 @@ 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:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 msgid "Hard restart" msgstr "" @@ -2187,22 +2185,22 @@ 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:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 msgid "Run I2P on startup" msgstr "" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:82 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:355 msgid "Don't run I2P on startup" msgstr "" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:84 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:355 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:373 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:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:381 msgid "View console on startup" msgstr "" @@ -2211,7 +2209,7 @@ msgid "Console is to be shown on startup" msgstr "" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:94 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:383 msgid "Do not view console on startup" msgstr "" @@ -2281,58 +2279,58 @@ msgid_plural "{0} tunnels" msgstr[0] "" msgstr[1] "" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:26 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:35 #: ../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." +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:51 +#, java-format +msgid "Client tunnels for {0}" msgstr "" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74 +msgid "ANONYMITY WARNING - Settings include 0-hop tunnels." +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:79 msgid "ANONYMITY WARNING - Settings include 1-hop tunnels." msgstr "" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:77 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 msgid "PERFORMANCE WARNING - Settings include very long tunnels." msgstr "" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:80 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:85 msgid "PERFORMANCE WARNING - Settings include high tunnel quantities." msgstr "" #. buf.append("
    \n"); #. tunnel depth -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:92 msgid "Length" msgstr "" #. tunnel depth variance -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:104 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:109 msgid "Randomization" msgstr "" #. tunnel quantity -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:128 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:133 msgid "Quantity" msgstr "" #. tunnel backup quantity -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:145 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:150 msgid "Backup quantity" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:167 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:172 msgid "Inbound options" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:180 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:185 msgid "Outbound options" msgstr "" @@ -2449,7 +2447,7 @@ msgstr "" msgid "Download, verify, and restart" msgstr "" -#: ../java/src/net/i2p/router/web/FormHandler.java:174 +#: ../java/src/net/i2p/router/web/FormHandler.java:176 msgid "" "Invalid form submission, probably because you used the 'back' or 'reload' " "button on your browser. Please resubmit." @@ -2482,8 +2480,8 @@ msgid "Plot averages" msgstr "" #: ../java/src/net/i2p/router/web/GraphHelper.java:152 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:333 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:351 msgid "or" msgstr "" @@ -2619,96 +2617,96 @@ msgstr "" msgid "Show all routers with full stats" msgstr "" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:265 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:266 msgid "Network Database Router Statistics" msgstr "" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:273 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:287 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:305 msgid "Count" msgstr "" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:287 msgid "Transports" msgstr "" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:305 msgid "Country" msgstr "" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:342 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:344 msgid "Our info" msgstr "" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:344 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:346 msgid "Peer info for" msgstr "" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:348 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:350 msgid "Full entry" msgstr "" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:356 #: ../java/src/net/i2p/router/web/SummaryHelper.java:115 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 msgid "Hidden" msgstr "" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:356 msgid "Updated" msgstr "" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:355 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:358 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:357 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:360 #, java-format msgid "{0} ago" msgstr "" #. shouldnt happen -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:357 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:361 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:359 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:363 msgid "Published" msgstr "" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:363 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:365 msgid "Address(es)" msgstr "" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:376 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:378 msgid "cost" msgstr "" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 msgid "Hidden or starting up" msgstr "" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 msgid "SSU" msgstr "" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 msgid "SSU with introducers" msgstr "" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:404 msgid "NTCP" msgstr "" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:404 msgid "NTCP and SSU" msgstr "" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:404 msgid "NTCP and SSU with introducers" msgstr "" -#: ../java/src/net/i2p/router/web/NewsFetcher.java:93 +#: ../java/src/net/i2p/router/web/NewsFetcher.java:92 #, java-format msgid "News last updated {0} ago." msgstr "" -#: ../java/src/net/i2p/router/web/NewsFetcher.java:99 +#: ../java/src/net/i2p/router/web/NewsFetcher.java:98 #, java-format msgid "News last checked {0} ago." msgstr "" @@ -2743,7 +2741,7 @@ msgid "Downloading plugin" msgstr "" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:146 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:244 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:245 #, java-format msgid "{0}B transferred" msgstr "" @@ -2759,7 +2757,7 @@ msgid "Cannot create plugin directory {0}" msgstr "" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:167 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:298 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:299 #, java-format msgid "from {0}" msgstr "" @@ -2881,37 +2879,43 @@ msgstr "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:73 #, java-format -msgid "Showing {0} recent profiles." -msgstr "" +msgid "Showing 1 recent profile." +msgid_plural "Showing {0} recent profiles." +msgstr[0] "" +msgstr[1] "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:75 #, java-format -msgid "Hiding {0} older profiles." -msgstr "" +msgid "Hiding 1 older profile." +msgid_plural "Hiding {0} older profiles." +msgstr[0] "" +msgstr[1] "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:77 #, java-format -msgid "Hiding {0} standard profiles." -msgstr "" +msgid "Hiding 1 standard profile." +msgid_plural "Hiding {0} standard profiles." +msgstr[0] "" +msgstr[1] "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:82 msgid "Groups (Caps)" msgstr "" #: ../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:335 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:252 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:353 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:339 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:254 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:357 msgid "Capacity" msgstr "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:85 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:255 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:256 msgid "Integration" msgstr "" @@ -2937,7 +2941,7 @@ msgid "Failing" msgstr "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:287 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:282 msgid "Integrated" msgstr "" @@ -2950,153 +2954,158 @@ msgstr "" msgid "Test Fails" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:175 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:177 msgid "profile" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:184 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:186 msgid "Floodfill and Integrated Peers" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:188 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190 msgid "Caps" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:189 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:191 msgid "Integ. Value" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:192 msgid "Last Heard About" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:191 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:193 msgid "Last Heard From" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:192 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:194 msgid "Last Good Send" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:193 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195 msgid "Last Bad Send" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:194 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196 msgid "10m Resp. Time" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:197 msgid "1h Resp. Time" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:198 msgid "1d Resp. Time" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:197 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:199 msgid "Last Good Lookup" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:198 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:200 msgid "Last Bad Lookup" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:199 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201 msgid "Last Good Store" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:200 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 msgid "Last Bad Store" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:203 msgid "1h Fail Rate" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:204 msgid "1d Fail Rate" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:250 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:251 msgid "Thresholds" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:252 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:253 msgid "fast peers" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:254 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:255 msgid "high capacity peers" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:256 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 msgid " well integrated peers" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 msgid "as determined by the profile organizer" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 msgid "groups" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 msgid "capabilities in the netDb, not used to determine profiles" msgstr "" #. capabilities -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 #: ../java/strings/Strings.java:81 msgid "caps" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 msgid "" "peak throughput (bytes per second) over a 1 minute period that the peer has " "sustained in a single tunnel" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 msgid "speed" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 msgid "capacity" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 msgid "how many tunnels can we ask them to join in an hour?" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 msgid "how many new peers have they told us about lately?" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 msgid "integration" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264 msgid "is the peer banned, or unreachable, or failing tunnel tests?" msgstr "" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264 msgid "status" msgstr "" -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:57 +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:47 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:410 +msgid "none" +msgstr "" + +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:62 #, java-format msgid "Temporary ban expiring in {0}" msgstr "" -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:59 +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:64 #, java-format msgid "Banned until restart or in {0}" msgstr "" -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:71 +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:76 msgid "unban now" msgstr "" @@ -3153,20 +3162,20 @@ msgstr "" msgid "These statistics are primarily used for development and debugging." msgstr "" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:105 -#: ../java/src/net/i2p/router/web/StatsGenerator.java:156 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:106 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:157 msgid "No lifetime events" msgstr "" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:116 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:117 msgid "frequency" msgstr "" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:120 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:121 msgid "Rolling average events per period" msgstr "" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:124 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:125 msgid "Highest events per period" msgstr "" @@ -3177,37 +3186,45 @@ msgstr "" #. } #. buf.append(" avg interval between updates: (").append(num(curFreq.getAverageInterval())).append("ms, min "); #. buf.append(num(curFreq.getMinAverageInterval())).append("ms)"); -#: ../java/src/net/i2p/router/web/StatsGenerator.java:135 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:136 msgid "Lifetime average events per period" msgstr "" #. Display the strict average -#: ../java/src/net/i2p/router/web/StatsGenerator.java:140 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:141 msgid "Lifetime average frequency" msgstr "" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:168 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:144 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:234 +#, java-format +msgid "1 event" +msgid_plural "{0} events" +msgstr[0] "" +msgstr[1] "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:169 msgid "rate" msgstr "" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:170 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:171 msgid "Average" msgstr "" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:173 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:174 msgid "Highest average" msgstr "" -#. breaking the sentence like before makes translation in my language impossible. #: ../java/src/net/i2p/router/web/StatsGenerator.java:201 #, java-format -msgid "There were {0} event(s) in this period" -msgstr "" +msgid "There was 1 event in this period." +msgid_plural "There were {0} events in this period." +msgstr[0] "" +msgstr[1] "" -#. buf.append(' '); #: ../java/src/net/i2p/router/web/StatsGenerator.java:203 #, java-format -msgid " which ended {0} ago." +msgid "The period ended {0} ago." msgstr "" #: ../java/src/net/i2p/router/web/StatsGenerator.java:205 @@ -3298,12 +3315,12 @@ msgid "I2P Internals" msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:99 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:384 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:379 msgid "View existing tunnels and tunnel build status" msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:105 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253 msgid "Show all current peer connections" msgstr "" @@ -3390,91 +3407,97 @@ msgid "" "Help with configuring your firewall and router for optimal I2P performance" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 -msgid "Download" +#. Note to translators: parameter is a version, e.g. "0.8.4" +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:232 +#, java-format +msgid "Download {0} Update" msgstr "" +#. Note to translators: parameter is a date and time, e.g. "02-Mar 20:34 UTC" +#.
    is optional, to help the browser make the lines even in the button +#. If the translation is shorter than the English, you should probably not include
    #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:240 -msgid "Download Unsigned" +#, java-format +msgid "Download Unsigned
    Update {0}" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261 msgid "Active" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270 msgid "Fast" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:281 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:276 msgid "High capacity" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:293 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288 msgid "Known" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:308 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:303 msgid "Help with firewall configuration" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:310 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:305 msgid "Check NAT/firewall" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:330 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:325 msgid "Reseed" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:347 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:342 msgid "Configure router bandwidth allocation" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:349 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:344 msgid "Bandwidth in/out" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:369 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:364 msgid "Total" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:371 msgid "Used" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:391 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 msgid "Exploratory" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:398 msgid "Participating" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:409 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:404 msgid "Share ratio" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:410 msgid "What's in the router's job queue?" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412 msgid "Congestion" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:422 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 msgid "Job lag" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:428 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:423 msgid "Message delay" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:434 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:429 msgid "Tunnel lag" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435 msgid "Backlog" msgstr "" @@ -3488,7 +3511,7 @@ msgid "ERR-Clock Skew of {0}" msgstr "" #: ../java/src/net/i2p/router/web/SummaryHelper.java:122 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:595 msgid "OK" msgstr "" @@ -3513,7 +3536,7 @@ msgid "WARN-Firewalled and Fast" msgstr "" #: ../java/src/net/i2p/router/web/SummaryHelper.java:133 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 msgid "Firewalled" msgstr "" @@ -3536,7 +3559,7 @@ msgid "WARN-Firewalled with UDP Disabled" msgstr "" #: ../java/src/net/i2p/router/web/SummaryHelper.java:148 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 msgid "Testing" msgstr "" @@ -3580,10 +3603,6 @@ msgstr "" msgid "Building tunnels" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:410 -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 @@ -3618,10 +3637,14 @@ 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:287 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:309 msgid "configure" msgstr "" +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:61 +msgid "Client tunnels for" +msgstr "" + #: ../java/src/net/i2p/router/web/TunnelRenderer.java:65 msgid "dead" msgstr "" @@ -3746,67 +3769,67 @@ msgstr "" msgid "Totals" msgstr "" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:66 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:142 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:237 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:67 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:143 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:238 msgid "Updating" msgstr "" #. Process the .sud/.su2 file -#: ../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:261 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:286 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:89 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:112 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:117 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:262 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:287 msgid "Update downloaded" msgstr "" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:91 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:92 #, java-format msgid "Unsigned update file from {0} is corrupt" msgstr "" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:111 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:281 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:112 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:282 msgid "Restarting" msgstr "" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:118 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:288 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:119 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:289 msgid "Click Restart to install" msgstr "" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:120 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:290 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:121 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:291 msgid "Click Shutdown and restart to install" msgstr "" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:121 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:292 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:122 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:293 #, java-format msgid "Version {0}" msgstr "" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:126 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:127 #, java-format msgid "Failed copy to {0}" msgstr "" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:184 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:185 #, java-format msgid "Updating from {0}" msgstr "" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:253 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:254 #, java-format msgid "No new version found at {0}" msgstr "" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:281 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:282 msgid "Update verified" msgstr "" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:307 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:308 #, java-format msgid "Transfer failed from {0}" msgstr "" @@ -4058,748 +4081,783 @@ msgstr "" msgid "How many peers we are actively talking with" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:112 msgid "config networking" msgstr "" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:224 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:224 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:231 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:222 +msgid "Summary Bar" +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:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:217 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:230 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:217 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:227 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:222 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:234 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:250 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:244 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:242 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:235 msgid "Refresh (s)" msgstr "" #. ditto -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:221 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:234 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:221 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:231 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:226 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:237 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:254 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:251 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:248 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:245 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:239 msgid "Enable" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:262 msgid "I2P Network Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:298 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:316 msgid "Bandwidth limiter" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:300 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:318 msgid "" "I2P will work best if you configure your rates to match the speed of your " "internet connection." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:322 msgid "KBps In" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:336 msgid "KBps Out" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:334 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:352 msgid "Share" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:341 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:326 msgid "NOTE" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:361 #, java-format msgid "You have configured I2P to share only {0} KBps." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:346 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:364 msgid "I2P requires at least 12KBps to enable sharing. " msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:365 msgid "" "Please enable sharing (participating in tunnels) by configuring more " "bandwidth. " msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:348 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:366 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:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:369 #, java-format msgid "You have configured I2P to share {0} KBps." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:354 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:372 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:358 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:305 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:327 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:403 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:348 -#: ../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:342 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:322 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:376 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:532 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:425 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:366 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:360 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:383 msgid "Cancel" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:375 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:393 msgid "IP and Transport Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:377 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:395 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:324 msgid "The default settings will work for most people." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:379 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:397 msgid "There is help below." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:381 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399 msgid "UPnP Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:385 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 msgid "Enable UPnP to open firewall ports" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:387 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:405 msgid "UPnP status" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:389 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:407 msgid "IP Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:391 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:461 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 msgid "Externally reachable hostname or IP address" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:413 msgid "Use all auto-detect methods" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 msgid "Disable UPnP IP address detection" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:421 msgid "Ignore local interface IP address" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:407 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:425 msgid "Use SSU IP address detection only" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:411 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:429 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 msgid "Specify hostname or IP" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 msgid "Select Interface" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:449 msgid "Hidden mode - do not publish IP" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:451 msgid "(prevents participating traffic)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:453 msgid "Action when IP changes" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:439 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:457 msgid "" "Laptop mode - Change router identity and UDP port when IP changes for " "enhanced anonymity" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:441 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 msgid "Experimental" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:443 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:461 msgid "UDP Configuration:" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:445 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:463 msgid "UDP port:" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:477 msgid "TCP Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:465 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:483 msgid "Use auto-detected IP address" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:467 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:517 msgid "currently" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:471 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:489 msgid "if we are not firewalled" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:475 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 msgid "Always use auto-detected IP address (Not firewalled)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:503 msgid "Disable inbound (Firewalled)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:489 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:507 msgid "Completely disable" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:491 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 msgid "" "(select only if behind a firewall that throttles or blocks outbound TCP)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:511 msgid "Externally reachable TCP port" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:515 msgid "Use the same port configured for UDP" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:505 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:523 msgid "Specify Port" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:527 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:348 msgid "Note" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:512 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:530 msgid "Changing these settings will restart your router." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:536 msgid "Configuration Help" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:520 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:538 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:522 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:540 msgid "" "If you can, please poke a hole in your firewall to allow unsolicited UDP and " "TCP packets to reach you." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:524 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:542 msgid "" "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole " "punching with \"SSU introductions\" to relay traffic." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:526 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:544 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:528 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:546 msgid "Certain firewalls such as symmetric NATs may not work well with I2P." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:537 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 msgid "" "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect " "the external IP address and forward ports." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:539 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 msgid "UPnP support is beta, and may not work for any number of reasons" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:541 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 msgid "No UPnP-compatible device present" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:543 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 msgid "UPnP disabled on the device" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:545 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 msgid "Software firewall interference with UPnP" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:547 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 msgid "Bugs in the device's UPnP implementation" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:549 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 msgid "Multiple firewall/routers in the internet connection path" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:551 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 msgid "UPnP device change, reset, or address change" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:553 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:571 msgid "Review the UPnP status here." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:573 msgid "" "UPnP may be enabled or disabled above, but a change requires a router " "restart to take effect." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575 msgid "Hostnames entered above will be published in the network database." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 msgid "They are not private." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 msgid "" "Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 msgid "When in doubt, leave the settings at the defaults." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 msgid "Reachability Help" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:572 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:590 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593 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:579 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 msgid "Your UDP port does not appear to be firewalled." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 msgid "Your UDP port appears to be firewalled." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603 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:587 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 msgid "" "However, if it appears consistently, you should check whether both your " "external and internal firewalls are open for your port." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:589 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 msgid "" "I2P will work fine when firewalled, there is no reason for concern. When " "firewalled, the router uses \"introducers\" to relay inbound connections." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:591 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 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:593 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 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:595 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 msgid "The router is currently testing whether your UDP port is firewalled." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 msgid "" "The router is not configured to publish its address, therefore it does not " "expect incoming connections." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 msgid "WARN - Firewalled and Fast" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 msgid "" "You have configured I2P to share more than 128KBps of bandwidth, but you are " "firewalled." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 msgid "WARN - Firewalled and Floodfill" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:631 msgid "" "You have configured I2P to be a floodfill router, but you are firewalled." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 msgid "" "For best participation as a floodfill router, you should open your firewall." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 msgid "WARN - Firewalled with Inbound TCP Enabled" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:637 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 msgid "Please open your firewall or disable inbound TCP above." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 msgid "WARN - Firewalled with UDP Disabled" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 msgid "You have configured inbound TCP, however you have disabled UDP." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 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:631 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 msgid "Please open your firewall or enable UDP." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:651 msgid "ERR - Clock Skew" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 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:637 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:655 msgid "Correct your clock setting if this error persists." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:657 msgid "ERR - Private TCP Address" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:659 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 msgid "Correct the address or disable inbound TCP above." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:663 msgid "ERR - SymmetricNAT" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:665 msgid "I2P detected that you are firewalled by a Symmetric NAT." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:667 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:651 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:669 msgid "" "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config " "and restart" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 msgid "I2P was unable to bind to port 8887 or other configured port." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:655 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:673 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:657 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:675 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:659 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:677 msgid "However, a restart is always required after this error." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:679 msgid "ERR - UDP Disabled and Inbound TCP host/port not set" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:663 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:681 msgid "" "You have not configured inbound TCP with a hostname and port above, however " "you have disabled UDP." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:665 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:683 msgid "Therefore your router cannot accept inbound connections." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:667 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:685 msgid "Please configure a TCP host and port above or enable UDP." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:669 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:687 msgid "ERR - Client Manager I2CP Error - check logs" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:689 msgid "This is usually due to a port 7654 conflict. Check the logs to verify." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:673 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:691 msgid "" "Do you have another I2P instance running? Stop the conflicting program and " "restart I2P." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:107 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:113 msgid "config advanced" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:263 msgid "I2P Advanced Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:319 msgid "Advanced I2P Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:329 msgid "Some changes may require a restart to take effect." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:112 msgid "config clients" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:265 msgid "I2P Client Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:330 msgid "Client Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:314 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:332 msgid "" "The Java clients listed below are started by the router and run in the same " "JVM." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:338 msgid "To change other client options, edit the file" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:325 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:401 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:415 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:439 msgid "All changes require restart to take effect." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 msgid "Advanced Client Interface Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:361 msgid "External I2CP (I2P Client Protocol) Interface Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:367 msgid "Enabled without SSL" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:373 msgid "Enabled with SSL required" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:379 msgid "Disabled - Clients outside this Java process may not connect" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:381 msgid "I2CP Port" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:385 msgid "I2CP Interface" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:379 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:401 msgid "Authorization" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:385 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:407 msgid "Require username and password" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:387 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 msgid "Username" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:391 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:413 msgid "Password" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:419 msgid "Any changes made here must also be configured in the external client." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:399 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:421 msgid "Many clients do not support SSL or authorization." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:407 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:429 msgid "WebApp Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 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 " @@ -4809,7 +4867,7 @@ msgid "" "all (e.g. addressbook)." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:411 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433 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 " @@ -4817,154 +4875,154 @@ msgid "" "preferred method." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:421 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:445 msgid "Plugin Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:447 msgid "The plugins listed below are started by the webConsole client." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:429 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:455 msgid "Plugin Installation" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:457 msgid "To install a plugin, enter the download URL:" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:112 msgid "config keyring" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:249 msgid "I2P Keyring Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:317 msgid "The router keyring is used to decrypt encrypted leaseSets." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:298 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:320 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:308 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:326 msgid "Manual Keyring Addition" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:328 msgid "Enter keys for encrypted remote destinations here." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:331 msgid "Keys for local destinations must be entered on the" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:333 msgid "I2PTunnel page" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:335 msgid "Dest. name, hash, or full key" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:337 msgid "Encryption Key" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:107 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:113 msgid "config logging" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:263 msgid "I2P Logging Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 msgid "Configure I2P Logging Options" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:321 msgid "Logging filename" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:325 msgid "(the symbol '@' will be replaced during log rotation)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:327 msgid "Log record format" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:331 msgid "" "(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:333 msgid "Log date format" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:337 msgid "" "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' " "= millisecond)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 msgid "Max log file size" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:343 msgid "Default log level" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:347 msgid "" "(DEBUG and INFO are not recommended defaults, as they will drastically slow " "down your router)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:349 msgid "Log level overrides" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:353 msgid "New override" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:112 msgid "config peers" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:249 msgid "I2P Peer Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:323 msgid "Manual Peer Controls" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 msgid "Router Hash" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:329 msgid "Manually Ban / Unban a Peer" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:331 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:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:341 msgid "Adjust Profile Bonuses" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:343 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 " @@ -4972,590 +5030,604 @@ msgid "" "displayed on the" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:345 msgid "profiles page" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:345 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:251 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:273 msgid "Banned Peers" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:366 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:384 msgid "Banned IPs" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:112 msgid "config reseeding" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:262 msgid "I2P Reseeding Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:300 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 msgid "Reseeding Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:320 msgid "" "Reseeding is the bootstrapping process used to find other routers when you " "first install I2P, or when your router has too few router references " "remaining." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:322 msgid "" "If reseeding has failed, you should first check your network connection." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:326 msgid "" "Change these only if HTTP is blocked by a restrictive firewall, reseed has " "failed, and you have access to an HTTP proxy." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:328 #, java-format msgid "See {0} for instructions on reseeding manually." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:328 msgid "the FAQ" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:330 msgid "Reseed URL Selection" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:336 msgid "Try SSL first then non-SSL" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:324 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:342 msgid "Use SSL only" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:348 msgid "Use non-SSL only" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:332 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 msgid "Reseed URLs" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:336 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:354 msgid "Enable HTTP proxy (not used for SSL)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:340 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:358 msgid "HTTP Proxy Host" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:344 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:362 msgid "HTTP Proxy Port" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:112 msgid "config service" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:249 msgid "I2P Service Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:285 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:303 msgid "Shutdown the router" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:287 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 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:289 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:307 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:299 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 msgid "" "If you want the router to restart itself after shutting down, you can choose " "one of the following." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 msgid "" "A graceful restart will take a few minutes (but your peers will appreciate " "your patience), while a hard restart does so immediately." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 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:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:333 msgid "Systray integration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 msgid "" "(later on, I2P client applications will be able to integrate their own " "functionality into the system tray as well)." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339 msgid "If you are on windows, you can either enable or disable that icon here." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 msgid "Show systray icon" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:343 msgid "Hide systray icon" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:345 msgid "Run on startup" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:329 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 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:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 msgid "" "If you are running I2P as service right now, removing it will shut down your " "router immediately." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:361 msgid "" "You may want to consider shutting down gracefully, as above, then running " "uninstall_i2p_service_winnt.bat." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:365 msgid "Debugging" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:367 msgid "View the job queue" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:371 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:377 msgid "Launch browser on router startup?" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:361 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:379 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:107 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:113 msgid "config stats" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:250 msgid "I2P Stats Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:320 msgid "Configure I2P Stat Collection" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:322 msgid "Enable full stats?" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:329 msgid "change requires restart to take effect" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:331 msgid "Stat file" 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:335 msgid "Filter" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:319 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:328 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:348 msgid "toggle all" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:350 msgid "Log" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:332 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:352 msgid "Graph" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:371 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:391 msgid "Advanced filter" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:112 msgid "config tunnels" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:262 msgid "I2P Tunnel Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:328 msgid "The default settings work for most people." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:332 msgid "There is a fundamental tradeoff between anonymity and performance." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:335 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:338 msgid "High CPU and/or high outbound bandwidth usage may result." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:341 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:333 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:351 msgid "" "Exploratory tunnel setting changes are stored in the router.config file." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:336 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:354 msgid "Client tunnel changes are temporary and are not saved." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:338 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:356 msgid "To make permanent client tunnel changes see the" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:340 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:358 msgid "i2ptunnel page" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:112 msgid "config UI" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:262 msgid "I2P UI Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:314 msgid "Router Console Theme" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:339 msgid "Theme selection disabled for Internet Explorer, sorry." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:341 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 "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:345 msgid "Router Console Language" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:320 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:349 msgid "" "Please contribute to the router console translation project! Contact the " "developers on IRC #i2p to help." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:324 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:353 msgid "Apply" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:112 msgid "config update" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:249 msgid "I2P Update Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:321 msgid "Check for I2P and news updates" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:323 msgid "News & I2P Updates" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:327 msgid "Update In Progress" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:335 msgid "News URL" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:339 msgid "Refresh frequency" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:345 msgid "Update policy" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:349 msgid "Update through the eepProxy?" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:353 msgid "eepProxy host" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:357 msgid "eepProxy port" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 msgid "Update URLs" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:365 msgid "Trusted keys" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:369 msgid "Update with unsigned development builds?" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:355 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:373 msgid "Unsigned Build URL" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:379 msgid "" "I2P updates are disabled because you do not have write permission for the " "install directory." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:367 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:385 msgid "Save" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:115 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:121 msgid "Internal Error" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:117 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123 msgid "Router Console" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:121 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:127 msgid "Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:135 msgid "Sorry! There has been an internal error." msgstr "" #. note to translators - both parameters are URLs -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:133 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:232 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:254 #, java-format msgid "Please report bugs on {0} or {1}." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:137 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:258 msgid "" "You may use the username \"guest\" and password \"guest\" if you do not wish " "to register." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:145 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:260 msgid "Please include this information in bug reports" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:141 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:147 msgid "Error Details" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:149 #, java-format msgid "Error {0}" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:163 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:169 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:250 msgid "I2P Version and Running Environment" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:197 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:288 msgid "" "Note that system information, log timestamps, and log messages may provide " "clues to your location; please review everything you include in a bug report." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:117 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:123 msgid "Page Not Found" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:242 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:264 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:244 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:266 msgid "Error 404" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:249 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:271 msgid "not found" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:112 msgid "graphs" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:249 msgid "I2P Performance Graphs" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:111 msgid "home" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:331 +msgid "Welcome to I2P" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:111 msgid "job queue" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:248 msgid "I2P Router Job Queue" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:111 msgid "logs" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:248 msgid "I2P Router Logs" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:281 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:303 msgid "Critical Logs" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:285 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:307 msgid "Router Logs" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:291 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:313 msgid "Service (Wrapper) Logs" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:111 msgid "network database summary" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:248 msgid "I2P Network Database Summary" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:109 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:115 msgid "WebApp Not Found" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:230 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:252 msgid "Web Application Not Running" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:232 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:254 msgid "The requested web application is not running." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:256 msgid "" "Please visit the config clients page to start it." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:111 msgid "peer connections" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:248 msgid "I2P Network Peers" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:111 msgid "peer profiles" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:248 msgid "I2P Network Peer Profiles" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:111 msgid "statistics" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:265 msgid "I2P Router Statistics" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:255 #, java-format msgid "Disable {0} Refresh" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:111 msgid "tunnel summary" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:248 msgid "I2P Tunnel Summary" msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:111 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:248 +msgid "Peer Profile" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:275 +#, java-format +msgid "Profile for peer {0}" +msgstr "" From c89f752ccc22fde4509551fd3ff8d6eb66c4a04c Mon Sep 17 00:00:00 2001 From: duck Date: Mon, 21 Mar 2011 18:34:49 +0000 Subject: [PATCH 317/463] Update Dutch translation for routerconsole --- apps/routerconsole/locale/messages_nl.po | 1343 ++++++++++++---------- 1 file changed, 709 insertions(+), 634 deletions(-) diff --git a/apps/routerconsole/locale/messages_nl.po b/apps/routerconsole/locale/messages_nl.po index 251873a27..667d5901b 100644 --- a/apps/routerconsole/locale/messages_nl.po +++ b/apps/routerconsole/locale/messages_nl.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-03-03 18:28+0000\n" -"PO-Revision-Date: 2011-02-20 12:15+0000\n" +"POT-Creation-Date: 2011-03-21 18:30+0000\n" +"PO-Revision-Date: 2011-03-21 18:26+0000\n" "Last-Translator: ducki2p \n" "Language-Team: Dutch <>\n" "Language: nl\n" @@ -64,7 +64,7 @@ msgstr[0] "1 uur" msgstr[1] "{0} uren" #: ../../../core/java/src/net/i2p/data/DataHelper.java:1158 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:314 msgid "n/a" msgstr "nvt" @@ -145,36 +145,36 @@ msgstr "Tunnels geaccepteerd" msgid "Rejecting tunnels" msgstr "Tunnels geweigerd" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:105 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:125 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 msgid "Reseeding" msgstr "Reseeden" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:128 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:141 #, java-format msgid "Reseed fetched only 1 router." msgid_plural "Reseed fetched only {0} routers." msgstr[0] "Reseed heeft slechts 1 router opgehaald." msgstr[1] "Reseed heeft slechts {0} routers opgehaald." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:135 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:148 msgid "Reseed failed." msgstr "Reseed gefaald" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:136 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:149 #, java-format msgid "See {0} for help." msgstr "Zie {0} voor hulp." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:137 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:150 msgid "reseed configuration page" msgstr "reseed configuratie pagina" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:239 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:293 msgid "Reseeding: fetching seed URL." msgstr "Reseed: opvragen seed URL." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:335 #, java-format msgid "" "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." @@ -204,7 +204,7 @@ msgid "{0} is used for outbound connections only" msgstr "{0} is alleen gebruikt voor uitgaande connecties" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:518 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129 msgid "Help" msgstr "Help" @@ -226,7 +226,7 @@ msgstr "" "configuratie pagina." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 msgid "Definitions" msgstr "Definities" @@ -237,7 +237,7 @@ msgstr "Definities" #: ../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/ProfileOrganizerRenderer.java:189 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:238 msgid "Peer" msgstr "Peer" @@ -433,13 +433,13 @@ msgstr "In achterstand?" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:758 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1949 -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87 msgid "Inbound" msgstr "Inkomend" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1951 -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87 msgid "Outbound" msgstr "Uitgaand" @@ -564,20 +564,20 @@ msgstr "Negeer tunnel aanvragen: Te traag" msgid "Dropping tunnel requests: Overloaded" msgstr "Negeer tunnel aanvragen: Overladen" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:460 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:470 msgid "Rejecting tunnels: Request overload" msgstr "Weiger tunnels: Overladen met aanvragen" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:485 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:495 msgid "Rejecting tunnels: Connection limit" msgstr "Weiger tunnels: Connectie limiet" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:685 -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:706 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:695 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:716 msgid "Dropping tunnel requests: High load" msgstr "Negeer tunnel aanvragen: Hoge load" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:698 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:708 msgid "Dropping tunnel requests: Queue time" msgstr "Negeer tunnel aanvragen: Wachttijd" @@ -1507,12 +1507,12 @@ msgstr "Zambia" msgid "Zimbabwe" msgstr "Zimbabwe" -#: ../java/src/net/i2p/router/web/CSSHelper.java:58 +#: ../java/src/net/i2p/router/web/CSSHelper.java:60 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:35 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:37 #: ../java/strings/Strings.java:29 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:119 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:233 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:125 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:257 msgid "I2P Router Console" msgstr "I2P Router Console" @@ -1535,27 +1535,27 @@ msgstr "" "kijk in de fout logs" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:355 msgid "Save Client Configuration" msgstr "Client Configuratie Opslaan" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:39 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:405 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427 msgid "Save Interface Configuration" msgstr "Interface Configuratie Opslaan" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:441 msgid "Save WebApp Configuration" msgstr "WebApp Configuratie Opslaan" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:47 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:453 msgid "Save Plugin Configuration" msgstr "Plugin Configuratie Opslaan" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:51 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:461 msgid "Install Plugin" msgstr "Installeer Plugin" @@ -1609,7 +1609,7 @@ msgstr "Foute client index." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:392 #: ../java/src/net/i2p/router/web/SummaryHelper.java:384 msgid "Client" msgstr "Client" @@ -1692,7 +1692,7 @@ msgid "Edit" msgstr "Bewerk" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:94 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351 msgid "Add Client" msgstr "Client Toevoegen" @@ -1723,7 +1723,7 @@ msgid "Plugin" msgstr "Plugin" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:161 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:273 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185 msgid "Version" msgstr "Versie" @@ -1758,14 +1758,12 @@ msgstr "Stop" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:262 #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:78 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331 msgid "Check for updates" msgstr "Controlleer op updates" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:263 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:242 msgid "Update" msgstr "Update" @@ -1779,12 +1777,12 @@ msgid "Delete" msgstr "Verwijder" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:18 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:343 msgid "Add key" msgstr "Sleutel toevoegen" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:19 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:341 msgid "Delete key" msgstr "Steutel verwijderen" @@ -1888,7 +1886,7 @@ msgstr "Service" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:101 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381 #: ../java/strings/Strings.java:72 msgid "Tunnels" msgstr "Tunnels" @@ -1902,7 +1900,7 @@ msgid "Clients" msgstr "Clients" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:293 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:315 msgid "Keyring" msgstr "Sleutelbos" @@ -1912,13 +1910,13 @@ msgstr "Logging" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:107 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260 +#: ../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:387 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:389 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:143 msgid "Stats" msgstr "Statistieken" @@ -1931,13 +1929,13 @@ msgstr "Geavanceerd" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:264 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:29 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:34 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:360 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:516 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:307 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:341 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:352 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:377 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:344 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:378 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:534 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:370 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:362 msgid "Save changes" msgstr "Opslaan" @@ -2041,7 +2039,7 @@ msgid "or {0} bytes per month maximum" msgstr "of {0} bytes per maand maximaal" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:20 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:333 msgid "Ban peer until restart" msgstr "Verban peer tot aan herstart" @@ -2061,7 +2059,7 @@ msgid "Invalid peer" msgstr "Ongeldige peer" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:28 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:335 msgid "Unban peer" msgstr "Hef verbanning van peer op" @@ -2074,7 +2072,7 @@ msgid "is not currently banned" msgstr "is op dit moment niet verbannen" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:39 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:361 msgid "Adjust peer bonuses" msgstr "Peer bonussen aanpassen" @@ -2087,7 +2085,7 @@ msgid "Bad capacity value" msgstr "Foutieve capaciteits waarde" #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:17 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:368 msgid "Save changes and reseed now" msgstr "Sla wijzigingen op en reseed nu" @@ -2107,7 +2105,7 @@ msgstr "Configuratie succesvol opgeslagen." #. 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:293 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:311 msgid "Shutdown immediately" msgstr "Onmiddelijk afsluiten" @@ -2154,7 +2152,7 @@ msgid "Restart in {0}" msgstr "Herstart in {0}" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:53 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:291 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:309 msgid "Shutdown gracefully" msgstr "Gecontrolleerd afsluiten" @@ -2167,7 +2165,7 @@ msgid "Shutdown immediately! boom bye bye bad bwoy" msgstr "Onmiddelijk afsluiten! doei" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:61 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:313 msgid "Cancel graceful shutdown" msgstr "Annuleer gecontrolleerde stop" @@ -2176,7 +2174,7 @@ msgid "Graceful shutdown cancelled" msgstr "Gecontrolleerd afsluiten afgebroken" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:64 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 msgid "Graceful restart" msgstr "Gecontrolleerde herstart" @@ -2185,7 +2183,7 @@ msgid "Graceful restart requested" msgstr "Gecontrolleerde herstart aangevraagd" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:68 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 msgid "Hard restart" msgstr "Harde herstart" @@ -2210,22 +2208,22 @@ msgid "Rekeying after graceful shutdown" msgstr "Hersleuteling na gecontrolleerde stop" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:80 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 msgid "Run I2P on startup" msgstr "Start I2P bij opstarten" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:82 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:355 msgid "Don't run I2P on startup" msgstr "Start I2P niet bij opstarten" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:84 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:355 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:373 msgid "Dump threads" msgstr "Dump threads" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:91 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:381 msgid "View console on startup" msgstr "Toon console na opstarten" @@ -2234,7 +2232,7 @@ msgid "Console is to be shown on startup" msgstr "Console wordt getoond na opstarten" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:94 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:383 msgid "Do not view console on startup" msgstr "Toon console niet na opstarten" @@ -2308,58 +2306,58 @@ msgid_plural "{0} tunnels" msgstr[0] "1 tunnel" msgstr[1] "{0} tunnels" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:26 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:35 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:41 msgid "Exploratory tunnels" msgstr "Exploratory tunnels" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:46 -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:61 -msgid "Client tunnels for" -msgstr "Client tunnels voor" +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:51 +#, java-format +msgid "Client tunnels for {0}" +msgstr "Client tunnels voor {0}" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:69 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74 msgid "ANONYMITY WARNING - Settings include 0-hop tunnels." msgstr "ANONIMITEITS WAARSCHUWING - Instellingen bevatten 0-hop tunnels." -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:79 msgid "ANONYMITY WARNING - Settings include 1-hop tunnels." msgstr "ANONIMITEITS WAARSCHUWING - Instellingen bevatten 1-hop tunnels." -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:77 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 msgid "PERFORMANCE WARNING - Settings include very long tunnels." msgstr "PRESTATIE WAARSCHUWING - Instellingen bevatten erg lange tunnels." -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:80 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:85 msgid "PERFORMANCE WARNING - Settings include high tunnel quantities." msgstr "PRESTATIE WAARSCHUWING - Instellingen bevatten hoge tunnel aantallen." #. buf.append("\n"); #. tunnel depth -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:92 msgid "Length" msgstr "Lengte" #. tunnel depth variance -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:104 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:109 msgid "Randomization" msgstr "Randomisatie" #. tunnel quantity -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:128 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:133 msgid "Quantity" msgstr "Hoeveelheid" #. tunnel backup quantity -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:145 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:150 msgid "Backup quantity" msgstr "Backup hoeveelheid" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:167 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:172 msgid "Inbound options" msgstr "Inkomende opties" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:180 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:185 msgid "Outbound options" msgstr "Uitgaande opties" @@ -2476,7 +2474,7 @@ msgstr "Download en alleen controlleren" msgid "Download, verify, and restart" msgstr "Download, controlleer en herstart" -#: ../java/src/net/i2p/router/web/FormHandler.java:174 +#: ../java/src/net/i2p/router/web/FormHandler.java:176 msgid "" "Invalid form submission, probably because you used the 'back' or 'reload' " "button on your browser. Please resubmit." @@ -2511,8 +2509,8 @@ msgid "Plot averages" msgstr "Teken gemiddelden" #: ../java/src/net/i2p/router/web/GraphHelper.java:152 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:333 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:351 msgid "or" msgstr "of" @@ -2648,96 +2646,96 @@ msgstr "Bekijk alle routers" msgid "Show all routers with full stats" msgstr "Bekijk alle routers met volledige statistieken" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:265 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:266 msgid "Network Database Router Statistics" msgstr "Netwerk Database Router Statistieken" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:273 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:287 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:305 msgid "Count" msgstr "Aantal" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:287 msgid "Transports" msgstr "Transports" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:305 msgid "Country" msgstr "Land" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:342 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:344 msgid "Our info" msgstr "Onze info" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:344 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:346 msgid "Peer info for" msgstr "Peer info voor" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:348 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:350 msgid "Full entry" msgstr "Volledige item" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:356 #: ../java/src/net/i2p/router/web/SummaryHelper.java:115 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 msgid "Hidden" msgstr "Verborgen" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:356 msgid "Updated" msgstr "Geupdate" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:355 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:358 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:357 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:360 #, java-format msgid "{0} ago" msgstr "{0} geleden" #. shouldnt happen -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:357 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:361 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:359 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:363 msgid "Published" msgstr "Gepubliceerd" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:363 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:365 msgid "Address(es)" msgstr "Adres(sen)" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:376 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:378 msgid "cost" msgstr "kosten" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 msgid "Hidden or starting up" msgstr "Verborgen of aan het opstarten" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 msgid "SSU" msgstr "SSU" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 msgid "SSU with introducers" msgstr "SSU met introducers" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:404 msgid "NTCP" msgstr "NTCP" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:404 msgid "NTCP and SSU" msgstr "NTCP en SSU" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:404 msgid "NTCP and SSU with introducers" msgstr "NTCP en SSU met introducers" -#: ../java/src/net/i2p/router/web/NewsFetcher.java:93 +#: ../java/src/net/i2p/router/web/NewsFetcher.java:92 #, java-format msgid "News last updated {0} ago." msgstr "Nieuws {0} geleden voor het laatste geupdate." -#: ../java/src/net/i2p/router/web/NewsFetcher.java:99 +#: ../java/src/net/i2p/router/web/NewsFetcher.java:98 #, java-format msgid "News last checked {0} ago." msgstr "Nieuws {0} geleden voor het laatste gecontrolleerd." @@ -2772,7 +2770,7 @@ msgid "Downloading plugin" msgstr "Downloaden van plugin" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:146 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:244 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:245 #, java-format msgid "{0}B transferred" msgstr "{0}B ontvangen" @@ -2788,7 +2786,7 @@ msgid "Cannot create plugin directory {0}" msgstr "Kan plugin directory {0} niet maken" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:167 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:298 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:299 #, java-format msgid "from {0}" msgstr "van {0}" @@ -2916,37 +2914,43 @@ msgstr "Peer Profielen" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:73 #, java-format -msgid "Showing {0} recent profiles." -msgstr "Toon {0} recente profielen." +msgid "Showing 1 recent profile." +msgid_plural "Showing {0} recent profiles." +msgstr[0] "1 recent profiel getoond." +msgstr[1] "{0} recente profielen getoond." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:75 #, java-format -msgid "Hiding {0} older profiles." -msgstr "Verberg {0} oudere profielen." +msgid "Hiding 1 older profile." +msgid_plural "Hiding {0} older profiles." +msgstr[0] "1 ouder profiel verborgen." +msgstr[1] "{0} oudere profielen verborgen." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:77 #, java-format -msgid "Hiding {0} standard profiles." -msgstr "Verberg {0} standaard profielen." +msgid "Hiding 1 standard profile." +msgid_plural "Hiding {0} standard profiles." +msgstr[0] "1 standaard profiel verborgen." +msgstr[1] "{0} standaard profielen verborgen." #: ../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:335 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:252 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:353 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:339 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:254 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:357 msgid "Capacity" msgstr "Capaciteit" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:85 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:255 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:256 msgid "Integration" msgstr "Integratie" @@ -2972,7 +2976,7 @@ msgid "Failing" msgstr "Gefaald" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:287 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:282 msgid "Integrated" msgstr "Geïntegreerd" @@ -2985,109 +2989,109 @@ msgstr "Onbereikbaar" msgid "Test Fails" msgstr "Test Faalt" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:175 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:177 msgid "profile" msgstr "profiel" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:184 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:186 msgid "Floodfill and Integrated Peers" msgstr "Floodfill en Geïntegreerde Peers" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:188 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190 msgid "Caps" msgstr "Caps" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:189 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:191 msgid "Integ. Value" msgstr "Integ. Waarde" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:192 msgid "Last Heard About" msgstr "Laatst Vernomen Over" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:191 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:193 msgid "Last Heard From" msgstr "Laatst Vernomen Van" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:192 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:194 msgid "Last Good Send" msgstr "Laatste Goede Verzending" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:193 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195 msgid "Last Bad Send" msgstr "Laatste Foute Verzending" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:194 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196 msgid "10m Resp. Time" msgstr "10m Resp. Tijd" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:197 msgid "1h Resp. Time" msgstr "1u Resp. Tijd" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:198 msgid "1d Resp. Time" msgstr "1d Resp. Tijd" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:197 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:199 msgid "Last Good Lookup" msgstr "Laatste Goede Lookup" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:198 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:200 msgid "Last Bad Lookup" msgstr "Laatste Foute Lookup" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:199 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201 msgid "Last Good Store" msgstr "Laatste Goede Opslag" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:200 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 msgid "Last Bad Store" msgstr "Laatste Foute Opslag" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:203 msgid "1h Fail Rate" msgstr "1u Fout Rato" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:204 msgid "1d Fail Rate" msgstr "1d Four Rato" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:250 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:251 msgid "Thresholds" msgstr "Drempelwaarden" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:252 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:253 msgid "fast peers" msgstr "snelle peers" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:254 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:255 msgid "high capacity peers" msgstr "hoge capaciteits peers" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:256 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 msgid " well integrated peers" msgstr " goed geïntegreerde peers" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 msgid "as determined by the profile organizer" msgstr "zoals bepaald door de profiel organisator" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 msgid "groups" msgstr "groepen" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 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/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 #: ../java/strings/Strings.java:81 msgid "caps" msgstr "caps" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 msgid "" "peak throughput (bytes per second) over a 1 minute period that the peer has " "sustained in a single tunnel" @@ -3095,46 +3099,51 @@ 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 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 msgid "speed" msgstr "snelheid" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 msgid "capacity" msgstr "capaciteit" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 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 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 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 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 msgid "integration" msgstr "integratie" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264 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 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264 msgid "status" msgstr "status" -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:57 +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:47 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:410 +msgid "none" +msgstr "geen" + +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:62 #, java-format msgid "Temporary ban expiring in {0}" msgstr "Tijdelijke verbanning verloopt in {0}" -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:59 +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:64 #, 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 +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:76 msgid "unban now" msgstr "Hef verbanning nu op" @@ -3194,20 +3203,20 @@ msgid "These statistics are primarily used for development and debugging." msgstr "" "Deze statistieken worden primair gebruikt voor ontwikkeling en debugging." -#: ../java/src/net/i2p/router/web/StatsGenerator.java:105 -#: ../java/src/net/i2p/router/web/StatsGenerator.java:156 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:106 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:157 msgid "No lifetime events" msgstr "Geen levenslange gebeurtenissen" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:116 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:117 msgid "frequency" msgstr "frequentie" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:120 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:121 msgid "Rolling average events per period" msgstr "Voortschrijdend gemiddelde gebeurtenissen per periode" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:124 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:125 msgid "Highest events per period" msgstr "Hoogste gebeurtenissen per periode" @@ -3218,38 +3227,46 @@ msgstr "Hoogste gebeurtenissen per periode" #. } #. buf.append(" avg interval between updates: (").append(num(curFreq.getAverageInterval())).append("ms, min "); #. buf.append(num(curFreq.getMinAverageInterval())).append("ms)"); -#: ../java/src/net/i2p/router/web/StatsGenerator.java:135 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:136 msgid "Lifetime average events per period" msgstr "Levenslange gemiddelde gebeurtenissen per periode" #. Display the strict average -#: ../java/src/net/i2p/router/web/StatsGenerator.java:140 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:141 msgid "Lifetime average frequency" msgstr "Levenslange gemiddelde frequentie" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:168 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:144 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:234 +#, java-format +msgid "1 event" +msgid_plural "{0} events" +msgstr[0] "1 gebeurtenis" +msgstr[1] "{0} gebeurtenissen" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:169 msgid "rate" msgstr "rato" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:170 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:171 msgid "Average" msgstr "Gemiddelde" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:173 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:174 msgid "Highest average" msgstr "Hoogste gemiddelde" -#. breaking the sentence like before makes translation in my language impossible. #: ../java/src/net/i2p/router/web/StatsGenerator.java:201 #, java-format -msgid "There were {0} event(s) in this period" -msgstr "Er waren {0} event(s) in deze periode" +msgid "There was 1 event in this period." +msgid_plural "There were {0} events in this period." +msgstr[0] "Er was 1 gebeurtenis in deze periode." +msgstr[1] "Er waren {0} gebeurtenissen in deze periode." -#. buf.append(' '); #: ../java/src/net/i2p/router/web/StatsGenerator.java:203 #, java-format -msgid " which ended {0} ago." -msgstr "die {0} geleden eindigde." +msgid "The period ended {0} ago." +msgstr "De periode eindigde {0} geleden." #: ../java/src/net/i2p/router/web/StatsGenerator.java:205 msgid "No events" @@ -3341,12 +3358,12 @@ msgid "I2P Internals" msgstr "I2P Intern" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:99 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:384 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:379 msgid "View existing tunnels and tunnel build status" msgstr "Bekijk bestaande tunnels en tunnel opbouw status" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:105 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253 msgid "Show all current peer connections" msgstr "Toon alle huidige peer connecties" @@ -3435,91 +3452,97 @@ msgstr "" "Hulp bij het configureren van je firewall en router voor optimale I2P " "prestatie" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 -msgid "Download" -msgstr "Download" +#. Note to translators: parameter is a version, e.g. "0.8.4" +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:232 +#, java-format +msgid "Download {0} Update" +msgstr "Download {0} Update" +#. Note to translators: parameter is a date and time, e.g. "02-Mar 20:34 UTC" +#.
    is optional, to help the browser make the lines even in the button +#. If the translation is shorter than the English, you should probably not include
    #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:240 -msgid "Download Unsigned" -msgstr "Download Niet-ondertekend" +#, java-format +msgid "Download Unsigned
    Update {0}" +msgstr "Download Niet-ondertekende
    Update {0}" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261 msgid "Active" msgstr "Actief" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270 msgid "Fast" msgstr "Snel" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:281 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:276 msgid "High capacity" msgstr "Grote capaciteit" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:293 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288 msgid "Known" msgstr "Bekend" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:308 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:303 msgid "Help with firewall configuration" msgstr "Hulp met firewall configuratie" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:310 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:305 msgid "Check NAT/firewall" msgstr "Controlleer NAT/firewall" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:330 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:325 msgid "Reseed" msgstr "Reseed" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:347 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:342 msgid "Configure router bandwidth allocation" msgstr "Configureer router bandbreedte toewijzing" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:349 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:344 msgid "Bandwidth in/out" msgstr "Bandbreedte in/uit" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:369 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:364 msgid "Total" msgstr "Totaal" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:371 msgid "Used" msgstr "Gebruikt" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:391 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 msgid "Exploratory" msgstr "Onderzoekend" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:398 msgid "Participating" msgstr "Deelnemend" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:409 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:404 msgid "Share ratio" msgstr "Share rato" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:410 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:417 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412 msgid "Congestion" msgstr "Verstopping" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:422 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 msgid "Job lag" msgstr "Taak vertraging" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:428 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:423 msgid "Message delay" msgstr "Bericht vertraging" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:434 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:429 msgid "Tunnel lag" msgstr "Tunnel vertraging" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435 msgid "Backlog" msgstr "Achterstand" @@ -3533,7 +3556,7 @@ msgid "ERR-Clock Skew of {0}" msgstr "ERR-Klok Afwijking van {0}" #: ../java/src/net/i2p/router/web/SummaryHelper.java:122 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:595 msgid "OK" msgstr "OK" @@ -3558,7 +3581,7 @@ msgid "WARN-Firewalled and Fast" msgstr "WARN-Firewall en Snel" #: ../java/src/net/i2p/router/web/SummaryHelper.java:133 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 msgid "Firewalled" msgstr "Firewall" @@ -3581,7 +3604,7 @@ msgid "WARN-Firewalled with UDP Disabled" msgstr "WARN-Firewall met UDP Uitgeschakeld" #: ../java/src/net/i2p/router/web/SummaryHelper.java:148 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 msgid "Testing" msgstr "Testen" @@ -3626,10 +3649,6 @@ msgstr "Bouwen" msgid "Building tunnels" msgstr "Tunnels aan het bouwen" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:410 -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 @@ -3664,10 +3683,14 @@ 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:287 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:309 msgid "configure" msgstr "configureer" +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:61 +msgid "Client tunnels for" +msgstr "Client tunnels voor" + #: ../java/src/net/i2p/router/web/TunnelRenderer.java:65 msgid "dead" msgstr "dood" @@ -3792,67 +3815,67 @@ msgstr "Deelnemende Tunnels" msgid "Totals" msgstr "Totalen" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:66 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:142 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:237 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:67 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:143 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:238 msgid "Updating" msgstr "Aan het updaten" #. Process the .sud/.su2 file -#: ../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:261 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:286 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:89 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:112 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:117 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:262 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:287 msgid "Update downloaded" msgstr "Update gedownload" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:91 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:92 #, 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:281 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:112 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:282 msgid "Restarting" msgstr "Herstarten" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:118 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:288 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:119 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:289 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:290 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:121 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:291 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:292 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:122 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:293 #, java-format msgid "Version {0}" msgstr "Versie {0}" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:126 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:127 #, java-format msgid "Failed copy to {0}" msgstr "Kopie naar {0} gefaald" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:184 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:185 #, java-format msgid "Updating from {0}" msgstr "Updaten van {0}" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:253 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:254 #, java-format msgid "No new version found at {0}" msgstr "Geen nieuwe versie gevonden op {0}" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:281 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:282 msgid "Update verified" msgstr "Update geverifieerd" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:307 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:308 #, java-format msgid "Transfer failed from {0}" msgstr "Overdracht gefaald van {0}" @@ -4104,87 +4127,122 @@ msgstr "Low-level bandbreedte verzend rato" 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:112 msgid "config networking" msgstr "configureer netwerk" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:224 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:224 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:231 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:222 +msgid "Summary Bar" +msgstr "Samenvatting Balk" + #. 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:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:217 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:230 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:217 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:227 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:222 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:234 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:250 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:244 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:242 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:235 msgid "Refresh (s)" msgstr "Ververs (s)" #. ditto -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:221 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:234 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:221 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:231 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:226 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:237 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:254 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:251 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:248 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:245 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:239 msgid "Enable" msgstr "Inschakelen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:262 msgid "I2P Network Configuration" msgstr "I2P Netwerk Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:298 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:316 msgid "Bandwidth limiter" msgstr "Bandbreedte beperker" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:300 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:318 msgid "" "I2P will work best if you configure your rates to match the speed of your " "internet connection." @@ -4192,34 +4250,34 @@ 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:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:322 msgid "KBps In" msgstr "KBps In" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:336 msgid "KBps Out" msgstr "KBps Uit" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:334 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:352 msgid "Share" msgstr "Share" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:341 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:326 msgid "NOTE" msgstr "OPMERKING" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:361 #, 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:346 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:364 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:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:365 msgid "" "Please enable sharing (participating in tunnels) by configuring more " "bandwidth. " @@ -4227,19 +4285,19 @@ 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:348 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:366 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:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:369 #, 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:354 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:372 msgid "" "The higher the share bandwidth the more you improve your anonymity and help " "the network." @@ -4247,94 +4305,94 @@ 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:358 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:305 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:327 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:403 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:348 -#: ../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:342 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:322 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:376 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:532 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:425 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:366 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:360 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:383 msgid "Cancel" msgstr "Annuleer" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:375 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:393 msgid "IP and Transport Configuration" msgstr "IP en Transport Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:377 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:395 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:324 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:379 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:397 msgid "There is help below." msgstr "Help is hieronder." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:381 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399 msgid "UPnP Configuration" msgstr "UPnP Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:385 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 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:387 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:405 msgid "UPnP status" msgstr "UPnP status" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:389 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:407 msgid "IP Configuration" msgstr "IP Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:391 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:461 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 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:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:413 msgid "Use all auto-detect methods" msgstr "Gebruik alle auto-detect methoden" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 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:403 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:421 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:407 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:425 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:411 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:429 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 msgid "Specify hostname or IP" msgstr "Specificeer hostname of IP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 msgid "Select Interface" msgstr "Selecteer Interface" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:449 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:433 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:451 msgid "(prevents participating traffic)" msgstr "(voorkomt deelnemend verkeer)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:453 msgid "Action when IP changes" msgstr "Actie wanneer IP wijzigd" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:439 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:457 msgid "" "Laptop mode - Change router identity and UDP port when IP changes for " "enhanced anonymity" @@ -4342,82 +4400,82 @@ 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:441 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 msgid "Experimental" msgstr "Experimenteel" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:443 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:461 msgid "UDP Configuration:" msgstr "UDP Configuratie:" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:445 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:463 msgid "UDP port:" msgstr "UDP poort:" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:477 msgid "TCP Configuration" msgstr "TCP Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:465 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:483 msgid "Use auto-detected IP address" msgstr "Gebruik auto-detected IP adres" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:467 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:517 msgid "currently" msgstr "om dit moment" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:471 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:489 msgid "if we are not firewalled" msgstr "wanneer we niet gefirewalled zijn" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:475 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 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:485 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:503 msgid "Disable inbound (Firewalled)" msgstr "Schakel inkomend uit (Firewall)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:489 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:507 msgid "Completely disable" msgstr "Schakel volledig uit" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:491 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 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:493 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:511 msgid "Externally reachable TCP port" msgstr "Extern bereikbare TCP poort" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:515 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:505 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:523 msgid "Specify Port" msgstr "Specificeer Poort" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:527 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:348 msgid "Note" msgstr "Opmerking" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:512 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:530 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:518 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:536 msgid "Configuration Help" msgstr "Configuratie Help" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:520 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:538 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587 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 " @@ -4427,7 +4485,7 @@ msgstr "" "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:522 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:540 msgid "" "If you can, please poke a hole in your firewall to allow unsolicited UDP and " "TCP packets to reach you." @@ -4435,7 +4493,7 @@ 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:524 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:542 msgid "" "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole " "punching with \"SSU introductions\" to relay traffic." @@ -4443,7 +4501,7 @@ 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:526 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:544 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." @@ -4452,12 +4510,12 @@ msgstr "" "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:528 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:546 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:537 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 msgid "" "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect " "the external IP address and forward ports." @@ -4465,39 +4523,39 @@ 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:539 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 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:541 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 msgid "No UPnP-compatible device present" msgstr "Geen UPnP-compatible device aanwezig" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:543 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 msgid "UPnP disabled on the device" msgstr "UPnP uitgeschakeld op het device" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:545 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 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:547 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 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:549 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 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:551 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 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:553 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:571 msgid "Review the UPnP status here." msgstr "Bekijk de UPnP status hier." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:573 msgid "" "UPnP may be enabled or disabled above, but a change requires a router " "restart to take effect." @@ -4505,23 +4563,23 @@ 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:557 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575 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:559 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 msgid "They are not private." msgstr "Deze zijn niet privé." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 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:563 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 msgid "" "If you specify the wrong IP address or hostname, or do not properly " "configure your NAT or firewall, your network performance will degrade " @@ -4530,15 +4588,15 @@ 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:565 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 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:567 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 msgid "Reachability Help" msgstr "Bereikbaarheids Help" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:572 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:590 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 " @@ -4549,7 +4607,7 @@ msgstr "" "firewalls hebt, bijvoorbeeld zowel als software pakket en een externe " "hardware router." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593 msgid "" "If there is an error, the
    logs may also help " "diagnose the problem." @@ -4557,15 +4615,15 @@ 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:579 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 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:583 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 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:585 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603 msgid "" "As the firewall detection methods are not 100% reliable, this may " "occasionally be displayed in error." @@ -4573,7 +4631,7 @@ 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:587 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 msgid "" "However, if it appears consistently, you should check whether both your " "external and internal firewalls are open for your port." @@ -4581,7 +4639,7 @@ 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:589 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 msgid "" "I2P will work fine when firewalled, there is no reason for concern. When " "firewalled, the router uses \"introducers\" to relay inbound connections." @@ -4590,7 +4648,7 @@ msgstr "" "maakt de router gebruik van \"introducers\" om inkomende connecties door te " "sturen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:591 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 msgid "" "However, you will get more participating traffic and help the network more " "if you can open your firewall(s)." @@ -4598,7 +4656,7 @@ 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:593 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 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 " @@ -4608,7 +4666,7 @@ msgstr "" "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:595 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 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 " @@ -4618,11 +4676,11 @@ msgstr "" "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:599 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 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:603 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 msgid "" "The router is not configured to publish its address, therefore it does not " "expect incoming connections." @@ -4630,11 +4688,11 @@ 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:605 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 msgid "WARN - Firewalled and Fast" msgstr "WARN - Firewall en Snel" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 msgid "" "You have configured I2P to share more than 128KBps of bandwidth, but you are " "firewalled." @@ -4642,7 +4700,7 @@ 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:609 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 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 " @@ -4651,28 +4709,28 @@ 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:611 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 msgid "WARN - Firewalled and Floodfill" msgstr "WARN - Firewall en Floodfill" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:631 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:615 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 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:617 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 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:619 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:637 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." @@ -4681,7 +4739,7 @@ msgstr "" "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:621 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 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." @@ -4690,19 +4748,19 @@ msgstr "" "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:623 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 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:625 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 msgid "WARN - Firewalled with UDP Disabled" msgstr "WARN - Firewall met UDP Uitgeschakeld" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 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:629 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 msgid "" "You appear to be firewalled on TCP, therefore your router cannot accept " "inbound connections." @@ -4710,15 +4768,15 @@ 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:631 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 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:633 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:651 msgid "ERR - Clock Skew" msgstr "ERR - Klok Afwijking" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 msgid "" "Your system's clock is skewed, which will make it difficult to participate " "in the network." @@ -4726,15 +4784,15 @@ 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:637 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:655 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:639 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:657 msgid "ERR - Private TCP Address" msgstr "ERR - Privaat TCP Adres" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:659 msgid "" "You must never advertise an unroutable IP address such as 127.0.0.1 or " "192.168.1.1 as your external address." @@ -4742,20 +4800,20 @@ 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:643 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 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:645 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:663 msgid "ERR - SymmetricNAT" msgstr "ERR - SymmetricNAT" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:665 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:649 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:667 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 " @@ -4764,7 +4822,7 @@ 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:651 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:669 msgid "" "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config " "and restart" @@ -4772,12 +4830,12 @@ 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:653 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 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:655 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:673 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." @@ -4785,7 +4843,7 @@ 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:657 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:675 msgid "" "This may be a transient error, if the other program is no longer using the " "port." @@ -4793,15 +4851,15 @@ 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:659 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:677 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:661 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:679 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:663 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:681 msgid "" "You have not configured inbound TCP with a hostname and port above, however " "you have disabled UDP." @@ -4809,25 +4867,25 @@ 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:665 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:683 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:667 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:685 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:669 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:687 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:671 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:689 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:673 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:691 msgid "" "Do you have another I2P instance running? Stop the conflicting program and " "restart I2P." @@ -4835,35 +4893,35 @@ 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:113 msgid "config advanced" msgstr "geavanceerde configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:263 msgid "I2P Advanced Configuration" msgstr "I2P Geavanceerde Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:319 msgid "Advanced I2P Configuration" msgstr "Geavanceerde I2P Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:329 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:112 msgid "config clients" msgstr "client configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:265 msgid "I2P Client Configuration" msgstr "I2P Client Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:330 msgid "Client Configuration" msgstr "Client Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:314 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:332 msgid "" "The Java clients listed below are started by the router and run in the same " "JVM." @@ -4871,76 +4929,76 @@ 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:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:338 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:325 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:401 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:415 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:439 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:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 msgid "Advanced Client Interface Configuration" msgstr "Geavanceerde Client Interface Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:361 msgid "External I2CP (I2P Client Protocol) Interface Configuration" msgstr "Externe I2CP (I2P Client Protocol) Interface Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:367 msgid "Enabled without SSL" msgstr "Ingeschakeld zonder SSL" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:373 msgid "Enabled with SSL required" msgstr "Ingeschakeld met SSL vereist" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:379 msgid "Disabled - Clients outside this Java process may not connect" msgstr "" "Uitgeschakeld - Clients buiten dit Java process mogen geen verbinding maken" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:381 msgid "I2CP Port" msgstr "I2CP Poort" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:385 msgid "I2CP Interface" msgstr "I2CP Interface" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:379 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:401 msgid "Authorization" msgstr "Authorisatie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:385 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:407 msgid "Require username and password" msgstr "Gebruikersnaam en wachtwoord verplicht" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:387 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 msgid "Username" msgstr "Gebruikersnaam" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:391 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:413 msgid "Password" msgstr "Wachtwoord" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:419 msgid "Any changes made here must also be configured in the external client." msgstr "" "Alle wijzigingen die hier worden gemaakt moeten ook in de externe client " "worden geconfigureerd." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:399 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:421 msgid "Many clients do not support SSL or authorization." msgstr "Veel clients understeunen geen SSL of authorisatie." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:407 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:429 msgid "WebApp Configuration" msgstr "WebApp Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 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 " @@ -4956,7 +5014,7 @@ msgstr "" "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:411 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433 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 " @@ -4969,103 +5027,103 @@ msgstr "" "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:421 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:445 msgid "Plugin Configuration" msgstr "Plugin Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:447 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:429 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:455 msgid "Plugin Installation" msgstr "Plugin Installatie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:457 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:112 msgid "config keyring" msgstr "configureer sleutelbos" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:249 msgid "I2P Keyring Configuration" msgstr "I2P Sleutelbos Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:317 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:298 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:320 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:308 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:326 msgid "Manual Keyring Addition" msgstr "Handmatige Sleutelbos Toevoeging" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:328 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:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:331 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:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:333 msgid "I2PTunnel page" msgstr "I2PTunnel pagina" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:335 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:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:337 msgid "Encryption Key" msgstr "Encryptie Sleutel" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:107 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:113 msgid "config logging" msgstr "configureer logging" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:263 msgid "I2P Logging Configuration" msgstr "I2P Logging Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 msgid "Configure I2P Logging Options" msgstr "Configureer I2P Logging Opties" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:321 msgid "Logging filename" msgstr "Logging bestandsnaam" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:325 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:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:327 msgid "Log record format" msgstr "Log regel formaat" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:331 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:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:333 msgid "Log date format" msgstr "Log datum formaat" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:337 msgid "" "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' " "= millisecond)" @@ -5073,15 +5131,15 @@ 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:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 msgid "Max log file size" msgstr "Max log bestand grootte" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:343 msgid "Default log level" msgstr "Standaard log niveau" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:347 msgid "" "(DEBUG and INFO are not recommended defaults, as they will drastically slow " "down your router)" @@ -5089,44 +5147,44 @@ 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:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:349 msgid "Log level overrides" msgstr "Log niveau overschrijving" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:353 msgid "New override" msgstr "Nieuwe overschrijving" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:112 msgid "config peers" msgstr "configureer peers" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:249 msgid "I2P Peer Configuration" msgstr "I2P Peer Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:323 msgid "Manual Peer Controls" msgstr "Handmatige Peer Beheer" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 msgid "Router Hash" msgstr "Router Hash" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:329 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:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:331 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:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:341 msgid "Adjust Profile Bonuses" msgstr "Aanpassing van Profiel Bonussen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:343 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 " @@ -5139,32 +5197,32 @@ msgstr "" "gebruikt voor sommige exploratory tunnels. De huidige bonussen worden " "getoond op de" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:345 msgid "profiles page" msgstr "profielen pagina" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:345 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:251 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:273 msgid "Banned Peers" msgstr "Verbannen Peers" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:366 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:384 msgid "Banned IPs" msgstr "Verbannen IPs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:112 msgid "config reseeding" msgstr "configureer reseeden" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:262 msgid "I2P Reseeding Configuration" msgstr "I2P Reseeden Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:300 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 msgid "Reseeding Configuration" msgstr "Reseeden Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:320 msgid "" "Reseeding is the bootstrapping process used to find other routers when you " "first install I2P, or when your router has too few router references " @@ -5174,14 +5232,14 @@ msgstr "" "vinden wanneer je I2P voor het eerst installeert, of wanneer je router te " "weinig router referenties heeft." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:322 msgid "" "If reseeding has failed, you should first check your network connection." msgstr "" "Wanneer reseeden heeft gefaald moet je eerst je netwerkverbinding " "controlleren." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:326 msgid "" "Change these only if HTTP is blocked by a restrictive firewall, reseed has " "failed, and you have access to an HTTP proxy." @@ -5189,60 +5247,60 @@ msgstr "" "Wijzig deze alleen wanneer HTTP geblokkeerd is door een beperkende firewall, " "reseeden heeft gefaald en je toegang hebt tot een HTTP proxy." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:328 #, java-format msgid "See {0} for instructions on reseeding manually." msgstr "Zie {0} voor instructies om handmatig te reseeden." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:328 msgid "the FAQ" msgstr "de FAQ" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:330 msgid "Reseed URL Selection" msgstr "Reseed URL Selectie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:336 msgid "Try SSL first then non-SSL" msgstr "Probeer eerst met SSL, daarna zonder SSL" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:324 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:342 msgid "Use SSL only" msgstr "Gebruik alleen SSL" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:348 msgid "Use non-SSL only" msgstr "Gebruik geen SSL" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:332 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 msgid "Reseed URLs" msgstr "Reseed URLs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:336 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:354 msgid "Enable HTTP proxy (not used for SSL)" msgstr "HTTP proxy inschakelen (niet gebruikt voor SSL)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:340 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:358 msgid "HTTP Proxy Host" msgstr "HTTP Proxy Host" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:344 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:362 msgid "HTTP Proxy Port" msgstr "HTTP Proxy Poort" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:112 msgid "config service" msgstr "configureer service" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:249 msgid "I2P Service Configuration" msgstr "I2P Service Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:285 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:303 msgid "Shutdown the router" msgstr "Stop de router" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:287 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 msgid "" "Graceful shutdown lets the router satisfy the agreements it has already made " "before shutting down, but may take a few minutes." @@ -5251,12 +5309,12 @@ msgstr "" "overeenkomsten vervullen alvorens te stoppen, maar dit kan een aantal " "minuten duren." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:289 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:307 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:299 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 msgid "" "If you want the router to restart itself after shutting down, you can choose " "one of the following." @@ -5264,7 +5322,7 @@ 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:301 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 msgid "" "This is useful in some situations - for example, if you changed some " "settings that client applications only read at startup, such as the " @@ -5275,7 +5333,7 @@ msgstr "" "opstarten, zoals het routerconsole wachtwoord of de interface waar het op " "luistert." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 msgid "" "A graceful restart will take a few minutes (but your peers will appreciate " "your patience), while a hard restart does so immediately." @@ -5283,7 +5341,7 @@ 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:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 msgid "" "After tearing down the router, it will wait 1 minute before starting back up " "again." @@ -5291,40 +5349,43 @@ 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:315 -#, fuzzy +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:333 msgid "Systray integration" -msgstr "integratie" +msgstr "Systeemvak integratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 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 in je systeemvak waarmee " +"je de status van de router kan zien" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 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 ook hun eigen functionaliteit " +"in het systeemvak kunnen integreren)." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339 msgid "If you are on windows, you can either enable or disable that icon here." -msgstr "" +msgstr "Indien je Windows gebruikt kan je het icoon hier in- of uitschakelen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 msgid "Show systray icon" -msgstr "" +msgstr "Toon systeemvak icoon" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:343 msgid "Hide systray icon" -msgstr "" +msgstr "Verberg systray icoon" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:345 msgid "Run on startup" msgstr "Aan bij opstarten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:329 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 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." @@ -5332,12 +5393,12 @@ 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:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 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:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 msgid "" "If you are running I2P as service right now, removing it will shut down your " "router immediately." @@ -5345,7 +5406,7 @@ 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:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:361 msgid "" "You may want to consider shutting down gracefully, as above, then running " "uninstall_i2p_service_winnt.bat." @@ -5353,15 +5414,15 @@ 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:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:365 msgid "Debugging" msgstr "Debugging" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:367 msgid "View the job queue" msgstr "Bekijk de taak wachtrij" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:371 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." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:377 msgid "Launch browser on router startup?" msgstr "Start browser bij opstarten router?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:361 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:379 msgid "" "I2P's main configuration interface is this web console, so for your " "convenience I2P can launch a web browser on startup pointing at" @@ -5383,68 +5444,68 @@ 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:113 msgid "config stats" msgstr "configureer statistieken" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:250 msgid "I2P Stats Configuration" msgstr "I2P Statistieken Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:320 msgid "Configure I2P Stat Collection" msgstr "Configureer I2P Statistiek Vergaring" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:322 msgid "Enable full stats?" msgstr "Volledige statistieken inschakelen?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:329 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:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:331 msgid "Stat file" msgstr "Statistiek bestand" -#: ../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:335 msgid "Filter" msgstr "Filter" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:319 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:328 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:348 msgid "toggle all" msgstr "alles aan/uit" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:350 msgid "Log" msgstr "Log" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:332 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:352 msgid "Graph" msgstr "Grafiek" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:371 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:391 msgid "Advanced filter" msgstr "Geavanceerd filter" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:112 msgid "config tunnels" msgstr "configureer tunnels" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:262 msgid "I2P Tunnel Configuration" msgstr "I2P Tunnel Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:328 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:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:332 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:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:335 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 " @@ -5454,51 +5515,51 @@ msgstr "" "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:316 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:338 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:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:341 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:333 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:351 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:336 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:354 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:338 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:356 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:340 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:358 msgid "i2ptunnel page" msgstr "i2ptunnel pagina" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:112 msgid "config UI" msgstr "configureer UI" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:262 msgid "I2P UI Configuration" msgstr "I2P UI Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:314 msgid "Router Console Theme" msgstr "Router Console Thema" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:339 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:312 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:341 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 " @@ -5508,11 +5569,11 @@ msgstr "" "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:316 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:345 msgid "Router Console Language" msgstr "Router Console Taal" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:320 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:349 msgid "" "Please contribute to the router console translation project! Contact the " "developers on IRC #i2p to help." @@ -5520,71 +5581,71 @@ 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:324 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:353 msgid "Apply" msgstr "Toepassen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:112 msgid "config update" msgstr "configureer update" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:249 msgid "I2P Update Configuration" msgstr "I2P Update Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:321 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:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:323 msgid "News & I2P Updates" msgstr "Nieuws & I2P Updates" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:327 msgid "Update In Progress" msgstr "Bezig Met Upgrade" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:335 msgid "News URL" msgstr "Nieuws URL" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:339 msgid "Refresh frequency" msgstr "Ververs frequentie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:345 msgid "Update policy" msgstr "Update regels" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:349 msgid "Update through the eepProxy?" msgstr "Update door de eepProxy?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:353 msgid "eepProxy host" msgstr "eepProxy host" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:357 msgid "eepProxy port" msgstr "eepProxy poort" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 msgid "Update URLs" msgstr "Update URLs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:365 msgid "Trusted keys" msgstr "Vertrouwde sleutels" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:369 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:355 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:373 msgid "Unsigned Build URL" msgstr "Niet-ondertekende Build URL" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:379 msgid "" "I2P updates are disabled because you do not have write permission for the " "install directory." @@ -5592,35 +5653,35 @@ 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:367 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:385 msgid "Save" msgstr "Opslaan" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:115 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:121 msgid "Internal Error" msgstr "Interne Fout" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:117 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123 msgid "Router Console" msgstr "Router Console" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:121 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:127 msgid "Configuration" msgstr "Configuratie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:135 msgid "Sorry! There has been an internal error." msgstr "Sorry! Er is een interne fout opgetreden." #. note to translators - both parameters are URLs -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:133 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:232 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:254 #, java-format msgid "Please report bugs on {0} or {1}." msgstr "Rapporteer bugs op {0} of {1}." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:137 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:258 msgid "" "You may use the username \"guest\" and password \"guest\" if you do not wish " "to register." @@ -5628,27 +5689,27 @@ msgstr "" "Indien je niet wilt registreren kan je de username \"guest\" en wachtwoord " "\"guest\" gebruiken." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:145 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:260 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/error500_jsp.java:141 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:147 msgid "Error Details" msgstr "Fout Details" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:149 #, java-format msgid "Error {0}" msgstr "Fout {0}" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:163 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:169 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:250 msgid "I2P Version and Running Environment" msgstr "I2P Versie en Omgevingsinformatie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:197 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:288 msgid "" "Note that system information, log timestamps, and log messages may provide " "clues to your location; please review everything you include in a bug report." @@ -5657,85 +5718,89 @@ msgstr "" "aanwijzingen kunnen geven over je lokatie; controlleer daarom alles dat je " "in een bug report opneemt." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:117 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:123 msgid "Page Not Found" msgstr "Pagina Niet Gevonden" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:242 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:264 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:244 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:266 msgid "Error 404" msgstr "Fout 404" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:249 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:271 msgid "not found" msgstr "niet gevonden" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:112 msgid "graphs" msgstr "grafieken" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:249 msgid "I2P Performance Graphs" msgstr "I2P Prestatie Grafieken" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:111 msgid "home" msgstr "start" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:331 +msgid "Welcome to I2P" +msgstr "Welkom bij I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:111 msgid "job queue" msgstr "taak wachtrij" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:248 msgid "I2P Router Job Queue" msgstr "I2P Router Taak wachtrij" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:111 msgid "logs" msgstr "logs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:248 msgid "I2P Router Logs" msgstr "I2P Router Logs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:281 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:303 msgid "Critical Logs" msgstr "Kritieke Logs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:285 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:307 msgid "Router Logs" msgstr "Router Logs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:291 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:313 msgid "Service (Wrapper) Logs" msgstr "Service (Wrapper) Logs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:111 msgid "network database summary" msgstr "samenvatting netwerk database" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:248 msgid "I2P Network Database Summary" msgstr "Samenvatting I2P Netwerk Database " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:109 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:115 msgid "WebApp Not Found" msgstr "WebApp Niet Gevonden" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:230 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:252 msgid "Web Application Not Running" msgstr "Web Applicatie Draai Niet" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:232 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:254 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:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:256 msgid "" "Please visit the config clients page to start it." @@ -5743,39 +5808,49 @@ msgstr "" "Bezoek de config clients pagina om " "het te starten." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:111 msgid "peer connections" msgstr "peer connecties" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:248 msgid "I2P Network Peers" msgstr "I2P Netwerk Peers" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:111 msgid "peer profiles" msgstr "peer profielen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:248 msgid "I2P Network Peer Profiles" msgstr "I2P Netwerk Peer Profielen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:111 msgid "statistics" msgstr "statistieken" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:265 msgid "I2P Router Statistics" msgstr "I2P Router Statistieken" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:255 #, java-format msgid "Disable {0} Refresh" msgstr "{0} Verversing Uitschakelen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:111 msgid "tunnel summary" msgstr "tunnel samenvatting" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:248 msgid "I2P Tunnel Summary" msgstr "I2P Tunnel Samenvatting" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:111 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:248 +msgid "Peer Profile" +msgstr "Peer Profiel" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:275 +#, java-format +msgid "Profile for peer {0}" +msgstr "Profiel voor peer {0}" From 6f296a6f76e69541e1de47398994f1e56f271dd8 Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 22 Mar 2011 02:12:03 +0000 Subject: [PATCH 318/463] -8 --- history.txt | 4 ++++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/history.txt b/history.txt index 04e9e58e7..7c3f8e253 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,7 @@ +2011-03-22 zzz + * Handle GNU JRE returning Long.MAX_VALUE for max memory + * i2ptunnel: HTML fixes + 2011-03-20 zzz * Console: Remove cache directives * i2psnark: Fix peers stuck at uninteresting after metainfo fetch 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 8b10720b234dac201d6b9670f7fe2819ed187a8c Mon Sep 17 00:00:00 2001 From: magma Date: Tue, 22 Mar 2011 11:06:18 +0000 Subject: [PATCH 319/463] upd messages-fr.po --- apps/routerconsole/locale/messages_fr.po | 1087 +++++++++++----------- 1 file changed, 540 insertions(+), 547 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 1d0ae74ea..b512e4d8e 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-11-19 18:16+0000\n" -"PO-Revision-Date: 2010-11-19 20:04+0100\n" -"Last-Translator: mixxy \n" +"PO-Revision-Date: 2011-03-22 11:46+0100\n" +"Last-Translator: \n" "Language-Team: foo \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -30,8 +30,8 @@ msgstr "" #, java-format msgid "1 ms" msgid_plural "{0,number,####} ms" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 ms" +msgstr[1] "{0,number,####}ms" #. seconds #. Note to translators: quantity will always be greater than one. @@ -41,8 +41,8 @@ msgstr[1] "" #, java-format msgid "1 sec" msgid_plural "{0} sec" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 s" +msgstr[1] "{0} s" #. minutes #. Note to translators: quantity will always be greater than one. @@ -51,8 +51,8 @@ msgstr[1] "" #, java-format msgid "1 min" msgid_plural "{0} min" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 mn" +msgstr[1] "{0} mn" #. hours #. Note to translators: quantity will always be greater than one. @@ -67,7 +67,7 @@ msgstr[1] "{0} heures" #: ../../../core/java/src/net/i2p/data/DataHelper.java:1103 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313 msgid "n/a" -msgstr "" +msgstr "n/d" #. days #. Note to translators: quantity will always be greater than one. @@ -75,13 +75,13 @@ msgstr "" #, java-format msgid "1 day" msgid_plural "{0} days" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 jour" +msgstr[1] "{0} jours" #: ../../../router/java/src/net/i2p/router/Blocklist.java:126 #, java-format msgid "Banned by router hash: {0}" -msgstr "" +msgstr "Banni(s) pour hachage routeur hash: {0}" #: ../../../router/java/src/net/i2p/router/Blocklist.java:128 #, fuzzy @@ -91,43 +91,43 @@ msgstr "Pairs interdits" #. Temporary reason, until the job finishes #: ../../../router/java/src/net/i2p/router/Blocklist.java:673 msgid "IP banned" -msgstr "IP interdit" +msgstr "IP bannie" #: ../../../router/java/src/net/i2p/router/Blocklist.java:743 #, java-format msgid "IP banned by blocklist.txt entry {0}" -msgstr "" +msgstr "IP bannie(s) via entrée blocklist.txt {0}" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:92 msgid "Rejecting tunnels: Shutting down" -msgstr "" +msgstr "Rejet tous tunnels: Arrêt en cours" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:141 msgid "Rejecting tunnels: High message delay" -msgstr "" +msgstr "Tunnels rejetés: délai de messages élevé" #. 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 "" +msgstr "Rejet tous tunnels: trop de requêtes" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:233 msgid "Rejecting tunnels: Limit reached" -msgstr "" +msgstr "Rejets de tunnels: limite atteinte" #. .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 "" +msgstr "Rejets de tunnels: limite de bande passante" #. 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 "" +msgstr "Rejet tous tunnels: limite de bande passante" #. hard to do {0} from here #. setTunnelStatus("Accepting " + (100-(int)(100.0*probReject)) + "% of tunnels"); @@ -138,7 +138,7 @@ msgstr "tunnels participants" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:377 msgid "Accepting tunnels" -msgstr "" +msgstr "Tunnels acceptés" #. NPE, too early #. if (_context.router().getRouterInfo().getBandwidthTier().equals("K")) @@ -151,7 +151,7 @@ msgstr "Configuration des tunnels" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:50 msgid "Ensure that nothing blocks outbound HTTP, check logs and if nothing helps, read the FAQ about reseeding manually." -msgstr "" +msgstr "Assurez-vous que rien ne bloque les sorties HTTP, vérifiez logs et si rien ne vous aide, lisez la FAQ sur le réamorçage manuel." #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:82 #, fuzzy @@ -160,56 +160,56 @@ msgstr "Test en cours" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:146 msgid "Reseeding: fetching seed URL." -msgstr "" +msgstr "Réamorçage: collecte des URL sources." #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:152 msgid "Last reseed failed fully (failed reading seed URL)." -msgstr "" +msgstr "Échec complet du dernier réamorçage (échec de lecture de l'URL source)" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:178 msgid "Last reseed failed fully (no routerInfo URLs at seed URL)." -msgstr "" +msgstr "Échec complet du dernier réamorçage (pas de routerInfo à l'URL source)" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:191 #, java-format msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." -msgstr "" +msgstr "Réamorçage: collecte routerInfo depuis l'URL source ({0} réussie, {1} erreurs)." #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212 #, java-format msgid "Last reseed failed partly ({0}% of {1})." -msgstr "" +msgstr "Échec partiel du dernier réamorçage ({0}% de {1})." #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:217 #, java-format msgid "Last reseed failed ({0}% of {1})." -msgstr "" +msgstr "Échec du dernier réamorçage ({0}% de {1})." #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:227 msgid "Last reseed failed fully (exception caught)." -msgstr "" +msgstr "Échec complet du dernier réamorçage (exception interceptée)." #: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:510 msgid "NetDb entry" -msgstr "" +msgstr "Entrée 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 "" +msgstr "Pas de transports (masqués ou en cours de démarrage?)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:451 msgid "Unreachable on any transport" -msgstr "" +msgstr "Inaccessible sur tout transport" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:500 msgid "Router Transport Addresses" -msgstr "" +msgstr "Adresses de transport du routeur" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:505 #, java-format msgid "{0} is used for outbound connections only" -msgstr "" +msgstr "{0} est utilisé seulement pour les connexions sortantes" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 @@ -230,13 +230,13 @@ msgstr "Pair" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:520 msgid "The remote peer, identified by router hash" -msgstr "" +msgstr "Le pair distant, identifié par son hachage routeur" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:716 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1892 msgid "Dir" -msgstr "" +msgstr "Dossier" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:522 #, fuzzy @@ -250,21 +250,21 @@ msgstr "Options Sortants" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 msgid "They offered to introduce us (help other peers traverse our firewall)" -msgstr "" +msgstr "Ils ont proposé de nous présenter (aide d'autres pairs à passer notre pare-feu)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 msgid "We offered to introduce them (help other peers traverse their firewall)" -msgstr "" +msgstr "Nous avons proposé de les présenter (aide d'autres pairs à passer leur pare-feu)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 msgid "How long since a packet has been received / sent" -msgstr "" +msgstr "Combien de temps écoulé depuis la dernière réception / émission d'un paquet " #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:717 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1893 msgid "Idle" -msgstr "" +msgstr "En attente" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:718 @@ -275,51 +275,51 @@ msgstr "Entrant/Sortant" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 msgid "The smoothed inbound / outbound transfer rate (KBytes per second)" -msgstr "" +msgstr "Le taux de transfert entrant/sortant lissé (ko/s)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531 msgid "How long ago this connection was established" -msgstr "" +msgstr "Depuis combien de temps cette connexion est établie" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:719 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1903 msgid "Up" -msgstr "" +msgstr "En marche" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:720 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905 msgid "Skew" -msgstr "" +msgstr "décallée" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 msgid "The difference between the peer's clock and your own" -msgstr "" +msgstr "L'écart de temps entre l'horloge du pair et la votre" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "The congestion window, which is how many bytes can be sent without an acknowledgement" -msgstr "" +msgstr "La fenêtre de congestion, en nombre d'octets transmissibles sans acquitement" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 msgid "The number of sent messages awaiting acknowledgement" -msgstr "" +msgstr "Le nombre de messages en attente d'acquitement" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 msgid "The maximum number of concurrent messages to send" -msgstr "" +msgstr "Le nombre maximum de messages simultanés à envoyer" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 msgid "The number of pending sends which exceed congestion window" -msgstr "" +msgstr "Le nombre d'envois en attente qui débordent de la fenêtre de congestion" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 msgid "The slow start threshold" -msgstr "" +msgstr "Le seuil de démarrage lent" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 msgid "The round trip time in milliseconds" -msgstr "" +msgstr "L'aller-retour en ms" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1915 @@ -328,15 +328,15 @@ msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 msgid "The standard deviation of the round trip time in milliseconds" -msgstr "" +msgstr "La dérive standard d'aller-retour en ms" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 msgid "The retransmit timeout in milliseconds" -msgstr "" +msgstr "Le délai de retransmission en ms" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 msgid "Current maximum send packet size / estimated maximum receive packet size (bytes)" -msgstr "" +msgstr "Taille actuelle maximum de paquet envoyé / taille maximum estimée de paquet reçu (octets) " #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:721 @@ -346,7 +346,7 @@ msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 msgid "The total number of packets sent to the peer" -msgstr "" +msgstr "Le nombre de paquets envoyés au pair" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:722 @@ -356,7 +356,7 @@ msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 msgid "The total number of packets received from the peer" -msgstr "" +msgstr "Le nombre de paquets reçus du pair" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927 @@ -365,7 +365,7 @@ msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 msgid "The total number of packets retransmitted to the peer" -msgstr "" +msgstr "Le nombre de paquets retransmis au pair" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1929 @@ -374,13 +374,13 @@ msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 msgid "The total number of duplicate packets received from the peer" -msgstr "" +msgstr "Le nombre de paquets en double reçus du pair" #: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:409 #: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:627 #, java-format msgid "Excessive clock skew: {0}" -msgstr "" +msgstr "Décalage excessif de l'horloge: {0}" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:710 msgid "NTCP connections" @@ -389,16 +389,16 @@ msgstr "connexions NTCP" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:711 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1884 msgid "Limit" -msgstr "" +msgstr "Limite" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:712 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1885 msgid "Timeout" -msgstr "" +msgstr "Dépassement d'attente" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:723 msgid "Out Queue" -msgstr "" +msgstr "File de sortie" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:724 #, fuzzy @@ -430,7 +430,7 @@ msgstr "connexions UDP" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890 msgid "Sort by peer hash" -msgstr "" +msgstr "Tri par hachage de pair" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1892 msgid "Direction/Introduction" @@ -438,123 +438,123 @@ msgstr "" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 msgid "Sort by idle inbound" -msgstr "" +msgstr "Tri par entrant inactif" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1896 msgid "Sort by idle outbound" -msgstr "" +msgstr "Tri par sortant inactif" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1899 msgid "Sort by inbound rate" -msgstr "" +msgstr "Tri par taux entrant" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1901 msgid "Sort by outbound rate" -msgstr "" +msgstr "Tri par taux sortant" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1904 msgid "Sort by connection uptime" -msgstr "" +msgstr "Tri par durée de connexion" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1906 msgid "Sort by clock skew" -msgstr "" +msgstr "Tri par décalage d'horloge" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1909 msgid "Sort by congestion window" -msgstr "" +msgstr "Tri par fenêtre de congestion" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1911 msgid "Sort by slow start threshold" -msgstr "" +msgstr "Tri par seuil de démarrage lent" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1914 msgid "Sort by round trip time" -msgstr "" +msgstr "Tri par durée d'aller-retour" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1916 msgid "Sort by round trip time deviation" -msgstr "" +msgstr "Tri par dérive de durée d'aller-retour" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918 msgid "Sort by retransmission timeout" -msgstr "" +msgstr "Tri pas dépassement de durée de retransmission" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1921 msgid "Sort by outbound maximum transmit unit" -msgstr "" +msgstr "Tri par MTU sortant" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1923 msgid "Sort by packets sent" -msgstr "" +msgstr "Tri par paquets envoyés" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1925 msgid "Sort by packets received" -msgstr "" +msgstr "Tri par paquets reçus" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1928 msgid "Sort by packets retransmitted" -msgstr "" +msgstr "Tri par paquets renvoyés" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1930 msgid "Sort by packets received more than once" -msgstr "" +msgstr "Tri par paquet reçus multiples" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1951 msgid "We offered to introduce them" -msgstr "" +msgstr "Propositions de présentation à" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1953 msgid "They offered to introduce us" -msgstr "" +msgstr "Ont proposé leur service" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1957 msgid "Choked" -msgstr "" +msgstr "Choqué" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1965 msgid "1 fail" -msgstr "" +msgstr "1 échec" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1967 #, java-format msgid "{0} fails" -msgstr "" +msgstr "{0} échecs" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1973 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:162 msgid "Banned" -msgstr "Prohibé" +msgstr "Banni" #. buf.append("\n"); #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2105 msgid "SUMMARY" -msgstr "" +msgstr "RÉSUMÉ" #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:145 msgid "Dropping tunnel requests: Too slow" -msgstr "" +msgstr "Perte de demandes de tunnels: Trop lent" #. don't even bother, since we are so overloaded locally #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:352 msgid "Dropping tunnel requests: Overloaded" -msgstr "" +msgstr "Perte de demandes de tunnnels: Surchargé" #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:525 msgid "Rejecting tunnels: Request overload" -msgstr "" +msgstr "Rejet de tunnels: Surcharge de requêtes " #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:550 msgid "Rejecting tunnels: Connection limit" -msgstr "" +msgstr "Rejet de tunnels: Limite de connexions" #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:744 msgid "Dropping tunnel requests: High load" -msgstr "" +msgstr "Perte de tunnels: Forte charge" #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:753 msgid "Dropping tunnel requests: Queue time" -msgstr "" +msgstr "Perte de tunnels: Temps en file d'attente" #. 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!! @@ -564,19 +564,19 @@ msgstr "Andorre" #: ../java/build/Countries.java:4 msgid "United Arab Emirates" -msgstr "" +msgstr "Émirats arabes unis" #: ../java/build/Countries.java:5 msgid "Afghanistan" -msgstr "" +msgstr "Afghanistan" #: ../java/build/Countries.java:6 msgid "Antigua and Barbuda" -msgstr "" +msgstr "Antigua-et-Barbuda" #: ../java/build/Countries.java:7 msgid "Anguilla" -msgstr "" +msgstr "Anguilla" #: ../java/build/Countries.java:8 msgid "Albania" @@ -584,19 +584,19 @@ msgstr "Albanie" #: ../java/build/Countries.java:9 msgid "Armenia" -msgstr "" +msgstr "Arménie" #: ../java/build/Countries.java:10 msgid "Netherlands Antilles" -msgstr "" +msgstr "Antilles néerlandaises" #: ../java/build/Countries.java:11 msgid "Angola" -msgstr "" +msgstr "Angola" #: ../java/build/Countries.java:12 msgid "Antarctica" -msgstr "" +msgstr "Antarctique" #: ../java/build/Countries.java:13 msgid "Argentina" @@ -604,7 +604,7 @@ msgstr "Argentine" #: ../java/build/Countries.java:14 msgid "American Samoa" -msgstr "" +msgstr "Samoa américanes" #: ../java/build/Countries.java:15 msgid "Austria" @@ -612,63 +612,63 @@ msgstr "Autriche" #: ../java/build/Countries.java:16 msgid "Australia" -msgstr "" +msgstr "Australie" #: ../java/build/Countries.java:17 msgid "Aruba" -msgstr "" +msgstr "Aruba" #: ../java/build/Countries.java:19 msgid "Azerbaijan" -msgstr "" +msgstr "Azerbaïdjan" #: ../java/build/Countries.java:20 msgid "Bosnia and Herzegovina" -msgstr "" +msgstr "Bosnie Herzégovine" #: ../java/build/Countries.java:21 msgid "Barbados" -msgstr "" +msgstr "Barbades" #: ../java/build/Countries.java:22 msgid "Bangladesh" -msgstr "" +msgstr "Bangladesh" #: ../java/build/Countries.java:23 msgid "Belgium" -msgstr "" +msgstr "Belgique" #: ../java/build/Countries.java:24 msgid "Burkina Faso" -msgstr "" +msgstr "Burkina Faso" #: ../java/build/Countries.java:25 msgid "Bulgaria" -msgstr "" +msgstr "Bulgarie" #: ../java/build/Countries.java:26 msgid "Bahrain" -msgstr "" +msgstr "Bahreïn" #: ../java/build/Countries.java:27 msgid "Burundi" -msgstr "" +msgstr "Burundi" #: ../java/build/Countries.java:28 msgid "Benin" -msgstr "" +msgstr "Benin" #: ../java/build/Countries.java:29 msgid "Bermuda" -msgstr "" +msgstr "Bermudes" #: ../java/build/Countries.java:30 msgid "Brunei Darussalam" -msgstr "" +msgstr "Brunei" #: ../java/build/Countries.java:31 msgid "Bolivia" -msgstr "" +msgstr "Bolivie" #: ../java/build/Countries.java:32 msgid "Brazil" @@ -676,95 +676,95 @@ msgstr "Brésil" #: ../java/build/Countries.java:33 msgid "Bahamas" -msgstr "" +msgstr "Bahamas" #: ../java/build/Countries.java:34 msgid "Bhutan" -msgstr "" +msgstr "Bhoutan" #: ../java/build/Countries.java:35 msgid "Bouvet Island" -msgstr "" +msgstr "Île Bouvet" #: ../java/build/Countries.java:36 msgid "Botswana" -msgstr "" +msgstr "Botswana" #: ../java/build/Countries.java:37 msgid "Belarus" -msgstr "" +msgstr "Biélorussie" #: ../java/build/Countries.java:38 msgid "Belize" -msgstr "" +msgstr "Bélize" #: ../java/build/Countries.java:39 msgid "Canada" -msgstr "" +msgstr "Canada" #: ../java/build/Countries.java:40 msgid "The Democratic Republic of the Congo" -msgstr "" +msgstr "République démocratique du Congo" #: ../java/build/Countries.java:41 msgid "Central African Republic" -msgstr "" +msgstr "République centre africaine" #: ../java/build/Countries.java:42 msgid "Congo" -msgstr "" +msgstr "Congo" #: ../java/build/Countries.java:43 msgid "Switzerland" -msgstr "" +msgstr "Suisse" #: ../java/build/Countries.java:44 msgid "Cote D'Ivoire" -msgstr "" +msgstr "Côte d'ivoire" #: ../java/build/Countries.java:45 msgid "Cook Islands" -msgstr "" +msgstr "Îles Cook" #: ../java/build/Countries.java:46 msgid "Chile" -msgstr "" +msgstr "Chili" #: ../java/build/Countries.java:47 msgid "Cameroon" -msgstr "" +msgstr "Cameroun" #: ../java/build/Countries.java:48 msgid "China" -msgstr "" +msgstr "Chine" #: ../java/build/Countries.java:49 msgid "Colombia" -msgstr "" +msgstr "Colombie" #: ../java/build/Countries.java:50 msgid "Costa Rica" -msgstr "" +msgstr "Costa Rica" #: ../java/build/Countries.java:51 msgid "Serbia and Montenegro" -msgstr "" +msgstr "Serbie-et-Monténégro" #: ../java/build/Countries.java:52 msgid "Cuba" -msgstr "" +msgstr "Cuba" #: ../java/build/Countries.java:53 msgid "Cape Verde" -msgstr "" +msgstr "Cap-Vert" #: ../java/build/Countries.java:54 msgid "Cyprus" -msgstr "" +msgstr "Chypre" #: ../java/build/Countries.java:55 msgid "Czech Republic" -msgstr "" +msgstr "République Tchèque" #: ../java/build/Countries.java:56 msgid "Germany" @@ -772,67 +772,67 @@ msgstr "Allemagne" #: ../java/build/Countries.java:57 msgid "Djibouti" -msgstr "" +msgstr "Djibouti" #: ../java/build/Countries.java:58 msgid "Denmark" -msgstr "" +msgstr "Danemark" #: ../java/build/Countries.java:59 msgid "Dominica" -msgstr "" +msgstr "Dominique" #: ../java/build/Countries.java:60 msgid "Dominican Republic" -msgstr "" +msgstr "République Dominicaine" #: ../java/build/Countries.java:61 msgid "Algeria" -msgstr "" +msgstr "Algérie" #: ../java/build/Countries.java:62 msgid "Ecuador" -msgstr "" +msgstr "Équateur" #: ../java/build/Countries.java:63 msgid "Estonia" -msgstr "" +msgstr "Estonie" #: ../java/build/Countries.java:64 msgid "Egypt" -msgstr "" +msgstr "Égypte" #: ../java/build/Countries.java:65 msgid "Eritrea" -msgstr "" +msgstr "Érythrée" #: ../java/build/Countries.java:66 msgid "Spain" -msgstr "" +msgstr "Espagne" #: ../java/build/Countries.java:67 msgid "Ethiopia" -msgstr "" +msgstr "Éthiopie" #: ../java/build/Countries.java:68 msgid "Finland" -msgstr "" +msgstr "Finlande" #: ../java/build/Countries.java:69 msgid "Fiji" -msgstr "" +msgstr "Fidji" #: ../java/build/Countries.java:70 msgid "Falkland Islands (Malvinas)" -msgstr "" +msgstr "Malouines" #: ../java/build/Countries.java:71 msgid "Federated States of Micronesia" -msgstr "" +msgstr "Micronésie" #: ../java/build/Countries.java:72 msgid "Faroe Islands" -msgstr "" +msgstr "Féroé" #: ../java/build/Countries.java:73 msgid "France" @@ -840,648 +840,648 @@ msgstr "France" #: ../java/build/Countries.java:74 msgid "Gabon" -msgstr "" +msgstr "Gabon" #: ../java/build/Countries.java:75 msgid "United Kingdom" -msgstr "" +msgstr "Royaume uni" #: ../java/build/Countries.java:76 msgid "Grenada" -msgstr "" +msgstr "Grenade" #: ../java/build/Countries.java:77 msgid "Georgia" -msgstr "" +msgstr "Géorgie" #: ../java/build/Countries.java:78 msgid "French Guiana" -msgstr "" +msgstr "Guyane française" #: ../java/build/Countries.java:79 msgid "Ghana" -msgstr "" +msgstr "Ghana" #: ../java/build/Countries.java:80 msgid "Gibraltar" -msgstr "" +msgstr "Gibraltar" #: ../java/build/Countries.java:81 msgid "Greenland" -msgstr "" +msgstr "Groenland" #: ../java/build/Countries.java:82 msgid "Gambia" -msgstr "" +msgstr "Gambie" #: ../java/build/Countries.java:83 msgid "Guinea" -msgstr "" +msgstr "Guinée" #: ../java/build/Countries.java:84 msgid "Guadeloupe" -msgstr "" +msgstr "Guadeloupe" #: ../java/build/Countries.java:85 msgid "Equatorial Guinea" -msgstr "" +msgstr "Guinée équatoriale" #: ../java/build/Countries.java:86 msgid "Greece" -msgstr "" +msgstr "Grèce" #: ../java/build/Countries.java:87 msgid "South Georgia and the South Sandwich Islands" -msgstr "" +msgstr "Géorgie et Sandwich du sud" #: ../java/build/Countries.java:88 msgid "Guatemala" -msgstr "" +msgstr "Guatémala" #: ../java/build/Countries.java:89 msgid "Guam" -msgstr "" +msgstr "Guam" #: ../java/build/Countries.java:90 msgid "Guinea-Bissau" -msgstr "" +msgstr "Guinée-Bissau" #: ../java/build/Countries.java:91 msgid "Guyana" -msgstr "" +msgstr "Guyane" #: ../java/build/Countries.java:92 msgid "Hong Kong" -msgstr "" +msgstr "Hong Kong" #: ../java/build/Countries.java:93 msgid "Honduras" -msgstr "" +msgstr "Honduras" #: ../java/build/Countries.java:94 msgid "Croatia" -msgstr "" +msgstr "Croatie" #: ../java/build/Countries.java:95 msgid "Haiti" -msgstr "" +msgstr "Haïti" #: ../java/build/Countries.java:96 msgid "Hungary" -msgstr "" +msgstr "Hongrie" #: ../java/build/Countries.java:97 msgid "Indonesia" -msgstr "" +msgstr "Indonésie" #: ../java/build/Countries.java:98 msgid "Ireland" -msgstr "" +msgstr "Irlande" #: ../java/build/Countries.java:99 msgid "Israel" -msgstr "" +msgstr "Israël" #: ../java/build/Countries.java:101 msgid "India" -msgstr "" +msgstr "Inde" #: ../java/build/Countries.java:102 msgid "British Indian Ocean Territory" -msgstr "" +msgstr "Territoire britannique de l'océan Indien" #: ../java/build/Countries.java:103 msgid "Iraq" -msgstr "" +msgstr "Irak" #: ../java/build/Countries.java:104 msgid "Islamic Republic of Iran" -msgstr "" +msgstr "Iran" #: ../java/build/Countries.java:105 msgid "Iceland" -msgstr "" +msgstr "Islande" #: ../java/build/Countries.java:106 msgid "Italy" -msgstr "" +msgstr "Italie" #: ../java/build/Countries.java:108 msgid "Jamaica" -msgstr "" +msgstr "Jamaïque" #: ../java/build/Countries.java:109 msgid "Jordan" -msgstr "" +msgstr "Jordanie" #: ../java/build/Countries.java:110 msgid "Japan" -msgstr "" +msgstr "Japon" #: ../java/build/Countries.java:111 msgid "Kenya" -msgstr "" +msgstr "Kenya" #: ../java/build/Countries.java:112 msgid "Kyrgyzstan" -msgstr "" +msgstr "Kirghizistan" #: ../java/build/Countries.java:113 msgid "Cambodia" -msgstr "" +msgstr "Cambodge" #: ../java/build/Countries.java:114 msgid "Kiribati" -msgstr "" +msgstr "Kiribati" #: ../java/build/Countries.java:115 msgid "Comoros" -msgstr "" +msgstr "Comores" #: ../java/build/Countries.java:116 msgid "Saint Kitts and Nevis" -msgstr "" +msgstr "Saint-Christophe-et-Niévès" #: ../java/build/Countries.java:117 msgid "Republic of Korea" -msgstr "" +msgstr "Corée" #: ../java/build/Countries.java:118 msgid "Kuwait" -msgstr "" +msgstr "Koweit" #: ../java/build/Countries.java:119 msgid "Cayman Islands" -msgstr "" +msgstr "Caïman" #: ../java/build/Countries.java:120 msgid "Kazakhstan" -msgstr "" +msgstr "Kazakhstan" #: ../java/build/Countries.java:121 msgid "Lao People's Democratic Republic" -msgstr "" +msgstr "Laos" #: ../java/build/Countries.java:122 msgid "Lebanon" -msgstr "" +msgstr "Liban" #: ../java/build/Countries.java:123 msgid "Saint Lucia" -msgstr "" +msgstr "Sainte Lucie" #: ../java/build/Countries.java:124 msgid "Liechtenstein" -msgstr "" +msgstr "Liechtenstein" #: ../java/build/Countries.java:125 msgid "Sri Lanka" -msgstr "" +msgstr "Sri Lanka" #: ../java/build/Countries.java:126 msgid "Liberia" -msgstr "" +msgstr "Libéria" #: ../java/build/Countries.java:127 msgid "Lesotho" -msgstr "" +msgstr "Lesotho" #: ../java/build/Countries.java:128 msgid "Lithuania" -msgstr "" +msgstr "Lithuanie" #: ../java/build/Countries.java:129 msgid "Luxembourg" -msgstr "" +msgstr "Luxembourg" #: ../java/build/Countries.java:130 msgid "Latvia" -msgstr "" +msgstr "Lettonie" #: ../java/build/Countries.java:131 msgid "Libyan Arab Jamahiriya" -msgstr "" +msgstr "Libye" #: ../java/build/Countries.java:132 msgid "Morocco" -msgstr "" +msgstr "Maroc" #: ../java/build/Countries.java:133 msgid "Monaco" -msgstr "" +msgstr "Monaco" #: ../java/build/Countries.java:134 msgid "Republic of Moldova" -msgstr "" +msgstr "Moldavie" #: ../java/build/Countries.java:137 msgid "Madagascar" -msgstr "" +msgstr "Madagascar" #: ../java/build/Countries.java:138 msgid "Marshall Islands" -msgstr "" +msgstr "Marshall" #: ../java/build/Countries.java:139 msgid "The Former Yugoslav Republic of Macedonia" -msgstr "" +msgstr "Macédoine" #: ../java/build/Countries.java:140 msgid "Mali" -msgstr "" +msgstr "Mali" #: ../java/build/Countries.java:141 msgid "Myanmar" -msgstr "" +msgstr "Birmanie" #: ../java/build/Countries.java:142 msgid "Mongolia" -msgstr "" +msgstr "Mongolie" #: ../java/build/Countries.java:143 msgid "Macao" -msgstr "" +msgstr "Macao" #: ../java/build/Countries.java:144 msgid "Northern Mariana Islands" -msgstr "" +msgstr "Mariannes" #: ../java/build/Countries.java:145 msgid "Martinique" -msgstr "" +msgstr "Martinique" #: ../java/build/Countries.java:146 msgid "Mauritania" -msgstr "" +msgstr "Mauritanie" #: ../java/build/Countries.java:147 msgid "Montserrat" -msgstr "" +msgstr "Montserrat" #: ../java/build/Countries.java:148 msgid "Malta" -msgstr "" +msgstr "Malte" #: ../java/build/Countries.java:149 msgid "Mauritius" -msgstr "" +msgstr "Maurice" #: ../java/build/Countries.java:150 msgid "Maldives" -msgstr "" +msgstr "Maldives" #: ../java/build/Countries.java:151 msgid "Malawi" -msgstr "" +msgstr "Malawi" #: ../java/build/Countries.java:152 msgid "Mexico" -msgstr "" +msgstr "Mexique" #: ../java/build/Countries.java:153 msgid "Malaysia" -msgstr "" +msgstr "Malaisie" #: ../java/build/Countries.java:154 msgid "Mozambique" -msgstr "" +msgstr "Mozambique" #: ../java/build/Countries.java:155 msgid "Namibia" -msgstr "" +msgstr "Namibie" #: ../java/build/Countries.java:156 msgid "New Caledonia" -msgstr "" +msgstr "Nouvelle Calédonie" #: ../java/build/Countries.java:157 msgid "Niger" -msgstr "" +msgstr "Niger" #: ../java/build/Countries.java:158 msgid "Norfolk Island" -msgstr "" +msgstr "Norfolk" #: ../java/build/Countries.java:159 msgid "Nigeria" -msgstr "" +msgstr "Nigéria" #: ../java/build/Countries.java:160 msgid "Nicaragua" -msgstr "" +msgstr "Nicaragua" #: ../java/build/Countries.java:161 msgid "Netherlands" -msgstr "" +msgstr "Pays bas" #: ../java/build/Countries.java:162 msgid "Norway" -msgstr "" +msgstr "Norvège" #: ../java/build/Countries.java:163 msgid "Nepal" -msgstr "" +msgstr "Népal" #: ../java/build/Countries.java:164 msgid "Nauru" -msgstr "" +msgstr "Nauru" #: ../java/build/Countries.java:165 msgid "Niue" -msgstr "" +msgstr "Niue" #: ../java/build/Countries.java:166 msgid "New Zealand" -msgstr "" +msgstr "Nouvelle Zélande" #: ../java/build/Countries.java:167 msgid "Oman" -msgstr "" +msgstr "Oman" #: ../java/build/Countries.java:168 msgid "Panama" -msgstr "" +msgstr "Panama" #: ../java/build/Countries.java:169 msgid "Peru" -msgstr "" +msgstr "Pérou" #: ../java/build/Countries.java:170 msgid "French Polynesia" -msgstr "" +msgstr "Polynésie française" #: ../java/build/Countries.java:171 msgid "Papua New Guinea" -msgstr "" +msgstr "Papouasie-Nouvelle-Guinée" #: ../java/build/Countries.java:172 msgid "Philippines" -msgstr "" +msgstr "Philippines" #: ../java/build/Countries.java:173 msgid "Pakistan" -msgstr "" +msgstr "Pakistan" #: ../java/build/Countries.java:174 msgid "Poland" -msgstr "" +msgstr "Pologne" #: ../java/build/Countries.java:175 msgid "Saint Pierre and Miquelon" -msgstr "" +msgstr "Saint Pierre et Miquelon" #: ../java/build/Countries.java:176 msgid "Puerto Rico" -msgstr "" +msgstr "Porto Rico" #: ../java/build/Countries.java:177 msgid "Palestinian Territory" -msgstr "" +msgstr "Palestine" #: ../java/build/Countries.java:178 msgid "Portugal" -msgstr "" +msgstr "Portugal" #: ../java/build/Countries.java:179 msgid "Palau" -msgstr "" +msgstr "Palaos" #: ../java/build/Countries.java:180 msgid "Paraguay" -msgstr "" +msgstr "Paraguay" #: ../java/build/Countries.java:181 msgid "Qatar" -msgstr "" +msgstr "Qatar" #: ../java/build/Countries.java:182 msgid "Reunion" -msgstr "" +msgstr "Réunion" #: ../java/build/Countries.java:183 msgid "Romania" -msgstr "" +msgstr "Roumanie" #: ../java/build/Countries.java:184 msgid "Serbia" -msgstr "" +msgstr "Serbie" #: ../java/build/Countries.java:185 msgid "Russian Federation" -msgstr "" +msgstr "Russie" #: ../java/build/Countries.java:186 msgid "Rwanda" -msgstr "" +msgstr "Rwanda" #: ../java/build/Countries.java:187 msgid "Saudi Arabia" -msgstr "" +msgstr "Arabie Saoudite" #: ../java/build/Countries.java:188 msgid "Solomon Islands" -msgstr "" +msgstr "Salomon" #: ../java/build/Countries.java:189 msgid "Seychelles" -msgstr "" +msgstr "Seychelles" #: ../java/build/Countries.java:190 msgid "Sudan" -msgstr "" +msgstr "Soudan" #: ../java/build/Countries.java:191 msgid "Sweden" -msgstr "" +msgstr "Suède" #: ../java/build/Countries.java:192 msgid "Singapore" -msgstr "" +msgstr "Singapour" #: ../java/build/Countries.java:193 msgid "Slovenia" -msgstr "" +msgstr "Slovénie" #: ../java/build/Countries.java:194 msgid "Slovakia" -msgstr "" +msgstr "Slovaquie" #: ../java/build/Countries.java:195 msgid "Sierra Leone" -msgstr "" +msgstr "Sierra Leone" #: ../java/build/Countries.java:196 msgid "San Marino" -msgstr "" +msgstr "Saint Marin" #: ../java/build/Countries.java:197 msgid "Senegal" -msgstr "" +msgstr "Sénégal" #: ../java/build/Countries.java:198 msgid "Somalia" -msgstr "" +msgstr "Somalie" #: ../java/build/Countries.java:199 msgid "Suriname" -msgstr "" +msgstr "Surinam" #: ../java/build/Countries.java:200 msgid "Sao Tome and Principe" -msgstr "" +msgstr "Sao Tome e Principe" #: ../java/build/Countries.java:201 msgid "El Salvador" -msgstr "" +msgstr "Salvador" #: ../java/build/Countries.java:202 msgid "Syrian Arab Republic" -msgstr "" +msgstr "Syrie" #: ../java/build/Countries.java:203 msgid "Swaziland" -msgstr "" +msgstr "Swaziland" #: ../java/build/Countries.java:204 msgid "Turks and Caicos Islands" -msgstr "" +msgstr "Turques-et-Caïques" #: ../java/build/Countries.java:205 msgid "Chad" -msgstr "" +msgstr "Tchad" #: ../java/build/Countries.java:206 msgid "French Southern Territories" -msgstr "" +msgstr "Terres australes et antarctiques françaises" #: ../java/build/Countries.java:207 msgid "Togo" -msgstr "" +msgstr "Togo" #: ../java/build/Countries.java:208 msgid "Thailand" -msgstr "" +msgstr "Thaïlande" #: ../java/build/Countries.java:209 msgid "Tajikistan" -msgstr "" +msgstr "Tadjikistan" #: ../java/build/Countries.java:210 msgid "Tokelau" -msgstr "" +msgstr "Tokelau" #: ../java/build/Countries.java:211 msgid "Timor-Leste" -msgstr "" +msgstr "Timor oriental" #: ../java/build/Countries.java:212 msgid "Turkmenistan" -msgstr "" +msgstr "Turkménistan" #: ../java/build/Countries.java:213 msgid "Tunisia" -msgstr "" +msgstr "Tunisie" #: ../java/build/Countries.java:214 msgid "Tonga" -msgstr "" +msgstr "Tonga" #: ../java/build/Countries.java:215 msgid "Turkey" -msgstr "" +msgstr "Turquie" #: ../java/build/Countries.java:216 msgid "Trinidad and Tobago" -msgstr "" +msgstr "Trinidad et Tobago" #: ../java/build/Countries.java:217 msgid "Tuvalu" -msgstr "" +msgstr "Tuvalu" #: ../java/build/Countries.java:218 msgid "Taiwan" -msgstr "" +msgstr "Taiwan" #: ../java/build/Countries.java:219 msgid "United Republic of Tanzania" -msgstr "" +msgstr "Tanzanie" #: ../java/build/Countries.java:220 msgid "Ukraine" -msgstr "" +msgstr "Ukraine" #: ../java/build/Countries.java:221 msgid "Uganda" -msgstr "" +msgstr "Ouganda" #: ../java/build/Countries.java:222 msgid "United States Minor Outlying Islands" -msgstr "" +msgstr "Îles mineures éloignées des États-Unis" #: ../java/build/Countries.java:223 msgid "United States" -msgstr "" +msgstr "États unis d'amérique" #: ../java/build/Countries.java:224 msgid "Uruguay" -msgstr "" +msgstr "Uruguay" #: ../java/build/Countries.java:225 msgid "Uzbekistan" -msgstr "" +msgstr "Ouzbékistan" #: ../java/build/Countries.java:226 msgid "Holy See (Vatican City State)" -msgstr "" +msgstr "Vatican" #: ../java/build/Countries.java:227 msgid "Saint Vincent and the Grenadines" -msgstr "" +msgstr "Saint-Vincent-et-les Grenadines" #: ../java/build/Countries.java:228 msgid "Venezuela" -msgstr "" +msgstr "Venezuela" #: ../java/build/Countries.java:229 #: ../java/build/Countries.java:230 msgid "Virgin Islands" -msgstr "" +msgstr "Ïles Vierges" #: ../java/build/Countries.java:231 msgid "Viet Nam" -msgstr "" +msgstr "Viêt Nam" #: ../java/build/Countries.java:232 msgid "Vanuatu" -msgstr "" +msgstr "Vanuatu" #: ../java/build/Countries.java:233 msgid "Wallis and Futuna" -msgstr "" +msgstr "Wallis et Futuna" #: ../java/build/Countries.java:234 msgid "Samoa" -msgstr "" +msgstr "Samoa" #: ../java/build/Countries.java:235 msgid "Yemen" -msgstr "" +msgstr "Yémen" #: ../java/build/Countries.java:236 msgid "Mayotte" -msgstr "" +msgstr "Mayotte" #: ../java/build/Countries.java:237 msgid "South Africa" -msgstr "" +msgstr "Afrique du sud" #: ../java/build/Countries.java:238 msgid "Zambia" -msgstr "" +msgstr "Zambie" #: ../java/build/Countries.java:239 msgid "Zimbabwe" -msgstr "" +msgstr "Zimbabwe" #: ../java/src/net/i2p/router/web/CSSHelper.java:57 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:35 @@ -1493,7 +1493,7 @@ msgstr "Console du routeur I2P" #: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:57 msgid "Error updating the configuration - please see the error logs" -msgstr "" +msgstr "Erreur pendant la mise à jour de la configuration: contrôlez les historiques" #: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:69 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:266 @@ -1503,7 +1503,7 @@ msgstr "Configuration sauvegardé avec succès" #: ../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 "" +msgstr "Erreur pendant l'enregistrement de la configuration (appliquée mais non sauvegardée): contrôlez les historiques" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:34 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:334 @@ -1513,7 +1513,7 @@ msgstr "Sauvegarder Configuration Client " #: ../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 "" +msgstr "Enregistrer la configuration WebApp" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:42 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:356 @@ -1524,27 +1524,27 @@ msgstr "Sauvegarder Configuration Client " #: ../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 "" +msgstr "Installation du greffon" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:82 #, java-format msgid "Deleted plugin {0}" -msgstr "" +msgstr "Greffon {0} supprimé" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:84 #, java-format msgid "Error deleting plugin {0}" -msgstr "" +msgstr "Erreur de suppression du greffon {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:96 #, java-format msgid "Stopped plugin {0}" -msgstr "" +msgstr "Greffon {0} arrêté" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:98 #, java-format msgid "Error stopping plugin {0}" -msgstr "" +msgstr "Erreur d'arrêt du greffon {0}" #. label (IE) #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:119 @@ -1560,7 +1560,7 @@ msgstr "Non supportée" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:184 msgid "New client added" -msgstr "" +msgstr "Nouveau client ajouté" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:188 msgid "Client configuration saved successfully - restart required to take effect." @@ -1569,7 +1569,7 @@ msgstr "La configuration du client a été sauvegardé avec succès - redémarre #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:202 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:213 msgid "Bad client index." -msgstr "" +msgstr "Index client incorrect." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 @@ -1586,7 +1586,7 @@ msgstr "démarré" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 msgid "deleted" -msgstr "" +msgstr "effacé" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:235 msgid "WebApp configuration saved." @@ -1600,7 +1600,7 @@ msgstr "Configuration Client" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:266 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:58 msgid "WebApp" -msgstr "" +msgstr "WebApp" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:268 msgid "Failed to start" @@ -1612,25 +1612,25 @@ msgstr "Pas pu trouver un serveur." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:279 msgid "No plugin URL specified." -msgstr "" +msgstr "URL du greffon non spécifiée." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:289 #, java-format msgid "No update URL specified for {0}" -msgstr "" +msgstr "URL de mise à jour non spécifiée pour {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 "" +msgstr "Greffon ou téléchargement de mise à jour déjà en cours d'exécution." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:306 #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:118 #, java-format msgid "Downloading plugin from {0}" -msgstr "" +msgstr "Téléchargement greffon depuis {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:324 #, fuzzy, java-format @@ -1640,17 +1640,17 @@ msgstr "Chercher des mises à jour" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:334 #, java-format msgid "Started plugin {0}" -msgstr "" +msgstr "Greffon {0} démarré" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:336 #, java-format msgid "Error starting plugin {0}" -msgstr "" +msgstr "Erreur de démarrage du greffon {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:21 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:192 msgid "Edit" -msgstr "" +msgstr "Modifier" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:30 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:330 @@ -1659,13 +1659,13 @@ msgstr "Ajouter client" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:38 msgid "Class and arguments" -msgstr "" +msgstr "Classe et arguments" #: ../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 "" +msgstr "Contrôle" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:38 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:58 @@ -1677,11 +1677,11 @@ msgstr "Lancer au démarrage ?" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:82 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:131 msgid "Description" -msgstr "" +msgstr "Description" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:82 msgid "Plugin" -msgstr "" +msgstr "Greffon" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:95 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 @@ -1691,7 +1691,7 @@ msgstr "Version" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:97 msgid "Signed by" -msgstr "" +msgstr "Signé par" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:114 msgid "Date" @@ -1703,11 +1703,11 @@ msgstr "Autheur" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:136 msgid "License" -msgstr "" +msgstr "Licence" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:141 msgid "Website" -msgstr "" +msgstr "Site web" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:146 #, fuzzy @@ -1716,7 +1716,7 @@ msgstr "Méthode de mise à jour" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:194 msgid "Stop" -msgstr "" +msgstr "Arrêt" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:196 #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:81 @@ -1734,7 +1734,7 @@ msgstr "Mettre à jour" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:202 #, java-format msgid "Are you sure you want to delete {0}?" -msgstr "" +msgstr "Voulez-vous vraiment supprimer {0}?" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:204 #, fuzzy @@ -1787,7 +1787,7 @@ msgstr "Destination pas valable" #: ../java/src/net/i2p/router/web/ConfigLoggingHandler.java:82 msgid "Log overrides updated" -msgstr "" +msgstr "Écrasement des historiques mis à jour" #: ../java/src/net/i2p/router/web/ConfigLoggingHandler.java:160 #, fuzzy @@ -1796,35 +1796,35 @@ msgstr "Aide avec la configuration" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 msgid "Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" -msgstr "" +msgstr "Ajoutez des critères supplémentaires ci-dessus. Exemple: net.i2p.router.tunnel=WARN" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:49 msgid "Or put entries in the logger.config file. Example: logger.record.net.i2p.router.tunnel=WARN" -msgstr "" +msgstr "Ou mettez des entrées dans le fichier logger.config. Exemple logger.record.net.i2p.router.tunnel=WARN" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:50 msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT" -msgstr "" +msgstr "Les niveaux autorisés sont DEBUG, INFO, WARN, ERROR, CRIT" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 msgid "CRIT" -msgstr "" +msgstr "CRIT" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 msgid "DEBUG" -msgstr "" +msgstr "DEBUG" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 msgid "ERROR" -msgstr "" +msgstr "ERROR" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 msgid "INFO" -msgstr "" +msgstr "INFO" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 msgid "WARN" -msgstr "" +msgstr "WARN" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:88 #, fuzzy @@ -1833,7 +1833,7 @@ msgstr "Supprimir" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:125 msgid "Select a class to add" -msgstr "" +msgstr "Choisissez une classe à ajouter" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:200 @@ -1842,14 +1842,14 @@ msgstr "Réseau" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 msgid "Service" -msgstr "" +msgstr "Service" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:101 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381 #: ../java/strings/Strings.java:72 msgid "Tunnels" -msgstr "" +msgstr "Tunnels" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 msgid "UI" @@ -1899,7 +1899,7 @@ msgstr "Sauvegarder" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:121 msgid "Rechecking router reachability..." -msgstr "" +msgstr "Vérification de l'accessibilité du routeur..." #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:153 msgid "Updating IP address" @@ -1907,31 +1907,31 @@ msgstr "Mise à jour d'adresse IP en cours" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:171 msgid "Disabling TCP completely" -msgstr "" +msgstr "Désactivation complète de TCP" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:175 msgid "Updating inbound TCP address to" -msgstr "" +msgstr "Mise à jour adresse TCP entrante à " #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:179 msgid "Disabling inbound TCP" -msgstr "" +msgstr "Désactivation TCP entrant" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:181 msgid "Updating inbound TCP address to auto" -msgstr "" +msgstr "Mise à jour adresse TCP entrante à \"Auto\"" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:190 msgid "Updating inbound TCP port to" -msgstr "" +msgstr "Mise à jour port TCP entrant à " #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:193 msgid "Updating inbound TCP port to auto" -msgstr "" +msgstr "Mise à jour port TCP entrant à \"Auto\"" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:205 msgid "Updating UDP port from" -msgstr "" +msgstr "Mise à jour port UDP de " #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:205 msgid "to" @@ -1939,37 +1939,37 @@ msgstr "à" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:221 msgid "Gracefully restarting into Hidden Router Mode" -msgstr "" +msgstr "Redémarrage respectueux en mode routeur caché" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:223 msgid "Gracefully restarting to exit Hidden Router Mode" -msgstr "" +msgstr "Redémarrage respectueux pour sortie du mode routeur caché" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:232 msgid "Enabling UPnP, restart required to take effect" -msgstr "" +msgstr "Activation UPnP, sera prise en compte au démarrage suivant" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:234 msgid "Disabling UPnP, restart required to take effect" -msgstr "" +msgstr "Désactivation UPnP, sera prise en compte au démarrage suivant" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:242 msgid "Enabling laptop mode" -msgstr "" +msgstr "Activation mode portable" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:244 msgid "Disabling laptop mode" -msgstr "" +msgstr "Désactivation mode portable" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:250 msgid "Requiring SSU introducers" -msgstr "" +msgstr "Nécessite de entremetteurs 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 "" +msgstr "Redémarrage respectueux en cours pour modifier l'adresse routeur publiée" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:314 msgid "Updating bandwidth share percentage" @@ -1994,7 +1994,7 @@ msgstr "bits par seconde" #: ../java/src/net/i2p/router/web/ConfigNetHelper.java:170 #, java-format msgid "or {0} bytes per month maximum" -msgstr "" +msgstr "= {0} o/mois maximum" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:20 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:314 @@ -2004,7 +2004,7 @@ msgstr "Interdire pair jusqu'au redémarrage" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:23 #, java-format msgid "Manually banned via {0}" -msgstr "" +msgstr "Banni manuellement via {0}" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24 msgid "banned until restart" @@ -2019,7 +2019,7 @@ msgstr "Pair pas valable" #: ../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 "" +msgstr "Banissement du pair levé" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33 msgid "unbanned" @@ -2032,11 +2032,11 @@ msgstr "n'est pas actuellement interdit" #: ../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 "" +msgstr "Ajuster les boni du profil" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:47 msgid "Bad speed value" -msgstr "" +msgstr "Valeur de vitesse incorrecte" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:52 msgid "Bad capacity value" @@ -2047,13 +2047,13 @@ msgstr "Mauvaise valeur de capacité" #: ../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 "Fermer immédiatement" +msgstr "Arrêter immédiatement" #. 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 "Annuler redémarrage" +msgstr "Annuler l'arrêt" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:37 #, fuzzy @@ -2068,11 +2068,11 @@ msgstr "Redémarrer immédiatement" #. give the UI time to respond #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:43 msgid "Restart" -msgstr "Redémarrer" +msgstr "Redémarrage" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:46 msgid "Shutdown" -msgstr "Fermer" +msgstr "Arrêt" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:59 #, fuzzy @@ -2081,73 +2081,73 @@ msgstr "Redémarrer immédiatement" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:61 msgid "Shutdown imminent" -msgstr "Fermature imminente" +msgstr "Arrêt imminent" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:65 #, java-format msgid "Shutdown in {0}" -msgstr "Fermature en {0}" +msgstr "Arrêt dans {0}" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:70 #, java-format msgid "Restart in {0}" -msgstr "Redémarrage en {0}" +msgstr "Redémarrage dans {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 "Fermer gracieusement" +msgstr "Arrêt respectueux" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:56 msgid "Graceful shutdown initiated" -msgstr "Fermature gracieuse initiée" +msgstr "Arrêt respectueux initialisé" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:60 msgid "Shutdown immediately! boom bye bye bad bwoy" -msgstr "Fermer immédiatement !" +msgstr "Arrêt immédiat! (À la sauvage)" #: ../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 "Annuler fermeture gracieux" +msgstr "Annuler l'arrêt respectueux" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:63 msgid "Graceful shutdown cancelled" -msgstr "Fermeture gracieux annulée" +msgstr "Arrêt respectueux annulé" #: ../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 "Redémarrage gracieux" +msgstr "Redémarrage respectueux" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:67 msgid "Graceful restart requested" -msgstr "Redémarrage gracieux demandé" +msgstr "Redémarrage respectueux demandé" #: ../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 "Redémarrage immédiate" +msgstr "Redémarrage immédiat" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:71 msgid "Hard restart requested" -msgstr "Redémarrage immédiate demandé" +msgstr "Redémarrage immédiat demandé" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:72 msgid "Rekey and Restart" -msgstr "" +msgstr "Régénération de clé et redémarrage" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:73 msgid "Rekeying after graceful restart" -msgstr "" +msgstr "Régénaration clé après redémarrage respecteux" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:76 msgid "Rekey and Shutdown" -msgstr "" +msgstr "Régénération clé et arrêt" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:77 msgid "Rekeying after graceful shutdown" -msgstr "" +msgstr "Régénération clé après arrêt respectueux" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:80 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:334 @@ -2167,30 +2167,30 @@ msgstr "Dump fils d'exécution" #: ../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 "" +msgstr "Afficher l'icône de zone de notification" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96 msgid "System tray icon enabled." -msgstr "" +msgstr "Icône de zone de notification système activée." #: ../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 "" +msgstr "Fonctionnalité \"Icône de zone de notification système\" non disponible sur cette plateforme. Désolé!" #: ../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 "" +msgstr "Avertissement: impossible de contacter le gestionnaire de zone de notification." #: ../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 "" +msgstr "Masquer l'icône de zone de notification" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:108 msgid "System tray icon disabled." -msgstr "" +msgstr "Icône de zone de notification système désactivée." #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:115 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:362 @@ -2199,7 +2199,7 @@ msgstr "Montrer la console au démarrage" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:117 msgid "Console is to be shown on startup" -msgstr "" +msgstr "Afficher la console au démarrage" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:118 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:364 @@ -2208,7 +2208,7 @@ msgstr "Ne pas montrer la console au démarrage" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:120 msgid "Console is not to be shown on startup" -msgstr "" +msgstr "Ne pas afficher la console au démarrage" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:129 msgid "Service installed" @@ -2216,33 +2216,33 @@ msgstr "Service installé" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:131 msgid "Warning: unable to install the service" -msgstr "" +msgstr "Avertissement: impossible d'installer le service" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:137 msgid "Service removed" -msgstr "Service enlévé" +msgstr "Service enlevé" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:139 msgid "Warning: unable to remove the service" -msgstr "" +msgstr "Avertissement: impossible de désinstaller le service" #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:118 msgid "Stat filter and location updated successfully to" -msgstr "" +msgstr "Filtre de statistiques et emplacement mis à jour à " #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:120 msgid "Failed to update the stat filter and location" -msgstr "" +msgstr "Échec de mise à jour du filtre de statistiques et emplacement" #: ../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 "" +msgstr "Liste des graphiques mise à jour. Peut nécessiter jusqu'à 60s pour être répercutée ici et sur la page des graphiques" #. 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 "" +msgstr "Mise à jour des réglages pour tous les groupes." #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 msgid "Exploratory tunnel configuration saved successfully." @@ -2251,7 +2251,7 @@ msgstr "Configuration du tunnel exploratoire a été sauvegardé avec succès." #: ../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 "" +msgstr "Erreur pendant l'enregistrement de la configuration (appliquée mais non sauvegardée): contrôlez les historiques" #. * dummies for translation #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:14 @@ -2265,8 +2265,8 @@ msgstr[1] "{0} sauts" #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 tunnel" +msgstr[1] "{0} tunnels" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:26 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:41 @@ -2280,25 +2280,25 @@ msgstr "Tunnels clients pour" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:69 msgid "ANONYMITY WARNING - Settings include 0-hop tunnels." -msgstr "" +msgstr "AVERTISSEMENT d'ANONYMAT: les réglages incluent des tunnels à 0 saut!" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74 msgid "ANONYMITY WARNING - Settings include 1-hop tunnels." -msgstr "" +msgstr "AVERTISSEMENT d'ANONYMAT: les réglages incluent des tunnels à 1 saut!" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:77 msgid "PERFORMANCE WARNING - Settings include very long tunnels." -msgstr "" +msgstr "AVERTISSEMENT de PERFORMANES: les réglages incluent des tunnels très longs!" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:80 msgid "PERFORMANCE WARNING - Settings include high tunnel quantities." -msgstr "" +msgstr "AVERTISSEMENT de PERFORMANES: les réglages incluent de grandes quantités de tunnels!" #. buf.append("\n"); #. tunnel depth #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87 msgid "Length" -msgstr "" +msgstr "Longueur" #. tunnel depth variance #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:104 @@ -2329,7 +2329,7 @@ msgstr "Changement de thème sauvegardé." #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:33 msgid "Refresh the page to view." -msgstr "" +msgstr "Réactualiser la page." #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 msgid "English" @@ -2377,35 +2377,35 @@ msgstr "Pas de mise à jour disponible" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:104 msgid "Updating news URL to" -msgstr "" +msgstr "Mise à jour de l'URL de news vers " #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:112 msgid "Updating proxy host to" -msgstr "" +msgstr "Mise à jour de l'hôte mandataire vers" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:120 msgid "Updating proxy port to" -msgstr "" +msgstr "Mise à jour du port mandataire vers" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:133 msgid "Updating refresh frequency to" -msgstr "" +msgstr "Mise à jour de la fréquence de rafraîchissement vers" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:140 msgid "Updating update policy to" -msgstr "" +msgstr "Mise à jour de la stratégie de mises à jour vers" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:149 msgid "Updating update URLs." -msgstr "" +msgstr "Mise à jour de l'URL de mises à jour." #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158 msgid "Updating trusted keys." -msgstr "" +msgstr "Mise à jour des clefs de confiance." #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:166 msgid "Updating unsigned update URL to" -msgstr "" +msgstr "Mise à jour de l'URL de mises à jour non signées vers" #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:88 #: ../java/src/net/i2p/router/web/GraphHelper.java:138 @@ -2430,17 +2430,17 @@ msgstr "Télécharger, vérifier et redémarrer" #: ../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 "" +msgstr "Soumission de formulaire incorrecte: vous avez peut-être utilisé le bouton 'Page arrière' ou 'Rechargement' de votre navigateur. Merci de renvoyer." #: ../java/src/net/i2p/router/web/GraphHelper.java:82 msgid "Combined bandwidth graph" -msgstr "" +msgstr "Graphique de bandes passantes combinées" #. e.g. "statname for 60m" #: ../java/src/net/i2p/router/web/GraphHelper.java:96 #, java-format msgid "{0} for {1}" -msgstr "" +msgstr "{0} pour {1}" #: ../java/src/net/i2p/router/web/GraphHelper.java:130 msgid "Configure Graph Display" @@ -2448,7 +2448,7 @@ msgstr "Graphe affichage configuration" #: ../java/src/net/i2p/router/web/GraphHelper.java:130 msgid "Select Stats" -msgstr "" +msgstr "Sélectionnez les statistiques" #: ../java/src/net/i2p/router/web/GraphHelper.java:132 msgid "Periods" @@ -2495,7 +2495,7 @@ msgstr "heure" #: ../java/src/net/i2p/router/web/GraphHelper.java:138 msgid "minute" -msgstr "" +msgstr "mn" #: ../java/src/net/i2p/router/web/GraphHelper.java:138 msgid "minutes" @@ -2503,12 +2503,12 @@ msgstr "minutes" #: ../java/src/net/i2p/router/web/GraphHelper.java:139 msgid "Redraw" -msgstr "" +msgstr "Rafraîchir" #: ../java/src/net/i2p/router/web/LogsHelper.java:13 #: ../java/src/net/i2p/router/web/LogsHelper.java:37 msgid "File location" -msgstr "" +msgstr "Emplacement du fichier" #: ../java/src/net/i2p/router/web/LogsHelper.java:34 msgid "File not found" @@ -2516,11 +2516,11 @@ msgstr "Fichier pas trouvé" #: ../java/src/net/i2p/router/web/LogsHelper.java:52 msgid "No log messages" -msgstr "" +msgstr "Pas de messages d'historique" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:80 msgid "Network Database RouterInfo Lookup" -msgstr "" +msgstr "Recherche RouterInfo dans NetDb " #: ../java/src/net/i2p/router/web/NetDbRenderer.java:95 #: ../java/strings/Strings.java:68 @@ -2529,16 +2529,16 @@ msgstr "Routeur" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:95 msgid "not found in network database" -msgstr "" +msgstr "non trouvé dans la NetDb" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:107 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:215 msgid "Network Database Contents" -msgstr "" +msgstr "Contenus NetDb" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:108 msgid "View RouterInfo" -msgstr "" +msgstr "Afficher RouterInfo" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:109 #, fuzzy @@ -2547,7 +2547,7 @@ msgstr "Bail" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:131 msgid "LeaseSet" -msgstr "" +msgstr "Jeu de baux" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:133 msgid "Local" @@ -2560,12 +2560,12 @@ msgstr "Pas publié" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:136 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:143 msgid "Destination" -msgstr "" +msgstr "Destination" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:153 #, java-format msgid "Expires in {0}" -msgstr "Expirera en {0}" +msgstr "Expirera dans {0}" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:155 #, java-format @@ -2575,7 +2575,7 @@ msgstr "Périmé il y a {0}" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:167 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "Gateway" -msgstr "" +msgstr "Passerelle" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:167 msgid "Lease" @@ -2583,11 +2583,11 @@ msgstr "Bail" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:169 msgid "Tunnel" -msgstr "" +msgstr "Tunnel" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:215 msgid "View LeaseSets" -msgstr "" +msgstr "Afficher les LeaseSets" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:217 msgid "Not initialized" @@ -2604,7 +2604,7 @@ msgstr "Fermer le routeur" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:230 msgid "Show all routers with full stats" -msgstr "" +msgstr "Afficher toutes les statistiques de tous les routeurs" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:265 #, fuzzy @@ -2615,11 +2615,11 @@ msgstr "Statistiques du routeur I2P" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 msgid "Count" -msgstr "" +msgstr "Comptage" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 msgid "Transports" -msgstr "" +msgstr "Transports" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 msgid "Country" @@ -2635,7 +2635,7 @@ msgstr "Mise à jour en cours" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:348 msgid "Full entry" -msgstr "" +msgstr "Entrée complète" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 #: ../java/src/net/i2p/router/web/SummaryHelper.java:110 @@ -2665,7 +2665,7 @@ msgstr "Adresse(s)" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:376 msgid "cost" -msgstr "" +msgstr "coût" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 #, fuzzy @@ -2674,23 +2674,23 @@ msgstr "Lancer avec le démarrage du routeur" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 msgid "SSU" -msgstr "" +msgstr "SSU" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 msgid "SSU with introducers" -msgstr "" +msgstr "SSU avec introducers" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 msgid "NTCP" -msgstr "" +msgstr "NTCP" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 msgid "NTCP and SSU" -msgstr "" +msgstr "NTCP et SSU" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 msgid "NTCP and SSU with introducers" -msgstr "" +msgstr "NTCP et SSU avec introducers" #: ../java/src/net/i2p/router/web/NewsFetcher.java:82 #, java-format @@ -2705,7 +2705,7 @@ msgstr "Actualités vérifiés il y a {0}" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:77 #, java-format msgid "Cannot check, plugin {0} is not installed" -msgstr "" +msgstr "Non contrôlable, le greffon {0} n'est pas installé" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:129 #, fuzzy, java-format @@ -2715,17 +2715,17 @@ msgstr "Chercher des mises à jour" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:154 #, java-format msgid "New plugin version {0} is available" -msgstr "" +msgstr "La nouvelle version {0} du greffon est disponible" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:156 #, java-format msgid "No new version is available for plugin {0}" -msgstr "" +msgstr "Pas de nouvelle version pour le greffon {0}" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:165 #, java-format msgid "Update check failed for plugin {0}" -msgstr "" +msgstr "Échec de la vérification de mise à jour du greffon {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:139 #, fuzzy @@ -2736,28 +2736,28 @@ msgstr "Télécharger pas signé" #: ../java/src/net/i2p/router/web/UpdateHandler.java:185 #, java-format msgid "{0}B transferred" -msgstr "" +msgstr "{0}o transférés" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:152 msgid "Plugin downloaded" -msgstr "" +msgstr "Greffon téléchargé" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:157 #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:344 #, java-format msgid "Cannot create plugin directory {0}" -msgstr "" +msgstr "Impossible de créer le répertoire du greffon {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:166 #: ../java/src/net/i2p/router/web/UpdateHandler.java:226 #, java-format msgid "from {0}" -msgstr "" +msgstr "depuis {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:176 #, java-format msgid "Plugin from {0} is corrupt" -msgstr "" +msgstr "Le greffon de {0} est corrompu" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:187 #, java-format @@ -3116,7 +3116,7 @@ msgstr "Options Entrants" #: ../java/src/net/i2p/router/web/StatSummarizer.java:188 #: ../java/src/net/i2p/router/web/StatSummarizer.java:189 msgid "bytes/sec" -msgstr "" +msgstr "o/s" #: ../java/src/net/i2p/router/web/StatSummarizer.java:186 #, fuzzy @@ -3904,7 +3904,7 @@ msgstr "I2PSnark" #. hardcoded in iMule? #: ../java/strings/Strings.java:47 msgid "iMule" -msgstr "" +msgstr "iMule" #. standard themes for ConfigUIHelper #: ../java/strings/Strings.java:51 @@ -3920,18 +3920,15 @@ msgid "light" msgstr "léger" #: ../java/strings/Strings.java:54 -#, fuzzy msgid "midnight" -msgstr "léger" +msgstr "minuit" #. stat groups for stats.jsp #: ../java/strings/Strings.java:57 -#, fuzzy msgid "Bandwidth" -msgstr "Bande passante entrante/sortante" +msgstr "Bande passante" #: ../java/strings/Strings.java:58 -#, fuzzy msgid "BandwidthLimiter" msgstr "Limiteur de bande passante" @@ -3954,14 +3951,12 @@ msgid "InNetPool" msgstr "" #: ../java/strings/Strings.java:64 -#, fuzzy msgid "JobQueue" -msgstr "queue des tâches" +msgstr "File d'attente" #: ../java/strings/Strings.java:65 -#, fuzzy msgid "NetworkDatabase" -msgstr "Réseau" +msgstr "Base de données du réseau" #: ../java/strings/Strings.java:66 msgid "ntcp" @@ -3969,25 +3964,25 @@ msgstr "" #: ../java/strings/Strings.java:69 msgid "Stream" -msgstr "" +msgstr "flux" #: ../java/strings/Strings.java:70 msgid "Throttle" -msgstr "" +msgstr "Régulation" #: ../java/strings/Strings.java:71 msgid "Transport" -msgstr "" +msgstr "Transport" #: ../java/strings/Strings.java:73 msgid "udp" -msgstr "" +msgstr "udp" #. parameters in transport addresses (netdb.jsp) #. may or may not be worth translating #: ../java/strings/Strings.java:77 msgid "host" -msgstr "" +msgstr "hôte" #: ../java/strings/Strings.java:78 #, fuzzy @@ -3995,9 +3990,8 @@ msgid "key" msgstr "Ajouter une clé" #: ../java/strings/Strings.java:79 -#, fuzzy msgid "port" -msgstr "ou" +msgstr "port" #. introducer host #: ../java/strings/Strings.java:83 @@ -4055,17 +4049,17 @@ msgstr "" #. 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 "" +msgstr "Taux de bande passante de réception faible" #. bw.recvRate #: ../java/strings/Strings.java:102 msgid "Low-level bandwidth send rate" -msgstr "" +msgstr "Taux de bande passante d'émission faible" #. bw.sendRate #: ../java/strings/Strings.java:103 msgid "How many peers we are actively talking with" -msgstr "" +msgstr "Nombre de pairs actifs" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:106 msgid "config networking" @@ -4206,7 +4200,7 @@ msgstr "Annuler" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:374 msgid "IP and Transport Configuration" -msgstr "" +msgstr "Configuration IP et transport " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:376 msgid "The default settings will work for most people." @@ -4268,7 +4262,7 @@ msgstr "Mode caché - ne pas publier l'adresse IP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:432 msgid "(prevents participating traffic)" -msgstr "" +msgstr "(empêche le trafic participants)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:434 msgid "Action when IP changes" @@ -4525,7 +4519,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:624 msgid "WARN - Firewalled with UDP Disabled" -msgstr "WARN - Pare-feu avec UDP desactivé" +msgstr "WARN - Pare-feu avec UDP désactivé" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:626 msgid "You have configured inbound TCP, however you have disabled UDP." @@ -4541,7 +4535,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:632 msgid "ERR - Clock Skew" -msgstr "ERR - horloge décalé" +msgstr "ERR - horloge décalée" #: ../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." @@ -4625,15 +4619,15 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:107 msgid "config advanced" -msgstr "configuration avancé" +msgstr "configuration avancée" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:242 msgid "I2P Advanced Configuration" -msgstr "Configuration I2P avancé" +msgstr "Configuration I2P avancée" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:299 msgid "Advanced I2P Configuration" -msgstr "Configuration I2P avancé" +msgstr "Configuration I2P avancée" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309 msgid "Some changes may require a restart to take effect." @@ -4641,15 +4635,15 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:106 msgid "config clients" -msgstr "Clients configuration" +msgstr "configuration clients" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:244 msgid "I2P Client Configuration" -msgstr "Client I2P configuration" +msgstr "configuration client I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:311 msgid "Client Configuration" -msgstr "Configuration Client" +msgstr "Configuration client" #: ../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." @@ -4695,11 +4689,11 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:106 msgid "config keyring" -msgstr "Configuration porte-clés" +msgstr "Configuration du porte-clés" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:228 msgid "I2P Keyring Configuration" -msgstr "Configuration du Porte-clés I2P" +msgstr "Configuration du porte-clés I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:294 msgid "The router keyring is used to decrypt encrypted leaseSets." @@ -4731,11 +4725,11 @@ msgstr "Nom de destination, empreinte, ou clé complète" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:318 msgid "Encryption Key" -msgstr "Clé d'encryption" +msgstr "Clé de cryptage" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:107 msgid "config logging" -msgstr "configuration enregistrements" +msgstr "configuration des historiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:242 msgid "I2P Logging Configuration" @@ -4759,7 +4753,7 @@ 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 "(use 'd' = date, 'c' = classe, 't' = fil d'exécution, 'p' = priorité, 'm' = message)" +msgstr "(use 'd' = date, 'c' = classe, 't' = tâche, 'p' = priorité, 'm' = message)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 msgid "Log date format" @@ -4803,7 +4797,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:306 msgid "Router Hash" -msgstr "Routeur empreinte" +msgstr "Empreinte du routeur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:310 msgid "Manually Ban / Unban a Peer" @@ -4819,7 +4813,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:326 msgid "profiles page" -msgstr "page des profiles" +msgstr "page des profils" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:342 msgid "Adjust peer bonuses" @@ -4828,31 +4822,31 @@ 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 "Pairs interdits" +msgstr "Pairs bannis" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:366 msgid "Banned IPs" -msgstr "Adresses IP interdits" +msgstr "Adresses IP bannies" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:106 msgid "config service" -msgstr "Service Configuration " +msgstr "Configuration du service" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:228 msgid "I2P Service Configuration" -msgstr "Service I2P Configuration" +msgstr "Configuration du service I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:284 msgid "Shutdown the router" -msgstr "Fermer le routeur" +msgstr "Arrêter le routeur" #: ../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 "Une fermature gracieuse permit au routeur de satisfaire ses accords en place avec d'autres routeurs avant de fermer, mais cela prendra plusieurs minutes." +msgstr "Un arrêt respectueux permet au routeur de satisfaire les accords en place avec d'autres routeurs avant la fermeture, mais cela prendra quelques minutes." #: ../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 "Si vous avez besoin d'arrêter le routeur I2P immédiatement, cette option est aussi disponible." +msgstr "Si vous avez besoin d'arrêter le routeur I2P immédiatement, cette option est également disponible." #: ../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." @@ -4864,19 +4858,19 @@ msgstr "" #: ../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 "Une redémarrage gracieux prendra quelques minutes (mais vos pairs apprécieront votre patience), une redémarrage immédiate est quasi instantané." +msgstr "Un redémarrage respectueux prendra quelques minutes (mais vos pairs apprécieront votre patience), un redémarrage immédiat est quasi instantané." #: ../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 "Après la rédemmarage du routeur, il attendra 1 minute avant de se relancer." +msgstr "Après le redémarrage du routeur, il attendra 1 minute avant de se relancer." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:314 msgid "Systray integration" -msgstr "" +msgstr "Intégration dans la zone de notification" #: ../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 "" +msgstr "Sur Windows, une icône pour la zone de notification indiquant l'état du routeur " #: ../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)." @@ -4888,7 +4882,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:326 msgid "Run on startup" -msgstr "Lancer avec le démarrage du routeur" +msgstr "Lancer au démarrage" #: ../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." @@ -4911,9 +4905,8 @@ msgid "Debugging" msgstr "Débogage" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:348 -#, fuzzy msgid "View the job queue" -msgstr "queue des tâches" +msgstr "Voir la file d'attente " #: ../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." @@ -4921,7 +4914,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:358 msgid "Launch browser on router startup?" -msgstr "Lancer explorateur internet pendant le démarrage du routeur ?" +msgstr "Lancer le navigateur au démarrage du routeur?" #: ../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" @@ -4933,7 +4926,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:229 msgid "I2P Stats Configuration" -msgstr "Configuration I2P Statistiques" +msgstr "Configuration des statistiques d'I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:300 msgid "Configure I2P Stat Collection" @@ -4962,11 +4955,11 @@ msgstr "basculer tous" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:328 msgid "Log" -msgstr "Enregistrement" +msgstr "Historique" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:330 msgid "Graph" -msgstr "Graphe" +msgstr "Graphique" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:369 msgid "Advanced filter" @@ -4982,7 +4975,7 @@ msgstr "Configuration des tunnels I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:305 msgid "The default settings work for most people." -msgstr "La configuration défaut fonctionne pour le plupart des utilisateurs" +msgstr "La configuration défaut fonctionne pour la plupart des utilisateurs" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:309 msgid "There is a fundamental tradeoff between anonymity and performance." @@ -4994,15 +4987,15 @@ msgstr "" #: ../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 "" +msgstr "Une forte charge UC et/ou utilisation de bande passante sortante peuvent en résulter. " #: ../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 "" +msgstr "Modifiez ces réglages avec prudence, et fignolez-les en cas de problèmes." #: ../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 "" +msgstr "Les modifications de réglages des tunnels exploratoires sont enregistrés dans le fichier 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." @@ -5022,27 +5015,27 @@ msgstr "configuration IHM" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:241 msgid "I2P UI Configuration" -msgstr "Configuration de l'IHM I2P" +msgstr "Réglages de l'interface" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:291 msgid "Router Console Theme" -msgstr "" +msgstr "Thème de la console" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:309 msgid "Theme selection disabled for Internet Explorer, sorry." -msgstr "" +msgstr "Sélection de thème indisponible pour Internet Explorer, désolé." #: ../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 "" +msgstr "Si vous n'utilisez pas IE, c'est que votre navigateur tente de le faire croire; configurez-le (ou son proxy) pour qu'il utilise une chaîne \"User Agent\" différente si vous souhaitez pouvoir changer de thème." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:315 msgid "Router Console Language" -msgstr "" +msgstr "Langue de la console" #: ../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 "Veuillez contribuer à la traduction du 'router console' ! Contactez les développeurs sur IRC #i2p afin de donner un coup de main." +msgstr "Merci de contribuer à la traduction de la console du routeur ! Contactez les développeurs sur IRC #i2p afin de donner un coup de main." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:323 msgid "Apply" @@ -5054,7 +5047,7 @@ msgstr "Mettre à jour la configuration" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:228 msgid "I2P Update Configuration" -msgstr "Configuration du mise à jour I2P" +msgstr "Configuration des mises à jour" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:302 msgid "Check for I2P and news updates" @@ -5062,7 +5055,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:304 msgid "News & I2P Updates" -msgstr "Actualités et mises à jour I2P" +msgstr "Actualités & mises à jour" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:308 msgid "Update In Progress" @@ -5098,15 +5091,15 @@ msgstr "Mettre à jour à partir de ces URLs" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:346 msgid "Trusted keys" -msgstr "Clés auxquelles on peut faire confiance" +msgstr "Clés de confiance" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:350 msgid "Update with unsigned development builds?" -msgstr "Mettre à jour avec une version de développement d'i2p qui n'a pas été signée" +msgstr "Mettre à jour avec une version non signée?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:354 msgid "Unsigned Build URL" -msgstr "L'URL de la version d'i2p qui n'a pas été signée" +msgstr "L'URL de version non signée" #: ../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." @@ -5114,7 +5107,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:366 msgid "Save" -msgstr "Sauvegarder" +msgstr "Enregistrer" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:117 msgid "Page Not Found" @@ -5130,11 +5123,11 @@ msgstr "Erreur 404" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:250 msgid "not found" -msgstr "pas trouvé" +msgstr "non trouvé" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:106 msgid "graphs" -msgstr "graphes" +msgstr "graphiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:228 msgid "I2P Performance Graphs" @@ -5146,7 +5139,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:105 msgid "job queue" -msgstr "queue des tâches" +msgstr "file d'attente" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:227 msgid "I2P Router Job Queue" @@ -5154,7 +5147,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:105 msgid "logs" -msgstr "fichier traces" +msgstr "historiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:227 msgid "I2P Router Logs" @@ -5213,7 +5206,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:105 msgid "peer connections" -msgstr "connexions pairs" +msgstr "connexions de pairs" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:227 msgid "I2P Network Peers" @@ -5221,7 +5214,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:105 msgid "peer profiles" -msgstr "profile des pairs" +msgstr "profile de pairs" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:227 msgid "I2P Network Peer Profiles" @@ -5238,15 +5231,15 @@ msgstr "Statistiques du routeur I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:244 #, java-format msgid "Disable {0} Refresh" -msgstr "Désactiver {0} actualisation" +msgstr "Désactiver {0} Actualiser" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:105 msgid "tunnel summary" -msgstr "sommaire tunnel" +msgstr "résumé des tunnels" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:227 msgid "I2P Tunnel Summary" -msgstr "tunnel sommaire I2P" +msgstr "Résumé des tunnels I2P" #~ msgid "This is useful in some situations" #~ msgstr "C'est utile dans certains cas" From 22d66131f381123a643a2cb05f43ee14bf851ea9 Mon Sep 17 00:00:00 2001 From: magma Date: Tue, 22 Mar 2011 16:23:59 +0000 Subject: [PATCH 320/463] upd messages-fr.po --- apps/routerconsole/locale/messages_fr.po | 679 ++++++++++------------- 1 file changed, 305 insertions(+), 374 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index b512e4d8e..9d70bd77f 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-11-19 18:16+0000\n" -"PO-Revision-Date: 2011-03-22 11:46+0100\n" +"PO-Revision-Date: 2011-03-22 17:21+0100\n" "Last-Translator: \n" "Language-Team: foo \n" "MIME-Version: 1.0\n" @@ -84,9 +84,8 @@ msgid "Banned by router hash: {0}" msgstr "Banni(s) pour hachage routeur hash: {0}" #: ../../../router/java/src/net/i2p/router/Blocklist.java:128 -#, fuzzy msgid "Banned by router hash" -msgstr "Pairs interdits" +msgstr "Banni via hachage du routeur" #. Temporary reason, until the job finishes #: ../../../router/java/src/net/i2p/router/Blocklist.java:673 @@ -132,9 +131,8 @@ msgstr "Rejet tous tunnels: limite de bande passante" #. hard to do {0} from here #. setTunnelStatus("Accepting " + (100-(int)(100.0*probReject)) + "% of tunnels"); #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:375 -#, fuzzy msgid "Accepting most tunnels" -msgstr "tunnels participants" +msgstr "Tunnels acceptés en majorité" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:377 msgid "Accepting tunnels" @@ -145,18 +143,16 @@ msgstr "Tunnels acceptés" #. setTunnelStatus("Not expecting tunnel requests: Advertised bandwidth too low"); #. else #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:488 -#, fuzzy msgid "Rejecting tunnels" -msgstr "Configuration des tunnels" +msgstr "Rejet de tunnels" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:50 msgid "Ensure that nothing blocks outbound HTTP, check logs and if nothing helps, read the FAQ about reseeding manually." msgstr "Assurez-vous que rien ne bloque les sorties HTTP, vérifiez logs et si rien ne vous aide, lisez la FAQ sur le réamorçage manuel." #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:82 -#, fuzzy msgid "Reseeding" -msgstr "Test en cours" +msgstr "Réamorçage en cours" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:146 msgid "Reseeding: fetching seed URL." @@ -239,14 +235,12 @@ msgid "Dir" msgstr "Dossier" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:522 -#, fuzzy msgid "Inbound connection" -msgstr "Options Entrants" +msgstr "Connexion entrante" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 -#, fuzzy msgid "Outbound connection" -msgstr "Options Sortants" +msgstr "Connexion sortante" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 msgid "They offered to introduce us (help other peers traverse our firewall)" @@ -324,7 +318,7 @@ msgstr "L'aller-retour en ms" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1915 msgid "Dev" -msgstr "" +msgstr "Dev" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 msgid "The standard deviation of the round trip time in milliseconds" @@ -342,7 +336,7 @@ msgstr "Taille actuelle maximum de paquet envoyé / taille maximum estimée de p #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:721 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1922 msgid "TX" -msgstr "" +msgstr "TX" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 msgid "The total number of packets sent to the peer" @@ -352,7 +346,7 @@ msgstr "Le nombre de paquets envoyés au pair" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:722 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 msgid "RX" -msgstr "" +msgstr "RX" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 msgid "The total number of packets received from the peer" @@ -361,7 +355,7 @@ msgstr "Le nombre de paquets reçus du pair" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927 msgid "Dup TX" -msgstr "" +msgstr "TX dupl." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 msgid "The total number of packets retransmitted to the peer" @@ -370,7 +364,7 @@ msgstr "Le nombre de paquets retransmis au pair" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1929 msgid "Dup RX" -msgstr "" +msgstr "RX dupl." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 msgid "The total number of duplicate packets received from the peer" @@ -401,9 +395,8 @@ msgid "Out Queue" msgstr "File de sortie" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:724 -#, fuzzy msgid "Backlogged?" -msgstr "Retard accumulé" +msgstr "Rétro enregistré?" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1947 @@ -419,12 +412,10 @@ msgstr "Sortant" #. buf.append("\n"); #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:787 -#, fuzzy msgid "peers" msgstr "Pairs" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1883 -#, fuzzy msgid "UDP connections" msgstr "connexions UDP" @@ -434,7 +425,7 @@ msgstr "Tri par hachage de pair" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1892 msgid "Direction/Introduction" -msgstr "" +msgstr "Direction/Introduction" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 msgid "Sort by idle inbound" @@ -1517,9 +1508,8 @@ msgstr "Enregistrer la configuration WebApp" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:42 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:356 -#, fuzzy msgid "Save Plugin Configuration" -msgstr "Sauvegarder Configuration Client " +msgstr "Enregistrer la configuration du greffon" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:46 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:362 @@ -1593,9 +1583,8 @@ msgid "WebApp configuration saved." msgstr "Sauvegardé configuration WebApp" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:251 -#, fuzzy msgid "Plugin configuration saved." -msgstr "Configuration Client" +msgstr "Configuration du greffon enregistrée" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:266 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:58 @@ -1633,9 +1622,9 @@ msgid "Downloading plugin from {0}" msgstr "Téléchargement greffon depuis {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:324 -#, fuzzy, java-format +#, java-format msgid "Checking plugin {0} for updates" -msgstr "Chercher des mises à jour" +msgstr "Cherche de mise à jour du greffon {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:334 #, java-format @@ -1710,9 +1699,8 @@ msgid "Website" msgstr "Site web" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:146 -#, fuzzy msgid "Update link" -msgstr "Méthode de mise à jour" +msgstr "Mise à jour du lien" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:194 msgid "Stop" @@ -1737,9 +1725,8 @@ msgid "Are you sure you want to delete {0}?" msgstr "Voulez-vous vraiment supprimer {0}?" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:204 -#, fuzzy msgid "Delete" -msgstr "Supprimer une clé" +msgstr "Effacer" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:18 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:324 @@ -1790,9 +1777,8 @@ msgid "Log overrides updated" msgstr "Écrasement des historiques mis à jour" #: ../java/src/net/i2p/router/web/ConfigLoggingHandler.java:160 -#, fuzzy msgid "Log configuration saved" -msgstr "Aide avec la configuration" +msgstr "Configuration des historiques enregistrée" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 msgid "Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" @@ -1827,9 +1813,8 @@ msgid "WARN" msgstr "WARN" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:88 -#, fuzzy msgid "Remove" -msgstr "Supprimir" +msgstr "Supprimer" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:125 msgid "Select a class to add" @@ -2056,9 +2041,8 @@ msgid "Cancel shutdown" msgstr "Annuler l'arrêt" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:37 -#, fuzzy msgid "Cancel restart" -msgstr "Redémarrage gracieux" +msgstr "Annuler le redémarrage" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:39 msgid "Restart immediately" @@ -2075,9 +2059,8 @@ msgid "Shutdown" msgstr "Arrêt" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:59 -#, fuzzy msgid "Restart imminent" -msgstr "Redémarrer immédiatement" +msgstr "Redémarrage imminent" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:61 msgid "Shutdown imminent" @@ -2541,9 +2524,8 @@ msgid "View RouterInfo" msgstr "Afficher RouterInfo" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:109 -#, fuzzy msgid "LeaseSets" -msgstr "Bail" +msgstr "Jeux de baux" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:131 msgid "LeaseSet" @@ -2598,18 +2580,16 @@ msgid "Routers" msgstr "Routeurs" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:228 -#, fuzzy msgid "Show all routers" -msgstr "Fermer le routeur" +msgstr "Afficher tous les routeurs" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:230 msgid "Show all routers with full stats" msgstr "Afficher toutes les statistiques de tous les routeurs" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:265 -#, fuzzy msgid "Network Database Router Statistics" -msgstr "Statistiques du routeur I2P" +msgstr "Statistiques NetDb du routeur " #: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 @@ -2649,9 +2629,9 @@ msgstr "Mise à jour fini" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:355 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:358 -#, fuzzy, java-format +#, java-format msgid "{0} ago" -msgstr "Périmé il y a {0}" +msgstr "il y a {0}" #. shouldnt happen #: ../java/src/net/i2p/router/web/NetDbRenderer.java:357 @@ -2668,9 +2648,8 @@ msgid "cost" msgstr "coût" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 -#, fuzzy msgid "Hidden or starting up" -msgstr "Lancer avec le démarrage du routeur" +msgstr "Masqué ou en cours de démarrage" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 msgid "SSU" @@ -2708,9 +2687,9 @@ msgid "Cannot check, plugin {0} is not installed" msgstr "Non contrôlable, le greffon {0} n'est pas installé" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:129 -#, fuzzy, java-format +#, java-format msgid "Checking for update of plugin {0}" -msgstr "Chercher des mises à jour" +msgstr "Recherche de mise à jour du greffon {0}" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:154 #, java-format @@ -2728,9 +2707,8 @@ msgid "Update check failed for plugin {0}" msgstr "Échec de la vérification de mise à jour du greffon {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:139 -#, fuzzy msgid "Downloading plugin" -msgstr "Télécharger pas signé" +msgstr "Téléchargement greffon en cours" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:146 #: ../java/src/net/i2p/router/web/UpdateHandler.java:185 @@ -2762,106 +2740,106 @@ msgstr "Le greffon de {0} est corrompu" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:187 #, java-format msgid "Plugin from {0} does not contain the required configuration file" -msgstr "" +msgstr "Le greffon de {0} ne contient pas le fichier de configuration requis" #. updateStatus("" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + ""); #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:200 #, java-format msgid "Plugin from {0} contains an invalid key" -msgstr "" +msgstr "Le greffon de {0} contient une clef incorrecte." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:219 #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:228 #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:237 #, java-format msgid "Plugin signature verification of {0} failed" -msgstr "" +msgstr "Échec de vérification de signature du greffon {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:252 #, java-format msgid "Plugin from {0} has invalid name or version" -msgstr "" +msgstr "La version ou le nom du greffon de {0} est incorrect." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:257 #, java-format msgid "Plugin {0} has mismatched versions" -msgstr "" +msgstr "Versions désapairées du greffon {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:265 #, java-format msgid "This plugin requires I2P version {0} or higher" -msgstr "" +msgstr "Ce greffon nécessite I2P version {0} ou plus récente" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:273 #, java-format msgid "This plugin requires Java version {0} or higher" -msgstr "" +msgstr "Ce greffon nécessite Java version {0} ou plus récente" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:281 msgid "Downloaded plugin is for new installs only, but the plugin is already installed" -msgstr "" +msgstr "La version du greffon téléchargée est faite pour les nouvelles installations, mais le greffon est déjà installé " #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 msgid "Installed plugin does not contain the required configuration file" -msgstr "" +msgstr "Le greffon installé ne contient pas le fichier de configuration requis" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:301 msgid "Signature of downloaded plugin does not match installed plugin" -msgstr "" +msgstr "La signature du greffon téléchargé ne correspond pas à celle de celui qui est installé" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:308 #, java-format msgid "Downloaded plugin version {0} is not newer than installed plugin" -msgstr "" +msgstr "La version {0} du greffon téléchargé n'est pas plus récente que celle installée" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:315 #, java-format msgid "Plugin update requires installed plugin version {0} or higher" -msgstr "" +msgstr "La mise à jour du greffon nécessite au moins la version {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:322 #, java-format msgid "Plugin update requires installed plugin version {0} or lower" -msgstr "" +msgstr "La mise à jour du greffon nécessite au plus la version {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:339 msgid "Plugin is for upgrades only, but the plugin is not installed" -msgstr "" +msgstr "Ce greffon est seulement une mise à jour, mais le greffon prérequis n'est pas installé" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:352 #, java-format msgid "Failed to install plugin in {0}" -msgstr "" +msgstr "Échec d'installation du greffon {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:359 #, java-format msgid "Plugin {0} installed, router restart required" -msgstr "" +msgstr "Greffon {0} installé, le routeur doit être redémarré" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:361 #, java-format msgid "Plugin {0} installed" -msgstr "" +msgstr "Greffon {0} installé" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:370 #, java-format msgid "Plugin {0} installed and started" -msgstr "" +msgstr "Greffon {0} installé et démarré" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:372 #, java-format msgid "Plugin {0} installed but failed to start, check logs" -msgstr "" +msgstr "Greffon {0} installé, mais son démarrage à échoué. Vérifiez les historiques" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:374 #, java-format msgid "Plugin {0} installed but failed to start" -msgstr "" +msgstr "Greffon {0} installé, mais son démarrage à échoué" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:384 #, java-format msgid "Failed to download plugin from {0}" -msgstr "" +msgstr "Échec de téléchargement du greffon {0}" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:72 msgid "Peer Profiles" @@ -2878,13 +2856,13 @@ msgid "Hiding {0} older profiles." msgstr "Cachant {0} profiles anciens" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:77 -#, fuzzy, java-format +#, java-format msgid "Hiding {0} standard profiles." -msgstr "Cachant {0} profiles anciens" +msgstr "Masquage de {0} profils standards." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:82 msgid "Groups (Caps)" -msgstr "" +msgstr "Groupes" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:83 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:251 @@ -2917,7 +2895,7 @@ msgstr "Haute capacité" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:128 msgid "Standard" -msgstr "" +msgstr "Standard" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:129 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:163 @@ -2939,99 +2917,92 @@ msgid "Test Fails" msgstr "Test échec" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:175 -#, fuzzy msgid "profile" -msgstr "Profiles" +msgstr "Profil" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:184 msgid "Floodfill and Integrated Peers" msgstr "Floodfill et pairs intégrés" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:188 -#, fuzzy msgid "Caps" -msgstr "graphes" +msgstr "Majuscules" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:189 -#, fuzzy msgid "Integ. Value" -msgstr "Intégré" +msgstr "Valeur entière" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190 msgid "Last Heard About" -msgstr "" +msgstr "Signalé pour la dernière fois" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:191 msgid "Last Heard From" -msgstr "" +msgstr "Dernière signalisation par" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:192 msgid "Last Good Send" -msgstr "" +msgstr "Dernière envoi correct" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:193 msgid "Last Bad Send" -msgstr "" +msgstr "Dernier mauvais envoi" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:194 msgid "10m Resp. Time" -msgstr "" +msgstr "Temps de réponse (10mn)" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195 msgid "1h Resp. Time" -msgstr "" +msgstr "Temps de réponse (1h)" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196 msgid "1d Resp. Time" -msgstr "" +msgstr "Temps de réponse (1j)" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:197 msgid "Last Good Lookup" -msgstr "" +msgstr "Dernière bonne recherche" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:198 msgid "Last Bad Lookup" -msgstr "" +msgstr "Dernière mauvaise recherche" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:199 msgid "Last Good Store" -msgstr "" +msgstr "Dernier bon stockage" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:200 msgid "Last Bad Store" -msgstr "" +msgstr "Dernier mauvais stockage" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201 msgid "1h Fail Rate" -msgstr "" +msgstr "Taux d'échec (1h)" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 msgid "1d Fail Rate" -msgstr "" +msgstr "Taux d'échec (1j)" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:250 -#, fuzzy msgid "Thresholds" -msgstr "Seuils :" +msgstr "Seuils" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:252 -#, fuzzy msgid "fast peers" -msgstr "Configuration des pairs" +msgstr "Pairs rapides" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:254 -#, fuzzy msgid "high capacity peers" -msgstr "Haute capacité" +msgstr "Pairs à haute capacités" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:256 -#, fuzzy msgid " well integrated peers" -msgstr "Floodfill et pairs intégrés" +msgstr "Pairs bien intégrés" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 msgid "as determined by the profile organizer" -msgstr "" +msgstr "tel que défini par l'organisateur du profil" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 msgid "groups" @@ -3039,17 +3010,17 @@ msgstr "groupes" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 msgid "capabilities in the netDb, not used to determine profiles" -msgstr "" +msgstr "possibilités de la NetDb, non utilisée pour déterminer les profils" #. capabilities #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 #: ../java/strings/Strings.java:81 msgid "caps" -msgstr "" +msgstr "capitales" #: ../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 "" +msgstr "débit crête (o/s) sur 1mn maintenu par le pair sur un seul tunnel" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 msgid "speed" @@ -3061,11 +3032,11 @@ msgstr "capacité" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 msgid "how many tunnels can we ask them to join in an hour?" -msgstr "" +msgstr "combien de tunnels pouvons nous leur demander de joindre en une heure?" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 msgid "how many new peers have they told us about lately?" -msgstr "" +msgstr "de combien de nouveaux pairs nous ont-ils parlé récemment?" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 msgid "integration" @@ -3073,7 +3044,7 @@ msgstr "intégration" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 msgid "is the peer banned, or unreachable, or failing tunnel tests?" -msgstr "" +msgstr "Le pair est-il banni, injoignable ou échoue-t-il à tester le tunnel?" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 msgid "status" @@ -3082,34 +3053,30 @@ msgstr "statut" #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:57 #, java-format msgid "Temporary ban expiring in {0}" -msgstr "" +msgstr "Le bannissement temporaire expire dans {0}" #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:59 -#, fuzzy, java-format +#, java-format msgid "Banned until restart or in {0}" -msgstr "interdit jusqu'au rédémarrage" +msgstr "Banni jusqu'au redémarrage ou dans {0}" #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:71 -#, fuzzy msgid "unban now" -msgstr "plus interdit" +msgstr "lever le bannissement" #. 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 -#, fuzzy msgid "Bandwidth usage" -msgstr "Bande passante entrante/sortante" +msgstr "Utilisation de la bande passante" #: ../java/src/net/i2p/router/web/StatSummarizer.java:181 -#, fuzzy msgid "Outbound bytes/sec" -msgstr "Options Sortants" +msgstr "o/s sortants" #. def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3); #: ../java/src/net/i2p/router/web/StatSummarizer.java:183 -#, fuzzy msgid "Inbound bytes/sec" -msgstr "Options Entrants" +msgstr "o/s entrants" #: ../java/src/net/i2p/router/web/StatSummarizer.java:186 #: ../java/src/net/i2p/router/web/StatSummarizer.java:187 @@ -3119,55 +3086,51 @@ msgid "bytes/sec" msgstr "o/s" #: ../java/src/net/i2p/router/web/StatSummarizer.java:186 -#, fuzzy msgid "out average" -msgstr "Tracer les moyennes" +msgstr "hors moyenne" #: ../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:115 msgid "max" -msgstr "" +msgstr "max" #: ../java/src/net/i2p/router/web/StatSummarizer.java:188 -#, fuzzy msgid "in average" -msgstr "Tracer les moyennes" +msgstr "dans la moyenne" #: ../java/src/net/i2p/router/web/StatsGenerator.java:57 msgid "GO" -msgstr "" +msgstr "GO" #: ../java/src/net/i2p/router/web/StatsGenerator.java:60 msgid "Statistics gathered during this router's uptime" -msgstr "" +msgstr "Statistiques collectées pendant cette session du routeur" #: ../java/src/net/i2p/router/web/StatsGenerator.java:63 msgid "The data gathered is quantized over a 1 minute period, so should just be used as an estimate." -msgstr "" +msgstr "Les données collectées sont quantifiées sur 1mn, et ne doivent être utilisées que comme estimations." #: ../java/src/net/i2p/router/web/StatsGenerator.java:64 msgid "These statistics are primarily used for development and debugging." -msgstr "" +msgstr "Ces statistiques sont initialement destinées au développement et au débogage." #: ../java/src/net/i2p/router/web/StatsGenerator.java:105 #: ../java/src/net/i2p/router/web/StatsGenerator.java:156 -#, fuzzy msgid "No lifetime events" -msgstr "tracer les événements" +msgstr "pas d'événement de durée de vie" #: ../java/src/net/i2p/router/web/StatsGenerator.java:116 -#, fuzzy msgid "frequency" -msgstr "Fréquence d'actualisation" +msgstr "fréquence" #: ../java/src/net/i2p/router/web/StatsGenerator.java:120 msgid "Rolling average events per period" -msgstr "" +msgstr "Moyenne glissante d'évènements par période" #: ../java/src/net/i2p/router/web/StatsGenerator.java:124 msgid "Highest events per period" -msgstr "" +msgstr "maximum d'évènements par période" #. if (showAll && (curFreq.getMaxAverageEventsPerPeriod() > 0) && (curFreq.getAverageEventsPerPeriod() > 0) ) { #. buf.append("(current is "); @@ -3178,77 +3141,70 @@ msgstr "" #. buf.append(num(curFreq.getMinAverageInterval())).append("ms)"); #: ../java/src/net/i2p/router/web/StatsGenerator.java:135 msgid "Lifetime average events per period" -msgstr "" +msgstr "évènements de durée de vie moyenne par période" #. Display the strict average #: ../java/src/net/i2p/router/web/StatsGenerator.java:140 -#, fuzzy msgid "Lifetime average frequency" -msgstr "Fréquence d'actualisation" +msgstr "Fréquence moyenne de durée de vie" #: ../java/src/net/i2p/router/web/StatsGenerator.java:168 -#, fuzzy msgid "rate" -msgstr "Taux" +msgstr "taux" #: ../java/src/net/i2p/router/web/StatsGenerator.java:170 -#, fuzzy msgid "Average" -msgstr "Tracer les moyennes" +msgstr "moyenne" #: ../java/src/net/i2p/router/web/StatsGenerator.java:173 -#, fuzzy msgid "Highest average" -msgstr "Tracer les moyennes" +msgstr "Plus haute moyenne" #: ../java/src/net/i2p/router/web/StatsGenerator.java:202 #, java-format msgid "in this period which ended {0} ago." -msgstr "" +msgstr "dans cette période qui s'est terminée il y a {0}." #: ../java/src/net/i2p/router/web/StatsGenerator.java:204 -#, fuzzy msgid "No events" -msgstr "tracer les événements" +msgstr "pas d'événement" #: ../java/src/net/i2p/router/web/StatsGenerator.java:210 msgid "Average event count" -msgstr "" +msgstr "nombre moyen d'évènements" #: ../java/src/net/i2p/router/web/StatsGenerator.java:212 msgid "Events in peak period" -msgstr "" +msgstr "Évènements dans la période crête" #: ../java/src/net/i2p/router/web/StatsGenerator.java:220 -#, fuzzy msgid "Graph Data" -msgstr "Graphe" +msgstr "Graphique de données" #: ../java/src/net/i2p/router/web/StatsGenerator.java:222 msgid "Graph Event Count" -msgstr "" +msgstr "nombre d'évènements de graphiques" #: ../java/src/net/i2p/router/web/StatsGenerator.java:225 msgid "Export Data as XML" -msgstr "" +msgstr "Exporter en XML" #. Display the strict average #: ../java/src/net/i2p/router/web/StatsGenerator.java:230 msgid "Lifetime average value" -msgstr "" +msgstr "Valeur de la durée de vie moyenne" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:41 -#, fuzzy msgid "I2P Router Help & FAQ" -msgstr "Aide routeur I2P" +msgstr "Aide routeur I2P & FAQ" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:43 msgid "Help & FAQ" -msgstr "" +msgstr "Aide & FAQ" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:55 msgid "Configure startup of clients and webapps (services); manually start dormant services" -msgstr "" +msgstr "configurer le démarrage des clients et des applications web (services); démarrer manuellement les services arrêtés" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:57 msgid "I2P Services" @@ -3318,7 +3274,7 @@ msgstr "Montrer une liste de touts le routeurs I2P connus" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:119 msgid "NetDB" -msgstr "" +msgstr "NetDb" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123 msgid "Health Report" @@ -3347,9 +3303,8 @@ msgstr "Destinations locales" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:149 #: ../java/strings/Strings.java:62 -#, fuzzy msgid "I2PTunnel" -msgstr "tunnel sommaire I2P" +msgstr "I2PTunnel" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:160 msgid "I2P Router Help" @@ -3373,11 +3328,11 @@ msgstr "ne jamais la révéler à personne" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177 msgid "show" -msgstr "" +msgstr "affiche" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:188 msgid "How long we've been running for this session" -msgstr "" +msgstr "Durée de cette session" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191 msgid "Uptime" @@ -3421,7 +3376,7 @@ msgstr "Vérifier NAT/pare-feu" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:325 msgid "Reseed" -msgstr "" +msgstr "Réamorçage" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:342 msgid "Configure router bandwidth allocation" @@ -3448,9 +3403,8 @@ msgid "Participating" msgstr "Participant" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:404 -#, fuzzy msgid "Share ratio" -msgstr "Partager" +msgstr "Rapport de partage" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:410 msgid "What's in the router's job queue?" @@ -3478,12 +3432,12 @@ msgstr "Retard accumulé" #: ../java/src/net/i2p/router/web/SummaryHelper.java:101 msgid "ERR-Client Manager I2CP Error - check logs" -msgstr "" +msgstr "ERR-Client Manager I2CP Error - vérifier l'historique" #: ../java/src/net/i2p/router/web/SummaryHelper.java:108 -#, fuzzy, java-format +#, java-format msgid "ERR-Clock Skew of {0}" -msgstr "ERR - horloge décalé" +msgstr "ERR - horloge décalée de {0}" #: ../java/src/net/i2p/router/web/SummaryHelper.java:117 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:576 @@ -3517,15 +3471,15 @@ msgstr "Bloqué par un pare-feu" #: ../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 "" +msgstr "ERR-port UDP en cours d'utilisation - Réglez i2np.udp.internalPort=xxxx dans la configuration avancée et redémarrez" #: ../java/src/net/i2p/router/web/SummaryHelper.java:136 msgid "ERR-No Active Peers, Check Network Connection and Firewall" -msgstr "" +msgstr "ERR-Pas de pair actif, vérifiez votre connexion réseau et votre pare-feu" #: ../java/src/net/i2p/router/web/SummaryHelper.java:139 msgid "ERR-UDP Disabled and Inbound TCP host/port not set" -msgstr "" +msgstr "ERR-UDP désactivé, mais port/hôte entrants TCP non renseignés" #: ../java/src/net/i2p/router/web/SummaryHelper.java:141 msgid "WARN-Firewalled with UDP Disabled" @@ -3556,7 +3510,7 @@ msgstr "Bails périmés" #: ../java/src/net/i2p/router/web/SummaryHelper.java:392 #: ../java/src/net/i2p/router/web/SummaryHelper.java:393 msgid "Rebuilding" -msgstr "" +msgstr "Reconstruction" #: ../java/src/net/i2p/router/web/SummaryHelper.java:393 msgid "ago" @@ -3570,16 +3524,15 @@ msgstr "Prêt" #. yellow light #: ../java/src/net/i2p/router/web/SummaryHelper.java:400 msgid "Building" -msgstr "" +msgstr "Construction" #: ../java/src/net/i2p/router/web/SummaryHelper.java:400 msgid "Building tunnels" msgstr "Création des tunnels en cours" #: ../java/src/net/i2p/router/web/SummaryHelper.java:405 -#, fuzzy msgid "none" -msgstr "Connu" +msgstr "aucun" #. tunnel nicknames, taken from i2ptunnel.config so they will display #. nicely under 'local destinations' in the summary bar @@ -3592,41 +3545,36 @@ msgstr "clients partagés" #. Note to translators: all runtime zh translation disabled in this file, no font available in RRD #: ../java/src/net/i2p/router/web/SummaryRenderer.java:89 -#, fuzzy, java-format +#, java-format msgid "events in {0}" -msgstr "Redémarrage en {0}" +msgstr "Évènements en {0}" #: ../java/src/net/i2p/router/web/SummaryRenderer.java:91 #, java-format msgid "averaged for {0}" -msgstr "" +msgstr "moyenne pour {0}" #: ../java/src/net/i2p/router/web/SummaryRenderer.java:101 -#, fuzzy msgid "Events per period" -msgstr "bits par seconde" +msgstr "Fréquence" #: ../java/src/net/i2p/router/web/SummaryRenderer.java:114 -#, fuzzy msgid "avg" -msgstr ":" +msgstr "moy" #: ../java/src/net/i2p/router/web/SummaryRenderer.java:116 -#, fuzzy msgid "now" -msgstr "Connu" +msgstr "maintenant" #: ../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 -#, fuzzy msgid "configure" msgstr "configuration" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:65 -#, fuzzy msgid "dead" -msgstr "Prêt" +msgstr "mort" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:71 msgid "Participating tunnels" @@ -3667,7 +3615,7 @@ msgstr "Utilisation" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:107 msgid "grace period" -msgstr "" +msgstr "délai de grâce" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:117 msgid "Outbound Endpoint" @@ -3684,12 +3632,12 @@ msgstr "Participant" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:126 msgid "Inactive participating tunnels" -msgstr "" +msgstr "Tunnels participants inactifs" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:127 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:218 msgid "Lifetime bandwidth usage" -msgstr "" +msgstr "Durée de vie de l'utilisation de bande passante" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "Expiry" @@ -3701,7 +3649,7 @@ msgstr "Participants" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:165 msgid "Endpoint" -msgstr "" +msgstr "Point terminal" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:205 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:212 @@ -3737,77 +3685,70 @@ msgid "% of total" msgstr "% du total" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:238 -#, fuzzy msgid "Our Tunnels" -msgstr "Montrer les tunnels" +msgstr "Mes tunnels" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:238 -#, fuzzy msgid "Participating Tunnels" -msgstr "tunnels participants" +msgstr "Tunnels participants" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:256 -#, fuzzy msgid "Totals" -msgstr "Totale" +msgstr "Totaux" #: ../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:178 -#, fuzzy msgid "Updating" -msgstr "Mettre à jour" +msgstr "Mise à jour en cours" #: ../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:189 #: ../java/src/net/i2p/router/web/UpdateHandler.java:214 -#, fuzzy msgid "Update downloaded" -msgstr "Méthode de mise à jour" +msgstr "Mise à jour téléchargée" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:91 #, java-format msgid "Unsigned update file from {0} is corrupt" -msgstr "" +msgstr "Le fichier de mise à jour non signé de {0} est corrompu" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:111 #: ../java/src/net/i2p/router/web/UpdateHandler.java:209 -#, fuzzy msgid "Restarting" -msgstr "Redémarrer" +msgstr "Redémarrage en cours" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:118 #: ../java/src/net/i2p/router/web/UpdateHandler.java:216 msgid "Click Restart to install" -msgstr "" +msgstr "cliquez sur Redémarrer pour installer" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:120 #: ../java/src/net/i2p/router/web/UpdateHandler.java:218 msgid "Click Shutdown and restart to install" -msgstr "" +msgstr "Cliquez sur \"Arrêter\" et redémarrez pour installer" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:121 #: ../java/src/net/i2p/router/web/UpdateHandler.java:220 -#, fuzzy, java-format +#, java-format msgid "Version {0}" -msgstr "Version" +msgstr "Version {0}" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:126 -#, fuzzy, java-format +#, java-format msgid "Failed copy to {0}" -msgstr "Echec de démarrage" +msgstr "Échec de copie vers {0}" #: ../java/src/net/i2p/router/web/UpdateHandler.java:209 -#, fuzzy msgid "Update verified" -msgstr "Mise à jour fini" +msgstr "Mise à jour vérifiée" #: ../java/src/net/i2p/router/web/UpdateHandler.java:234 msgid "Transfer failed" -msgstr "" +msgstr "Échec de transfert" #. wars for ConfigClientsHelper #: ../java/strings/Strings.java:12 @@ -3843,7 +3784,7 @@ msgstr "Console web" #: ../java/strings/Strings.java:23 msgid "SAM application bridge" -msgstr "" +msgstr "Pont applicatif SAM" #: ../java/strings/Strings.java:24 msgid "Application tunnels" @@ -3855,19 +3796,19 @@ msgstr "Serveur web de mon eepsite" #: ../java/strings/Strings.java:26 msgid "I2P webserver (eepsite)" -msgstr "" +msgstr "Serveur web I2P (eepsite)" #: ../java/strings/Strings.java:27 msgid "Browser launch at startup" -msgstr "" +msgstr "Lancer le navigateur au démarrage" #: ../java/strings/Strings.java:28 msgid "BOB application bridge" -msgstr "" +msgstr "Pont applicatif BOB" #: ../java/strings/Strings.java:30 msgid "Open Router Console in web browser at startup" -msgstr "" +msgstr "Ouvrir la console du routeur dans le navigateur au démarrage" #: ../java/strings/Strings.java:37 msgid "IRC proxy" @@ -3878,23 +3819,21 @@ msgid "eepsite" msgstr "eepsite" #: ../java/strings/Strings.java:39 -#, fuzzy msgid "I2P webserver" -msgstr "Serveur web" +msgstr "Serveur web I2P" #: ../java/strings/Strings.java:40 msgid "HTTP Proxy" -msgstr "" +msgstr "Mandataire HTTP" #. older names for pre-0.7.4 installs #: ../java/strings/Strings.java:42 -#, fuzzy msgid "eepProxy" -msgstr "eeProxy hôte" +msgstr "hôte eeProxy" #: ../java/strings/Strings.java:43 msgid "ircProxy" -msgstr "" +msgstr "Mandataire IRC" #. hardcoded in i2psnark #: ../java/strings/Strings.java:45 @@ -3933,22 +3872,20 @@ msgid "BandwidthLimiter" msgstr "Limiteur de bande passante" #: ../java/strings/Strings.java:59 -#, fuzzy msgid "ClientMessages" -msgstr "Clients" +msgstr "Messages client" #: ../java/strings/Strings.java:60 -#, fuzzy msgid "Encryption" -msgstr "Clé d'encryption" +msgstr "Cryptage" #: ../java/strings/Strings.java:61 msgid "i2cp" -msgstr "" +msgstr "i2cp" #: ../java/strings/Strings.java:63 msgid "InNetPool" -msgstr "" +msgstr "InNetPool" #: ../java/strings/Strings.java:64 msgid "JobQueue" @@ -3960,7 +3897,7 @@ msgstr "Base de données du réseau" #: ../java/strings/Strings.java:66 msgid "ntcp" -msgstr "" +msgstr "ntcp" #: ../java/strings/Strings.java:69 msgid "Stream" @@ -3985,9 +3922,8 @@ msgid "host" msgstr "hôte" #: ../java/strings/Strings.java:78 -#, fuzzy msgid "key" -msgstr "Ajouter une clé" +msgstr "clef" #: ../java/strings/Strings.java:79 msgid "port" @@ -3996,54 +3932,54 @@ msgstr "port" #. introducer host #: ../java/strings/Strings.java:83 msgid "ihost0" -msgstr "" +msgstr "ihost0" #: ../java/strings/Strings.java:84 msgid "ihost1" -msgstr "" +msgstr "ihost1" #: ../java/strings/Strings.java:85 msgid "ihost2" -msgstr "" +msgstr "ihost2" #. introducer port #: ../java/strings/Strings.java:87 msgid "iport0" -msgstr "" +msgstr "iport0" #: ../java/strings/Strings.java:88 msgid "iport1" -msgstr "" +msgstr "iport1" #: ../java/strings/Strings.java:89 msgid "iport2" -msgstr "" +msgstr "iport2" #. introducer key #: ../java/strings/Strings.java:91 msgid "ikey0" -msgstr "" +msgstr "ikey0" #: ../java/strings/Strings.java:92 msgid "ikey1" -msgstr "" +msgstr "ikey1" #: ../java/strings/Strings.java:93 msgid "ikey2" -msgstr "" +msgstr "ikey2" #. introducer tag #: ../java/strings/Strings.java:95 msgid "itag0" -msgstr "" +msgstr "itag0" #: ../java/strings/Strings.java:96 msgid "itag1" -msgstr "" +msgstr "itag1" #: ../java/strings/Strings.java:97 msgid "itag2" -msgstr "" +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 @@ -4266,15 +4202,15 @@ msgstr "(empêche le trafic participants)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:434 msgid "Action when IP changes" -msgstr "" +msgstr "Action quand l'IP change" #: ../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 "" +msgstr "Mode IP publique dynamique/PC portable: modifie l'identité du router et le port UDP quand l'IP change pour améliorer l'anonymat" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:440 msgid "Experimental" -msgstr "" +msgstr "Expérimental" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:442 msgid "UDP Configuration:" @@ -4319,7 +4255,7 @@ msgstr "(selectionner seulement si derrière un pare-feu qui limite les connexio #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:492 msgid "Externally reachable TCP port" -msgstr "" +msgstr "Port TCP joignable de l'extérieur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:496 msgid "Use the same port configured for UDP" @@ -4345,9 +4281,8 @@ msgstr "Aide avec la configuration" #: ../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 -#, fuzzy 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 fonctionnera derrière le plupart des pares-feu, mais votre vitesse et votre intégration avec le réseau s'améliorera s'il y a la redirection du port I2P pour UDP et TCP." +msgstr "I2P fonctionnera derrière la plupart des pare-feux, mais votre vitesse et votre intégration avec le réseau sera améliorée par la redirection des ports UDP et TCP d'I2P." #: ../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." @@ -4427,55 +4362,55 @@ msgstr "Si vous n'êtes pas sûr de vous, laisser la configuration par défaut." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:566 msgid "Reachability Help" -msgstr "" +msgstr "Aide sur la joignabilité" #: ../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 "" +msgstr "Si vous pensez que vous avez ouvert votre pare-feu et qu'I2P indique toujours que vous êtes derrière le pare-feu, n'oubliez pas que vous avez peut-être plusieurs pare-feux: par exemple celui de votre box DSL et un pare-feu logiciel dans votre ordinateur." #: ../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 "" +msgstr "S'il y a une erreur, les historiques peuvent aider au diagnostic." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:578 msgid "Your UDP port does not appear to be firewalled." -msgstr "" +msgstr "Votre port UDP ne semble pas bloqué par un pare-feu." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:582 msgid "Your UDP port appears to be firewalled." -msgstr "" +msgstr "Votre port UDP semble bloqué par un pare-feu." #: ../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 "" +msgstr "Comme les méthodes de détection de pare-feu ne sont pas fiables à 100%, ceci peut occasionnellement générer une erreur." #: ../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 "" +msgstr "Cependant, si ça se reproduit systématiquement, vous devez vérifier que votre box et vos pare-feux internes sont ouverts pour votre port." #: ../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 "" +msgstr "I2P fonctionne très bien derrière un pare-feu, ça n'est pas un problème. Derrière un pare-feu, le routeur utilise des \"entremetteurs\" pour relayer les connexions entrantes." #: ../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 "" +msgstr "Cependant, vous obtiendrez plus de trafic participants et aiderez plus le réseau si vous avez la possibilité d'ouvrir vos pare-feux." #: ../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 "" +msgstr "S vous pensez que vous l'avez déjà fait, n'oubliez pas que vous avez peut-être un pare-feu matériel et logiciel, ou que vous êtes derrière un pare-feu supplémentaire sur lequel vous n'avez aucun contrôle (p.e. en entreprise)." #: ../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 "" +msgstr "De plus, certains pare-feux ne peuvent pas transférer correctement TCP et UDP sur le même port, ou il pourrait y avoir d'autres limitations ou des bogues qui les empêcheraient de passer le trafic à 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 "" +msgstr "Le routeur teste actuellement si votre port UDP est bloqué." #: ../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 "" +msgstr "Le routeur n'est pas configuré pour publier son adresse, donc il n'attend pas de connexions entrantes." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:604 msgid "WARN - Firewalled and Fast" @@ -4483,11 +4418,11 @@ msgstr "WARN - Pare-feu et Rapide" #: ../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 "" +msgstr "Vous avez configuré I2P pour partager plus de 128ko/s de bande passante, mais vous êtes bloqué par un pare-feu." #: ../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 "" +msgstr "Bien qu'I2P fonctionne très bien dans cette configuration, si vous avez plus de 128ko/s à partager, ça aiderait fortement le réseau si vous pouviez ouvrir votre pare-feu." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:610 msgid "WARN - Firewalled and Floodfill" @@ -4495,11 +4430,11 @@ msgstr "WARN - Pare-feu et 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 "" +msgstr "Vous avez configuré I2P pour être un routeur de remplissage par diffusion, mais vous êtes derrière un pare-feu." #: ../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 "" +msgstr "Pour une meilleure participation en tant que diffuseur, vous devriez ouvrir votre pare-feu." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:616 msgid "WARN - Firewalled with Inbound TCP Enabled" @@ -4507,15 +4442,15 @@ msgstr "WARN - Pare-feu avec TCP entrant activé" #: ../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 "" +msgstr "Vous avez configuré le TCP entrant, cependant votre port UDP est bloqué et en conséquence il est probable que TCP l'est aussi." #: ../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 "" +msgstr "Si votre port TCp est bloqué et les connexions entrantes TCP activées dans la console, les routeurs ne pourront pas vous contacter via TCP, ce qui va perturber le réseau. " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:622 msgid "Please open your firewall or disable inbound TCP above." -msgstr "" +msgstr "Merci d'ouvrir votre pare-feu ou de désactiver le TCP entrant ci-dessus." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:624 msgid "WARN - Firewalled with UDP Disabled" @@ -4523,15 +4458,15 @@ msgstr "WARN - Pare-feu avec UDP désactivé" #: ../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 "" +msgstr "Vous avez configuré le TCP entrant, mais vous avez désactivé UDP." #: ../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 "" +msgstr "Vous apparaissez comme étant bloqué par un pare-feu pour TCP, et en conséquence votre routeur ne peut pas accepter les connexions entrantes." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:630 msgid "Please open your firewall or enable UDP." -msgstr "" +msgstr "Merci d'ouvrir votre pare-feu ou d'activer UDP." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:632 msgid "ERR - Clock Skew" @@ -4539,11 +4474,11 @@ msgstr "ERR - horloge décalée" #: ../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 "" +msgstr "L'horloge système est décalée, ce qui rend la participation au réseau difficile." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:636 msgid "Correct your clock setting if this error persists." -msgstr "" +msgstr "Corrigez votre réglage d'horloge si cette erreur persiste." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:638 msgid "ERR - Private TCP Address" @@ -4551,11 +4486,11 @@ msgstr "ERR - Adresse TCP privée" #: ../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 "" +msgstr "Vous ne devez jamais publier une IP non routable telle que 127.0.0.1 ou 192.168.1.1 en tant qu'adresse externe." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:642 msgid "Correct the address or disable inbound TCP above." -msgstr "" +msgstr "Corrigez cette adresse ou désactivez le TCP entrant ci-dessus." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:644 msgid "ERR - SymmetricNAT" @@ -4563,59 +4498,59 @@ msgstr "ERR - NAT symétrique" #: ../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 "" +msgstr "I2P a détecté que vous êtes derrière un NAT symétrique." #: ../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 "" +msgstr "I2P marche mal derrière ce genre de pare-feu. vous ne pourrez sûrement pas accepter de recevoir de connexions entrantes, ce qui limitera votre participation au réseau." #: ../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 "" +msgstr "ERR - Port UDP en cours d'utilisation - réglez i2np.udp.internalPort=xxxx dans la configuration avancée et redémarrez" #: ../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 "" +msgstr "I2P n'a pas pu s'attacher au port 8887 ou un autre port configuré." #: ../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 "" +msgstr "Vérifiez si un autre programme utilise le port configuré pour I2P. Si oui, arrêtez ce programme ou configurez I2P pour qu'il utilise un port différent (dans Windows tapez netstat dans une boîte de commandes pour lister les ports utilisés par les programmes)." #: ../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 "" +msgstr "Il s'agit peut-être d'une erreur passagère, si l'autre programme n'utilise plus le port." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:658 msgid "However, a restart is always required after this error." -msgstr "" +msgstr "Cependant un redémarrage du routeur est toujours requis après cette erreur." #: ../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 "" +msgstr "ERR - UDP est désactivé et l'hôte/port entrants ne sont pas définis." #: ../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 "" +msgstr "vous n'avez pas configuré le TCP entrant ci-dessus avec un nom d'hôte et un port, mais vous avez désactivé UDP." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:664 msgid "Therefore your router cannot accept inbound connections." -msgstr "" +msgstr "Le routeur ne peut donc pas accepter de connexions entrantes." #: ../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 "" +msgstr "Merci de configurer ci-dessus un nom et un port TCP, ou d'activer UDP." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:668 msgid "ERR - Client Manager I2CP Error - check logs" -msgstr "" +msgstr "ERR - Client Manager I2CP Error - vérifiez les historique" #: ../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 "" +msgstr "Ceci est habituellement dû à un conflit de port 7654. Vérifiez dans l'historique. (et pensez éventuellement à netstat ;-) ) " #: ../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 "" +msgstr "Avez-vous une autre instance d'I2P en cours d'exécution? Arrêtez le programme en conflit et redémarrez I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:107 msgid "config advanced" @@ -4631,7 +4566,7 @@ msgstr "Configuration I2P avancée" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309 msgid "Some changes may require a restart to take effect." -msgstr "" +msgstr "Certains changement nécessitent un redémarrage pour prendre effet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:106 msgid "config clients" @@ -4647,16 +4582,16 @@ msgstr "Configuration client" #: ../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 "" +msgstr "Les client Java listés ci-dessous sont démarrés par le routeur et s'exécutent dans la même JVM." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:317 msgid "To change other client options, edit the file" -msgstr "" +msgstr "Pour changer d'autres options du client, modifiez le fichier" #: ../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 "" +msgstr "Tous les changements nécessitent un redémarrage pour prendre effet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:336 msgid "WebApp Configuration" @@ -4664,28 +4599,27 @@ msgstr "Configuration WebApp" #: ../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 "" +msgstr "Les applications Web Java listées ci-dessous sont démarrées par le client webConsole et s'exécutent dans la même JVM que le routeur. Il s'agit généralement d'applications web accessibles par la console du routeur. Il peut s'agir d'applications complètes (p.e. i2pSnark), d'interfaces pour d'autres clients ou applications qui doivent être activées séparément (p.e. susidns, i2ptunnel), ou n'ayant absolument aucune interface web (p.e. le carnet d'adresses)" #: ../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 "" +msgstr "Une appli web peut aussi être désactivée en supprimant le ficher .war du répertoire des web apps; mais le fichier et la web app reviendront à l'occasion d'une mise à jour du routeur, et donc la désactivation depuis la console est la méthode recommandée." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:350 -#, fuzzy msgid "Plugin Configuration" -msgstr "Configuration Client" +msgstr "Configuration du greffon" #: ../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 "" +msgstr "Les greffons listés ci-dessous sont démarrés par le client webConsole." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:358 msgid "Plugin Installation" -msgstr "" +msgstr "Installation de greffon" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:360 msgid "To install a plugin, enter the download URL:" -msgstr "" +msgstr "Pour installer un greffon, entrez l'URL de téléchargement:" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:106 msgid "config keyring" @@ -4697,27 +4631,27 @@ msgstr "Configuration du porte-clés 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 "" +msgstr "Le trousseau de clefs du routeur est utilisé pour déchiffrer les jeux de baux (leaseSets) cryptés." #: ../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 "" +msgstr "Le trousseau contient des clés pour des destinations cryptées locales ou distantes." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:307 msgid "Manual Keyring Addition" -msgstr "" +msgstr "Ajout manuel de trousseau" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:309 msgid "Enter keys for encrypted remote destinations here." -msgstr "" +msgstr "Entrez les clés pour les destinations chiffrées distantes ici." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:312 msgid "Keys for local destinations must be entered on the" -msgstr "" +msgstr "Les clés des destinations locales doivent être entrées sur la" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:314 msgid "I2PTunnel page" -msgstr "" +msgstr "page I2PTunnel" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:316 msgid "Dest. name, hash, or full key" @@ -4733,23 +4667,23 @@ msgstr "configuration des historiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:242 msgid "I2P Logging Configuration" -msgstr "" +msgstr "Configuration des historiques I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:299 msgid "Configure I2P Logging Options" -msgstr "" +msgstr "Configuration des options d'historiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 msgid "Logging filename" -msgstr "" +msgstr "Nom du fichier des historiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:305 msgid "(the symbol '@' will be replaced during log rotation)" -msgstr "" +msgstr "(le caractère '@' sera remplacé lors des rotations d'historiques)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307 msgid "Log record format" -msgstr "" +msgstr "Format des enregistrements d'historiques" #: ../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)" @@ -4757,7 +4691,7 @@ msgstr "(use 'd' = date, 'c' = classe, 't' = tâche, 'p' = priorité, 'm' = mess #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 msgid "Log date format" -msgstr "" +msgstr "Format de date des historiques" #: ../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)" @@ -4765,23 +4699,23 @@ msgstr "('MM' = mois, 'dd' = jour, 'HH' = heure, 'mm' = minute, 'ss' = seconde, #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 msgid "Max log file size" -msgstr "" +msgstr "Taille max des fichiers d'historiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:323 msgid "Default log level" -msgstr "" +msgstr "Niveau d'historisation par défaut" #: ../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 "" +msgstr "(DEBUG et INFO sont déconseillés, car ils ralentissent double-plus-grâââve votre routeur)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329 msgid "Log level overrides" -msgstr "" +msgstr "Remplacements du niveau d'historisation" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:333 msgid "New override" -msgstr "" +msgstr "Nouveau remplacement" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:106 msgid "config peers" @@ -4793,7 +4727,7 @@ msgstr "Configuration des pairs I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:304 msgid "Manual Peer Controls" -msgstr "" +msgstr "Contrôle manuel des pairs" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:306 msgid "Router Hash" @@ -4801,15 +4735,15 @@ msgstr "Empreinte du routeur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:310 msgid "Manually Ban / Unban a Peer" -msgstr "" +msgstr "(Dé)banissement manuel d'un pair" #: ../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 "" +msgstr "Le banissement empêchera ce pair de participer aux tunnels que vous créez." #: ../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 "" +msgstr "Les boni peuvent être positifs ou négatifs, et influencent l'affectation des pairs dans les groupes \"Rapides\" et \"Hautes capacités\". Les pairs rapides sont utilisés pour les tunnels clients, et les pairs à hautes capacités pour quelques tunnels exploratoires. Les boni actuels sont affichés sur la" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:326 msgid "profiles page" @@ -4817,7 +4751,7 @@ msgstr "page des profils" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:342 msgid "Adjust peer bonuses" -msgstr "" +msgstr "Ajuster les boni des pairs" #: ../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 @@ -4850,11 +4784,11 @@ msgstr "Si vous avez besoin d'arrêter le routeur I2P immédiatement, cette opti #: ../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 "" +msgstr "Si vous voulez que le routeur redémarre après l'arrêt, vous pouvez choisir une des possibilités suivantes." #: ../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 "" +msgstr "C'est utile dans certaines situations: p.e. quand vous faites un réglage que telle application cliente ne lit qu'au démarrage, comme le mot de passe de la console ou l'interface sur lequel elle écoute." #: ../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." @@ -4874,11 +4808,11 @@ msgstr "Sur Windows, une icône pour la zone de notification indiquant l'état d #: ../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 "" +msgstr "(Ultérieurement, Les applications clientes I2P pourront intégrer leurs propres fonctionnalités dans la zone de notification système)" #: ../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 "" +msgstr "Si vous êtes sur Windows, vous pouvez (dés)activer cette icône ici." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:326 msgid "Run on startup" @@ -4886,19 +4820,19 @@ msgstr "Lancer au démarrage" #: ../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 "" +msgstr "Vous pouvez contrôler si I2P est lancé ou pas au démarrage en choisissant une des options suivantes: I2P installera le service en conséquence." #: ../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 "" +msgstr "Si vous préférez la ligne commande, vous pouvez aussi exécuter la" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:340 msgid "If you are running I2P as service right now, removing it will shut down your router immediately." -msgstr "" +msgstr "Si vous exécutez actuellement I2P en tant que service, l'enlever arrêtera le routeur immédiatement." #: ../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 "" +msgstr "Vous pouvez faire un arrêt respectueux, comme ci-dessus, puis lancer le fichier uninstall_i2p_service_winnt.bat." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:346 msgid "Debugging" @@ -4910,7 +4844,7 @@ msgstr "Voir la file d'attente " #: ../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 "" +msgstr "À l'occasion, il peut être utile de déboguer I2P à l'aide d'un cliché de tâche. Pour ce faire, merci de sélectionner l'option suivante de passer en revue le résultat dans l'historique du service Wrapper." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:358 msgid "Launch browser on router startup?" @@ -4918,11 +4852,11 @@ msgstr "Lancer le navigateur au démarrage du routeur?" #: ../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 "" +msgstr "La plus grande partie de la configuration d'I2P se fait dans cette console, et donc pour votre confort, I2P peut lancer au démarrage votre navigateur sur " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:107 msgid "config stats" -msgstr "" +msgstr "config stats" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:229 msgid "I2P Stats Configuration" @@ -4930,19 +4864,19 @@ msgstr "Configuration des statistiques d'I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:300 msgid "Configure I2P Stat Collection" -msgstr "" +msgstr "Configurer les groupes de statistiques " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302 msgid "Enable full stats?" -msgstr "" +msgstr "Activer toutes les statistiques?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:309 msgid "change requires restart to take effect" -msgstr "" +msgstr "La modification sera prise en compte au démarrage suivant" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:311 msgid "Stat file" -msgstr "" +msgstr "Fichier de statistiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:315 msgid "Filter" @@ -4979,11 +4913,11 @@ msgstr "La configuration défaut fonctionne pour la plupart des utilisateurs" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:309 msgid "There is a fundamental tradeoff between anonymity and performance." -msgstr "" +msgstr "Il y a une contradiction fondamentale entre anonymat et performances." #: ../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 "" +msgstr "Des tunnels à plus de 3 sauts (p.e. 2 sauts + 0-2 sauts, 3 sauts + 0-1 saut, 3 sauts + 0-2 sauts), ou en grand nombre avec une réserve de secours élevée, peuvent gravement réduire les performances ou la fiabilité. " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:315 msgid "High CPU and/or high outbound bandwidth usage may result." @@ -4999,15 +4933,15 @@ msgstr "Les modifications de réglages des tunnels exploratoires sont enregistr #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:335 msgid "Client tunnel changes are temporary and are not saved." -msgstr "" +msgstr "Les modifications de tunnel client sont temporaires et ne sont pas enregistrées." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:337 msgid "To make permanent client tunnel changes see the" -msgstr "" +msgstr "Pour faire de modifications permanentes à un tunnel client, voyez la" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:339 msgid "i2ptunnel page" -msgstr "" +msgstr "page i2ptunnnel." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:106 msgid "config UI" @@ -5051,7 +4985,7 @@ msgstr "Configuration des mises à jour" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:302 msgid "Check for I2P and news updates" -msgstr "" +msgstr "Vérification de mises à jour I2P et nouvelles" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:304 msgid "News & I2P Updates" @@ -5083,7 +5017,7 @@ msgstr "eeProxy hôte" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:338 msgid "eepProxy port" -msgstr "" +msgstr "Port eepProxy" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:342 msgid "Update URLs" @@ -5103,7 +5037,7 @@ msgstr "L'URL de version non signée" #: ../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 "" +msgstr "Les mises à jours d'I2P sont désactivées car vous n'avez pas le droit d'écriture sur le dossier d'installation. " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:366 msgid "Save" @@ -5115,7 +5049,7 @@ msgstr "Page introuvable" #: ../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 "" +msgstr "Désolé! Vous avez demandé une page ou ressource de la console inexistante. " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:245 msgid "Error 404" @@ -5131,11 +5065,11 @@ msgstr "graphiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:228 msgid "I2P Performance Graphs" -msgstr "" +msgstr "Graphiques de performances" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:105 msgid "home" -msgstr "" +msgstr "accueil" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:105 msgid "job queue" @@ -5143,7 +5077,7 @@ msgstr "file d'attente" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:227 msgid "I2P Router Job Queue" -msgstr "" +msgstr "File d'attente de travail du routeur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:105 msgid "logs" @@ -5155,11 +5089,11 @@ msgstr "Fichier traces du routeur I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:229 msgid "I2P Version & Running Environment" -msgstr "" +msgstr "Version d'I2P & environnement d'exécution" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:231 msgid "Please report bugs on trac.i2p2.i2p." -msgstr "" +msgstr "Merci de signaler les bogues sur trac.i2p2.i2p." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:233 msgid "Please include this information in bug reports" @@ -5167,42 +5101,39 @@ msgstr "Veuillez inclure cette information dans les rapports des bugs" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:274 msgid "Critical Logs" -msgstr "" +msgstr "Historiques critiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:278 -#, fuzzy msgid "Router Logs" -msgstr "Fichier traces du routeur I2P" +msgstr "Historiques du routeur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:284 msgid "Service (Wrapper) Logs" -msgstr "" +msgstr "Historique du service Wrapper" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:105 msgid "network database summary" -msgstr "" +msgstr "Résumé base de données" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:227 msgid "I2P Network Database Summary" -msgstr "" +msgstr "Résumé base de données I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:109 -#, fuzzy msgid "WebApp Not Found" -msgstr "Page introuvable" +msgstr "Application web introuvable" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:231 -#, fuzzy msgid "Web Application Not Running" -msgstr "Tunnels d'application" +msgstr "Application web inactive" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:233 msgid "The requested web application is not running." -msgstr "" +msgstr "L'application web demandée est inactive." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:235 msgid "Please visit the config clients page to start it." -msgstr "" +msgstr "Merci de visiter la page de configuration des clients pour le lancer." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:105 msgid "peer connections" @@ -5210,7 +5141,7 @@ msgstr "connexions de pairs" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:227 msgid "I2P Network Peers" -msgstr "" +msgstr "Pairs I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:105 msgid "peer profiles" @@ -5218,7 +5149,7 @@ msgstr "profile de pairs" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:227 msgid "I2P Network Peer Profiles" -msgstr "" +msgstr "Profils de pairs I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:105 msgid "statistics" From 086bad4b4722844c047b3c7fd8f943169079ffc3 Mon Sep 17 00:00:00 2001 From: magma Date: Tue, 22 Mar 2011 16:31:20 +0000 Subject: [PATCH 321/463] upd messages-fr.po --- apps/routerconsole/locale/messages_fr.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 9d70bd77f..021449a01 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-11-19 18:16+0000\n" -"PO-Revision-Date: 2011-03-22 17:21+0100\n" +"PO-Revision-Date: 2011-03-22 17:24+0100\n" "Last-Translator: \n" "Language-Team: foo \n" "MIME-Version: 1.0\n" From 42e9fd94313cc9a0ae90ab462615978d70d318b0 Mon Sep 17 00:00:00 2001 From: magma Date: Tue, 22 Mar 2011 21:59:14 +0000 Subject: [PATCH 322/463] upd snark_fr.po --- apps/i2psnark/locale/messages_fr.po | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/apps/i2psnark/locale/messages_fr.po b/apps/i2psnark/locale/messages_fr.po index 52b20ccda..858181dac 100644 --- a/apps/i2psnark/locale/messages_fr.po +++ b/apps/i2psnark/locale/messages_fr.po @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-12-28 00:08+0000\n" -"PO-Revision-Date: 2010-12-31 02:22+0100\n" -"Last-Translator: mixxy \n" +"PO-Revision-Date: 2011-03-22 22:58+0100\n" +"Last-Translator: \n" "Language-Team: foo \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -101,7 +101,7 @@ msgstr "Liste des Open trackers modifiée - ceci nécessite un redémarrage des #: ../java/src/org/klomp/snark/SnarkManager.java:438 #, java-format msgid "{0} theme loaded, return to main i2psnark page to view." -msgstr "" +msgstr "Thème {0} chargé, revenez à la page d'accueil d'i2psnark pour voir comme c'est beau!" #: ../java/src/org/klomp/snark/SnarkManager.java:445 msgid "Configuration unchanged." @@ -263,9 +263,8 @@ msgid "Torrent" msgstr "Torrent" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290 -#, fuzzy msgid "Estimated time remaining" -msgstr "Octets restants" +msgstr "temps restant estimé" # NOTE: purposely left blank to leave more room in the table header # msgstr "Temps restant" @@ -473,14 +472,13 @@ msgid "Stopped" msgstr "Arrêté" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837 -#, fuzzy, java-format +#, java-format msgid "Details at {0} tracker" -msgstr "Sélectionner un tracker" +msgstr "Détails au tracker {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838 -#, fuzzy msgid "Info" -msgstr "Ignore" +msgstr "Info" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:853 msgid "View files" @@ -492,9 +490,8 @@ msgstr "Ouvrir fichier" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:865 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1569 -#, fuzzy msgid "Open" -msgstr "Ouvrir fichier" +msgstr "Ouvrir le fichier" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:909 msgid "Stop the torrent" @@ -649,7 +646,7 @@ msgstr "Si coché, les torrents démarrerons automatiquement lors de l'ajout" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198 msgid "Theme" -msgstr "" +msgstr "Thème" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1211 msgid "Startup delay" @@ -772,7 +769,7 @@ msgstr "Normal" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1605 msgid "Skip" -msgstr "" +msgstr "Ignorer" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1614 msgid "Save priorities" @@ -794,7 +791,7 @@ msgid "Torrent already in the queue: {0}" msgstr "Torrent déjà dans la queue: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1755 -#, fuzzy, java-format +#, java-format msgid "Failed to copy torrent file to {0}" msgstr "Impossible de copier le torrent vers {0}" From f289be908c9b31d216f1c0ec3a3ab343a7bcc232 Mon Sep 17 00:00:00 2001 From: magma Date: Tue, 22 Mar 2011 22:06:12 +0000 Subject: [PATCH 323/463] added UNanted susidns messages_fr.po. Please jdk guru initialize, aka antize it so I can translate. I just changed one header line --- apps/susidns/locale/messages_fr.po | 480 +++++++++++++++++++++++++++++ 1 file changed, 480 insertions(+) create mode 100644 apps/susidns/locale/messages_fr.po diff --git a/apps/susidns/locale/messages_fr.po b/apps/susidns/locale/messages_fr.po new file mode 100644 index 000000000..27a948205 --- /dev/null +++ b/apps/susidns/locale/messages_fr.po @@ -0,0 +1,480 @@ +# 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: 2011-02-13 11:54+0000\n" +"PO-Revision-Date: 2010-06-15 14:09+0100\n" +"Last-Translator: magma \n" +"Language-Team: duck \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:200 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:193 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:197 +msgid "Search" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:204 +msgid "Search within filtered list" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206 +msgid "Filtered list" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:210 +msgid "no matches" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:213 +msgid "Addressbook" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:215 +msgid "contains no entries" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:217 +msgid "contains 1 entry" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:219 +#, java-format +msgid "contains {0} entries" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:229 +#, java-format +msgid "Showing {0} of {1}" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:368 +msgid "Add" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:265 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:366 +msgid "Replace" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264 +#, java-format +msgid "Host name {0} is already in addressbook, unchanged." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266 +#, java-format +msgid "" +"Host name {0} is already in addressbook with a different destination. Click " +"\"Replace\" to overwrite." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278 +#, java-format +msgid "Destination added for {0}." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:280 +#, java-format +msgid "Destination changed for {0}." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:285 +msgid "Invalid Base 64 destination." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:289 +msgid "Please enter a host name and destination" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:293 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314 +msgid "Delete Selected" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:303 +#, java-format +msgid "Destination {0} deleted." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305 +#, java-format +msgid "{0} destinations deleted." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:311 +msgid "Addressbook saved." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:314 +msgid "ERROR: Could not write addressbook file." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319 +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151 +msgid "" +"Invalid form submission, probably because you used the \"back\" or \"reload" +"\" button on your browser. Please resubmit." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:130 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:130 +msgid "Save" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:141 +msgid "Configuration saved." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:128 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:128 +msgid "Reload" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:144 +msgid "Configuration reloaded." +msgstr "" + +#. Yes this is a hack. +#. No it doesn't work on a text-mode browser. +#. Fetching from the addressbook servlet +#. with the correct parameters will kick off a +#. config reload and fetch. +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:139 +msgid "" +"Subscriptions saved, updating addressbook from subscription sources now." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143 +msgid "Subscriptions saved." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147 +msgid "Subscriptions reloaded." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145 +msgid "addressbook" +msgstr "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:163 +msgid "Filter" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:166 +msgid "all" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:177 +msgid "Current filter" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:182 +msgid "clear filter" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:224 +msgid "Name" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:226 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:362 +msgid "Destination" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:257 +msgid "Mark for deletion" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:279 +msgid "address helper link" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:312 +msgid "Cancel" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345 +msgid "This addressbook is empty." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:356 +msgid "Add new destination" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:358 +msgid "Hostname" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:132 +msgid "Hints" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134 +msgid "" +"File and directory paths here are relative to the addressbook's working " +"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P" +"\\addressbook\\ (Windows)." +msgstr "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142 +msgid "" +"Use the private addressbook for private destinations, these are not " +"published." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144 +msgid "Options" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146 +msgid "File containing the list of subscriptions URLs (no need to change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148 +msgid "Update interval in hours" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150 +msgid "" +"Your public hosts.txt file (choose a path within your webserver document " +"root)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152 +msgid "Your hosts.txt (don't change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:154 +msgid "Your personal addressbook, these hosts will be published" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:156 +msgid "Your private addressbook, it is never published" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158 +msgid "Port for your eepProxy (no need to change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160 +msgid "Hostname for your eepProxy (no need to change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162 +msgid "Whether to update the published addressbook" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164 +msgid "" +"File containing the etags header from the fetched subscription URLs (no need " +"to change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:166 +msgid "" +"File containing the modification timestamp for each fetched subscription URL " +"(no need to change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168 +msgid "File to log activity to (change to /dev/null if you like)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:91 +msgid "Introduction" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:109 +msgid "What is the addressbook?" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:111 +msgid "The addressbook application is part of your i2p installation." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113 +msgid "" +"It regularly updates your hosts.txt file from distributed sources or " +"\"subscriptions\"." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115 +msgid "" +"In the default configuration, the addressbook is only subscribed to www.i2p2." +"i2p." +msgstr "" + +#: ../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 "" + +#: ../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 "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121 +msgid "How does the addressbook work?" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123 +msgid "" +"The addressbook application regularly polls your subscriptions and merges " +"their content into your \"router\" addressbook, stored in the hosts.txt file." +msgstr "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../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 "" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132 +msgid "The subscription file contains a list of i2p URLs." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134 +msgid "" +"The addressbook application regularly checks this list for new eepsites." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136 +msgid "Those URLs refer to published hosts.txt files." +msgstr "" + +#: ../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 "" + +#: ../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 "" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142 +msgid "See the FAQ for a list of subscription URLs." +msgstr "" From f7beb5d68ebfd8ffd4ab6919e1d3ba699fbba9af Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 24 Mar 2011 01:47:41 +0000 Subject: [PATCH 324/463] initial trsl --- apps/susidns/locale/messages_fr.po | 280 ++++++++++++----------------- 1 file changed, 117 insertions(+), 163 deletions(-) diff --git a/apps/susidns/locale/messages_fr.po b/apps/susidns/locale/messages_fr.po index 27a948205..a6d06456a 100644 --- a/apps/susidns/locale/messages_fr.po +++ b/apps/susidns/locale/messages_fr.po @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: I2P susidns\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-02-13 11:54+0000\n" -"PO-Revision-Date: 2010-06-15 14:09+0100\n" -"Last-Translator: magma \n" +"PO-Revision-Date: 2011-03-24 02:29+0100\n" +"Last-Translator: \n" "Language-Team: duck \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,135 +21,131 @@ msgstr "" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:193 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:197 msgid "Search" -msgstr "" +msgstr "Chercher" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:204 msgid "Search within filtered list" -msgstr "" +msgstr "Chercher dans la liste filtrée" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206 msgid "Filtered list" -msgstr "" +msgstr "Liste filtrée" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:210 msgid "no matches" -msgstr "" +msgstr "aucune correspondance" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:213 msgid "Addressbook" -msgstr "" +msgstr "Le carnet d'adresses" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:215 msgid "contains no entries" -msgstr "" +msgstr "est vide" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:217 msgid "contains 1 entry" -msgstr "" +msgstr "contient 1 entrée" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:219 #, java-format msgid "contains {0} entries" -msgstr "" +msgstr "contient {0} entrée(s)" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:229 #, java-format msgid "Showing {0} of {1}" -msgstr "" +msgstr "Affichage {0} sur {1}" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:368 msgid "Add" -msgstr "" +msgstr "Ajouter" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:265 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:366 msgid "Replace" -msgstr "" +msgstr "Remplacer" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264 #, java-format msgid "Host name {0} is already in addressbook, unchanged." -msgstr "" +msgstr "L'hôte {0} est déjà présent: inchangé." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266 #, java-format -msgid "" -"Host name {0} is already in addressbook with a different destination. Click " -"\"Replace\" to overwrite." -msgstr "" +msgid "Host name {0} is already in addressbook with a different destination. Click \"Replace\" to overwrite." +msgstr "L'hôte {0} est déjà présent avec une destination différente. Cliquez sur \"Remplacer\"...pour le remplacer." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278 #, java-format msgid "Destination added for {0}." -msgstr "" +msgstr "Destination ajoutée pour {0}." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:280 #, java-format msgid "Destination changed for {0}." -msgstr "" +msgstr "Destination modifiée pour {0}." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:285 msgid "Invalid Base 64 destination." -msgstr "" +msgstr "Destination Base64 incorrecte." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:289 msgid "Please enter a host name and destination" -msgstr "" +msgstr "Entrez un nom d'hôte et sa destination" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:293 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314 msgid "Delete Selected" -msgstr "" +msgstr "Supprimer les éléments sélectionnés" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:303 #, java-format msgid "Destination {0} deleted." -msgstr "" +msgstr "Destination {0} supprimée." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305 #, java-format msgid "{0} destinations deleted." -msgstr "" +msgstr "{0} destination(s) supprimée(s)." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:311 msgid "Addressbook saved." -msgstr "" +msgstr "Carnet d'adresses enregistré." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:314 msgid "ERROR: Could not write addressbook file." -msgstr "" +msgstr "ERREUR: impossible d'enregistrer le fichier carnet d'adresses." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:148 #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151 -msgid "" -"Invalid form submission, probably because you used the \"back\" or \"reload" -"\" button on your browser. Please resubmit." -msgstr "" +msgid "Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit." +msgstr "Soumission du formulaire incorrecte: vous avez peutêtre utilisé le bouton \"Page précédente\" ou \"Recharger\". Merci de soumettre à nouveau." #: ../src/java/src/i2p/susi/dns/ConfigBean.java:139 #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:130 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:130 msgid "Save" -msgstr "" +msgstr "Enregistrer" #: ../src/java/src/i2p/susi/dns/ConfigBean.java:141 msgid "Configuration saved." -msgstr "" +msgstr "Configuration enregistrée." #: ../src/java/src/i2p/susi/dns/ConfigBean.java:142 #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:128 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:128 msgid "Reload" -msgstr "" +msgstr "Recharger" #: ../src/java/src/i2p/susi/dns/ConfigBean.java:144 msgid "Configuration reloaded." -msgstr "" +msgstr "Configuration rechargée." #. Yes this is a hack. #. No it doesn't work on a text-mode browser. @@ -157,57 +153,56 @@ msgstr "" #. with the correct parameters will kick off a #. config reload and fetch. #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:139 -msgid "" -"Subscriptions saved, updating addressbook from subscription sources now." -msgstr "" +msgid "Subscriptions saved, updating addressbook from subscription sources now." +msgstr "Souscriptions enregistrées, mise à jour en cours du carnet d'adresses à partir de celles-ci." #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143 msgid "Subscriptions saved." -msgstr "" +msgstr "Souscription enregistrée." #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147 msgid "Subscriptions reloaded." -msgstr "" +msgstr "Souscription rechargée." #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145 msgid "addressbook" -msgstr "" +msgstr "carnet d'adresses" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:127 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:104 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:93 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:104 msgid "addressbooks" -msgstr "" +msgstr "carnets d'adresses" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:129 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:106 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:95 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:106 msgid "private" -msgstr "" +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 "" +msgstr "principal" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:133 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:110 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:99 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:110 msgid "router" -msgstr "" +msgstr "routeur" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:135 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:112 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:101 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:112 msgid "published" -msgstr "" +msgstr "publié" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:137 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:114 @@ -215,7 +210,7 @@ msgstr "" #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:102 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:114 msgid "subscriptions" -msgstr "" +msgstr "souscriptions" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:139 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:102 @@ -223,258 +218,217 @@ msgstr "" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:105 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:116 msgid "configuration" -msgstr "" +msgstr "configuration" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:141 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:118 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:107 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:118 msgid "overview" -msgstr "" +msgstr "aperçu" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:163 msgid "Filter" -msgstr "" +msgstr "Filtrer" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:166 msgid "all" -msgstr "" +msgstr "tout" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:177 msgid "Current filter" -msgstr "" +msgstr "Filtre courant" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:182 msgid "clear filter" -msgstr "" +msgstr "effacer le filtre" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:224 msgid "Name" -msgstr "" +msgstr "Nom" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:226 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:362 msgid "Destination" -msgstr "" +msgstr "Destination" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:257 msgid "Mark for deletion" -msgstr "" +msgstr "Marquer pour suppression" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:279 msgid "address helper link" -msgstr "" +msgstr "lien d'aide d'adresse" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:312 msgid "Cancel" -msgstr "" +msgstr "Annuler" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345 msgid "This addressbook is empty." -msgstr "" +msgstr "Ce carnet d'adresses est vide" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:356 msgid "Add new destination" -msgstr "" +msgstr "Ajoutez une nouvelle destination" #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:358 msgid "Hostname" -msgstr "" +msgstr "Nom d'hôte" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:132 msgid "Hints" -msgstr "" +msgstr "Aides" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134 -msgid "" -"File and directory paths here are relative to the addressbook's working " -"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P" -"\\addressbook\\ (Windows)." -msgstr "" +msgid "File and directory paths here are relative to the addressbook's working directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P\\addressbook\\ (Windows)." +msgstr "Les chemins des fichiers et dossiers listés sont relatifs au répertoire de travail du carnet d'adresses, normalement ~/.i2p/addressbook/ (Linux) ou %APPDATA%\\I2P\\addressbook\\ (Windows)." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:136 -msgid "" -"If you want to manually add lines to an addressbook, add them to the private " -"or master addressbooks." -msgstr "" +msgid "If you want to manually add lines to an addressbook, add them to the private or master addressbooks." +msgstr "si vous voulez ajouter manuellement des lignes dans un carnet d'adresses, faites-le dans le carnet privé ou principal." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:138 -msgid "" -"The router addressbook and the published addressbook are updated by the " -"addressbook application." -msgstr "" +msgid "The router addressbook and the published addressbook are updated by the addressbook application." +msgstr "Le carnet d'adresses du routeur et le carnet d'adresses publié sont mis à jour par l'application carnet d'adresses." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:140 -msgid "" -"When you publish your addressbook, ALL destinations from the master and " -"router addressbooks appear there." -msgstr "" +msgid "When you publish your addressbook, ALL destinations from the master and router addressbooks appear there." +msgstr "Quand vous publiez votre carnet d'adresses, TOUTES les destinations des carnets principal et routeur le sont." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142 -msgid "" -"Use the private addressbook for private destinations, these are not " -"published." -msgstr "" +msgid "Use the private addressbook for private destinations, these are not published." +msgstr "Utilisez le carnet d'adresses privé pour les destinations privées: elles ne seront pas publiées." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144 msgid "Options" -msgstr "" +msgstr "Options" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146 msgid "File containing the list of subscriptions URLs (no need to change)" -msgstr "" +msgstr "fichier contenant la liste des URLs de souscriptions (inutile de modifier)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148 msgid "Update interval in hours" -msgstr "" +msgstr "Intervalle de mise à jour (en heures)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150 -msgid "" -"Your public hosts.txt file (choose a path within your webserver document " -"root)" -msgstr "" +msgid "Your public hosts.txt file (choose a path within your webserver document root)" +msgstr "Votre fichier hosts.txt (choisissez un emplacement dans la racine de votre serveur web)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152 msgid "Your hosts.txt (don't change)" -msgstr "" +msgstr "Votre hosts.txt (ne pas modifier)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:154 msgid "Your personal addressbook, these hosts will be published" -msgstr "" +msgstr "Votre carnet d'adresses personnel: ces hôtes peuvent être publiés" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:156 msgid "Your private addressbook, it is never published" -msgstr "" +msgstr "Votre carnet d'adresses privé n'est jamais publié" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158 msgid "Port for your eepProxy (no need to change)" -msgstr "" +msgstr "Port de votre proxy eep (inutile de modifier)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160 msgid "Hostname for your eepProxy (no need to change)" -msgstr "" +msgstr "nom d'hôte de votre proxy eep (inutile de modifier)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162 msgid "Whether to update the published addressbook" -msgstr "" +msgstr "S'il faut actualiser le carnet d'adresses publié" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164 -msgid "" -"File containing the etags header from the fetched subscription URLs (no need " -"to change)" -msgstr "" +msgid "File containing the etags header from the fetched subscription URLs (no need to change)" +msgstr "Fichier contenant les en-têtes etag des URLs de souscription (inutile de changer)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:166 -msgid "" -"File containing the modification timestamp for each fetched subscription URL " -"(no need to change)" -msgstr "" +msgid "File containing the modification timestamp for each fetched subscription URL (no need to change)" +msgstr "Fichier contenant les tampons horaires de modification de chaque URL de souscription importée (inutile de modifier)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168 msgid "File to log activity to (change to /dev/null if you like)" -msgstr "" +msgstr "Fichier d'historiques (modifiez en /dev/null si ça vous chante) " #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:91 msgid "Introduction" -msgstr "" +msgstr "Introduction" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:109 msgid "What is the addressbook?" -msgstr "" +msgstr "Qu'est-ce que le carnet d'adresses?" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:111 msgid "The addressbook application is part of your i2p installation." -msgstr "" +msgstr "L'application carnet d'adresses fait partie intégrante de votre installation I2P." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113 -msgid "" -"It regularly updates your hosts.txt file from distributed sources or " -"\"subscriptions\"." -msgstr "" +msgid "It regularly updates your hosts.txt file from distributed sources or \"subscriptions\"." +msgstr "Elle actualise votre fichier hosts.txt à intervalle régulier à partir de sources décentralisées (\"souscriptions\" ou \"abonnements\")" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115 -msgid "" -"In the default configuration, the addressbook is only subscribed to www.i2p2." -"i2p." -msgstr "" +msgid "In the default configuration, the addressbook is only subscribed to www.i2p2.i2p." +msgstr "Dans sa configuration par défaut, le carnet d'adresses est seulement abonné à www.i2p2.i2p." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117 -msgid "" -"Subscribing to additional sites is easy, just add them to your subscriptions file." -msgstr "" +msgid "Subscribing to additional sites is easy, just add them to your subscriptions file." +msgstr "La souscription à des sites supplémentaires est aisée: ajoutez-les simplement à votre fichier de souscriptions ." #: ../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 "" +msgid "For more information on naming in i2p, see the overview on www.i2p2.i2p." +msgstr "Plus d'infos sur le nommage dans I2P." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121 msgid "How does the addressbook work?" -msgstr "" +msgstr "Comment le carnet d'adresses fonctionne-t-il?" #: ../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 "" +msgid "The addressbook application regularly polls your subscriptions and merges their content into your \"router\" addressbook, stored in the hosts.txt file." +msgstr "L'application carnet d'adresses interroge vos souscriptions à intervalle régulier et fusionne leurs contenus dans le carnet d'adresses du \"routeur\", stocké dans le fichier hosts.txt." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125 -msgid "" -"Then it merges your \"master\" addressbook (userhosts.txt) into the router " -"addressbook as well." -msgstr "" +msgid "Then it merges your \"master\" addressbook (userhosts.txt) into the router addressbook as well." +msgstr "Puis elle fusionne votre carnet d'adresses \"principal\" (userhosts.txt) dans celui du routeur. " #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:127 -msgid "" -"If configured, the router addressbook is now written to the \"published\" " -"addressbook, which will be publicly available if you are running an eepsite." -msgstr "" +msgid "If configured, the router addressbook is now written to the \"published\" addressbook, which will be publicly available if you are running an eepsite." +msgstr "Si c'est activé, le carnet du routeur est alors écrit dans le carnet d'adresses \"publié\" qui devient publiquement disponible si vous avez votre propre site eep." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:129 -msgid "" -"The router also uses a private addressbook (privatehosts.txt, not shown in " -"the picture), which is not merged or published." -msgstr "" +msgid "The router also uses a private addressbook (privatehosts.txt, not shown in the picture), which is not merged or published." +msgstr "Le routeur utilise également un carnet privé (privatehosts.txt, non illustré), qui n'est ni fusionné ni publié." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:131 -msgid "" -"Hosts in the private addressbook can be accessed by you but their addresses " -"are never distributed to others." -msgstr "" +msgid "Hosts in the private addressbook can be accessed by you but their addresses are never distributed to others." +msgstr "Les hôtes du carnet privé ne sont accessibles qu'à vous et leurs adresses ne sont jamais distribuées à personne." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:133 -msgid "" -"The private addressbook can also be used for aliases of hosts in your other " -"addressbooks." -msgstr "" +msgid "The private addressbook can also be used for aliases of hosts in your other addressbooks." +msgstr "Le carnet privé peut aussi servir à stocker des alias/pseudos pour des hôtes des autres carnets." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132 msgid "The subscription file contains a list of i2p URLs." -msgstr "" +msgstr "Le fichier de souscriptions contient une liste d'URLs i2p." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134 -msgid "" -"The addressbook application regularly checks this list for new eepsites." -msgstr "" +msgid "The addressbook application regularly checks this list for new eepsites." +msgstr "L'application vérifie régulièrement cette liste pour trouver de nouveaux sites eep." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136 msgid "Those URLs refer to published hosts.txt files." -msgstr "" +msgstr "Ces URLs s'abreuvent aux fichiers hosts.txt des autres utilisateurs." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138 -msgid "" -"The default subscription is the hosts.txt from www.i2p2.i2p, which is " -"updated infrequently." -msgstr "" +msgid "The default subscription is the hosts.txt from www.i2p2.i2p, which is updated infrequently." +msgstr "L'abonnement par défaut est le fichier hosts.txt de www.i2p2.i2p, qui est très peu actualisé." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:140 -msgid "" -"So it is a good idea to add additional subscriptions to sites that have the " -"latest addresses." -msgstr "" +msgid "So it is a good idea to add additional subscriptions to sites that have the latest addresses." +msgstr "C'est donc une bonne idée d'ajouter des souscriptions supplémentaires à des sites qui ont les dernières adresses." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142 msgid "See the FAQ for a list of subscription URLs." -msgstr "" +msgstr "Voir la FAQ pour une liste d'URLs de souscriptions." + From 0cb10f9bb1a23cad470c15227a82be71a151e469 Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 24 Mar 2011 15:08:14 +0000 Subject: [PATCH 325/463] upd --- apps/i2psnark/locale/messages_fr.po | 188 +++++++++------------------- 1 file changed, 59 insertions(+), 129 deletions(-) diff --git a/apps/i2psnark/locale/messages_fr.po b/apps/i2psnark/locale/messages_fr.po index 59eb11645..8810c8702 100644 --- a/apps/i2psnark/locale/messages_fr.po +++ b/apps/i2psnark/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-12-28 00:08+0000\n" -"PO-Revision-Date: 2011-03-22 22:58+0100\n" +"PO-Revision-Date: 2011-03-24 16:06+0100\n" "Last-Translator: \n" "Language-Team: foo \n" "Language: \n" @@ -40,15 +40,13 @@ msgid "Minimum up bandwidth limit is {0}KBps" msgstr "La limite minimale d’upload est {0} Ko/s" #: ../java/src/org/klomp/snark/SnarkManager.java:335 -#, fuzzy, java-format +#, java-format msgid "Startup delay changed to {0}" -msgstr "Delais de démarrage modifié : {0} minutes" +msgstr "Délai de démarrage modifié à {0} minutes" #: ../java/src/org/klomp/snark/SnarkManager.java:386 msgid "I2CP and tunnel changes will take effect after stopping all torrents" -msgstr "" -"Les modifications I2CP et des tunnels seront prise en compte après avoir " -"arrêté tous les torrents" +msgstr "Les modifications I2CP et des tunnels seront prise en compte après avoir arrêté tous les torrents" #: ../java/src/org/klomp/snark/SnarkManager.java:393 msgid "Disconnecting old I2CP destination" @@ -60,11 +58,8 @@ msgid "I2CP settings changed to {0}" msgstr "Les paramètres I2CP ont été changés : {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:402 -msgid "" -"Unable to connect with the new settings, reverting to the old I2CP settings" -msgstr "" -"Impossible de se connecter avec les nouveaux paramètres, retour à l'ancienne " -"configuration I2CP" +msgid "Unable to connect with the new settings, reverting to the old I2CP settings" +msgstr "Impossible de se connecter avec les nouveaux paramètres, retour à l'ancienne configuration I2CP" #: ../java/src/org/klomp/snark/SnarkManager.java:406 msgid "Unable to reconnect with the old settings!" @@ -89,21 +84,15 @@ msgstr "Le démarrage automatique est désactivé" #: ../java/src/org/klomp/snark/SnarkManager.java:437 msgid "Enabled open trackers - torrent restart required to take effect." -msgstr "" -"Les open trackers sont activés - ceci a nécessité un redémarrage des " -"torrents pour être pris en compte." +msgstr "Les open trackers sont activés - ceci a nécessité un redémarrage des torrents pour être pris en compte." #: ../java/src/org/klomp/snark/SnarkManager.java:439 msgid "Disabled open trackers - torrent restart required to take effect." -msgstr "" -"Les open trackers sont désactivés - ceci a nécessité un redémarrage des " -"torrents pour être pris en compte." +msgstr "Les open trackers sont désactivés - ceci a nécessité un redémarrage des torrents pour être pris en compte." #: ../java/src/org/klomp/snark/SnarkManager.java:447 msgid "Open Tracker list changed - torrent restart required to take effect." -msgstr "" -"Liste des Open trackers modifiée - ceci nécessite un redémarrage des " -"torrents pour être pris en compte" +msgstr "Liste des Open trackers modifiée - ceci nécessite un redémarrage des torrents pour être pris en compte" #: ../java/src/org/klomp/snark/SnarkManager.java:454 #, java-format @@ -143,30 +132,21 @@ msgstr "Impossible d’ouvrir: \"{0}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:661 #: ../java/src/org/klomp/snark/SnarkManager.java:716 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976 -#, fuzzy, java-format +#, java-format msgid "Torrent with this info hash is already running: {0}" -msgstr "Torrent déjà actif: {0}" +msgstr "Un torrent avec cette empreinte est déjà actif: {0}" #. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); #: ../java/src/org/klomp/snark/SnarkManager.java:593 -#, fuzzy, java-format -msgid "" -"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers " -"only." -msgstr "" -"Attention - Les trackers non-i2p dans \"{0}\" sont ignorés, seuls les open " -"trackers I2P seront utilisés!" +#, java-format +msgid "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers only." +msgstr "Attention - Les trackers non-i2p dans \"{0}\" sont ignorés, seuls les trackers ouverts I2P seront utilisés!" #. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); #: ../java/src/org/klomp/snark/SnarkManager.java:598 -#, fuzzy, java-format -msgid "" -"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is " -"enabled before starting this torrent." -msgstr "" -"Attention - Les trackers non-i2p dans \"{0}\" sont ignorés, et les open " -"trackers sont désactivés, vous devez activer les open trackers avant de " -"démarrer le torrent!" +#, java-format +msgid "Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is enabled before starting this torrent." +msgstr "Attention - aucun tracker i2p dans \"{0}\". Vous devez activer les open trackers avant de démarrer le torrent!" #: ../java/src/org/klomp/snark/SnarkManager.java:619 #, java-format @@ -177,7 +157,7 @@ msgstr "Le torrent dans \"{0}\" est invalide" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" -msgstr "" +msgstr "ERREUR - Mémoire insuffisante, impossible de créer le torrent de {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:635 #, java-format @@ -197,20 +177,18 @@ msgstr "Envoi {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:675 #, java-format -msgid "" -"We have no saved peers and no other torrents are running. Fetch of {0} will " -"not succeed until you start another torrent." -msgstr "" +msgid "We have no saved peers and no other torrents are running. Fetch of {0} will not succeed until you start another torrent." +msgstr "Aucun pair sauvegardé et aucun autre torrent en cours. Le téléchargement de {0} ne commencera que lorsque vous démarrerez un autre torrent." #: ../java/src/org/klomp/snark/SnarkManager.java:679 -#, fuzzy, java-format +#, java-format msgid "Adding {0}" -msgstr "Envoi {0}" +msgstr "Ajout {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:726 #: ../java/src/org/klomp/snark/SnarkManager.java:749 #: ../java/src/org/klomp/snark/SnarkManager.java:1174 -#, fuzzy, java-format +#, java-format msgid "Failed to copy torrent file to {0}" msgstr "Impossible de copier le torrent vers {0}" @@ -222,9 +200,7 @@ msgstr "Trop de fichiers dans \"{0}\" ({1}), suppression! " #: ../java/src/org/klomp/snark/SnarkManager.java:974 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" -msgstr "" -"Le fichier torrent \"{0}\" ne peut pas se terminer par \".torrent\", " -"suppression!" +msgstr "Le fichier torrent \"{0}\" ne peut pas se terminer par \".torrent\", suppression!" #: ../java/src/org/klomp/snark/SnarkManager.java:976 #, java-format @@ -249,9 +225,7 @@ msgstr "La limite est de \"{0}\"Octets" #: ../java/src/org/klomp/snark/SnarkManager.java:989 #, java-format msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" -msgstr "" -"Les torrents dont la taille est supérieure à \"{0}\"Octets ne sont pas " -"encore supportés, suppression \"{1}\"." +msgstr "Les torrents dont la taille est supérieure à \"{0}\"Octets ne sont pas encore supportés, suppression \"{1}\"." #: ../java/src/org/klomp/snark/SnarkManager.java:1005 #, java-format @@ -270,9 +244,9 @@ msgid "Torrent removed: \"{0}\"" msgstr "Torrent supprimé:\"{0}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:1073 -#, fuzzy, java-format +#, java-format msgid "Adding torrents in {0}" -msgstr "Ajouter des torrents dans {0} minutes" +msgstr "Ajout des torrents dans {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:1122 #, java-format @@ -280,9 +254,9 @@ msgid "Download finished: {0}" msgstr "Téléchargement terminé:\"{0}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:1170 -#, fuzzy, java-format +#, java-format msgid "Metainfo received for {0}" -msgstr "Le torrent n’a pas été reçu par {0}" +msgstr "Metainfo reçue pour {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:1171 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525 @@ -426,15 +400,15 @@ msgstr[0] "1 pair connecté" msgstr[1] "{0} pairs connectés" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496 -#, fuzzy, java-format +#, java-format msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" -msgstr "URL invalide - elle doit débuter par http://" +msgstr "URL incorrecte - elle doit débuter par \"http://\", \"{0}\", ou \"{1}\"" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571 -#, fuzzy, java-format +#, java-format msgid "Magnet deleted: {0}" -msgstr "Répertoire des données effacé: {0}" +msgstr "Magnet supprimé: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 @@ -461,8 +435,7 @@ msgstr "Répertoire des données effacé: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 msgid "Error creating torrent - you must select a tracker" -msgstr "" -"Erreur lors de la création du torrent - vous devez sélectionner un tracker" +msgstr "Erreur lors de la création du torrent - vous devez sélectionner un tracker" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653 #, java-format @@ -471,12 +444,8 @@ msgstr "Torrent créé pour \"{0}\"" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655 #, java-format -msgid "" -"Many I2P trackers require you to register new torrents before seeding - " -"please do so before starting \"{0}\"" -msgstr "" -"De nombreux trackers I2P nécessitent d’enregistrer les nouveaux torrents " -"avant de seeder - faites-le avant de démarrer \"{0}\"!" +msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\"" +msgstr "De nombreux trackers I2P nécessitent d’enregistrer les nouveaux torrents avant de seeder - faites-le avant de démarrer \"{0}\"!" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657 #, java-format @@ -490,8 +459,7 @@ msgstr "Impossible de créer un torrent pour des données inexistantes: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663 msgid "Error creating torrent - you must enter a file or directory" -msgstr "" -"Erreur de création du torrent - vous devez saisir un fichier ou un répertoire" +msgstr "Erreur de création du torrent - vous devez saisir un fichier ou un répertoire" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 msgid "Stopping all torrents and closing the I2P tunnel." @@ -602,12 +570,8 @@ msgstr "Enlever le torrent de la liste active, suprression du fichier .torrent" #. Then the remaining single quite must be escaped #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 #, java-format -msgid "" -"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded " -"data will not be deleted) ?" -msgstr "" -"Etes-vous certain de vouloir supprimer le fichier \\''{0}.torrent\\'' (les " -"données déjà téléchargées ne seront pas supprimées) ?" +msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?" +msgstr "Etes-vous certain de vouloir supprimer le fichier \\''{0}.torrent\\'' (les données déjà téléchargées ne seront pas supprimées) ?" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990 msgid "Remove" @@ -615,20 +579,15 @@ msgstr "Enlever" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001 msgid "Delete the .torrent file and the associated data file(s)" -msgstr "" -"Supprimer le fichier .torrent et le(s) fichier(s) de données associé(s)" +msgstr "Supprimer le fichier .torrent et le(s) fichier(s) de données associé(s)" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006 #, java-format -msgid "" -"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " -"data?" -msgstr "" -"Etes-vous certain de vouloir supprimer le torrent \\''{0}\\'' ainsi que " -"toutes les données téléchargées ?" +msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?" +msgstr "Etes-vous certain de vouloir supprimer le torrent \\''{0}\\'' ainsi que toutes les données téléchargées ?" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009 msgid "Delete" @@ -659,9 +618,9 @@ msgid "Choking (We are not allowing the peer to request pieces)" msgstr "bridage (nous ne permettons pas au pair de demander un morceau)" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159 -#, fuzzy, java-format +#, java-format msgid "Details at {0} tracker" -msgstr "Sélectionner un tracker" +msgstr "Détails au tracker {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1188 msgid "Add Torrent" @@ -672,9 +631,8 @@ msgid "From URL" msgstr "Depuis l'url" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193 -msgid "" -"Enter the torrent file download URL (I2P only), magnet link, or maggot link" -msgstr "" +msgid "Enter the torrent file download URL (I2P only), magnet link, or maggot link" +msgstr "Entrez l'URL (i2p uniquement) de téléchargement du fichier torrent, du lien magnet ou maggot." #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198 msgid "Add torrent" @@ -713,9 +671,8 @@ msgstr "Sélectionner un tracker" #. out.write(_("Open trackers and DHT only")); #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 -#, fuzzy msgid "Open trackers only" -msgstr "Utiliser les open trackers aussi" +msgstr "Trackers ouverts seulement" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257 msgid "or" @@ -740,8 +697,7 @@ msgstr "Répertoire de données" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287 msgid "Edit i2psnark.config and restart to change" -msgstr "" -"Editez i2psnark.config et redémarrez pour prendre en compte les modifications" +msgstr "Editez i2psnark.config et redémarrez pour prendre en compte les modifications" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 msgid "Auto start" @@ -788,12 +744,8 @@ msgid "Use open trackers also" msgstr "Utiliser les open trackers aussi" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 -msgid "" -"If checked, announce torrents to open trackers as well as the tracker listed " -"in the torrent file" -msgstr "" -"Si coché, les torrents seront annoncés vers les open trackers ainsi que vers " -"les trackers indiqués dans le fichier torrent" +msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file" +msgstr "Si coché, les torrents seront annoncés vers les open trackers ainsi que vers les trackers indiqués dans le fichier torrent" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362 msgid "Open tracker announce URLs" @@ -826,12 +778,12 @@ msgstr "Sauvegarder la configuration" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436 #, java-format msgid "Invalid magnet URL {0}" -msgstr "" +msgstr "URL magnet {0} incorrecte" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470 #, java-format msgid "Invalid info hash in magnet URL {0}" -msgstr "" +msgstr "Info d'empreinte incorrecte dans l'URL magnet {0}" #. * dummies for translation #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1500 @@ -849,9 +801,8 @@ msgstr[0] "1 tunnel" msgstr[1] "{0} tunnels" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 -#, fuzzy msgid "Completion" -msgstr "Complet" +msgstr "Finalisation" #. else unknown #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 @@ -860,21 +811,20 @@ msgid "Size" msgstr "Taille" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 -#, fuzzy msgid "Files" -msgstr "Fichier" +msgstr "Fichiers" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674 msgid "Pieces" -msgstr "" +msgstr "Pièces" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675 msgid "Piece size" -msgstr "" +msgstr "Taille des pièces" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697 msgid "Magnet link" -msgstr "" +msgstr "Lien magnet" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753 @@ -906,9 +856,8 @@ msgid "bytes remaining" msgstr "Octets restants" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806 -#, fuzzy msgid "Open" -msgstr "Ouvrir fichier" +msgstr "Ouvrir" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1832 msgid "High" @@ -958,66 +907,47 @@ msgstr "Le torrent n’a pas été reçu par {0}" #~ msgid "Torrent file must originate from an I2P-based tracker" #~ msgstr "Le fichier torrent doit provenir d'un tracker I2P" - #~ msgid "size: {0}B" #~ msgstr "Taille: {0}Octets" - #~ msgid "Estimated Download Time" #~ msgstr "Temps estimé de téléchargement" - #~ msgid "Torrent file {0} does not exist" #~ msgstr "Le fichier torrent {0} n'existe pas" - #~ msgid "Copying torrent to {0}" #~ msgstr "Copie du torrent vers {0}" - #~ msgid "from {0}" #~ msgstr "depuis {0}" - #~ msgid "Downloading" #~ msgstr "Téléchargement en cours" - #~ msgid "FileSize" #~ msgstr "Taille du fichier" - #~ msgid "Download Status" #~ msgstr "État du téléchargement" - #~ msgid "Details" #~ msgstr "Détails" - #~ msgid "Depuis l'URL" #~ msgstr "Quell-URL" - #~ msgid "Directory to store torrents and data" #~ msgstr "Répertoire de stockage des torrents et des données" - #~ msgid "Cannot change the I2CP settings while torrents are active" #~ msgstr "" #~ "On ne peut changer les paramètres I2CP pendant que des torrents sont " #~ "actifs" - #~ msgid "Non-i2p tracker in \"{0}\", deleting it from our list of trackers!" #~ msgstr "" #~ "Tracker non-i2p dans \"{0}\", suppression de notre liste de trackers!" - #~ msgid "{0} torrents" #~ msgstr "{0} Torrents" - #~ msgid "Uninteresting" #~ msgstr "Pas intéressant" - #~ msgid "Choked" #~ msgstr "Choked" - #~ msgid "Uninterested" #~ msgstr "Pas interessé" - #~ msgid "Choking" #~ msgstr "Choking" - #~ msgid "Custom tracker URL" #~ msgstr "URL tracker spécifique" - #~ msgid "Configure" #~ msgstr "Configurer" + From 0680725582b02b82d8a5992b2bf3a2f6f08b7135 Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 24 Mar 2011 15:37:38 +0000 Subject: [PATCH 326/463] upd --- apps/routerconsole/locale/messages_fr.po | 251 +++++++---------------- 1 file changed, 74 insertions(+), 177 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index f601985e0..b2c6ae8b6 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-11-19 18:16+0000\n" -"PO-Revision-Date: 2011-03-22 17:24+0100\n" +"PO-Revision-Date: 2011-03-24 16:35+0100\n" "Last-Translator: \n" "Language-Team: foo \n" "Language: \n" @@ -84,7 +84,6 @@ msgid "Banned by router hash: {0}" msgstr "Banni(s) pour hachage routeur hash: {0}" #: ../../../router/java/src/net/i2p/router/Blocklist.java:124 -#, fuzzy msgid "Banned by router hash" msgstr "Banni via hachage du routeur" @@ -149,7 +148,6 @@ msgstr "Rejet de tunnels" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:105 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 -#, fuzzy msgid "Reseeding" msgstr "Réamorçage en cours" @@ -207,16 +205,12 @@ msgid "{0} is used for outbound connections only" msgstr "{0} est utilisé seulement pour les connexions sortantes" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 -msgid "" -"Your transport connection limits are automatically set based on your " -"configured bandwidth." -msgstr "" +msgid "Your transport connection limits are automatically set based on your configured bandwidth." +msgstr "Vos limites de connexion de transport sont réglées automatiquement selon votre configuration de bande passante." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 -msgid "" -"To override these limits, add the settings i2np.ntcp.maxConnections=nnn and " -"i2np.udp.maxConnections=nnn on the advanced configuration page." -msgstr "" +msgid "To override these limits, add the settings i2np.ntcp.maxConnections=nnn and i2np.udp.maxConnections=nnn on the advanced configuration page." +msgstr "Pour modifier ces limites, ajoutez les réglages i2np.ntcp.maxConnections=nnn et i2np.udp.maxConnections=nnn dans la configuration avancée." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 @@ -1445,7 +1439,8 @@ msgstr "Saint-Vincent-et-les 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 "Ïles Vierges" @@ -1515,9 +1510,8 @@ msgstr "Sauvegarder Configuration Client " #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:39 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:405 -#, fuzzy msgid "Save Interface Configuration" -msgstr "Sauvegarder Configuration Client " +msgstr "Sauvegarder la configuration de l'interface" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 @@ -1572,11 +1566,8 @@ msgid "New client added" msgstr "Nouveau client ajouté" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:193 -msgid "" -"Client configuration saved successfully - restart required to take effect." -msgstr "" -"La configuration du client a été sauvegardé avec succès - redémarrer pour " -"prendre effet. " +msgid "Client configuration saved successfully - restart required to take effect." +msgstr "La configuration du client a été sauvegardé avec succès - redémarrer pour prendre effet. " #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 @@ -1659,12 +1650,8 @@ msgid "Error starting plugin {0}" msgstr "Erreur de démarrage du greffon {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 -#, fuzzy -msgid "" -"Interface configuration saved successfully - restart required to take effect." -msgstr "" -"La configuration du client a été sauvegardé avec succès - redémarrer pour " -"prendre effet. " +msgid "Interface configuration saved successfully - restart required to take effect." +msgstr "La configuration de l'interface a été sauvegardée avec succès - redémarrer pour prise en compte." #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:85 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258 @@ -2061,24 +2048,21 @@ msgstr "Mauvaise valeur de capacité" #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:17 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 -#, fuzzy msgid "Save changes and reseed now" -msgstr "Sauvegarder" +msgstr "Sauvegarder et réamorcer" #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:21 -#, fuzzy msgid "Reseeding is already in progress" -msgstr "Création d'un tunnel en cours" +msgstr "Réamorçage déjà en cours" #. skip the nonce checking in ReseedHandler #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:24 msgid "Starting reseed process" -msgstr "" +msgstr "Processus de réamorçage en cours." #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:66 -#, fuzzy msgid "Configuration saved successfully." -msgstr "Configuration sauvegardé avec succès" +msgstr "Configuration sauvegardée" #. Normal browsers send value, IE sends button label #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:32 @@ -2369,7 +2353,7 @@ msgstr "Réactualiser la page." #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 msgid "Arabic" -msgstr "" +msgstr "Arabe" #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "English" @@ -2393,7 +2377,7 @@ msgstr "Néerlandais" #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Portuguese" -msgstr "" +msgstr "Portugais" #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Russian" @@ -2413,9 +2397,7 @@ msgstr "Mise à jour disponible, en tentant de la télécharger actuellement" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:87 msgid "Update available, click button on left to download" -msgstr "" -"Mise à jour disponible, cliquez sur le bouton sur la gauche pour la " -"télécharger" +msgstr "Mise à jour disponible, cliquez sur le bouton sur la gauche pour la télécharger" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:93 msgid "No update available" @@ -3403,11 +3385,8 @@ msgid "Uptime" msgstr "Temps de service" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 -msgid "" -"Help with configuring your firewall and router for optimal I2P performance" -msgstr "" -"Aide avec la configuration du pare-feu et du routeur afin d'optimiser la " -"performance d'I2P" +msgid "Help with configuring your firewall and router for optimal I2P performance" +msgstr "Aide avec la configuration du pare-feu et du routeur afin d'optimiser la performance d'I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 msgid "Download" @@ -4146,12 +4125,8 @@ msgid "Bandwidth limiter" msgstr "Limiteur de bande passante" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:300 -msgid "" -"I2P will work best if you configure your rates to match the speed of your " -"internet connection." -msgstr "" -"I2P fonctionnera mieux si vous configurez le débit de transmission et " -"réception pour qu'ils soient égales à ceux de votre connexion internet." +msgid "I2P will work best if you configure your rates to match the speed of your internet connection." +msgstr "I2P fonctionnera mieux si vous configurez le débit de transmission et réception pour qu'ils soient égales à ceux de votre connexion internet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:304 msgid "KBps In" @@ -4178,23 +4153,15 @@ msgstr "Vous avez configuré I2P à partager que {0} KOps." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:346 msgid "I2P requires at least 12KBps to enable sharing. " -msgstr "" -"I2P a besoin de plus de 12KOps afin d'activer le partage de bande passante" +msgstr "I2P a besoin de plus de 12KOps afin d'activer le partage de bande passante" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347 -msgid "" -"Please enable sharing (participating in tunnels) by configuring more " -"bandwidth. " -msgstr "" -"Veuillez activer le partage de bande passante (tunnels participants) en " -"augmentant votre bande passante." +msgid "Please enable sharing (participating in tunnels) by configuring more bandwidth. " +msgstr "Veuillez activer le partage de bande passante (tunnels participants) en augmentant votre bande passante." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:348 -msgid "" -"It improves your anonymity by creating cover traffic, and helps the network." -msgstr "" -"Cela aidera votre anonymat en cachant vos données parmi les données des " -"autres, et cela améliorera le réseau." +msgid "It improves your anonymity by creating cover traffic, and helps the network." +msgstr "Cela aidera votre anonymat en cachant vos données parmi les données des autres, et cela améliorera le réseau." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:351 #, java-format @@ -4202,12 +4169,8 @@ msgid "You have configured I2P to share {0} KBps." msgstr "Vous avez configuré I2P à partager {0} KOps." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:354 -msgid "" -"The higher the share bandwidth the more you improve your anonymity and help " -"the network." -msgstr "" -"En partageant plus de votre bande passante, vous améliorerez votre anonymat " -"et le réseau." +msgid "The higher the share bandwidth the more you improve your anonymity and help the network." +msgstr "En partageant plus de votre bande passante, vous améliorerez votre anonymat et le réseau." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:358 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514 @@ -4331,8 +4294,7 @@ msgstr "s'il n'y a pas de pare-feu" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:475 msgid "Always use auto-detected IP address (Not firewalled)" -msgstr "" -"Utiliser toujours l'adresse IP qui a été auto-détectée (pas de pare-feu)" +msgstr "Utiliser toujours l'adresse IP qui a été auto-détectée (pas de pare-feu)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 msgid "Disable inbound (Firewalled)" @@ -4343,11 +4305,8 @@ msgid "Completely disable" msgstr "Desactiver complètement" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:491 -msgid "" -"(select only if behind a firewall that throttles or blocks outbound TCP)" -msgstr "" -"(selectionner seulement si derrière un pare-feu qui limite les connexions " -"sortantes TCP)" +msgid "(select only if behind a firewall that throttles or blocks outbound TCP)" +msgstr "(selectionner seulement si derrière un pare-feu qui limite les connexions sortantes TCP)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 msgid "Externally reachable TCP port" @@ -4369,8 +4328,7 @@ msgstr "Noter" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:512 msgid "Changing these settings will restart your router." -msgstr "" -"Un changement de cette configuration entraînera un redémarrage du routeur" +msgstr "Un changement de cette configuration entraînera un redémarrage du routeur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:518 msgid "Configuration Help" @@ -4394,51 +4352,28 @@ msgid "Most of the options above are for special situations, for example where U msgstr "Le plupart des possibilités décrites ci-avant sont pour les situtations particulieres, par exemple le cas où UPnP ne fonctionne pas correctement, ou un pare-feu empeche la connexion au réseau I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:522 -msgid "" -"If you can, please poke a hole in your firewall to allow unsolicited UDP and " -"TCP packets to reach you." -msgstr "" -"Si vous pouvez, ouvrez un port dans votre pare-feu afin de permettre la " -"réception des les paquets TCP et UDP non sollicités." +msgid "If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you." +msgstr "Si vous pouvez, ouvrez un port dans votre pare-feu afin de permettre la réception des les paquets TCP et UDP non sollicités." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:524 -msgid "" -"If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole " -"punching with \"SSU introductions\" to relay traffic." -msgstr "" -"Si vous ne pouvez pas, I2P est compatible avec UPnp (Universal Plug and " -"Play) et \"UDP hole punching\" avec \"SSU introductions\" afin de relayer " -"le trafic I2P." +msgid "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic." +msgstr "Si vous ne pouvez pas, I2P est compatible avec UPnp (Universal Plug and Play) et \"UDP hole punching\" avec \"SSU introductions\" afin de relayer le trafic I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:526 -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 "" -"Le plupart des possibilités décrites ci-avant sont pour les situtations " -"particulieres, par exemple le cas où UPnP ne fonctionne pas correctement, ou " -"un pare-feu empeche la connexion au réseau I2P." +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 "Le plupart des possibilités décrites ci-avant sont pour les situtations particulieres, par exemple le cas où UPnP ne fonctionne pas correctement, ou un pare-feu empeche la connexion au réseau I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:528 msgid "Certain firewalls such as symmetric NATs may not work well with I2P." -msgstr "" -"Il y a des certains types de pare-feu (tel que les NAT symétriques) qui ne " -"fonctionnent pas bien avec I2P." +msgstr "Il y a des certains types de pare-feu (tel que les NAT symétriques) qui ne fonctionnent pas bien avec I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:537 -msgid "" -"UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect " -"the external IP address and forward ports." -msgstr "" -"UPnP est utilisé pour communiquer avec des \"Internet Gateway Devices " -"(IGDs)\" afin de détecter l'adresse IP extérieure et de contrôler la " -"redirection des ports." +msgid "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports." +msgstr "UPnP est utilisé pour communiquer avec des \"Internet Gateway Devices (IGDs)\" afin de détecter l'adresse IP extérieure et de contrôler la redirection des ports." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:539 msgid "UPnP support is beta, and may not work for any number of reasons" -msgstr "" -"UPnP est toujours en développement, et il peut arrêter de fonctionner " -"correctement à cause de " +msgstr "UPnP est toujours en développement, et il peut arrêter de fonctionner correctement à cause de " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:541 msgid "No UPnP-compatible device present" @@ -4462,48 +4397,31 @@ msgstr "Il y a plusieurs routeurs/pare-feux entre le routeur I2P et l'internet" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:551 msgid "UPnP device change, reset, or address change" -msgstr "" -"Un changement de l'appareil UPnP, une redémarrage, ou une changement " -"d'adresse IP" +msgstr "Un changement de l'appareil UPnP, une redémarrage, ou une changement d'adresse IP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:553 msgid "Review the UPnP status here." msgstr "Consulter le statut de UPnP ici." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 -msgid "" -"UPnP may be enabled or disabled above, but a change requires a router " -"restart to take effect." -msgstr "" -"UPnP peut être activé ou desactivé au-dessus, mais afin de prendre en compte " -"la changement il faut rédemarrer le routeur I2P." +msgid "UPnP may be enabled or disabled above, but a change requires a router restart to take effect." +msgstr "UPnP peut être activé ou desactivé au-dessus, mais afin de prendre en compte la changement il faut rédemarrer le routeur I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 msgid "Hostnames entered above will be published in the network database." -msgstr "" -"Les noms d'hôtes qui ont été saisis au-dessus seront publié dans la base de " -"données du réseau I2P." +msgstr "Les noms d'hôtes qui ont été saisis au-dessus seront publié dans la base de données du réseau I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 msgid "They are not private." msgstr "Ils ne sont pas privés." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 -msgid "" -"Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1." -msgstr "" -"En plus, ne saisissez pas une adresse IP privée tel que 127.0.0.1 ou " -"192.168.1.1." +msgid "Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1." +msgstr "En plus, ne saisissez pas une adresse IP privée tel que 127.0.0.1 ou 192.168.1.1." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 -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 "" -"Si vous saisissez une mauvaise adresse IP ou nom d'hôte, ou configurer votre " -"NAT ou pare-feu incorrectement, votre intégration avec le réseau I2P " -"dégradera substantiellement." +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 "Si vous saisissez une mauvaise adresse IP ou nom d'hôte, ou configurer votre NAT ou pare-feu incorrectement, votre intégration avec le réseau I2P dégradera substantiellement." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 msgid "When in doubt, leave the settings at the defaults." @@ -4574,11 +4492,8 @@ msgid "While I2P will work fine in this configuration, if you really have over 1 msgstr "Bien qu'I2P fonctionne très bien dans cette configuration, si vous avez plus de 128ko/s à partager, ça aiderait fortement le réseau si vous pouviez ouvrir votre pare-feu." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 -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 "" +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 "Bien qu'I2P fonctionne correctement dans cette configuration, si vous avez vraiment plus de 128 ko/s de bande passante à partager, il serait bénéfique pour le réseau que vous ouvriez votre pare-feu." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 msgid "WARN - Firewalled and Floodfill" @@ -4605,10 +4520,8 @@ msgid "If your TCP port is firewalled with inbound TCP enabled, routers will not msgstr "Si votre port TCp est bloqué et les connexions entrantes TCP activées dans la console, les routeurs ne pourront pas vous contacter via TCP, ce qui va perturber le réseau. " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 -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 "" +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 "Si votre port TCP entrant est activé ET bloqué par un pare-feu, les routeurs ne pourront pas le contacter par TCP, ce qui dégrade le réseau." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 msgid "Please open your firewall or disable inbound TCP above." @@ -4758,53 +4671,51 @@ msgstr "Tous les changements nécessitent un redémarrage pour prendre effet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:339 msgid "External I2CP (I2P Client Protocol) Interface Configuration" -msgstr "" +msgstr "Configuration de l'interface I2CP (I2P Client Protocol) externe" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 msgid "Enabled without SSL" -msgstr "" +msgstr "Activé sans SSL" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351 msgid "Enabled with SSL required" -msgstr "" +msgstr "Activé avec SLL requis" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 msgid "Disabled - Clients outside this Java process may not connect" -msgstr "" +msgstr "Désactivé: les clients hors de ce processus Java ne peuvent pas se connecter" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:359 msgid "I2CP Port" -msgstr "" +msgstr "Port I2CP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:363 -#, fuzzy msgid "I2CP Interface" -msgstr "Configuration" +msgstr "Interface i2CP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:379 -#, fuzzy msgid "Authorization" -msgstr "Autheur" +msgstr "Autorisation" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:385 msgid "Require username and password" -msgstr "" +msgstr "Utilisateur+Mot de passe requis" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:387 msgid "Username" -msgstr "" +msgstr "Utilisateur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:391 msgid "Password" -msgstr "" +msgstr "Mot de passe" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:397 msgid "Any changes made here must also be configured in the external client." -msgstr "" +msgstr "Tous les changements apportés ici doivent être répercutés dans le client externe." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:399 msgid "Many clients do not support SSL or authorization." -msgstr "" +msgstr "Nombre de clients ne prennent pas en charge l'authentification ou SSL." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:407 msgid "WebApp Configuration" @@ -4907,12 +4818,8 @@ msgid "Log date format" msgstr "Format de date des historiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 -msgid "" -"('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' " -"= millisecond)" -msgstr "" -"('MM' = mois, 'dd' = jour, 'HH' = heure, 'mm' = minute, 'ss' = seconde, " -"'SSS' = milliseconde)" +msgid "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)" +msgstr "('MM' = mois, 'dd' = jour, 'HH' = heure, 'mm' = minute, 'ss' = seconde, 'SSS' = milliseconde)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:321 msgid "Max log file size" @@ -4963,12 +4870,8 @@ msgid "Bonuses may be positive or negative, and affect the peer's inclusion in F msgstr "Les boni peuvent être positifs ou négatifs, et influencent l'affectation des pairs dans les groupes \"Rapides\" et \"Hautes capacités\". Les pairs rapides sont utilisés pour les tunnels clients, et les pairs à hautes capacités pour quelques tunnels exploratoires. Les boni actuels sont affichés sur la" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 -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 "" +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 "Les boni peuvent être positifs ou négatifs, et influencent l'inclusion des pairs dans les groupes \"Rapides\" et \"Hautes capacités\". Les pairs rapides servent pour les tunnels clients, et les pairs à hautes capacités servent pour quelques tunnels exploratoires. Les boni actuels sont affichés sur la" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:327 msgid "profiles page" @@ -5041,7 +4944,7 @@ msgstr "Si vous êtes sur Windows, vous pouvez (dés)activer cette icône ici." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 msgid "Hide systray icon" -msgstr "" +msgstr "Masquer l'icône de la zone de notification" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 msgid "Run on startup" @@ -5403,24 +5306,18 @@ msgstr "Résumé des tunnels I2P" #~ msgid "This is useful in some situations" #~ msgstr "C'est utile dans certains cas" - #~ msgid "Start Now" #~ msgstr "Démarrer tout de suite" - #~ msgid "Depth" #~ msgstr "Profondeur" - #~ msgid "view without" #~ msgstr "montrer sans" - #~ msgid "view with" #~ msgstr "montrer avec" - #~ msgid "Show the router's workload, and how it's performing" #~ msgstr "Montrer les tâches en cours" - #~ msgid "Jobs" #~ msgstr "Tâches" - #~ msgid "Tunnels in/out" #~ msgstr "Tunnels entrants/sortants" + From 6e08fd614a9e0617aa2cb1f1aa1dd8581e5f5fee Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 24 Mar 2011 16:53:10 +0000 Subject: [PATCH 327/463] after antpoupdate --- apps/susidns/locale/messages_fr.po | 210 +++++++++++++++++++++-------- 1 file changed, 157 insertions(+), 53 deletions(-) diff --git a/apps/susidns/locale/messages_fr.po b/apps/susidns/locale/messages_fr.po index a6d06456a..5be688a7b 100644 --- a/apps/susidns/locale/messages_fr.po +++ b/apps/susidns/locale/messages_fr.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: I2P susidns\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-13 11:54+0000\n" +"POT-Creation-Date: 2011-03-24 16:49+0000\n" "PO-Revision-Date: 2011-03-24 02:29+0100\n" "Last-Translator: \n" "Language-Team: duck \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -75,8 +76,12 @@ msgstr "L'hôte {0} est déjà présent: inchangé." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266 #, java-format -msgid "Host name {0} is already in addressbook with a different destination. Click \"Replace\" to overwrite." -msgstr "L'hôte {0} est déjà présent avec une destination différente. Cliquez sur \"Remplacer\"...pour le remplacer." +msgid "" +"Host name {0} is already in addressbook with a different destination. Click " +"\"Replace\" to overwrite." +msgstr "" +"L'hôte {0} est déjà présent avec une destination différente. Cliquez sur " +"\"Remplacer\"...pour le remplacer." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278 #, java-format @@ -122,8 +127,12 @@ msgstr "ERREUR: impossible d'enregistrer le fichier carnet d'adresses." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:148 #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151 -msgid "Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit." -msgstr "Soumission du formulaire incorrecte: vous avez peutêtre utilisé le bouton \"Page précédente\" ou \"Recharger\". Merci de soumettre à nouveau." +msgid "" +"Invalid form submission, probably because you used the \"back\" or \"reload" +"\" button on your browser. Please resubmit." +msgstr "" +"Soumission du formulaire incorrecte: vous avez peutêtre utilisé le bouton " +"\"Page précédente\" ou \"Recharger\". Merci de soumettre à nouveau." #: ../src/java/src/i2p/susi/dns/ConfigBean.java:139 #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130 @@ -153,8 +162,11 @@ msgstr "Configuration rechargée." #. with the correct parameters will kick off a #. config reload and fetch. #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:139 -msgid "Subscriptions saved, updating addressbook from subscription sources now." -msgstr "Souscriptions enregistrées, mise à jour en cours du carnet d'adresses à partir de celles-ci." +msgid "" +"Subscriptions saved, updating addressbook from subscription sources now." +msgstr "" +"Souscriptions enregistrées, mise à jour en cours du carnet d'adresses à " +"partir de celles-ci." #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143 msgid "Subscriptions saved." @@ -281,24 +293,46 @@ msgid "Hints" msgstr "Aides" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134 -msgid "File and directory paths here are relative to the addressbook's working directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P\\addressbook\\ (Windows)." -msgstr "Les chemins des fichiers et dossiers listés sont relatifs au répertoire de travail du carnet d'adresses, normalement ~/.i2p/addressbook/ (Linux) ou %APPDATA%\\I2P\\addressbook\\ (Windows)." +msgid "" +"File and directory paths here are relative to the addressbook's working " +"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P" +"\\addressbook\\ (Windows)." +msgstr "" +"Les chemins des fichiers et dossiers listés sont relatifs au répertoire de " +"travail du carnet d'adresses, normalement ~/.i2p/addressbook/ (Linux) ou " +"%APPDATA%\\I2P\\addressbook\\ (Windows)." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:136 -msgid "If you want to manually add lines to an addressbook, add them to the private or master addressbooks." -msgstr "si vous voulez ajouter manuellement des lignes dans un carnet d'adresses, faites-le dans le carnet privé ou principal." +msgid "" +"If you want to manually add lines to an addressbook, add them to the private " +"or master addressbooks." +msgstr "" +"si vous voulez ajouter manuellement des lignes dans un carnet d'adresses, " +"faites-le dans le carnet privé ou principal." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:138 -msgid "The router addressbook and the published addressbook are updated by the addressbook application." -msgstr "Le carnet d'adresses du routeur et le carnet d'adresses publié sont mis à jour par l'application carnet d'adresses." +msgid "" +"The router addressbook and the published addressbook are updated by the " +"addressbook application." +msgstr "" +"Le carnet d'adresses du routeur et le carnet d'adresses publié sont mis à " +"jour par l'application carnet d'adresses." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:140 -msgid "When you publish your addressbook, ALL destinations from the master and router addressbooks appear there." -msgstr "Quand vous publiez votre carnet d'adresses, TOUTES les destinations des carnets principal et routeur le sont." +msgid "" +"When you publish your addressbook, ALL destinations from the master and " +"router addressbooks appear there." +msgstr "" +"Quand vous publiez votre carnet d'adresses, TOUTES les destinations des " +"carnets principal et routeur le sont." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142 -msgid "Use the private addressbook for private destinations, these are not published." -msgstr "Utilisez le carnet d'adresses privé pour les destinations privées: elles ne seront pas publiées." +msgid "" +"Use the private addressbook for private destinations, these are not " +"published." +msgstr "" +"Utilisez le carnet d'adresses privé pour les destinations privées: elles ne " +"seront pas publiées." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144 msgid "Options" @@ -306,15 +340,20 @@ msgstr "Options" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146 msgid "File containing the list of subscriptions URLs (no need to change)" -msgstr "fichier contenant la liste des URLs de souscriptions (inutile de modifier)" +msgstr "" +"fichier contenant la liste des URLs de souscriptions (inutile de modifier)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148 msgid "Update interval in hours" msgstr "Intervalle de mise à jour (en heures)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150 -msgid "Your public hosts.txt file (choose a path within your webserver document root)" -msgstr "Votre fichier hosts.txt (choisissez un emplacement dans la racine de votre serveur web)" +msgid "" +"Your public hosts.txt file (choose a path within your webserver document " +"root)" +msgstr "" +"Votre fichier hosts.txt (choisissez un emplacement dans la racine de votre " +"serveur web)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152 msgid "Your hosts.txt (don't change)" @@ -341,12 +380,20 @@ msgid "Whether to update the published addressbook" msgstr "S'il faut actualiser le carnet d'adresses publié" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164 -msgid "File containing the etags header from the fetched subscription URLs (no need to change)" -msgstr "Fichier contenant les en-têtes etag des URLs de souscription (inutile de changer)" +msgid "" +"File containing the etags header from the fetched subscription URLs (no need " +"to change)" +msgstr "" +"Fichier contenant les en-têtes etag des URLs de souscription (inutile de " +"changer)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:166 -msgid "File containing the modification timestamp for each fetched subscription URL (no need to change)" -msgstr "Fichier contenant les tampons horaires de modification de chaque URL de souscription importée (inutile de modifier)" +msgid "" +"File containing the modification timestamp for each fetched subscription URL " +"(no need to change)" +msgstr "" +"Fichier contenant les tampons horaires de modification de chaque URL de " +"souscription importée (inutile de modifier)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168 msgid "File to log activity to (change to /dev/null if you like)" @@ -362,73 +409,130 @@ msgstr "Qu'est-ce que le carnet d'adresses?" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:111 msgid "The addressbook application is part of your i2p installation." -msgstr "L'application carnet d'adresses fait partie intégrante de votre installation I2P." +msgstr "" +"L'application carnet d'adresses fait partie intégrante de votre installation " +"I2P." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113 -msgid "It regularly updates your hosts.txt file from distributed sources or \"subscriptions\"." -msgstr "Elle actualise votre fichier hosts.txt à intervalle régulier à partir de sources décentralisées (\"souscriptions\" ou \"abonnements\")" +msgid "" +"It regularly updates your hosts.txt file from distributed sources or " +"\"subscriptions\"." +msgstr "" +"Elle actualise votre fichier hosts.txt à intervalle régulier à partir de " +"sources décentralisées (\"souscriptions\" ou \"abonnements\")" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115 -msgid "In the default configuration, the addressbook is only subscribed to www.i2p2.i2p." -msgstr "Dans sa configuration par défaut, le carnet d'adresses est seulement abonné à www.i2p2.i2p." +msgid "" +"In the default configuration, the addressbook is only subscribed to www.i2p2." +"i2p." +msgstr "" +"Dans sa configuration par défaut, le carnet d'adresses est seulement abonné " +"à www.i2p2.i2p." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117 -msgid "Subscribing to additional sites is easy, just add them to your subscriptions file." -msgstr "La souscription à des sites supplémentaires est aisée: ajoutez-les simplement à votre fichier de souscriptions ." +msgid "" +"Subscribing to additional sites is easy, just add them to your subscriptions file." +msgstr "" +"La souscription à des sites supplémentaires est aisée: ajoutez-les " +"simplement à votre fichier de souscriptions ." #: ../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 "Plus d'infos sur le nommage dans I2P." +msgid "" +"For more information on naming in i2p, see the overview on www.i2p2.i2p." +msgstr "" +"Plus d'infos sur le nommage dans I2P." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121 msgid "How does the addressbook work?" msgstr "Comment le carnet d'adresses fonctionne-t-il?" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123 -msgid "The addressbook application regularly polls your subscriptions and merges their content into your \"router\" addressbook, stored in the hosts.txt file." -msgstr "L'application carnet d'adresses interroge vos souscriptions à intervalle régulier et fusionne leurs contenus dans le carnet d'adresses du \"routeur\", stocké dans le fichier hosts.txt." +msgid "" +"The addressbook application regularly polls your subscriptions and merges " +"their content into your \"router\" addressbook, stored in the hosts.txt file." +msgstr "" +"L'application carnet d'adresses interroge vos souscriptions à intervalle " +"régulier et fusionne leurs contenus dans le carnet d'adresses du \"routeur" +"\", stocké dans le fichier hosts.txt." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125 -msgid "Then it merges your \"master\" addressbook (userhosts.txt) into the router addressbook as well." -msgstr "Puis elle fusionne votre carnet d'adresses \"principal\" (userhosts.txt) dans celui du routeur. " +msgid "" +"Then it merges your \"master\" addressbook (userhosts.txt) into the router " +"addressbook as well." +msgstr "" +"Puis elle fusionne votre carnet d'adresses \"principal\" (userhosts.txt) " +"dans celui du routeur. " #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:127 -msgid "If configured, the router addressbook is now written to the \"published\" addressbook, which will be publicly available if you are running an eepsite." -msgstr "Si c'est activé, le carnet du routeur est alors écrit dans le carnet d'adresses \"publié\" qui devient publiquement disponible si vous avez votre propre site eep." +msgid "" +"If configured, the router addressbook is now written to the \"published\" " +"addressbook, which will be publicly available if you are running an eepsite." +msgstr "" +"Si c'est activé, le carnet du routeur est alors écrit dans le carnet " +"d'adresses \"publié\" qui devient publiquement disponible si vous avez votre " +"propre site eep." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:129 -msgid "The router also uses a private addressbook (privatehosts.txt, not shown in the picture), which is not merged or published." -msgstr "Le routeur utilise également un carnet privé (privatehosts.txt, non illustré), qui n'est ni fusionné ni publié." +msgid "" +"The router also uses a private addressbook (privatehosts.txt, not shown in " +"the picture), which is not merged or published." +msgstr "" +"Le routeur utilise également un carnet privé (privatehosts.txt, non " +"illustré), qui n'est ni fusionné ni publié." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:131 -msgid "Hosts in the private addressbook can be accessed by you but their addresses are never distributed to others." -msgstr "Les hôtes du carnet privé ne sont accessibles qu'à vous et leurs adresses ne sont jamais distribuées à personne." +msgid "" +"Hosts in the private addressbook can be accessed by you but their addresses " +"are never distributed to others." +msgstr "" +"Les hôtes du carnet privé ne sont accessibles qu'à vous et leurs adresses ne " +"sont jamais distribuées à personne." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:133 -msgid "The private addressbook can also be used for aliases of hosts in your other addressbooks." -msgstr "Le carnet privé peut aussi servir à stocker des alias/pseudos pour des hôtes des autres carnets." +msgid "" +"The private addressbook can also be used for aliases of hosts in your other " +"addressbooks." +msgstr "" +"Le carnet privé peut aussi servir à stocker des alias/pseudos pour des hôtes " +"des autres carnets." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132 msgid "The subscription file contains a list of i2p URLs." msgstr "Le fichier de souscriptions contient une liste d'URLs i2p." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134 -msgid "The addressbook application regularly checks this list for new eepsites." -msgstr "L'application vérifie régulièrement cette liste pour trouver de nouveaux sites eep." +msgid "" +"The addressbook application regularly checks this list for new eepsites." +msgstr "" +"L'application vérifie régulièrement cette liste pour trouver de nouveaux " +"sites eep." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136 msgid "Those URLs refer to published hosts.txt files." msgstr "Ces URLs s'abreuvent aux fichiers hosts.txt des autres utilisateurs." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138 -msgid "The default subscription is the hosts.txt from www.i2p2.i2p, which is updated infrequently." -msgstr "L'abonnement par défaut est le fichier hosts.txt de www.i2p2.i2p, qui est très peu actualisé." +msgid "" +"The default subscription is the hosts.txt from www.i2p2.i2p, which is " +"updated infrequently." +msgstr "" +"L'abonnement par défaut est le fichier hosts.txt de www.i2p2.i2p, qui est " +"très peu actualisé." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:140 -msgid "So it is a good idea to add additional subscriptions to sites that have the latest addresses." -msgstr "C'est donc une bonne idée d'ajouter des souscriptions supplémentaires à des sites qui ont les dernières adresses." +msgid "" +"So it is a good idea to add additional subscriptions to sites that have the " +"latest addresses." +msgstr "" +"C'est donc une bonne idée d'ajouter des souscriptions supplémentaires à des " +"sites qui ont les dernières adresses." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142 msgid "See the FAQ for a list of subscription URLs." -msgstr "Voir la FAQ pour une liste d'URLs de souscriptions." - +msgstr "" +"Voir la FAQ " +"pour une liste d'URLs de souscriptions." From 0098816866c5f1154b2b8e52e0185aa0f96a342c Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 24 Mar 2011 18:39:32 +0000 Subject: [PATCH 328/463] new --- .../resources/initialNews/initialNews_fr.xml | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 installer/resources/initialNews/initialNews_fr.xml diff --git a/installer/resources/initialNews/initialNews_fr.xml b/installer/resources/initialNews/initialNews_fr.xml new file mode 100644 index 000000000..6386394c3 --- /dev/null +++ b/installer/resources/initialNews/initialNews_fr.xml @@ -0,0 +1,20 @@ +
    +

    Mille bravos pour cette installation d'I2P!

    +

    +Bienvenue sur I2P! +Merci de patienter le temps qu'I2P démarre et trouve des pairs. +

    +

    +Pendant ce temps, merci d'adjuster vos réglages de bande passante sur la page de +configuration. +

    +

    +Une fois que vous avez une destination "clients partagés" listée sur la gauche, +merci de jeter un œil à la FAQ. +

    +

    +Pointez votre client IRC sur localhost:6668 et venez nous faire coucou sur +#i2p-help, #i2p-fr +ou #i2p. +

    +
    From 655d0ad77eb0bd8e2f53a1783f251788977e7f26 Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 24 Mar 2011 20:10:53 +0000 Subject: [PATCH 329/463] new --- .../proxy/ahelper-conflict-header_fr.ht | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 installer/resources/proxy/ahelper-conflict-header_fr.ht diff --git a/installer/resources/proxy/ahelper-conflict-header_fr.ht b/installer/resources/proxy/ahelper-conflict-header_fr.ht new file mode 100644 index 000000000..071bf7ab8 --- /dev/null +++ b/installer/resources/proxy/ahelper-conflict-header_fr.ht @@ -0,0 +1,24 @@ +HTTP/1.1 409 Conflict +Content-Type: text/html; charset=UTF-8 +Cache-control: no-cache +Connection: close +Proxy-Connection: close + + +Avertissement I2P: conflit de clef de destination + + + + + +
    +

    Avertissement: conflit de clef de destination

    +Le lien d'adresse que vous avez suivi indique une clef de destination différente de celle de votre carnet d'adresses. +Quelqu'un est peut-être en train d'usurper un autre site eep, ou des gens ont donné le même nom à des sites eep différents. +

    +Vous pouvez résoudre le conflit en décidant à quelle clé accorder votre confiance, +et soit écarter le lien d'adresse, supprimer l'entrée de votre carnet d'adresses, ou renommer un des deux. +

    From fa1820786a3bf60b5d646100408f0797f44f108e Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 24 Mar 2011 20:11:18 +0000 Subject: [PATCH 330/463] new --- installer/resources/proxy/dnfp-header_fr.ht | 29 +++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 installer/resources/proxy/dnfp-header_fr.ht diff --git a/installer/resources/proxy/dnfp-header_fr.ht b/installer/resources/proxy/dnfp-header_fr.ht new file mode 100644 index 000000000..40e9ad82f --- /dev/null +++ b/installer/resources/proxy/dnfp-header_fr.ht @@ -0,0 +1,29 @@ +HTTP/1.1 504 Délai d'attente de passerelle dépassé +Content-Type: text/html; charset=UTF-8 +Cache-control: no-cache +Connection: close +Proxy-Connection: close + + +Avertissement I2P: Proxy sortant non trouvé + + + + +

    +
    +

    Avertissement I2P: Proxy sortant non trouvé

    +Le serveur mandataire sortant est introuvable. +Il est hors service, le réseau est surchargé, +ou votre routeur n'est pas encore bien intégré avec des pairs. +Vous pouvez essayer de +retenter +car il se produira une sélection aléatoire de mandataire dans le groupe que vous avez défini +ici +(si vous en avez plus d'un de défini). +Si vous avez toujours des problèmes vous pouvez modifier votre liste de +mandataires ici. +
    Destination suivante introuvable:

    From fb36da7669c2ece0c67f2dff9b812e091ce2679a Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 24 Mar 2011 20:19:26 +0000 Subject: [PATCH 331/463] new --- .../resources/proxy/protocol-header_fr.ht | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 installer/resources/proxy/protocol-header_fr.ht diff --git a/installer/resources/proxy/protocol-header_fr.ht b/installer/resources/proxy/protocol-header_fr.ht new file mode 100644 index 000000000..47fdc9fa9 --- /dev/null +++ b/installer/resources/proxy/protocol-header_fr.ht @@ -0,0 +1,21 @@ +HTTP/1.1 403 Protocole incorrect +Content-Type: text/html; charset=UTF-8 +Cache-control: no-cache +Connection: close +Proxy-Connection: close + + +Avertissement I2P: Protocole Non-HTTP + + + + + +
    +

    Avertissement I2P: Protocole Non-HTTP

    +La requête a utilisé un protocole inadpté. +Le mandataire HTTP I2P prend en charge les requêtes http:// seulement. Les autre protocoles tels que https:// and ftp:// ne sont pas permis. +
    From 1f58125eed572cfd245a3d2dc2723363cff7afdd Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 24 Mar 2011 20:25:54 +0000 Subject: [PATCH 332/463] new --- .../resources/proxy/noproxy-header_fr.ht | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 installer/resources/proxy/noproxy-header_fr.ht diff --git a/installer/resources/proxy/noproxy-header_fr.ht b/installer/resources/proxy/noproxy-header_fr.ht new file mode 100644 index 000000000..96e9f3e78 --- /dev/null +++ b/installer/resources/proxy/noproxy-header_fr.ht @@ -0,0 +1,21 @@ +HTTP/1.1 503 Service indisponible +Content-Type: text/html; charset=UTF-8 +Cache-control: no-cache +Connection: close +Proxy-Connection: close + + +Avertissement I2P: Mandataire non configuré + + + + + +
    +

    Avertissement I2P: Mandataire non configuré

    +Votre requête était pour un site hors du réseau I2P, mais vous n'avez pas de mandataire +configuré. Merci de configurer un mandataire dans I2PTunnel. +
    From 2d4c3453b7341b673ed0e56953b4c60870c4c67e Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 24 Mar 2011 20:33:18 +0000 Subject: [PATCH 333/463] new --- .../resources/proxy/localhost-header_fr.ht | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 installer/resources/proxy/localhost-header_fr.ht diff --git a/installer/resources/proxy/localhost-header_fr.ht b/installer/resources/proxy/localhost-header_fr.ht new file mode 100644 index 000000000..c38f220b8 --- /dev/null +++ b/installer/resources/proxy/localhost-header_fr.ht @@ -0,0 +1,24 @@ +HTTP/1.1 403 Accès refusé +Content-Type: text/html; charset=UTF-8 +Cache-control: no-cache +Connection: close +Proxy-Connection: close + + +Erreur I2P: Requête refusée + + + + + +
    +

    Erreur: Accès local

    +Votre navigateur est mal configuré. N'utilisez pas de mandataire pour accéder à la console du routeur I2P, +à l'hôte local (localhost), ou des destinations LAN: définissez une exception. +
    From a9579cdd872bb5f628861b2eab8a318795fd9e91 Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 24 Mar 2011 20:45:52 +0000 Subject: [PATCH 334/463] new --- installer/resources/proxy/dnf-header_fr.ht | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 installer/resources/proxy/dnf-header_fr.ht diff --git a/installer/resources/proxy/dnf-header_fr.ht b/installer/resources/proxy/dnf-header_fr.ht new file mode 100644 index 000000000..e0dea2799 --- /dev/null +++ b/installer/resources/proxy/dnf-header_fr.ht @@ -0,0 +1,23 @@ +HTTP/1.1 504 Gateway Timeout +Content-Type: text/html; charset=UTF-8 +Cache-control: no-cache +Connection: close +Proxy-Connection: close + + +Avertissement I2P: site eep non joignable + + + + + +
    +

    Avertissement I2P: site eep non joignable

    +Le site eep n'a pas pu être atteint. Il est hors service, +le réseau est surchargé, ou votre routeur n'est pas bien intégré aux pairs. +Vous pouvez +réessayer. +
    Destination injoignable:

    From f3a30276f3d1657a8f861958ccbd9f50a17cab57 Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 24 Mar 2011 20:55:15 +0000 Subject: [PATCH 335/463] new --- installer/resources/proxy/dnfh-header_fr.ht | 27 +++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 installer/resources/proxy/dnfh-header_fr.ht diff --git a/installer/resources/proxy/dnfh-header_fr.ht b/installer/resources/proxy/dnfh-header_fr.ht new file mode 100644 index 000000000..157173973 --- /dev/null +++ b/installer/resources/proxy/dnfh-header_fr.ht @@ -0,0 +1,27 @@ +HTTP/1.1 404 Domaine non trouvé +Content-Type: text/html; charset=UTF-8 +Cache-control: no-cache +Connection: close +Proxy-Connection: close + + +Avertissement I2P: site eep inconnu + + + + + +
    +

    Avertissement I2P: site eep non trouvé dans le carnet d'adresses

    +Le site eep n'était pas dans le carnet d'adresses de votre routeur. +Vérifiez le lien ou trouvez l'adresse BASE64. +Si vous avez l'adresse BASE64, reportez-la dans votre fichier userhosts.txt en passant par +SusiDNS, +utilisez un lien d'adresse BASE64, ou un service de saut (jump) en lien ci-dessous.

    +Si vous voyez cette page souvent: lisez la faq pour obtenir +de l'aide sur l'ajout de quelques souscrptions à votre carnet +d'adresses.
    +Destination introuvable:

    From f1d1a80f4ea46afcbfb4a3ed799b8fb804b1c00e Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 24 Mar 2011 21:03:08 +0000 Subject: [PATCH 336/463] new --- installer/resources/proxy/dnfb-header_fr.ht | 23 +++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 installer/resources/proxy/dnfb-header_fr.ht diff --git a/installer/resources/proxy/dnfb-header_fr.ht b/installer/resources/proxy/dnfb-header_fr.ht new file mode 100644 index 000000000..c7ed858f4 --- /dev/null +++ b/installer/resources/proxy/dnfb-header_fr.ht @@ -0,0 +1,23 @@ +HTTP/1.1 400 Destination non trouvée +Content-Type: text/html; charset=UTF-8 +Cache-control: no-cache +Connection: close +Proxy-Connection: close + + +Avertissement I2P: destination eep site incorrecte + + + + + +
    +

    Avertissement I2P: destination eep site incorrecte

    +La destination du site eep indiquée est incorrecte, ou injoignable. +Vous avez peut-être collé une chaîne BASE64 incorrecte le lien que vous suivez est incorrect. +L'hôte I2P est peut-être aussi hors-servicehost. +Vous pouvez réessayer. +
    Destination non trouvée:

    From 46b2fd2749fd105408f1788449bd70c521908af4 Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 24 Mar 2011 21:14:12 +0000 Subject: [PATCH 337/463] new --- installer/resources/proxy/denied-header_fr.ht | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 installer/resources/proxy/denied-header_fr.ht diff --git a/installer/resources/proxy/denied-header_fr.ht b/installer/resources/proxy/denied-header_fr.ht new file mode 100644 index 000000000..0f05e5a61 --- /dev/null +++ b/installer/resources/proxy/denied-header_fr.ht @@ -0,0 +1,20 @@ +HTTP/1.1 403 Requête refusée +Content-Type: text/html; charset=UTF-8 +Cache-control: no-cache +Connection: close +Proxy-Connection: close + + +Avertissement I2P: Requête refusée + + + + + +
    +

    Avertissement I2P: Requête refusée

    +Vous avez tenté de vous connecter a un site ou emplacement non-I2P. +
    From b5cfe00ba54f091a355c79ab5ccc37a021770677 Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 24 Mar 2011 21:22:46 +0000 Subject: [PATCH 338/463] new --- installer/resources/proxy/auth-header_fr.ht | 23 +++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 installer/resources/proxy/auth-header_fr.ht diff --git a/installer/resources/proxy/auth-header_fr.ht b/installer/resources/proxy/auth-header_fr.ht new file mode 100644 index 000000000..cace47865 --- /dev/null +++ b/installer/resources/proxy/auth-header_fr.ht @@ -0,0 +1,23 @@ +HTTP/1.1 407 Proxy Authorization Required +Content-Type: text/html; charset=UTF-8 +Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.5 +Proxy-Authenticate: Basic realm="I2P HTTP Proxy" +Cache-control: no-cache +Connection: close +Proxy-Connection: close + + +Autorisation Proxy requise + + + +
    +

    Autorisation I2P HTTP Proxy requise

    +Ce mandataire est configuré pour demander un nom d'utilisateur et un mot de passe pour les accès. +Merci d'entrer votre identifiant / mot de passe, ou vérifier la +configuration de votre routeur, +ou du +I2PTunnel. +Pour désactiver le contrôle d'accès, supprimez la configuration +i2ptunnel.proxy.auth=basic, puis redémarrez le tunnel proxy HTTP. +
    From ceb631719bb35c794eb93008a2fdb825c935bc7c Mon Sep 17 00:00:00 2001 From: magma Date: Fri, 25 Mar 2011 08:35:43 +0000 Subject: [PATCH 339/463] purged --- apps/routerconsole/locale/messages_fr.po | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index b2c6ae8b6..4b5b8557f 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-11-19 18:16+0000\n" -"PO-Revision-Date: 2011-03-24 16:35+0100\n" +"PO-Revision-Date: 2011-03-25 09:10+0100\n" "Last-Translator: \n" "Language-Team: foo \n" "Language: \n" @@ -4341,27 +4341,27 @@ msgstr "I2P fonctionnera derrière la plupart des pare-feux, mais votre vitesse #: ../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 "Si vous pouvez, ouvrez un port dans votre pare-feu afin de permettre la réception des les paquets TCP et UDP non sollicités." +msgstr "" #: ../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 "Si vous ne pouvez pas, I2P est compatible avec UPnp (Universal Plug and Play) et \"UDP hole punching\" avec \"SSU introductions\" afin de relayer le trafic I2P." +msgstr "" #: ../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 "Le plupart des possibilités décrites ci-avant sont pour les situtations particulieres, par exemple le cas où UPnP ne fonctionne pas correctement, ou un pare-feu empeche la connexion au réseau I2P." +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:522 msgid "If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you." -msgstr "Si vous pouvez, ouvrez un port dans votre pare-feu afin de permettre la réception des les paquets TCP et UDP non sollicités." +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:524 msgid "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic." -msgstr "Si vous ne pouvez pas, I2P est compatible avec UPnp (Universal Plug and Play) et \"UDP hole punching\" avec \"SSU introductions\" afin de relayer le trafic I2P." +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:526 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 "Le plupart des possibilités décrites ci-avant sont pour les situtations particulieres, par exemple le cas où UPnP ne fonctionne pas correctement, ou un pare-feu empeche la connexion au réseau I2P." +msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:528 msgid "Certain firewalls such as symmetric NATs may not work well with I2P." From 05a3738fdbb1f80239b7ae0c752afb294ef5266e Mon Sep 17 00:00:00 2001 From: magma Date: Fri, 25 Mar 2011 08:56:53 +0000 Subject: [PATCH 340/463] refilled --- apps/routerconsole/locale/messages_fr.po | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 4b5b8557f..6177d87c1 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-11-19 18:16+0000\n" -"PO-Revision-Date: 2011-03-25 09:10+0100\n" +"PO-Revision-Date: 2011-03-25 09:56+0100\n" "Last-Translator: \n" "Language-Team: foo \n" "Language: \n" @@ -4341,27 +4341,27 @@ msgstr "I2P fonctionnera derrière la plupart des pare-feux, mais votre vitesse #: ../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 "" +msgstr "Si vous pouvez, ouvrez un port dans votre pare-feu afin de permettre la réception des les paquets TCP et UDP non sollicités." #: ../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 "" +msgstr "Si vous ne pouvez pas, I2P est compatible avec UPnp (Universal Plug and Play) et \"UDP hole punching\" avec \"SSU introductions\" afin de relayer le trafic I2P." #: ../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 "" +msgstr "La plupart des possibilités décrites ci-avant sont pour les situtations particulieres, par exemple le cas où UPnP ne fonctionne pas correctement, ou un pare-feu empeche la connexion au réseau I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:522 msgid "If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you." -msgstr "" +msgstr "Si vous pouvez, ouvrez un port dans votre pare-feu afin de permettre la réception des les paquets TCP et UDP non sollicités." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:524 msgid "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic." -msgstr "" +msgstr "Si vous ne pouvez pas, I2P est compatible avec UPnp (Universal Plug and Play) et \"UDP hole punching\" avec \"SSU introductions\" afin de relayer le trafic I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:526 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 "" +msgstr "La plupart des possibilités décrites ci-avant sont pour les situtations particulieres, par exemple le cas où UPnP ne fonctionne pas correctement, ou un pare-feu empeche la connexion au réseau I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:528 msgid "Certain firewalls such as symmetric NATs may not work well with I2P." From f61108bbae11d5a5ea36c336f7c516176fece7a5 Mon Sep 17 00:00:00 2001 From: magma Date: Fri, 25 Mar 2011 09:14:26 +0000 Subject: [PATCH 341/463] add --- apps/desktopgui/locale/messages_fr.po | 56 +++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 apps/desktopgui/locale/messages_fr.po diff --git a/apps/desktopgui/locale/messages_fr.po b/apps/desktopgui/locale/messages_fr.po new file mode 100644 index 000000000..44e38cd60 --- /dev/null +++ b/apps/desktopgui/locale/messages_fr.po @@ -0,0 +1,56 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the desktopgui package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P desktopgui\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-03-03 18:29+0000\n" +"PO-Revision-Date: 2011-03-25 10:12+0100\n" +"Last-Translator: \n" +"Language-Team: duck \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:23 +msgid "Start I2P" +msgstr "Démarrer I2P" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 +msgid "I2P is starting!" +msgstr "I2P démarre!" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 +msgid "Starting" +msgstr "Démarrage" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:26 +msgid "Launch I2P Browser" +msgstr "Lancer le navigateur" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:50 +msgid "Configure desktopgui" +msgstr "Configurer l'interface de bureau" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:67 +msgid "Restart I2P" +msgstr "Redémarrer I2P" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:85 +msgid "Stop I2P" +msgstr "Arrêter I2P" + +#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:44 +msgid "Tray icon configuration" +msgstr "configuration de l'icône de notification" + +#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47 +msgid "Should tray icon be enabled?" +msgstr "Activer l'icône de notification?" + From 57140d2655fdbd8cc42a42bc6d4b296251b36070 Mon Sep 17 00:00:00 2001 From: magma Date: Fri, 25 Mar 2011 10:14:50 +0000 Subject: [PATCH 342/463] add --- apps/susimail/locale/messages_fr.po | 441 ++++++++++++++++++++++++++++ 1 file changed, 441 insertions(+) create mode 100644 apps/susimail/locale/messages_fr.po diff --git a/apps/susimail/locale/messages_fr.po b/apps/susimail/locale/messages_fr.po new file mode 100644 index 000000000..07d930a91 --- /dev/null +++ b/apps/susimail/locale/messages_fr.po @@ -0,0 +1,441 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the susimail package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P susimail\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-03-24 16:49+0000\n" +"PO-Revision-Date: 2011-03-25 11:04+0100\n" +"Last-Translator: \n" +"Language-Team: duck \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: src/src/i2p/susi/webmail/WebMail.java:454 +msgid "unknown" +msgstr "inconnu" + +#: src/src/i2p/susi/webmail/WebMail.java:473 +msgid "Warning: no transfer encoding found, fallback to 7bit." +msgstr "Avertissement: pas d'encodage de transfert trouvé: retour en 7bits." + +#: src/src/i2p/susi/webmail/WebMail.java:478 +#, java-format +msgid "No encoder found for encoding \\''{0}\\''." +msgstr "Pas d'encodeur trouvé pour encoder \\''{0}\\''." + +#: src/src/i2p/susi/webmail/WebMail.java:484 +msgid "Warning: no charset found, fallback to US-ASCII." +msgstr "Avertissement: aucun jeu de caractères trouvé, retour en ASCII-US" + +#: src/src/i2p/susi/webmail/WebMail.java:498 +#, java-format +msgid "Charset \\''{0}\\'' not supported." +msgstr "Jeu de caractères \\''{0}\\'' non pris en charge." + +#: src/src/i2p/susi/webmail/WebMail.java:502 +#, java-format +msgid "Part ({0}) not shown, because of {1}" +msgstr "Partie ({0}) non affichée car {1}" + +#: src/src/i2p/susi/webmail/WebMail.java:525 +msgid "Download" +msgstr "Télécharger" + +#: src/src/i2p/susi/webmail/WebMail.java:525 +msgid "File is packed into a zipfile for security reasons." +msgstr "Fichier compressé en zip par sécurité." + +#: src/src/i2p/susi/webmail/WebMail.java:525 +#, java-format +msgid "attachment ({0})." +msgstr "pièce jointe ({0})." + +#: src/src/i2p/susi/webmail/WebMail.java:529 +#, java-format +msgid "Attachment ({0})." +msgstr "Pièce jointe ({0})." + +#: src/src/i2p/susi/webmail/WebMail.java:579 +msgid "Need username for authentication." +msgstr "Identifiant requis pour l'authentification." + +#: src/src/i2p/susi/webmail/WebMail.java:583 +msgid "Need password for authentication." +msgstr "Mot de passe requis pour l'authentification." + +#: src/src/i2p/susi/webmail/WebMail.java:587 +msgid "Need hostname for connect." +msgstr "Nom d'hôte requis pour la connexion." + +#: src/src/i2p/susi/webmail/WebMail.java:592 +msgid "Need port number for pop3 connect." +msgstr "Port requis pour la connexion POP3." + +#: src/src/i2p/susi/webmail/WebMail.java:599 +msgid "POP3 port number is not in range 0..65535." +msgstr "Le port POP3 n'est pas compris entre 0 et 65535." + +#: src/src/i2p/susi/webmail/WebMail.java:605 +msgid "POP3 port number is invalid." +msgstr "Port POP3 incorrect." + +#: src/src/i2p/susi/webmail/WebMail.java:611 +msgid "Need port number for smtp connect." +msgstr "Port requis pour la connexion SMTP." + +#: src/src/i2p/susi/webmail/WebMail.java:618 +msgid "SMTP port number is not in range 0..65535." +msgstr "Le port SMTP n'est pas compris entre 0 et 65535." + +#: src/src/i2p/susi/webmail/WebMail.java:624 +msgid "SMTP port number is invalid." +msgstr "Port SMTP incorrect." + +#: src/src/i2p/susi/webmail/WebMail.java:671 +msgid "User logged out." +msgstr "Utilisateur déconnecté." + +#: src/src/i2p/susi/webmail/WebMail.java:675 +msgid "Internal error, lost connection." +msgstr "Erreur interne, connexion perdue." + +#: src/src/i2p/susi/webmail/WebMail.java:771 +#, java-format +msgid "On {0} {1} wrote:" +msgstr "Sur {0} {1} écrit:" + +#: src/src/i2p/susi/webmail/WebMail.java:818 +msgid "begin forwarded mail" +msgstr "tranfert du message commencé" + +#: src/src/i2p/susi/webmail/WebMail.java:840 +msgid "end forwarded mail" +msgstr "tranfert du message terminé" + +#: src/src/i2p/susi/webmail/WebMail.java:847 +#: src/src/i2p/susi/webmail/WebMail.java:1701 +msgid "Could not fetch mail body." +msgstr "Impossible de ramener le corps du message." + +#: src/src/i2p/susi/webmail/WebMail.java:875 +msgid "Message id not valid." +msgstr "ID de message incorrecte." + +#: src/src/i2p/susi/webmail/WebMail.java:958 +#, java-format +msgid "No Encoding found for {0}" +msgstr "PAs d'encodage trouvé pour {0}" + +#: src/src/i2p/susi/webmail/WebMail.java:962 +#, java-format +msgid "Could not encode data: {0}" +msgstr "Impossible d'encoder les données: {0}" + +#: src/src/i2p/susi/webmail/WebMail.java:967 +#, java-format +msgid "Error reading uploaded file: {0}" +msgstr "Erreur de lecture du fichier envoyé: {0}" + +#: src/src/i2p/susi/webmail/WebMail.java:1045 +msgid "Error parsing download parameter." +msgstr "Erreur d'analyse des paramètres de téléchargement." + +#: src/src/i2p/susi/webmail/WebMail.java:1089 +msgid "Invalid pagesize number, resetting to default value." +msgstr "Taille de page incorrecte: réinitialisation à la valeur par défaut." + +#: src/src/i2p/susi/webmail/WebMail.java:1113 +msgid "No messages marked for deletion." +msgstr "Aucun message marqué pour suppression" + +#: src/src/i2p/susi/webmail/WebMail.java:1133 +#, java-format +msgid "Error deleting message: {0}" +msgstr "Erreur de suppression du message: {0}" + +#: src/src/i2p/susi/webmail/WebMail.java:1144 +#, java-format +msgid "1 message deleted." +msgid_plural "{0} messages deleted." +msgstr[0] "1 message supprimé" +msgstr[1] "{0} message(s) supprimé(s)" + +#: src/src/i2p/susi/webmail/WebMail.java:1264 +#: src/src/i2p/susi/webmail/WebMail.java:1587 +msgid "Login" +msgstr "Identification" + +#: src/src/i2p/susi/webmail/WebMail.java:1266 +#, java-format +msgid "1 Message" +msgid_plural "{0} Messages" +msgstr[0] "1 Message" +msgstr[1] "{0} Message(s)" + +#: src/src/i2p/susi/webmail/WebMail.java:1268 +msgid "Show Message" +msgstr "Afficher le message" + +#: src/src/i2p/susi/webmail/WebMail.java:1325 +#, java-format +msgid "Error decoding content: {0}" +msgstr "Erreur de décodage de contenu: {0}" + +#: src/src/i2p/susi/webmail/WebMail.java:1330 +msgid "Error decoding content: No encoder found." +msgstr "Erreur de décodage de contenu: pas d'encodeur trouvé." + +#: src/src/i2p/susi/webmail/WebMail.java:1377 +msgid "no subject" +msgstr "pas d'objet" + +#: src/src/i2p/susi/webmail/WebMail.java:1394 +msgid "Found no valid sender address." +msgstr "Adresse d'expéditeur correcte non trouvée" + +#: src/src/i2p/susi/webmail/WebMail.java:1400 +#, java-format +msgid "Found no valid address in \\''{0}\\''." +msgstr "Pas d'adresse correcte dans \\''{0}\\''." + +#: src/src/i2p/susi/webmail/WebMail.java:1419 +msgid "No recipients found." +msgstr "Pas de destinataire trouvé." + +#: src/src/i2p/susi/webmail/WebMail.java:1426 +msgid "Quoted printable encoder not available." +msgstr "Encodeur \"Quoted printable\" non disponible." + +#: src/src/i2p/susi/webmail/WebMail.java:1431 +msgid "Header line encoder not available." +msgstr "Ligne d'en-tête \"encodeur\" non disponible." + +#: src/src/i2p/susi/webmail/WebMail.java:1482 +msgid "Mail sent." +msgstr "Message envoyé." + +#: src/src/i2p/susi/webmail/WebMail.java:1519 +msgid "Send" +msgstr "Envoyer" + +#: src/src/i2p/susi/webmail/WebMail.java:1520 +msgid "Cancel" +msgstr "Annuler" + +#: src/src/i2p/susi/webmail/WebMail.java:1521 +msgid "Delete Attachment" +msgstr "Supprimer la pièce jointe" + +#: src/src/i2p/susi/webmail/WebMail.java:1522 +#: src/src/i2p/susi/webmail/WebMail.java:1607 +#: src/src/i2p/susi/webmail/WebMail.java:1688 +msgid "Reload Config" +msgstr "Recharger la configuration" + +#: src/src/i2p/susi/webmail/WebMail.java:1523 +#: src/src/i2p/susi/webmail/WebMail.java:1608 +#: src/src/i2p/susi/webmail/WebMail.java:1689 +msgid "Logout" +msgstr "Déconnexion" + +#: src/src/i2p/susi/webmail/WebMail.java:1546 +#: src/src/i2p/susi/webmail/WebMail.java:1693 +msgid "From:" +msgstr "De:" + +#: src/src/i2p/susi/webmail/WebMail.java:1547 +msgid "To:" +msgstr "À:" + +#: src/src/i2p/susi/webmail/WebMail.java:1548 +msgid "Cc:" +msgstr "Cc:" + +#: src/src/i2p/susi/webmail/WebMail.java:1549 +msgid "Bcc:" +msgstr "Cci:" + +#: src/src/i2p/susi/webmail/WebMail.java:1550 +#: src/src/i2p/susi/webmail/WebMail.java:1695 +msgid "Subject:" +msgstr "Objet:" + +#: src/src/i2p/susi/webmail/WebMail.java:1551 +msgid "Bcc to self" +msgstr "Cci à moi-même" + +#: src/src/i2p/susi/webmail/WebMail.java:1554 +msgid "New Attachment:" +msgstr "Nouvelle pièce jointe:" + +#: src/src/i2p/susi/webmail/WebMail.java:1554 +msgid "Upload File" +msgstr "Envoyer le fichier" + +#: src/src/i2p/susi/webmail/WebMail.java:1560 +msgid "Attachments:" +msgstr "Pièces jointes:" + +#: src/src/i2p/susi/webmail/WebMail.java:1582 +msgid "User" +msgstr "Utilisateur" + +#: src/src/i2p/susi/webmail/WebMail.java:1583 +msgid "Pass" +msgstr "Mot de passe" + +#: src/src/i2p/susi/webmail/WebMail.java:1584 +msgid "Host" +msgstr "Hôte" + +#: src/src/i2p/susi/webmail/WebMail.java:1585 +msgid "POP3-Port" +msgstr "Port POP3" + +#: src/src/i2p/susi/webmail/WebMail.java:1586 +msgid "SMTP-Port" +msgstr "Port SMTP" + +#: src/src/i2p/susi/webmail/WebMail.java:1587 +msgid "Create Account" +msgstr "Créer un compte" + +#: src/src/i2p/susi/webmail/WebMail.java:1587 +msgid "Reset" +msgstr "Remise à zéro" + +#: src/src/i2p/susi/webmail/WebMail.java:1599 +msgid "Really delete the marked messages?" +msgstr "voulez-vous vraiment supprimer les messages marqués?" + +#: src/src/i2p/susi/webmail/WebMail.java:1599 +msgid "Yes, really delete them!" +msgstr "Oui, suppression!" + +#: src/src/i2p/susi/webmail/WebMail.java:1601 +#: src/src/i2p/susi/webmail/WebMail.java:1680 +msgid "New" +msgstr "Nouveau message" + +#: src/src/i2p/susi/webmail/WebMail.java:1602 +#: src/src/i2p/susi/webmail/WebMail.java:1681 +msgid "Reply" +msgstr "Répondre" + +#: src/src/i2p/susi/webmail/WebMail.java:1603 +#: src/src/i2p/susi/webmail/WebMail.java:1682 +msgid "Reply All" +msgstr "Répondre à tous" + +#: src/src/i2p/susi/webmail/WebMail.java:1604 +#: src/src/i2p/susi/webmail/WebMail.java:1683 +msgid "Forward" +msgstr "Transférer" + +#: src/src/i2p/susi/webmail/WebMail.java:1605 +#: src/src/i2p/susi/webmail/WebMail.java:1684 +msgid "Delete" +msgstr "Supprimer" + +#: src/src/i2p/susi/webmail/WebMail.java:1606 +msgid "Check Mail" +msgstr "Relever le courrier" + +#: src/src/i2p/susi/webmail/WebMail.java:1610 +msgid "Sender" +msgstr "De" + +#: src/src/i2p/susi/webmail/WebMail.java:1611 +msgid "Subject" +msgstr "Objet" + +#: src/src/i2p/susi/webmail/WebMail.java:1612 +msgid "Date" +msgstr "Date" + +#: src/src/i2p/susi/webmail/WebMail.java:1613 +msgid "Size" +msgstr "Taille" + +#: src/src/i2p/susi/webmail/WebMail.java:1639 +#, java-format +msgid "1 Byte" +msgid_plural "{0} Bytes" +msgstr[0] "1 octet" +msgstr[1] "{0} octet(s)" + +#: src/src/i2p/susi/webmail/WebMail.java:1644 +msgid "Mark All" +msgstr "Tout cocher" + +#: src/src/i2p/susi/webmail/WebMail.java:1645 +msgid "Invert Selection" +msgstr "Inverser la sélection" + +#: src/src/i2p/susi/webmail/WebMail.java:1646 +msgid "Clear" +msgstr "Effacer" + +#: src/src/i2p/susi/webmail/WebMail.java:1649 +#: src/src/i2p/susi/webmail/WebMail.java:1650 +msgid "First" +msgstr "Premier" + +#: src/src/i2p/susi/webmail/WebMail.java:1649 +#: src/src/i2p/susi/webmail/WebMail.java:1650 +#: src/src/i2p/susi/webmail/WebMail.java:1685 +msgid "Previous" +msgstr "Précédent" + +#: src/src/i2p/susi/webmail/WebMail.java:1651 +#, java-format +msgid "Page {0} of {1}" +msgstr "Page {0} sur {1}" + +#: src/src/i2p/susi/webmail/WebMail.java:1653 +#: src/src/i2p/susi/webmail/WebMail.java:1654 +msgid "Last" +msgstr "Dernier" + +#: src/src/i2p/susi/webmail/WebMail.java:1653 +#: src/src/i2p/susi/webmail/WebMail.java:1654 +#: src/src/i2p/susi/webmail/WebMail.java:1686 +msgid "Next" +msgstr "Suivant" + +#: src/src/i2p/susi/webmail/WebMail.java:1657 +msgid "Pagesize:" +msgstr "Taille de page:" + +#: src/src/i2p/susi/webmail/WebMail.java:1658 +msgid "Set" +msgstr "Définir" + +#: src/src/i2p/susi/webmail/WebMail.java:1668 +msgid "Really delete this message?" +msgstr "Voulez-vous vraiment supprimer ce message?" + +#: src/src/i2p/susi/webmail/WebMail.java:1668 +msgid "Yes, really delete it!" +msgstr "Oui, supprimer!" + +#: src/src/i2p/susi/webmail/WebMail.java:1687 +msgid "Back to Folder" +msgstr "Retour au dossier" + +#: src/src/i2p/susi/webmail/WebMail.java:1694 +msgid "Date:" +msgstr "Date:" + +#: src/src/i2p/susi/webmail/WebMail.java:1705 +msgid "Could not fetch mail." +msgstr "Impossible de ramener le courrier." + From 103bde8a329a26e7c08819332955a27dc8ee3119 Mon Sep 17 00:00:00 2001 From: magma Date: Fri, 25 Mar 2011 11:09:12 +0000 Subject: [PATCH 343/463] ? --- apps/routerconsole/locale/messages_fr.po | 61 ------------------------ 1 file changed, 61 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 6177d87c1..c99060cae 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -2203,11 +2203,6 @@ msgstr "Fonctionnalité \"Icône de zone de notification système\" non disponib msgid "Warning: unable to contact the systray manager" msgstr "Avertissement: impossible de contacter le gestionnaire de zone de notification." -#: ../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 "Masquer l'icône de zone de notification" - #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:108 msgid "System tray icon disabled." msgstr "Icône de zone de notification système désactivée." @@ -4339,30 +4334,6 @@ msgstr "Aide avec la configuration" 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 fonctionnera derrière la plupart des pare-feux, mais votre vitesse et votre intégration avec le réseau sera améliorée par la redirection des ports UDP et TCP d'I2P." -#: ../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 "Si vous pouvez, ouvrez un port dans votre pare-feu afin de permettre la réception des les paquets TCP et UDP non sollicités." - -#: ../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 "Si vous ne pouvez pas, I2P est compatible avec UPnp (Universal Plug and Play) et \"UDP hole punching\" avec \"SSU introductions\" afin de relayer le trafic I2P." - -#: ../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 "La plupart des possibilités décrites ci-avant sont pour les situtations particulieres, par exemple le cas où UPnP ne fonctionne pas correctement, ou un pare-feu empeche la connexion au réseau I2P." - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:522 -msgid "If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you." -msgstr "Si vous pouvez, ouvrez un port dans votre pare-feu afin de permettre la réception des les paquets TCP et UDP non sollicités." - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:524 -msgid "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic." -msgstr "Si vous ne pouvez pas, I2P est compatible avec UPnp (Universal Plug and Play) et \"UDP hole punching\" avec \"SSU introductions\" afin de relayer le trafic I2P." - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:526 -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 "La plupart des possibilités décrites ci-avant sont pour les situtations particulieres, par exemple le cas où UPnP ne fonctionne pas correctement, ou un pare-feu empeche la connexion au réseau I2P." - #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:528 msgid "Certain firewalls such as symmetric NATs may not work well with I2P." msgstr "Il y a des certains types de pare-feu (tel que les NAT symétriques) qui ne fonctionnent pas bien avec I2P." @@ -4439,10 +4410,6 @@ msgstr "Si vous pensez que vous avez ouvert votre pare-feu et qu'I2P indique tou msgid "If there is an error, the logs may also help diagnose the problem." msgstr "S'il y a une erreur, les historiques peuvent aider au diagnostic." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 -msgid "Your UDP port does not appear to be firewalled." -msgstr "Votre port UDP ne semble pas bloqué par un pare-feu." - #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 msgid "Your UDP port appears to be firewalled." msgstr "Votre port UDP semble bloqué par un pare-feu." @@ -4487,14 +4454,6 @@ msgstr "WARN - Pare-feu et Rapide" msgid "You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled." msgstr "Vous avez configuré I2P pour partager plus de 128ko/s de bande passante, mais vous êtes bloqué par un pare-feu." -#: ../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 "Bien qu'I2P fonctionne très bien dans cette configuration, si vous avez plus de 128ko/s à partager, ça aiderait fortement le réseau si vous pouviez ouvrir votre pare-feu." - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 -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 "Bien qu'I2P fonctionne correctement dans cette configuration, si vous avez vraiment plus de 128 ko/s de bande passante à partager, il serait bénéfique pour le réseau que vous ouvriez votre pare-feu." - #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 msgid "WARN - Firewalled and Floodfill" msgstr "WARN - Pare-feu et Floodfill" @@ -4515,14 +4474,6 @@ msgstr "WARN - Pare-feu avec TCP entrant activé" 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 "Vous avez configuré le TCP entrant, cependant votre port UDP est bloqué et en conséquence il est probable que TCP l'est aussi." -#: ../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 "Si votre port TCp est bloqué et les connexions entrantes TCP activées dans la console, les routeurs ne pourront pas vous contacter via TCP, ce qui va perturber le réseau. " - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 -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 "Si votre port TCP entrant est activé ET bloqué par un pare-feu, les routeurs ne pourront pas le contacter par TCP, ce qui dégrade le réseau." - #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 msgid "Please open your firewall or disable inbound TCP above." msgstr "Merci d'ouvrir votre pare-feu ou de désactiver le TCP entrant ci-dessus." @@ -4865,14 +4816,6 @@ msgstr "(Dé)banissement manuel d'un pair" msgid "Banning will prevent the participation of this peer in tunnels you create." msgstr "Le banissement empêchera ce pair de participer aux tunnels que vous créez." -#: ../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 "Les boni peuvent être positifs ou négatifs, et influencent l'affectation des pairs dans les groupes \"Rapides\" et \"Hautes capacités\". Les pairs rapides sont utilisés pour les tunnels clients, et les pairs à hautes capacités pour quelques tunnels exploratoires. Les boni actuels sont affichés sur la" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 -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 "Les boni peuvent être positifs ou négatifs, et influencent l'inclusion des pairs dans les groupes \"Rapides\" et \"Hautes capacités\". Les pairs rapides servent pour les tunnels clients, et les pairs à hautes capacités servent pour quelques tunnels exploratoires. Les boni actuels sont affichés sur la" - #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:327 msgid "profiles page" msgstr "page des profils" @@ -4942,10 +4885,6 @@ msgstr "(Ultérieurement, Les applications clientes I2P pourront intégrer leurs msgid "If you are on windows, you can either enable or disable that icon here." msgstr "Si vous êtes sur Windows, vous pouvez (dés)activer cette icône ici." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 -msgid "Hide systray icon" -msgstr "Masquer l'icône de la zone de notification" - #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 msgid "Run on startup" msgstr "Lancer au démarrage" From 76bbc604aefe8e6079acae6befab3e37c89f6155 Mon Sep 17 00:00:00 2001 From: magma Date: Fri, 25 Mar 2011 11:09:59 +0000 Subject: [PATCH 344/463] ? --- apps/i2psnark/locale/messages_fr.po | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/apps/i2psnark/locale/messages_fr.po b/apps/i2psnark/locale/messages_fr.po index 8810c8702..5c9869d7e 100644 --- a/apps/i2psnark/locale/messages_fr.po +++ b/apps/i2psnark/locale/messages_fr.po @@ -617,11 +617,6 @@ msgstr "aucun intérêt (nous n'avons aucun morceau utile au pair)" msgid "Choking (We are not allowing the peer to request pieces)" msgstr "bridage (nous ne permettons pas au pair de demander un morceau)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159 -#, java-format -msgid "Details at {0} tracker" -msgstr "Détails au tracker {0}" - #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1188 msgid "Add Torrent" msgstr "Ajouter torrent" @@ -855,10 +850,6 @@ msgstr "complet" msgid "bytes remaining" msgstr "Octets restants" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806 -msgid "Open" -msgstr "Ouvrir" - #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1832 msgid "High" msgstr "Haut" @@ -890,11 +881,6 @@ msgstr "Torrent déjà actif: {0}" msgid "Torrent already in the queue: {0}" msgstr "Torrent déjà dans la queue: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1755 -#, java-format -msgid "Failed to copy torrent file to {0}" -msgstr "Impossible de copier le torrent vers {0}" - #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 #, java-format msgid "Torrent at {0} was not valid" From e255de6f72655cf0919625d739ca6519f16926c6 Mon Sep 17 00:00:00 2001 From: magma Date: Fri, 25 Mar 2011 14:20:33 +0000 Subject: [PATCH 345/463] '->\' --- apps/routerconsole/locale/messages_fr.po | 324 +++++++++++------------ 1 file changed, 162 insertions(+), 162 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index c99060cae..7e1eeb394 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -157,16 +157,16 @@ msgstr "Réamorçage: collecte des URL sources." #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:152 msgid "Last reseed failed fully (failed reading seed URL)." -msgstr "Échec complet du dernier réamorçage (échec de lecture de l'URL source)" +msgstr "Échec complet du dernier réamorçage (échec de lecture de l\'URL source)" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:178 msgid "Last reseed failed fully (no routerInfo URLs at seed URL)." -msgstr "Échec complet du dernier réamorçage (pas de routerInfo à l'URL source)" +msgstr "Échec complet du dernier réamorçage (pas de routerInfo à l\'URL source)" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:191 #, java-format msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." -msgstr "Réamorçage: collecte routerInfo depuis l'URL source ({0} réussie, {1} erreurs)." +msgstr "Réamorçage: collecte routerInfo depuis l\'URL source ({0} réussie, {1} erreurs)." #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281 #, java-format @@ -249,15 +249,15 @@ msgstr "Connexion sortante" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 msgid "They offered to introduce us (help other peers traverse our firewall)" -msgstr "Ils ont proposé de nous présenter (aide d'autres pairs à passer notre pare-feu)" +msgstr "Ils ont proposé de nous présenter (aide d\'autres pairs à passer notre pare-feu)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 msgid "We offered to introduce them (help other peers traverse their firewall)" -msgstr "Nous avons proposé de les présenter (aide d'autres pairs à passer leur pare-feu)" +msgstr "Nous avons proposé de les présenter (aide d\'autres pairs à passer leur pare-feu)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "How long since a packet has been received / sent" -msgstr "Combien de temps écoulé depuis la dernière réception / émission d'un paquet " +msgstr "Combien de temps écoulé depuis la dernière réception / émission d\'un paquet " #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737 @@ -294,15 +294,15 @@ msgstr "décallée" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 msgid "The difference between the peer's clock and your own" -msgstr "L'écart de temps entre l'horloge du pair et la votre" +msgstr "L\'écart de temps entre l\'horloge du pair et la votre" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "The congestion window, which is how many bytes can be sent without an acknowledgement" -msgstr "La fenêtre de congestion, en nombre d'octets transmissibles sans acquitement" +msgstr "La fenêtre de congestion, en nombre d\'octets transmissibles sans acquitement" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 msgid "The number of sent messages awaiting acknowledgement" -msgstr "Le nombre de messages en attente d'acquitement" +msgstr "Le nombre de messages en attente d\'acquitement" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 msgid "The maximum number of concurrent messages to send" @@ -310,7 +310,7 @@ msgstr "Le nombre maximum de messages simultanés à envoyer" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 msgid "The number of pending sends which exceed congestion window" -msgstr "Le nombre d'envois en attente qui débordent de la fenêtre de congestion" +msgstr "Le nombre d\'envois en attente qui débordent de la fenêtre de congestion" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 msgid "The slow start threshold" @@ -318,7 +318,7 @@ msgstr "Le seuil de démarrage lent" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 msgid "The round trip time in milliseconds" -msgstr "L'aller-retour en ms" +msgstr "L\'aller-retour en ms" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 @@ -327,7 +327,7 @@ msgstr "Dev" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 msgid "The standard deviation of the round trip time in milliseconds" -msgstr "La dérive standard d'aller-retour en ms" +msgstr "La dérive standard d\'aller-retour en ms" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 msgid "The retransmit timeout in milliseconds" @@ -379,7 +379,7 @@ msgstr "Le nombre de paquets en double reçus du pair" #: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:627 #, java-format msgid "Excessive clock skew: {0}" -msgstr "Décalage excessif de l'horloge: {0}" +msgstr "Décalage excessif de l\'horloge: {0}" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:730 msgid "NTCP connections" @@ -393,7 +393,7 @@ msgstr "Limite" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 msgid "Timeout" -msgstr "Dépassement d'attente" +msgstr "Dépassement d\'attente" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:743 msgid "Out Queue" @@ -454,7 +454,7 @@ msgstr "Tri par durée de connexion" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1908 msgid "Sort by clock skew" -msgstr "Tri par décalage d'horloge" +msgstr "Tri par décalage d\'horloge" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1911 msgid "Sort by congestion window" @@ -466,11 +466,11 @@ msgstr "Tri par seuil de démarrage lent" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1916 msgid "Sort by round trip time" -msgstr "Tri par durée d'aller-retour" +msgstr "Tri par durée d\'aller-retour" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918 msgid "Sort by round trip time deviation" -msgstr "Tri par dérive de durée d'aller-retour" +msgstr "Tri par dérive de durée d\'aller-retour" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1920 msgid "Sort by retransmission timeout" @@ -551,7 +551,7 @@ msgstr "Perte de tunnels: Forte charge" #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:698 msgid "Dropping tunnel requests: Queue time" -msgstr "Perte de tunnels: Temps en file d'attente" +msgstr "Perte de tunnels: Temps en file d\'attente" #. 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!! @@ -717,7 +717,7 @@ msgstr "Suisse" #: ../java/build/Countries.java:44 msgid "Cote D'Ivoire" -msgstr "Côte d'ivoire" +msgstr "Côte d\'ivoire" #: ../java/build/Countries.java:45 msgid "Cook Islands" @@ -945,7 +945,7 @@ msgstr "Inde" #: ../java/build/Countries.java:102 msgid "British Indian Ocean Territory" -msgstr "Territoire britannique de l'océan Indien" +msgstr "Territoire britannique de l\'océan Indien" #: ../java/build/Countries.java:103 msgid "Iraq" @@ -1417,7 +1417,7 @@ msgstr "Îles mineures éloignées des États-Unis" #: ../java/build/Countries.java:223 msgid "United States" -msgstr "États unis d'amérique" +msgstr "États unis d\'amérique" #: ../java/build/Countries.java:224 msgid "Uruguay" @@ -1501,7 +1501,7 @@ msgstr "Configuration sauvegardé avec succès" #: ../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 "Erreur pendant l'enregistrement de la configuration (appliquée mais non sauvegardée): contrôlez les historiques" +msgstr "Erreur pendant l\'enregistrement de la configuration (appliquée mais non sauvegardée): contrôlez les historiques" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:335 @@ -1511,7 +1511,7 @@ msgstr "Sauvegarder Configuration Client " #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:39 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:405 msgid "Save Interface Configuration" -msgstr "Sauvegarder la configuration de l'interface" +msgstr "Sauvegarder la configuration de l\'interface" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 @@ -1546,7 +1546,7 @@ msgstr "Greffon {0} arrêté" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:103 #, java-format msgid "Error stopping plugin {0}" -msgstr "Erreur d'arrêt du greffon {0}" +msgstr "Erreur d\'arrêt du greffon {0}" #. label (IE) #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:124 @@ -1626,7 +1626,7 @@ msgstr "URL de mise à jour non spécifiée pour {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:320 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:325 msgid "Plugin or update download already in progress." -msgstr "Greffon ou téléchargement de mise à jour déjà en cours d'exécution." +msgstr "Greffon ou téléchargement de mise à jour déjà en cours d\'exécution." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:311 #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:118 @@ -1651,7 +1651,7 @@ msgstr "Erreur de démarrage du greffon {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 msgid "Interface configuration saved successfully - restart required to take effect." -msgstr "La configuration de l'interface a été sauvegardée avec succès - redémarrer pour prise en compte." +msgstr "La configuration de l\'interface a été sauvegardée avec succès - redémarrer pour prise en compte." #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:85 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258 @@ -1903,11 +1903,11 @@ msgstr "Sauvegarder" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:121 msgid "Rechecking router reachability..." -msgstr "Vérification de l'accessibilité du routeur..." +msgstr "Vérification de l\'accessibilité du routeur..." #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:153 msgid "Updating IP address" -msgstr "Mise à jour d'adresse IP en cours" +msgstr "Mise à jour d\'adresse IP en cours" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:171 msgid "Disabling TCP completely" @@ -1973,7 +1973,7 @@ msgstr "Nécessite de entremetteurs SSU" #. 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 "Redémarrage respectueux en cours pour modifier l'adresse routeur publiée" +msgstr "Redémarrage respectueux en cours pour modifier l\'adresse routeur publiée" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:314 msgid "Updating bandwidth share percentage" @@ -2003,7 +2003,7 @@ msgstr "= {0} o/mois maximum" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:20 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:315 msgid "Ban peer until restart" -msgstr "Interdire pair jusqu'au redémarrage" +msgstr "Interdire pair jusqu\'au redémarrage" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:23 #, java-format @@ -2012,7 +2012,7 @@ msgstr "Banni manuellement via {0}" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24 msgid "banned until restart" -msgstr "interdit jusqu'au rédémarrage" +msgstr "interdit jusqu\'au rédémarrage" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:27 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:38 @@ -2031,7 +2031,7 @@ msgstr "plus interdit" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35 msgid "is not currently banned" -msgstr "n'est pas actuellement interdit" +msgstr "n\'est pas actuellement interdit" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:39 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:322 @@ -2075,7 +2075,7 @@ msgstr "Arrêter immédiatement" #. give the UI time to respond #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:36 msgid "Cancel shutdown" -msgstr "Annuler l'arrêt" +msgstr "Annuler l\'arrêt" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:37 msgid "Cancel restart" @@ -2129,7 +2129,7 @@ msgstr "Arrêt immédiat! (À la sauvage)" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:61 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:295 msgid "Cancel graceful shutdown" -msgstr "Annuler l'arrêt respectueux" +msgstr "Annuler l\'arrêt respectueux" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:63 msgid "Graceful shutdown cancelled" @@ -2182,12 +2182,12 @@ msgstr "Ne pas lancer I2P au démarrage" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:84 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:355 msgid "Dump threads" -msgstr "Dump fils d'exécution" +msgstr "Dump fils d\'exécution" #: ../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 "Afficher l'icône de zone de notification" +msgstr "Afficher l\'icône de zone de notification" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96 msgid "System tray icon enabled." @@ -2231,7 +2231,7 @@ msgstr "Service installé" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:107 msgid "Warning: unable to install the service" -msgstr "Avertissement: impossible d'installer le service" +msgstr "Avertissement: impossible d\'installer le service" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:113 msgid "Service removed" @@ -2251,7 +2251,7 @@ msgstr "Échec de mise à jour du filtre de statistiques et emplacement" #: ../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 "Liste des graphiques mise à jour. Peut nécessiter jusqu'à 60s pour être répercutée ici et sur la page des graphiques" +msgstr "Liste des graphiques mise à jour. Peut nécessiter jusqu\'à 60s pour être répercutée ici et sur la page des graphiques" #. the count isn't really correct anyway, since we don't check for actual changes #. addFormNotice("Updated settings for " + updated + " pools."); @@ -2266,7 +2266,7 @@ msgstr "Configuration du tunnel exploratoire a été sauvegardé avec succès." #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:36 msgid "Error saving the configuration (applied but not saved) - please see the error logs." -msgstr "Erreur pendant l'enregistrement de la configuration (appliquée mais non sauvegardée): contrôlez les historiques" +msgstr "Erreur pendant l\'enregistrement de la configuration (appliquée mais non sauvegardée): contrôlez les historiques" #. * dummies for translation #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:14 @@ -2295,11 +2295,11 @@ msgstr "Tunnels clients pour" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:69 msgid "ANONYMITY WARNING - Settings include 0-hop tunnels." -msgstr "AVERTISSEMENT d'ANONYMAT: les réglages incluent des tunnels à 0 saut!" +msgstr "AVERTISSEMENT d\'ANONYMAT: les réglages incluent des tunnels à 0 saut!" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74 msgid "ANONYMITY WARNING - Settings include 1-hop tunnels." -msgstr "AVERTISSEMENT d'ANONYMAT: les réglages incluent des tunnels à 1 saut!" +msgstr "AVERTISSEMENT d\'ANONYMAT: les réglages incluent des tunnels à 1 saut!" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:77 msgid "PERFORMANCE WARNING - Settings include very long tunnels." @@ -2328,7 +2328,7 @@ msgstr "Quantité" #. tunnel backup quantity #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:145 msgid "Backup quantity" -msgstr "'Backup' quantité" +msgstr "Quantité de secours" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:167 msgid "Inbound options" @@ -2400,11 +2400,11 @@ msgstr "Pas de mise à jour disponible" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:101 msgid "Updating news URL to" -msgstr "Mise à jour de l'URL de news vers " +msgstr "Mise à jour de l\'URL de news vers " #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:109 msgid "Updating proxy host to" -msgstr "Mise à jour de l'hôte mandataire vers" +msgstr "Mise à jour de l\'hôte mandataire vers" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:117 msgid "Updating proxy port to" @@ -2420,7 +2420,7 @@ msgstr "Mise à jour de la stratégie de mises à jour vers" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:146 msgid "Updating update URLs." -msgstr "Mise à jour de l'URL de mises à jour." +msgstr "Mise à jour de l\'URL de mises à jour." #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:155 msgid "Updating trusted keys." @@ -2428,7 +2428,7 @@ msgstr "Mise à jour des clefs de confiance." #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:163 msgid "Updating unsigned update URL to" -msgstr "Mise à jour de l'URL de mises à jour non signées vers" +msgstr "Mise à jour de l\'URL de mises à jour non signées vers" #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:88 #: ../java/src/net/i2p/router/web/GraphHelper.java:167 @@ -2453,7 +2453,7 @@ msgstr "Télécharger, vérifier et redémarrer" #: ../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 "Soumission de formulaire incorrecte: vous avez peut-être utilisé le bouton 'Page arrière' ou 'Rechargement' de votre navigateur. Merci de renvoyer." +msgstr "Soumission de formulaire incorrecte: vous avez peut-être utilisé le bouton \'Page arrière\' ou \'Rechargement\' de votre navigateur. Merci de renvoyer." #: ../java/src/net/i2p/router/web/GraphHelper.java:93 msgid "Combined bandwidth graph" @@ -2510,7 +2510,7 @@ msgstr "pixels" #: ../java/src/net/i2p/router/web/GraphHelper.java:156 msgid "Refresh delay" -msgstr "Delai d'actualisation" +msgstr "Delai d\'actualisation" #: ../java/src/net/i2p/router/web/GraphHelper.java:138 msgid "hour" @@ -2539,7 +2539,7 @@ msgstr "Fichier pas trouvé" #: ../java/src/net/i2p/router/web/LogsHelper.java:52 msgid "No log messages" -msgstr "Pas de messages d'historique" +msgstr "Pas de messages d\'historique" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:80 msgid "Network Database RouterInfo Lookup" @@ -2724,7 +2724,7 @@ msgstr "Actualités vérifiés il y a {0}" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:77 #, java-format msgid "Cannot check, plugin {0} is not installed" -msgstr "Non contrôlable, le greffon {0} n'est pas installé" +msgstr "Non contrôlable, le greffon {0} n\'est pas installé" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:129 #, java-format @@ -2830,7 +2830,7 @@ msgstr "La signature du greffon téléchargé ne correspond pas à celle de celu #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:320 #, java-format msgid "Downloaded plugin version {0} is not newer than installed plugin" -msgstr "La version {0} du greffon téléchargé n'est pas plus récente que celle installée" +msgstr "La version {0} du greffon téléchargé n\'est pas plus récente que celle installée" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:327 #, java-format @@ -2844,12 +2844,12 @@ msgstr "La mise à jour du greffon nécessite au plus la version {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351 msgid "Plugin is for upgrades only, but the plugin is not installed" -msgstr "Ce greffon est seulement une mise à jour, mais le greffon prérequis n'est pas installé" +msgstr "Ce greffon est seulement une mise à jour, mais le greffon prérequis n\'est pas installé" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:364 #, java-format msgid "Failed to install plugin in {0}" -msgstr "Échec d'installation du greffon {0}" +msgstr "Échec d\'installation du greffon {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:371 #, java-format @@ -3018,11 +3018,11 @@ msgstr "Dernier mauvais stockage" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201 msgid "1h Fail Rate" -msgstr "Taux d'échec (1h)" +msgstr "Taux d\'échec (1h)" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 msgid "1d Fail Rate" -msgstr "Taux d'échec (1j)" +msgstr "Taux d\'échec (1j)" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:250 msgid "Thresholds" @@ -3042,7 +3042,7 @@ msgstr "Pairs bien intégrés" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 msgid "as determined by the profile organizer" -msgstr "tel que défini par l'organisateur du profil" +msgstr "tel que défini par l\'organisateur du profil" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 msgid "groups" @@ -3098,7 +3098,7 @@ msgstr "Le bannissement temporaire expire dans {0}" #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:59 #, java-format msgid "Banned until restart or in {0}" -msgstr "Banni jusqu'au redémarrage ou dans {0}" +msgstr "Banni jusqu\'au redémarrage ou dans {0}" #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:71 msgid "unban now" @@ -3158,7 +3158,7 @@ msgstr "Ces statistiques sont initialement destinées au développement et au d #: ../java/src/net/i2p/router/web/StatsGenerator.java:105 #: ../java/src/net/i2p/router/web/StatsGenerator.java:156 msgid "No lifetime events" -msgstr "pas d'événement de durée de vie" +msgstr "pas d\'événement de durée de vie" #: ../java/src/net/i2p/router/web/StatsGenerator.java:116 msgid "frequency" @@ -3166,11 +3166,11 @@ msgstr "fréquence" #: ../java/src/net/i2p/router/web/StatsGenerator.java:120 msgid "Rolling average events per period" -msgstr "Moyenne glissante d'évènements par période" +msgstr "Moyenne glissante d\'évènements par période" #: ../java/src/net/i2p/router/web/StatsGenerator.java:124 msgid "Highest events per period" -msgstr "maximum d'évènements par période" +msgstr "maximum d\'évènements par période" #. if (showAll && (curFreq.getMaxAverageEventsPerPeriod() > 0) && (curFreq.getAverageEventsPerPeriod() > 0) ) { #. buf.append("(current is "); @@ -3204,15 +3204,15 @@ msgstr "Plus haute moyenne" #: ../java/src/net/i2p/router/web/StatsGenerator.java:201 #, java-format msgid "in this period which ended {0} ago." -msgstr "dans cette période qui s'est terminée il y a {0}." +msgstr "dans cette période qui s\'est terminée il y a {0}." #: ../java/src/net/i2p/router/web/StatsGenerator.java:204 msgid "No events" -msgstr "pas d'événement" +msgstr "pas d\'événement" #: ../java/src/net/i2p/router/web/StatsGenerator.java:211 msgid "Average event count" -msgstr "nombre moyen d'évènements" +msgstr "nombre moyen d\'évènements" #: ../java/src/net/i2p/router/web/StatsGenerator.java:213 msgid "Events in peak period" @@ -3224,7 +3224,7 @@ msgstr "Graphique de données" #: ../java/src/net/i2p/router/web/StatsGenerator.java:223 msgid "Graph Event Count" -msgstr "nombre d'évènements de graphiques" +msgstr "nombre d\'évènements de graphiques" #: ../java/src/net/i2p/router/web/StatsGenerator.java:226 msgid "Export Data as XML" @@ -3253,11 +3253,11 @@ msgstr "Services I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:63 msgid "Manage your I2P hosts file here (I2P domain name resolution)" -msgstr "Gérer votre fichier 'I2P hosts' ici (I2P DNS)" +msgstr "Gérer votre fichier \'I2P hosts\' ici (I2P DNS)" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:65 msgid "Addressbook" -msgstr "Carnet d'adresses" +msgstr "Carnet d\'adresses" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:69 msgid "Built-in anonymous BitTorrent Client" @@ -3361,7 +3361,7 @@ msgstr "Identité locale" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:175 msgid "Your unique I2P router identity is" -msgstr "L'identité unique de votre routeur est" +msgstr "L\'identité unique de votre routeur est" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179 msgid "never reveal it to anyone" @@ -3381,7 +3381,7 @@ msgstr "Temps de service" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 msgid "Help with configuring your firewall and router for optimal I2P performance" -msgstr "Aide avec la configuration du pare-feu et du routeur afin d'optimiser la performance d'I2P" +msgstr "Aide avec la configuration du pare-feu et du routeur afin d\'optimiser la performance d\'I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 msgid "Download" @@ -3473,7 +3473,7 @@ msgstr "Retard accumulé" #: ../java/src/net/i2p/router/web/SummaryHelper.java:106 msgid "ERR-Client Manager I2CP Error - check logs" -msgstr "ERR-Client Manager I2CP Error - vérifier l'historique" +msgstr "ERR-Client Manager I2CP Error - vérifier l\'historique" #: ../java/src/net/i2p/router/web/SummaryHelper.java:108 #, java-format @@ -3512,7 +3512,7 @@ msgstr "Bloqué par un pare-feu" #: ../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-port UDP en cours d'utilisation - Réglez i2np.udp.internalPort=xxxx dans la configuration avancée et redémarrez" +msgstr "ERR-port UDP en cours d\'utilisation - Réglez i2np.udp.internalPort=xxxx dans la configuration avancée et redémarrez" #: ../java/src/net/i2p/router/web/SummaryHelper.java:141 msgid "ERR-No Active Peers, Check Network Connection and Firewall" @@ -3678,7 +3678,7 @@ msgstr "Tunnels participants inactifs" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:127 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:218 msgid "Lifetime bandwidth usage" -msgstr "Durée de vie de l'utilisation de bande passante" +msgstr "Durée de vie de l\'utilisation de bande passante" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "Expiry" @@ -3695,7 +3695,7 @@ msgstr "Point terminal" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:205 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:212 msgid "Build in progress" -msgstr "Création d'un tunnel en cours" +msgstr "Création d\'un tunnel en cours" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:205 msgid "inbound" @@ -3795,7 +3795,7 @@ msgstr "Échec de transfert" #. wars for ConfigClientsHelper #: ../java/strings/Strings.java:12 msgid "addressbook" -msgstr "carnet d'adresse" +msgstr "carnet d\'adresse" #: ../java/strings/Strings.java:13 msgid "i2psnark" @@ -3830,7 +3830,7 @@ msgstr "Pont applicatif SAM" #: ../java/strings/Strings.java:24 msgid "Application tunnels" -msgstr "Tunnels d'application" +msgstr "Tunnels d\'application" #: ../java/strings/Strings.java:25 msgid "My eepsite web server" @@ -3931,7 +3931,7 @@ msgstr "InNetPool" #: ../java/strings/Strings.java:64 msgid "JobQueue" -msgstr "File d'attente" +msgstr "File d\'attente" #: ../java/strings/Strings.java:65 msgid "NetworkDatabase" @@ -4032,7 +4032,7 @@ msgstr "Taux de bande passante de réception faible" #. bw.recvRate #: ../java/strings/Strings.java:102 msgid "Low-level bandwidth send rate" -msgstr "Taux de bande passante d'émission faible" +msgstr "Taux de bande passante d\'émission faible" #. bw.sendRate #: ../java/strings/Strings.java:103 @@ -4121,7 +4121,7 @@ msgstr "Limiteur de bande passante" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:300 msgid "I2P will work best if you configure your rates to match the speed of your internet connection." -msgstr "I2P fonctionnera mieux si vous configurez le débit de transmission et réception pour qu'ils soient égales à ceux de votre connexion internet." +msgstr "I2P fonctionnera mieux si vous configurez le débit de transmission et réception pour qu\'ils soient égales à ceux de votre connexion internet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:304 msgid "KBps In" @@ -4148,7 +4148,7 @@ msgstr "Vous avez configuré I2P à partager que {0} KOps." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:346 msgid "I2P requires at least 12KBps to enable sharing. " -msgstr "I2P a besoin de plus de 12KOps afin d'activer le partage de bande passante" +msgstr "I2P a besoin de plus de 12KOps afin d\'activer le partage de bande passante" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347 msgid "Please enable sharing (participating in tunnels) by configuring more bandwidth. " @@ -4202,7 +4202,7 @@ msgstr "Configuration UPnP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:385 msgid "Enable UPnP to open firewall ports" -msgstr "Activer UPnP afin d'ouvrir les ports du pare-feu" +msgstr "Activer UPnP afin d\'ouvrir les ports du pare-feu" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:387 msgid "UPnP status" @@ -4215,36 +4215,36 @@ msgstr "Configuration IP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:391 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:461 msgid "Externally reachable hostname or IP address" -msgstr "Adresse IP ou nom d'hôte qui est joignable depuis l'exterieur" +msgstr "Adresse IP ou nom d\'hôte qui est joignable depuis l\'exterieur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395 msgid "Use all auto-detect methods" -msgstr "Utiliser toute méthode d'auto-détection" +msgstr "Utiliser toute méthode d\'auto-détection" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399 msgid "Disable UPnP IP address detection" -msgstr "Desactiver la détection de l'adresse IP par UPnP" +msgstr "Desactiver la détection de l\'adresse IP par UPnP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 msgid "Ignore local interface IP address" -msgstr "Ignorer l'adresse IP de l'interface locale" +msgstr "Ignorer l\'adresse IP de l\'interface locale" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:407 msgid "Use SSU IP address detection only" -msgstr "Utiliser seulement SSU pour détecter l'adresse IP" +msgstr "Utiliser seulement SSU pour détecter l\'adresse IP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:411 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 msgid "Specify hostname or IP" -msgstr "Saisir l'adresse IP ou le nom de l'hôte" +msgstr "Saisir l\'adresse IP ou le nom de l\'hôte" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 msgid "Select Interface" -msgstr "Choisir l'interface" +msgstr "Choisir l\'interface" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:431 msgid "Hidden mode - do not publish IP" -msgstr "Mode caché - ne pas publier l'adresse IP" +msgstr "Mode caché - ne pas publier l\'adresse IP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:433 msgid "(prevents participating traffic)" @@ -4252,11 +4252,11 @@ msgstr "(empêche le trafic participants)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 msgid "Action when IP changes" -msgstr "Action quand l'IP change" +msgstr "Action quand l\'IP change" #: ../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 "Mode IP publique dynamique/PC portable: modifie l'identité du router et le port UDP quand l'IP change pour améliorer l'anonymat" +msgstr "Mode IP publique dynamique/PC portable: modifie l\'identité du router et le port UDP quand l\'IP change pour améliorer l\'anonymat" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:441 msgid "Experimental" @@ -4276,7 +4276,7 @@ msgstr "Configuration TCP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:465 msgid "Use auto-detected IP address" -msgstr "Utiliser l'adresse IP qui a été auto-détectée" +msgstr "Utiliser l\'adresse IP qui a été auto-détectée" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:467 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499 @@ -4285,11 +4285,11 @@ msgstr "actuellement" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:471 msgid "if we are not firewalled" -msgstr "s'il n'y a pas de pare-feu" +msgstr "s\'il n\'y a pas de pare-feu" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:475 msgid "Always use auto-detected IP address (Not firewalled)" -msgstr "Utiliser toujours l'adresse IP qui a été auto-détectée (pas de pare-feu)" +msgstr "Utiliser toujours l\'adresse IP qui a été auto-détectée (pas de pare-feu)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 msgid "Disable inbound (Firewalled)" @@ -4305,7 +4305,7 @@ msgstr "(selectionner seulement si derrière un pare-feu qui limite les connexio #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 msgid "Externally reachable TCP port" -msgstr "Port TCP joignable de l'extérieur" +msgstr "Port TCP joignable de l\'extérieur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 msgid "Use the same port configured for UDP" @@ -4332,7 +4332,7 @@ msgstr "Aide avec la configuration" #: ../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 fonctionnera derrière la plupart des pare-feux, mais votre vitesse et votre intégration avec le réseau sera améliorée par la redirection des ports UDP et TCP d'I2P." +msgstr "I2P fonctionnera derrière la plupart des pare-feux, mais votre vitesse et votre intégration avec le réseau sera améliorée par la redirection des ports UDP et TCP d\'I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:528 msgid "Certain firewalls such as symmetric NATs may not work well with I2P." @@ -4340,7 +4340,7 @@ msgstr "Il y a des certains types de pare-feu (tel que les NAT symétriques) qui #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:537 msgid "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports." -msgstr "UPnP est utilisé pour communiquer avec des \"Internet Gateway Devices (IGDs)\" afin de détecter l'adresse IP extérieure et de contrôler la redirection des ports." +msgstr "UPnP est utilisé pour communiquer avec des \"Internet Gateway Devices (IGDs)\" afin de détecter l\'adresse IP extérieure et de contrôler la redirection des ports." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:539 msgid "UPnP support is beta, and may not work for any number of reasons" @@ -4348,27 +4348,27 @@ msgstr "UPnP est toujours en développement, et il peut arrêter de fonctionner #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:541 msgid "No UPnP-compatible device present" -msgstr "Il n'y a pas d'appareil qui est compatible avec UPnP" +msgstr "Il n\'y a pas d\'appareil qui est compatible avec UPnP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:543 msgid "UPnP disabled on the device" -msgstr "UPnP est desactivé sur l'appareil" +msgstr "UPnP est desactivé sur l\'appareil" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:545 msgid "Software firewall interference with UPnP" -msgstr "Il y a de l'intérference entre un pare-feu en software et UPnP" +msgstr "Il y a de l\'intérference entre un pare-feu en software et UPnP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:547 msgid "Bugs in the device's UPnP implementation" -msgstr "Il y a des bogues dans l'implementation d'UPnP dans l'appareil" +msgstr "Il y a des bogues dans l\'implementation d\'UPnP dans l\'appareil" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:549 msgid "Multiple firewall/routers in the internet connection path" -msgstr "Il y a plusieurs routeurs/pare-feux entre le routeur I2P et l'internet" +msgstr "Il y a plusieurs routeurs/pare-feux entre le routeur I2P et l\'internet" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:551 msgid "UPnP device change, reset, or address change" -msgstr "Un changement de l'appareil UPnP, une redémarrage, ou une changement d'adresse IP" +msgstr "Un changement de l\'appareil UPnP, une redémarrage, ou une changement d\'adresse IP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:553 msgid "Review the UPnP status here." @@ -4380,7 +4380,7 @@ msgstr "UPnP peut être activé ou desactivé au-dessus, mais afin de prendre en #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 msgid "Hostnames entered above will be published in the network database." -msgstr "Les noms d'hôtes qui ont été saisis au-dessus seront publié dans la base de données du réseau I2P." +msgstr "Les noms d\'hôtes qui ont été saisis au-dessus seront publié dans la base de données du réseau I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 msgid "They are not private." @@ -4392,11 +4392,11 @@ msgstr "En plus, ne saisissez pas une adresse IP privée tel que 127.0.0. #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 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 "Si vous saisissez une mauvaise adresse IP ou nom d'hôte, ou configurer votre NAT ou pare-feu incorrectement, votre intégration avec le réseau I2P dégradera substantiellement." +msgstr "Si vous saisissez une mauvaise adresse IP ou nom d\'hôte, ou configurer votre NAT ou pare-feu incorrectement, votre intégration avec le réseau I2P dégradera substantiellement." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 msgid "When in doubt, leave the settings at the defaults." -msgstr "Si vous n'êtes pas sûr de vous, laisser la configuration par défaut." +msgstr "Si vous n\'êtes pas sûr de vous, laisser la configuration par défaut." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 msgid "Reachability Help" @@ -4404,11 +4404,11 @@ msgstr "Aide sur la joignabilité" #: ../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 "Si vous pensez que vous avez ouvert votre pare-feu et qu'I2P indique toujours que vous êtes derrière le pare-feu, n'oubliez pas que vous avez peut-être plusieurs pare-feux: par exemple celui de votre box DSL et un pare-feu logiciel dans votre ordinateur." +msgstr "Si vous pensez que vous avez ouvert votre pare-feu et qu\'I2P indique toujours que vous êtes derrière le pare-feu, n\'oubliez pas que vous avez peut-être plusieurs pare-feux: par exemple celui de votre box DSL et un pare-feu logiciel dans votre ordinateur." #: ../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 "S'il y a une erreur, les historiques peuvent aider au diagnostic." +msgstr "S\'il y a une erreur, les historiques peuvent aider au diagnostic." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 msgid "Your UDP port appears to be firewalled." @@ -4424,19 +4424,19 @@ msgstr "Cependant, si ça se reproduit systématiquement, vous devez vérifier q #: ../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 fonctionne très bien derrière un pare-feu, ça n'est pas un problème. Derrière un pare-feu, le routeur utilise des \"entremetteurs\" pour relayer les connexions entrantes." +msgstr "I2P fonctionne très bien derrière un pare-feu, ça n\'est pas un problème. Derrière un pare-feu, le routeur utilise des \"entremetteurs\" pour relayer les connexions entrantes." #: ../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 "Cependant, vous obtiendrez plus de trafic participants et aiderez plus le réseau si vous avez la possibilité d'ouvrir vos pare-feux." +msgstr "Cependant, vous obtiendrez plus de trafic participants et aiderez plus le réseau si vous avez la possibilité d\'ouvrir vos pare-feux." #: ../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 "S vous pensez que vous l'avez déjà fait, n'oubliez pas que vous avez peut-être un pare-feu matériel et logiciel, ou que vous êtes derrière un pare-feu supplémentaire sur lequel vous n'avez aucun contrôle (p.e. en entreprise)." +msgstr "S vous pensez que vous l\'avez déjà fait, n\'oubliez pas que vous avez peut-être un pare-feu matériel et logiciel, ou que vous êtes derrière un pare-feu supplémentaire sur lequel vous n\'avez aucun contrôle (p.e. en entreprise)." #: ../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 "De plus, certains pare-feux ne peuvent pas transférer correctement TCP et UDP sur le même port, ou il pourrait y avoir d'autres limitations ou des bogues qui les empêcheraient de passer le trafic à I2P." +msgstr "De plus, certains pare-feux ne peuvent pas transférer correctement TCP et UDP sur le même port, ou il pourrait y avoir d\'autres limitations ou des bogues qui les empêcheraient de passer le trafic à I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 msgid "The router is currently testing whether your UDP port is firewalled." @@ -4444,7 +4444,7 @@ msgstr "Le routeur teste actuellement si votre port UDP est bloqué." #: ../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 "Le routeur n'est pas configuré pour publier son adresse, donc il n'attend pas de connexions entrantes." +msgstr "Le routeur n\'est pas configuré pour publier son adresse, donc il n\'attend pas de connexions entrantes." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 msgid "WARN - Firewalled and Fast" @@ -4472,11 +4472,11 @@ msgstr "WARN - Pare-feu avec TCP entrant activé" #: ../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 "Vous avez configuré le TCP entrant, cependant votre port UDP est bloqué et en conséquence il est probable que TCP l'est aussi." +msgstr "Vous avez configuré le TCP entrant, cependant votre port UDP est bloqué et en conséquence il est probable que TCP l\'est aussi." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 msgid "Please open your firewall or disable inbound TCP above." -msgstr "Merci d'ouvrir votre pare-feu ou de désactiver le TCP entrant ci-dessus." +msgstr "Merci d\'ouvrir votre pare-feu ou de désactiver le TCP entrant ci-dessus." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 msgid "WARN - Firewalled with UDP Disabled" @@ -4492,7 +4492,7 @@ msgstr "Vous apparaissez comme étant bloqué par un pare-feu pour TCP, et en co #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:631 msgid "Please open your firewall or enable UDP." -msgstr "Merci d'ouvrir votre pare-feu ou d'activer UDP." +msgstr "Merci d\'ouvrir votre pare-feu ou d\'activer UDP." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 msgid "ERR - Clock Skew" @@ -4500,11 +4500,11 @@ msgstr "ERR - horloge décalée" #: ../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 "L'horloge système est décalée, ce qui rend la participation au réseau difficile." +msgstr "L\'horloge système est décalée, ce qui rend la participation au réseau difficile." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:637 msgid "Correct your clock setting if this error persists." -msgstr "Corrigez votre réglage d'horloge si cette erreur persiste." +msgstr "Corrigez votre réglage d\'horloge si cette erreur persiste." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 msgid "ERR - Private TCP Address" @@ -4512,7 +4512,7 @@ msgstr "ERR - Adresse TCP privée" #: ../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 "Vous ne devez jamais publier une IP non routable telle que 127.0.0.1 ou 192.168.1.1 en tant qu'adresse externe." +msgstr "Vous ne devez jamais publier une IP non routable telle que 127.0.0.1 ou 192.168.1.1 en tant qu\'adresse externe." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 msgid "Correct the address or disable inbound TCP above." @@ -4532,19 +4532,19 @@ msgstr "I2P marche mal derrière ce genre de pare-feu. vous ne pourrez sûrement #: ../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 - Port UDP en cours d'utilisation - réglez i2np.udp.internalPort=xxxx dans la configuration avancée et redémarrez" +msgstr "ERR - Port UDP en cours d\'utilisation - réglez i2np.udp.internalPort=xxxx dans la configuration avancée et redémarrez" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 msgid "I2P was unable to bind to port 8887 or other configured port." -msgstr "I2P n'a pas pu s'attacher au port 8887 ou un autre port configuré." +msgstr "I2P n\'a pas pu s\'attacher au port 8887 ou un autre port configuré." #: ../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 "Vérifiez si un autre programme utilise le port configuré pour I2P. Si oui, arrêtez ce programme ou configurez I2P pour qu'il utilise un port différent (dans Windows tapez netstat dans une boîte de commandes pour lister les ports utilisés par les programmes)." +msgstr "Vérifiez si un autre programme utilise le port configuré pour I2P. Si oui, arrêtez ce programme ou configurez I2P pour qu\'il utilise un port différent (dans Windows tapez netstat dans une boîte de commandes pour lister les ports utilisés par les programmes)." #: ../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 "Il s'agit peut-être d'une erreur passagère, si l'autre programme n'utilise plus le port." +msgstr "Il s\'agit peut-être d\'une erreur passagère, si l\'autre programme n\'utilise plus le port." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:659 msgid "However, a restart is always required after this error." @@ -4552,11 +4552,11 @@ msgstr "Cependant un redémarrage du routeur est toujours requis après cette er #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 msgid "ERR - UDP Disabled and Inbound TCP host/port not set" -msgstr "ERR - UDP est désactivé et l'hôte/port entrants ne sont pas définis." +msgstr "ERR - UDP est désactivé et l\'hôte/port entrants ne sont pas définis." #: ../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 "vous n'avez pas configuré le TCP entrant ci-dessus avec un nom d'hôte et un port, mais vous avez désactivé UDP." +msgstr "vous n\'avez pas configuré le TCP entrant ci-dessus avec un nom d\'hôte et un port, mais vous avez désactivé UDP." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:665 msgid "Therefore your router cannot accept inbound connections." @@ -4564,7 +4564,7 @@ msgstr "Le routeur ne peut donc pas accepter de connexions entrantes." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:667 msgid "Please configure a TCP host and port above or enable UDP." -msgstr "Merci de configurer ci-dessus un nom et un port TCP, ou d'activer UDP." +msgstr "Merci de configurer ci-dessus un nom et un port TCP, ou d\'activer UDP." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:669 msgid "ERR - Client Manager I2CP Error - check logs" @@ -4572,11 +4572,11 @@ msgstr "ERR - Client Manager I2CP Error - vérifiez les historique" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 msgid "This is usually due to a port 7654 conflict. Check the logs to verify." -msgstr "Ceci est habituellement dû à un conflit de port 7654. Vérifiez dans l'historique. (et pensez éventuellement à netstat ;-) ) " +msgstr "Ceci est habituellement dû à un conflit de port 7654. Vérifiez dans l\'historique. (et pensez éventuellement à netstat ;-) ) " #: ../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 "Avez-vous une autre instance d'I2P en cours d'exécution? Arrêtez le programme en conflit et redémarrez I2P." +msgstr "Avez-vous une autre instance d\'I2P en cours d\'exécution? Arrêtez le programme en conflit et redémarrez I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:107 msgid "config advanced" @@ -4608,11 +4608,11 @@ msgstr "Configuration client" #: ../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 "Les client Java listés ci-dessous sont démarrés par le routeur et s'exécutent dans la même JVM." +msgstr "Les client Java listés ci-dessous sont démarrés par le routeur et s\'exécutent dans la même JVM." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:318 msgid "To change other client options, edit the file" -msgstr "Pour changer d'autres options du client, modifiez le fichier" +msgstr "Pour changer d\'autres options du client, modifiez le fichier" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:325 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:401 @@ -4622,7 +4622,7 @@ msgstr "Tous les changements nécessitent un redémarrage pour prendre effet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:339 msgid "External I2CP (I2P Client Protocol) Interface Configuration" -msgstr "Configuration de l'interface I2CP (I2P Client Protocol) externe" +msgstr "Configuration de l\'interface I2CP (I2P Client Protocol) externe" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 msgid "Enabled without SSL" @@ -4666,7 +4666,7 @@ msgstr "Tous les changements apportés ici doivent être répercutés dans le cl #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:399 msgid "Many clients do not support SSL or authorization." -msgstr "Nombre de clients ne prennent pas en charge l'authentification ou SSL." +msgstr "Nombre de clients ne prennent pas en charge l\'authentification ou SSL." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:407 msgid "WebApp Configuration" @@ -4674,11 +4674,11 @@ msgstr "Configuration WebApp" #: ../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 "Les applications Web Java listées ci-dessous sont démarrées par le client webConsole et s'exécutent dans la même JVM que le routeur. Il s'agit généralement d'applications web accessibles par la console du routeur. Il peut s'agir d'applications complètes (p.e. i2pSnark), d'interfaces pour d'autres clients ou applications qui doivent être activées séparément (p.e. susidns, i2ptunnel), ou n'ayant absolument aucune interface web (p.e. le carnet d'adresses)" +msgstr "Les applications Web Java listées ci-dessous sont démarrées par le client webConsole et s\'exécutent dans la même JVM que le routeur. Il s\'agit généralement d\'applications web accessibles par la console du routeur. Il peut s\'agir d\'applications complètes (p.e. i2pSnark), d\'interfaces pour d\'autres clients ou applications qui doivent être activées séparément (p.e. susidns, i2ptunnel), ou n\'ayant absolument aucune interface web (p.e. le carnet d\'adresses)" #: ../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 "Une appli web peut aussi être désactivée en supprimant le ficher .war du répertoire des web apps; mais le fichier et la web app reviendront à l'occasion d'une mise à jour du routeur, et donc la désactivation depuis la console est la méthode recommandée." +msgstr "Une appli web peut aussi être désactivée en supprimant le ficher .war du répertoire des web apps; mais le fichier et la web app reviendront à l\'occasion d\'une mise à jour du routeur, et donc la désactivation depuis la console est la méthode recommandée." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:350 msgid "Plugin Configuration" @@ -4694,7 +4694,7 @@ msgstr "Installation de greffon" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 msgid "To install a plugin, enter the download URL:" -msgstr "Pour installer un greffon, entrez l'URL de téléchargement:" +msgstr "Pour installer un greffon, entrez l\'URL de téléchargement:" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:106 msgid "config keyring" @@ -4746,7 +4746,7 @@ msgstr "Configuration des historiques I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 msgid "Configure I2P Logging Options" -msgstr "Configuration des options d'historiques" +msgstr "Configuration des options d\'historiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:303 msgid "Logging filename" @@ -4754,15 +4754,15 @@ msgstr "Nom du fichier des historiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307 msgid "(the symbol '@' will be replaced during log rotation)" -msgstr "(le caractère '@' sera remplacé lors des rotations d'historiques)" +msgstr "(le caractère \'@\' sera remplacé lors des rotations d\'historiques)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:309 msgid "Log record format" -msgstr "Format des enregistrements d'historiques" +msgstr "Format des enregistrements d\'historiques" #: ../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 "(use 'd' = date, 'c' = classe, 't' = tâche, 'p' = priorité, 'm' = message)" +msgstr "(use \'d\' = date, \'c\' = classe, \'t\' = tâche, \'p\' = priorité, \'m\' = message)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:315 msgid "Log date format" @@ -4770,15 +4770,15 @@ msgstr "Format de date des historiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 msgid "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)" -msgstr "('MM' = mois, 'dd' = jour, 'HH' = heure, 'mm' = minute, 'ss' = seconde, 'SSS' = milliseconde)" +msgstr "(\'MM\' = mois, \'dd\' = jour, \'HH\' = heure, \'mm\' = minute, \'ss\' = seconde, \'SSS\' = milliseconde)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:321 msgid "Max log file size" -msgstr "Taille max des fichiers d'historiques" +msgstr "Taille max des fichiers d\'historiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:325 msgid "Default log level" -msgstr "Niveau d'historisation par défaut" +msgstr "Niveau d\'historisation par défaut" #: ../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)" @@ -4786,7 +4786,7 @@ msgstr "(DEBUG et INFO sont déconseillés, car ils ralentissent double-plus-gr #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:331 msgid "Log level overrides" -msgstr "Remplacements du niveau d'historisation" +msgstr "Remplacements du niveau d\'historisation" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:335 msgid "New override" @@ -4810,7 +4810,7 @@ msgstr "Empreinte du routeur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:311 msgid "Manually Ban / Unban a Peer" -msgstr "(Dé)banissement manuel d'un pair" +msgstr "(Dé)banissement manuel d\'un pair" #: ../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." @@ -4847,19 +4847,19 @@ msgstr "Arrêter le routeur" #: ../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 "Un arrêt respectueux permet au routeur de satisfaire les accords en place avec d'autres routeurs avant la fermeture, mais cela prendra quelques minutes." +msgstr "Un arrêt respectueux permet au routeur de satisfaire les accords en place avec d\'autres routeurs avant la fermeture, mais cela prendra quelques minutes." #: ../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 "Si vous avez besoin d'arrêter le routeur I2P immédiatement, cette option est également disponible." +msgstr "Si vous avez besoin d\'arrêter le routeur I2P immédiatement, cette option est également disponible." #: ../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 "Si vous voulez que le routeur redémarre après l'arrêt, vous pouvez choisir une des possibilités suivantes." +msgstr "Si vous voulez que le routeur redémarre après l\'arrêt, vous pouvez choisir une des possibilités suivantes." #: ../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 "C'est utile dans certaines situations: p.e. quand vous faites un réglage que telle application cliente ne lit qu'au démarrage, comme le mot de passe de la console ou l'interface sur lequel elle écoute." +msgstr "C\'est utile dans certaines situations: p.e. quand vous faites un réglage que telle application cliente ne lit qu\'au démarrage, comme le mot de passe de la console ou l\'interface sur lequel elle écoute." #: ../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." @@ -4875,7 +4875,7 @@ msgstr "Intégration dans la zone de notification" #: ../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 "Sur Windows, une icône pour la zone de notification indiquant l'état du routeur " +msgstr "Sur Windows, une icône pour la zone de notification indiquant l\'état du routeur " #: ../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)." @@ -4899,7 +4899,7 @@ msgstr "Si vous préférez la ligne commande, vous pouvez aussi exécuter la" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:340 msgid "If you are running I2P as service right now, removing it will shut down your router immediately." -msgstr "Si vous exécutez actuellement I2P en tant que service, l'enlever arrêtera le routeur immédiatement." +msgstr "Si vous exécutez actuellement I2P en tant que service, l\'enlever arrêtera le routeur immédiatement." #: ../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." @@ -4911,11 +4911,11 @@ msgstr "Débogage" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:348 msgid "View the job queue" -msgstr "Voir la file d'attente " +msgstr "Voir la file d\'attente " #: ../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 "À l'occasion, il peut être utile de déboguer I2P à l'aide d'un cliché de tâche. Pour ce faire, merci de sélectionner l'option suivante de passer en revue le résultat dans l'historique du service Wrapper." +msgstr "À l\'occasion, il peut être utile de déboguer I2P à l\'aide d\'un cliché de tâche. Pour ce faire, merci de sélectionner l\'option suivante de passer en revue le résultat dans l\'historique du service Wrapper." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 msgid "Launch browser on router startup?" @@ -4923,7 +4923,7 @@ msgstr "Lancer le navigateur au démarrage du routeur?" #: ../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 "La plus grande partie de la configuration d'I2P se fait dans cette console, et donc pour votre confort, I2P peut lancer au démarrage votre navigateur sur " +msgstr "La plus grande partie de la configuration d\'I2P se fait dans cette console, et donc pour votre confort, I2P peut lancer au démarrage votre navigateur sur " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:107 msgid "config stats" @@ -4931,7 +4931,7 @@ msgstr "config stats" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:228 msgid "I2P Stats Configuration" -msgstr "Configuration des statistiques d'I2P" +msgstr "Configuration des statistiques d\'I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302 msgid "Configure I2P Stat Collection" @@ -5020,7 +5020,7 @@ msgstr "configuration IHM" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:240 msgid "I2P UI Configuration" -msgstr "Réglages de l'interface" +msgstr "Réglages de l\'interface" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:292 msgid "Router Console Theme" @@ -5032,7 +5032,7 @@ msgstr "Sélection de thème indisponible pour Internet Explorer, désolé." #: ../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 "Si vous n'utilisez pas IE, c'est que votre navigateur tente de le faire croire; configurez-le (ou son proxy) pour qu'il utilise une chaîne \"User Agent\" différente si vous souhaitez pouvoir changer de thème." +msgstr "Si vous n\'utilisez pas IE, c\'est que votre navigateur tente de le faire croire; configurez-le (ou son proxy) pour qu\'il utilise une chaîne \"User Agent\" différente si vous souhaitez pouvoir changer de thème." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:316 msgid "Router Console Language" @@ -5072,7 +5072,7 @@ msgstr "Actualités URL" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:321 msgid "Refresh frequency" -msgstr "Fréquence d'actualisation" +msgstr "Fréquence d\'actualisation" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:327 msgid "Update policy" @@ -5080,7 +5080,7 @@ msgstr "Méthode de mise à jour" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331 msgid "Update through the eepProxy?" -msgstr "Mettre à jour utilisant l'eeProxy ?" +msgstr "Mettre à jour utilisant l\'eeProxy ?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:335 msgid "eepProxy host" @@ -5104,11 +5104,11 @@ msgstr "Mettre à jour avec une version non signée?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:355 msgid "Unsigned Build URL" -msgstr "L'URL de version non signée" +msgstr "L\'URL de version non signée" #: ../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 "Les mises à jours d'I2P sont désactivées car vous n'avez pas le droit d'écriture sur le dossier d'installation. " +msgstr "Les mises à jours d\'I2P sont désactivées car vous n\'avez pas le droit d\'écriture sur le dossier d\'installation. " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:367 msgid "Save" @@ -5144,11 +5144,11 @@ msgstr "accueil" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:105 msgid "job queue" -msgstr "file d'attente" +msgstr "file d\'attente" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:226 msgid "I2P Router Job Queue" -msgstr "File d'attente de travail du routeur" +msgstr "File d\'attente de travail du routeur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:105 msgid "logs" @@ -5160,7 +5160,7 @@ msgstr "Fichier traces du routeur I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:229 msgid "I2P Version & Running Environment" -msgstr "Version d'I2P & environnement d'exécution" +msgstr "Version d\'I2P & environnement d\'exécution" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:231 msgid "Please report bugs on trac.i2p2.i2p." @@ -5200,7 +5200,7 @@ msgstr "Application web inactive" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:232 msgid "The requested web application is not running." -msgstr "L'application web demandée est inactive." +msgstr "L\'application web demandée est inactive." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:235 msgid "Please visit the config clients page to start it." From 07b3ebefc17ffe75a134bb2b754807ad6c7c63d5 Mon Sep 17 00:00:00 2001 From: magma Date: Fri, 25 Mar 2011 14:53:18 +0000 Subject: [PATCH 346/463] '->\' --- apps/routerconsole/locale/messages_fr.po | 324 +++++++++++------------ 1 file changed, 162 insertions(+), 162 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 7e1eeb394..5a547f218 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-11-19 18:16+0000\n" -"PO-Revision-Date: 2011-03-25 09:56+0100\n" +"PO-Revision-Date: 2011-03-25 15:35+0100\n" "Last-Translator: \n" "Language-Team: foo \n" "Language: \n" @@ -157,16 +157,16 @@ msgstr "Réamorçage: collecte des URL sources." #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:152 msgid "Last reseed failed fully (failed reading seed URL)." -msgstr "Échec complet du dernier réamorçage (échec de lecture de l\'URL source)" +msgstr "Échec complet du dernier réamorçage (échec de lecture de l\\''URL source)" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:178 msgid "Last reseed failed fully (no routerInfo URLs at seed URL)." -msgstr "Échec complet du dernier réamorçage (pas de routerInfo à l\'URL source)" +msgstr "Échec complet du dernier réamorçage (pas de routerInfo à l\\''URL source)" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:191 #, java-format msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." -msgstr "Réamorçage: collecte routerInfo depuis l\'URL source ({0} réussie, {1} erreurs)." +msgstr "Réamorçage: collecte routerInfo depuis l\\''URL source ({0} réussie, {1} erreurs)." #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281 #, java-format @@ -249,15 +249,15 @@ msgstr "Connexion sortante" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 msgid "They offered to introduce us (help other peers traverse our firewall)" -msgstr "Ils ont proposé de nous présenter (aide d\'autres pairs à passer notre pare-feu)" +msgstr "Ils ont proposé de nous présenter (aide d\\''autres pairs à passer notre pare-feu)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 msgid "We offered to introduce them (help other peers traverse their firewall)" -msgstr "Nous avons proposé de les présenter (aide d\'autres pairs à passer leur pare-feu)" +msgstr "Nous avons proposé de les présenter (aide d\\''autres pairs à passer leur pare-feu)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "How long since a packet has been received / sent" -msgstr "Combien de temps écoulé depuis la dernière réception / émission d\'un paquet " +msgstr "Combien de temps écoulé depuis la dernière réception / émission d\\''un paquet " #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737 @@ -294,15 +294,15 @@ msgstr "décallée" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 msgid "The difference between the peer's clock and your own" -msgstr "L\'écart de temps entre l\'horloge du pair et la votre" +msgstr "L\\''écart de temps entre l\\''horloge du pair et la votre" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "The congestion window, which is how many bytes can be sent without an acknowledgement" -msgstr "La fenêtre de congestion, en nombre d\'octets transmissibles sans acquitement" +msgstr "La fenêtre de congestion, en nombre d\\''octets transmissibles sans acquitement" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 msgid "The number of sent messages awaiting acknowledgement" -msgstr "Le nombre de messages en attente d\'acquitement" +msgstr "Le nombre de messages en attente d\\''acquitement" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 msgid "The maximum number of concurrent messages to send" @@ -310,7 +310,7 @@ msgstr "Le nombre maximum de messages simultanés à envoyer" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 msgid "The number of pending sends which exceed congestion window" -msgstr "Le nombre d\'envois en attente qui débordent de la fenêtre de congestion" +msgstr "Le nombre d\\''envois en attente qui débordent de la fenêtre de congestion" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 msgid "The slow start threshold" @@ -318,7 +318,7 @@ msgstr "Le seuil de démarrage lent" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 msgid "The round trip time in milliseconds" -msgstr "L\'aller-retour en ms" +msgstr "L\\''aller-retour en ms" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 @@ -327,7 +327,7 @@ msgstr "Dev" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 msgid "The standard deviation of the round trip time in milliseconds" -msgstr "La dérive standard d\'aller-retour en ms" +msgstr "La dérive standard d\\''aller-retour en ms" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 msgid "The retransmit timeout in milliseconds" @@ -379,7 +379,7 @@ msgstr "Le nombre de paquets en double reçus du pair" #: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:627 #, java-format msgid "Excessive clock skew: {0}" -msgstr "Décalage excessif de l\'horloge: {0}" +msgstr "Décalage excessif de l\\''horloge: {0}" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:730 msgid "NTCP connections" @@ -393,7 +393,7 @@ msgstr "Limite" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 msgid "Timeout" -msgstr "Dépassement d\'attente" +msgstr "Dépassement d\\''attente" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:743 msgid "Out Queue" @@ -454,7 +454,7 @@ msgstr "Tri par durée de connexion" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1908 msgid "Sort by clock skew" -msgstr "Tri par décalage d\'horloge" +msgstr "Tri par décalage d\\''horloge" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1911 msgid "Sort by congestion window" @@ -466,11 +466,11 @@ msgstr "Tri par seuil de démarrage lent" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1916 msgid "Sort by round trip time" -msgstr "Tri par durée d\'aller-retour" +msgstr "Tri par durée d\\''aller-retour" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918 msgid "Sort by round trip time deviation" -msgstr "Tri par dérive de durée d\'aller-retour" +msgstr "Tri par dérive de durée d\\''aller-retour" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1920 msgid "Sort by retransmission timeout" @@ -551,7 +551,7 @@ msgstr "Perte de tunnels: Forte charge" #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:698 msgid "Dropping tunnel requests: Queue time" -msgstr "Perte de tunnels: Temps en file d\'attente" +msgstr "Perte de tunnels: Temps en file d\\''attente" #. 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!! @@ -717,7 +717,7 @@ msgstr "Suisse" #: ../java/build/Countries.java:44 msgid "Cote D'Ivoire" -msgstr "Côte d\'ivoire" +msgstr "Côte d\\''ivoire" #: ../java/build/Countries.java:45 msgid "Cook Islands" @@ -945,7 +945,7 @@ msgstr "Inde" #: ../java/build/Countries.java:102 msgid "British Indian Ocean Territory" -msgstr "Territoire britannique de l\'océan Indien" +msgstr "Territoire britannique de l\\''océan Indien" #: ../java/build/Countries.java:103 msgid "Iraq" @@ -1417,7 +1417,7 @@ msgstr "Îles mineures éloignées des États-Unis" #: ../java/build/Countries.java:223 msgid "United States" -msgstr "États unis d\'amérique" +msgstr "États unis d\\''amérique" #: ../java/build/Countries.java:224 msgid "Uruguay" @@ -1501,7 +1501,7 @@ msgstr "Configuration sauvegardé avec succès" #: ../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 "Erreur pendant l\'enregistrement de la configuration (appliquée mais non sauvegardée): contrôlez les historiques" +msgstr "Erreur pendant l\\''enregistrement de la configuration (appliquée mais non sauvegardée): contrôlez les historiques" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:335 @@ -1511,7 +1511,7 @@ msgstr "Sauvegarder Configuration Client " #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:39 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:405 msgid "Save Interface Configuration" -msgstr "Sauvegarder la configuration de l\'interface" +msgstr "Sauvegarder la configuration de l\\''interface" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 @@ -1546,7 +1546,7 @@ msgstr "Greffon {0} arrêté" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:103 #, java-format msgid "Error stopping plugin {0}" -msgstr "Erreur d\'arrêt du greffon {0}" +msgstr "Erreur d\\''arrêt du greffon {0}" #. label (IE) #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:124 @@ -1626,7 +1626,7 @@ msgstr "URL de mise à jour non spécifiée pour {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:320 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:325 msgid "Plugin or update download already in progress." -msgstr "Greffon ou téléchargement de mise à jour déjà en cours d\'exécution." +msgstr "Greffon ou téléchargement de mise à jour déjà en cours d\\''exécution." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:311 #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:118 @@ -1651,7 +1651,7 @@ msgstr "Erreur de démarrage du greffon {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 msgid "Interface configuration saved successfully - restart required to take effect." -msgstr "La configuration de l\'interface a été sauvegardée avec succès - redémarrer pour prise en compte." +msgstr "La configuration de l\\''interface a été sauvegardée avec succès - redémarrer pour prise en compte." #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:85 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258 @@ -1903,11 +1903,11 @@ msgstr "Sauvegarder" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:121 msgid "Rechecking router reachability..." -msgstr "Vérification de l\'accessibilité du routeur..." +msgstr "Vérification de l\\''accessibilité du routeur..." #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:153 msgid "Updating IP address" -msgstr "Mise à jour d\'adresse IP en cours" +msgstr "Mise à jour d\\''adresse IP en cours" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:171 msgid "Disabling TCP completely" @@ -1973,7 +1973,7 @@ msgstr "Nécessite de entremetteurs SSU" #. 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 "Redémarrage respectueux en cours pour modifier l\'adresse routeur publiée" +msgstr "Redémarrage respectueux en cours pour modifier l\\''adresse routeur publiée" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:314 msgid "Updating bandwidth share percentage" @@ -2003,7 +2003,7 @@ msgstr "= {0} o/mois maximum" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:20 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:315 msgid "Ban peer until restart" -msgstr "Interdire pair jusqu\'au redémarrage" +msgstr "Interdire pair jusqu\\''au redémarrage" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:23 #, java-format @@ -2012,7 +2012,7 @@ msgstr "Banni manuellement via {0}" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24 msgid "banned until restart" -msgstr "interdit jusqu\'au rédémarrage" +msgstr "interdit jusqu\\''au rédémarrage" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:27 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:38 @@ -2031,7 +2031,7 @@ msgstr "plus interdit" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35 msgid "is not currently banned" -msgstr "n\'est pas actuellement interdit" +msgstr "n\\''est pas actuellement interdit" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:39 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:322 @@ -2075,7 +2075,7 @@ msgstr "Arrêter immédiatement" #. give the UI time to respond #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:36 msgid "Cancel shutdown" -msgstr "Annuler l\'arrêt" +msgstr "Annuler l\\''arrêt" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:37 msgid "Cancel restart" @@ -2129,7 +2129,7 @@ msgstr "Arrêt immédiat! (À la sauvage)" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:61 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:295 msgid "Cancel graceful shutdown" -msgstr "Annuler l\'arrêt respectueux" +msgstr "Annuler l\\''arrêt respectueux" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:63 msgid "Graceful shutdown cancelled" @@ -2182,12 +2182,12 @@ msgstr "Ne pas lancer I2P au démarrage" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:84 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:355 msgid "Dump threads" -msgstr "Dump fils d\'exécution" +msgstr "Dump fils d\\''exécution" #: ../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 "Afficher l\'icône de zone de notification" +msgstr "Afficher l\\''icône de zone de notification" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96 msgid "System tray icon enabled." @@ -2231,7 +2231,7 @@ msgstr "Service installé" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:107 msgid "Warning: unable to install the service" -msgstr "Avertissement: impossible d\'installer le service" +msgstr "Avertissement: impossible d\\''installer le service" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:113 msgid "Service removed" @@ -2251,7 +2251,7 @@ msgstr "Échec de mise à jour du filtre de statistiques et emplacement" #: ../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 "Liste des graphiques mise à jour. Peut nécessiter jusqu\'à 60s pour être répercutée ici et sur la page des graphiques" +msgstr "Liste des graphiques mise à jour. Peut nécessiter jusqu\\''à 60s pour être répercutée ici et sur la page des graphiques" #. the count isn't really correct anyway, since we don't check for actual changes #. addFormNotice("Updated settings for " + updated + " pools."); @@ -2266,7 +2266,7 @@ msgstr "Configuration du tunnel exploratoire a été sauvegardé avec succès." #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:36 msgid "Error saving the configuration (applied but not saved) - please see the error logs." -msgstr "Erreur pendant l\'enregistrement de la configuration (appliquée mais non sauvegardée): contrôlez les historiques" +msgstr "Erreur pendant l\\''enregistrement de la configuration (appliquée mais non sauvegardée): contrôlez les historiques" #. * dummies for translation #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:14 @@ -2295,11 +2295,11 @@ msgstr "Tunnels clients pour" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:69 msgid "ANONYMITY WARNING - Settings include 0-hop tunnels." -msgstr "AVERTISSEMENT d\'ANONYMAT: les réglages incluent des tunnels à 0 saut!" +msgstr "AVERTISSEMENT d\\''ANONYMAT: les réglages incluent des tunnels à 0 saut!" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74 msgid "ANONYMITY WARNING - Settings include 1-hop tunnels." -msgstr "AVERTISSEMENT d\'ANONYMAT: les réglages incluent des tunnels à 1 saut!" +msgstr "AVERTISSEMENT d\\''ANONYMAT: les réglages incluent des tunnels à 1 saut!" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:77 msgid "PERFORMANCE WARNING - Settings include very long tunnels." @@ -2400,11 +2400,11 @@ msgstr "Pas de mise à jour disponible" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:101 msgid "Updating news URL to" -msgstr "Mise à jour de l\'URL de news vers " +msgstr "Mise à jour de l\\''URL de news vers " #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:109 msgid "Updating proxy host to" -msgstr "Mise à jour de l\'hôte mandataire vers" +msgstr "Mise à jour de l\\''hôte mandataire vers" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:117 msgid "Updating proxy port to" @@ -2420,7 +2420,7 @@ msgstr "Mise à jour de la stratégie de mises à jour vers" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:146 msgid "Updating update URLs." -msgstr "Mise à jour de l\'URL de mises à jour." +msgstr "Mise à jour de l\\''URL de mises à jour." #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:155 msgid "Updating trusted keys." @@ -2428,7 +2428,7 @@ msgstr "Mise à jour des clefs de confiance." #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:163 msgid "Updating unsigned update URL to" -msgstr "Mise à jour de l\'URL de mises à jour non signées vers" +msgstr "Mise à jour de l\\''URL de mises à jour non signées vers" #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:88 #: ../java/src/net/i2p/router/web/GraphHelper.java:167 @@ -2453,7 +2453,7 @@ msgstr "Télécharger, vérifier et redémarrer" #: ../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 "Soumission de formulaire incorrecte: vous avez peut-être utilisé le bouton \'Page arrière\' ou \'Rechargement\' de votre navigateur. Merci de renvoyer." +msgstr "Soumission de formulaire incorrecte: vous avez peut-être utilisé le bouton \\''Page arrière\\'' ou \\''Rechargement\\'' de votre navigateur. Merci de renvoyer." #: ../java/src/net/i2p/router/web/GraphHelper.java:93 msgid "Combined bandwidth graph" @@ -2510,7 +2510,7 @@ msgstr "pixels" #: ../java/src/net/i2p/router/web/GraphHelper.java:156 msgid "Refresh delay" -msgstr "Delai d\'actualisation" +msgstr "Delai d\\''actualisation" #: ../java/src/net/i2p/router/web/GraphHelper.java:138 msgid "hour" @@ -2539,7 +2539,7 @@ msgstr "Fichier pas trouvé" #: ../java/src/net/i2p/router/web/LogsHelper.java:52 msgid "No log messages" -msgstr "Pas de messages d\'historique" +msgstr "Pas de messages d\\''historique" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:80 msgid "Network Database RouterInfo Lookup" @@ -2724,7 +2724,7 @@ msgstr "Actualités vérifiés il y a {0}" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:77 #, java-format msgid "Cannot check, plugin {0} is not installed" -msgstr "Non contrôlable, le greffon {0} n\'est pas installé" +msgstr "Non contrôlable, le greffon {0} n\\''est pas installé" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:129 #, java-format @@ -2830,7 +2830,7 @@ msgstr "La signature du greffon téléchargé ne correspond pas à celle de celu #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:320 #, java-format msgid "Downloaded plugin version {0} is not newer than installed plugin" -msgstr "La version {0} du greffon téléchargé n\'est pas plus récente que celle installée" +msgstr "La version {0} du greffon téléchargé n\\''est pas plus récente que celle installée" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:327 #, java-format @@ -2844,12 +2844,12 @@ msgstr "La mise à jour du greffon nécessite au plus la version {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351 msgid "Plugin is for upgrades only, but the plugin is not installed" -msgstr "Ce greffon est seulement une mise à jour, mais le greffon prérequis n\'est pas installé" +msgstr "Ce greffon est seulement une mise à jour, mais le greffon prérequis n\\''est pas installé" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:364 #, java-format msgid "Failed to install plugin in {0}" -msgstr "Échec d\'installation du greffon {0}" +msgstr "Échec d\\''installation du greffon {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:371 #, java-format @@ -3018,11 +3018,11 @@ msgstr "Dernier mauvais stockage" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201 msgid "1h Fail Rate" -msgstr "Taux d\'échec (1h)" +msgstr "Taux d\\''échec (1h)" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 msgid "1d Fail Rate" -msgstr "Taux d\'échec (1j)" +msgstr "Taux d\\''échec (1j)" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:250 msgid "Thresholds" @@ -3042,7 +3042,7 @@ msgstr "Pairs bien intégrés" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 msgid "as determined by the profile organizer" -msgstr "tel que défini par l\'organisateur du profil" +msgstr "tel que défini par l\\''organisateur du profil" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 msgid "groups" @@ -3098,7 +3098,7 @@ msgstr "Le bannissement temporaire expire dans {0}" #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:59 #, java-format msgid "Banned until restart or in {0}" -msgstr "Banni jusqu\'au redémarrage ou dans {0}" +msgstr "Banni jusqu\\''au redémarrage ou dans {0}" #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:71 msgid "unban now" @@ -3158,7 +3158,7 @@ msgstr "Ces statistiques sont initialement destinées au développement et au d #: ../java/src/net/i2p/router/web/StatsGenerator.java:105 #: ../java/src/net/i2p/router/web/StatsGenerator.java:156 msgid "No lifetime events" -msgstr "pas d\'événement de durée de vie" +msgstr "pas d\\''événement de durée de vie" #: ../java/src/net/i2p/router/web/StatsGenerator.java:116 msgid "frequency" @@ -3166,11 +3166,11 @@ msgstr "fréquence" #: ../java/src/net/i2p/router/web/StatsGenerator.java:120 msgid "Rolling average events per period" -msgstr "Moyenne glissante d\'évènements par période" +msgstr "Moyenne glissante d\\''évènements par période" #: ../java/src/net/i2p/router/web/StatsGenerator.java:124 msgid "Highest events per period" -msgstr "maximum d\'évènements par période" +msgstr "maximum d\\''évènements par période" #. if (showAll && (curFreq.getMaxAverageEventsPerPeriod() > 0) && (curFreq.getAverageEventsPerPeriod() > 0) ) { #. buf.append("(current is "); @@ -3204,15 +3204,15 @@ msgstr "Plus haute moyenne" #: ../java/src/net/i2p/router/web/StatsGenerator.java:201 #, java-format msgid "in this period which ended {0} ago." -msgstr "dans cette période qui s\'est terminée il y a {0}." +msgstr "dans cette période qui s\\''est terminée il y a {0}." #: ../java/src/net/i2p/router/web/StatsGenerator.java:204 msgid "No events" -msgstr "pas d\'événement" +msgstr "pas d\\''événement" #: ../java/src/net/i2p/router/web/StatsGenerator.java:211 msgid "Average event count" -msgstr "nombre moyen d\'évènements" +msgstr "nombre moyen d\\''évènements" #: ../java/src/net/i2p/router/web/StatsGenerator.java:213 msgid "Events in peak period" @@ -3224,7 +3224,7 @@ msgstr "Graphique de données" #: ../java/src/net/i2p/router/web/StatsGenerator.java:223 msgid "Graph Event Count" -msgstr "nombre d\'évènements de graphiques" +msgstr "nombre d\\''évènements de graphiques" #: ../java/src/net/i2p/router/web/StatsGenerator.java:226 msgid "Export Data as XML" @@ -3253,11 +3253,11 @@ msgstr "Services I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:63 msgid "Manage your I2P hosts file here (I2P domain name resolution)" -msgstr "Gérer votre fichier \'I2P hosts\' ici (I2P DNS)" +msgstr "Gérer votre fichier \\''I2P hosts\\'' ici (I2P DNS)" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:65 msgid "Addressbook" -msgstr "Carnet d\'adresses" +msgstr "Carnet d\\''adresses" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:69 msgid "Built-in anonymous BitTorrent Client" @@ -3361,7 +3361,7 @@ msgstr "Identité locale" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:175 msgid "Your unique I2P router identity is" -msgstr "L\'identité unique de votre routeur est" +msgstr "L\\''identité unique de votre routeur est" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179 msgid "never reveal it to anyone" @@ -3381,7 +3381,7 @@ msgstr "Temps de service" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 msgid "Help with configuring your firewall and router for optimal I2P performance" -msgstr "Aide avec la configuration du pare-feu et du routeur afin d\'optimiser la performance d\'I2P" +msgstr "Aide avec la configuration du pare-feu et du routeur afin d\\''optimiser la performance d\\''I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 msgid "Download" @@ -3473,7 +3473,7 @@ msgstr "Retard accumulé" #: ../java/src/net/i2p/router/web/SummaryHelper.java:106 msgid "ERR-Client Manager I2CP Error - check logs" -msgstr "ERR-Client Manager I2CP Error - vérifier l\'historique" +msgstr "ERR-Client Manager I2CP Error - vérifier l\\''historique" #: ../java/src/net/i2p/router/web/SummaryHelper.java:108 #, java-format @@ -3512,7 +3512,7 @@ msgstr "Bloqué par un pare-feu" #: ../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-port UDP en cours d\'utilisation - Réglez i2np.udp.internalPort=xxxx dans la configuration avancée et redémarrez" +msgstr "ERR-port UDP en cours d\\''utilisation - Réglez i2np.udp.internalPort=xxxx dans la configuration avancée et redémarrez" #: ../java/src/net/i2p/router/web/SummaryHelper.java:141 msgid "ERR-No Active Peers, Check Network Connection and Firewall" @@ -3678,7 +3678,7 @@ msgstr "Tunnels participants inactifs" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:127 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:218 msgid "Lifetime bandwidth usage" -msgstr "Durée de vie de l\'utilisation de bande passante" +msgstr "Durée de vie de l\\''utilisation de bande passante" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "Expiry" @@ -3695,7 +3695,7 @@ msgstr "Point terminal" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:205 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:212 msgid "Build in progress" -msgstr "Création d\'un tunnel en cours" +msgstr "Création d\\''un tunnel en cours" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:205 msgid "inbound" @@ -3795,7 +3795,7 @@ msgstr "Échec de transfert" #. wars for ConfigClientsHelper #: ../java/strings/Strings.java:12 msgid "addressbook" -msgstr "carnet d\'adresse" +msgstr "carnet d\\''adresse" #: ../java/strings/Strings.java:13 msgid "i2psnark" @@ -3830,7 +3830,7 @@ msgstr "Pont applicatif SAM" #: ../java/strings/Strings.java:24 msgid "Application tunnels" -msgstr "Tunnels d\'application" +msgstr "Tunnels d\\''application" #: ../java/strings/Strings.java:25 msgid "My eepsite web server" @@ -3931,7 +3931,7 @@ msgstr "InNetPool" #: ../java/strings/Strings.java:64 msgid "JobQueue" -msgstr "File d\'attente" +msgstr "File d\\''attente" #: ../java/strings/Strings.java:65 msgid "NetworkDatabase" @@ -4032,7 +4032,7 @@ msgstr "Taux de bande passante de réception faible" #. bw.recvRate #: ../java/strings/Strings.java:102 msgid "Low-level bandwidth send rate" -msgstr "Taux de bande passante d\'émission faible" +msgstr "Taux de bande passante d\\''émission faible" #. bw.sendRate #: ../java/strings/Strings.java:103 @@ -4121,7 +4121,7 @@ msgstr "Limiteur de bande passante" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:300 msgid "I2P will work best if you configure your rates to match the speed of your internet connection." -msgstr "I2P fonctionnera mieux si vous configurez le débit de transmission et réception pour qu\'ils soient égales à ceux de votre connexion internet." +msgstr "I2P fonctionnera mieux si vous configurez le débit de transmission et réception pour qu\\''ils soient égales à ceux de votre connexion internet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:304 msgid "KBps In" @@ -4148,7 +4148,7 @@ msgstr "Vous avez configuré I2P à partager que {0} KOps." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:346 msgid "I2P requires at least 12KBps to enable sharing. " -msgstr "I2P a besoin de plus de 12KOps afin d\'activer le partage de bande passante" +msgstr "I2P a besoin de plus de 12KOps afin d\\''activer le partage de bande passante" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347 msgid "Please enable sharing (participating in tunnels) by configuring more bandwidth. " @@ -4202,7 +4202,7 @@ msgstr "Configuration UPnP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:385 msgid "Enable UPnP to open firewall ports" -msgstr "Activer UPnP afin d\'ouvrir les ports du pare-feu" +msgstr "Activer UPnP afin d\\''ouvrir les ports du pare-feu" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:387 msgid "UPnP status" @@ -4215,36 +4215,36 @@ msgstr "Configuration IP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:391 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:461 msgid "Externally reachable hostname or IP address" -msgstr "Adresse IP ou nom d\'hôte qui est joignable depuis l\'exterieur" +msgstr "Adresse IP ou nom d\\''hôte qui est joignable depuis l\\''exterieur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395 msgid "Use all auto-detect methods" -msgstr "Utiliser toute méthode d\'auto-détection" +msgstr "Utiliser toute méthode d\\''auto-détection" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399 msgid "Disable UPnP IP address detection" -msgstr "Desactiver la détection de l\'adresse IP par UPnP" +msgstr "Desactiver la détection de l\\''adresse IP par UPnP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 msgid "Ignore local interface IP address" -msgstr "Ignorer l\'adresse IP de l\'interface locale" +msgstr "Ignorer l\\''adresse IP de l\\''interface locale" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:407 msgid "Use SSU IP address detection only" -msgstr "Utiliser seulement SSU pour détecter l\'adresse IP" +msgstr "Utiliser seulement SSU pour détecter l\\''adresse IP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:411 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 msgid "Specify hostname or IP" -msgstr "Saisir l\'adresse IP ou le nom de l\'hôte" +msgstr "Saisir l\\''adresse IP ou le nom de l\\''hôte" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 msgid "Select Interface" -msgstr "Choisir l\'interface" +msgstr "Choisir l\\''interface" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:431 msgid "Hidden mode - do not publish IP" -msgstr "Mode caché - ne pas publier l\'adresse IP" +msgstr "Mode caché - ne pas publier l\\''adresse IP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:433 msgid "(prevents participating traffic)" @@ -4252,11 +4252,11 @@ msgstr "(empêche le trafic participants)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 msgid "Action when IP changes" -msgstr "Action quand l\'IP change" +msgstr "Action quand l\\''IP change" #: ../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 "Mode IP publique dynamique/PC portable: modifie l\'identité du router et le port UDP quand l\'IP change pour améliorer l\'anonymat" +msgstr "Mode IP publique dynamique/PC portable: modifie l\\''identité du router et le port UDP quand l\\''IP change pour améliorer l\\''anonymat" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:441 msgid "Experimental" @@ -4276,7 +4276,7 @@ msgstr "Configuration TCP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:465 msgid "Use auto-detected IP address" -msgstr "Utiliser l\'adresse IP qui a été auto-détectée" +msgstr "Utiliser l\\''adresse IP qui a été auto-détectée" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:467 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499 @@ -4285,11 +4285,11 @@ msgstr "actuellement" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:471 msgid "if we are not firewalled" -msgstr "s\'il n\'y a pas de pare-feu" +msgstr "s\\''il n\\''y a pas de pare-feu" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:475 msgid "Always use auto-detected IP address (Not firewalled)" -msgstr "Utiliser toujours l\'adresse IP qui a été auto-détectée (pas de pare-feu)" +msgstr "Utiliser toujours l\\''adresse IP qui a été auto-détectée (pas de pare-feu)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 msgid "Disable inbound (Firewalled)" @@ -4305,7 +4305,7 @@ msgstr "(selectionner seulement si derrière un pare-feu qui limite les connexio #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 msgid "Externally reachable TCP port" -msgstr "Port TCP joignable de l\'extérieur" +msgstr "Port TCP joignable de l\\''extérieur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 msgid "Use the same port configured for UDP" @@ -4332,7 +4332,7 @@ msgstr "Aide avec la configuration" #: ../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 fonctionnera derrière la plupart des pare-feux, mais votre vitesse et votre intégration avec le réseau sera améliorée par la redirection des ports UDP et TCP d\'I2P." +msgstr "I2P fonctionnera derrière la plupart des pare-feux, mais votre vitesse et votre intégration avec le réseau sera améliorée par la redirection des ports UDP et TCP d\\''I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:528 msgid "Certain firewalls such as symmetric NATs may not work well with I2P." @@ -4340,7 +4340,7 @@ msgstr "Il y a des certains types de pare-feu (tel que les NAT symétriques) qui #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:537 msgid "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports." -msgstr "UPnP est utilisé pour communiquer avec des \"Internet Gateway Devices (IGDs)\" afin de détecter l\'adresse IP extérieure et de contrôler la redirection des ports." +msgstr "UPnP est utilisé pour communiquer avec des \"Internet Gateway Devices (IGDs)\" afin de détecter l\\''adresse IP extérieure et de contrôler la redirection des ports." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:539 msgid "UPnP support is beta, and may not work for any number of reasons" @@ -4348,27 +4348,27 @@ msgstr "UPnP est toujours en développement, et il peut arrêter de fonctionner #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:541 msgid "No UPnP-compatible device present" -msgstr "Il n\'y a pas d\'appareil qui est compatible avec UPnP" +msgstr "Il n\\''y a pas d\\''appareil qui est compatible avec UPnP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:543 msgid "UPnP disabled on the device" -msgstr "UPnP est desactivé sur l\'appareil" +msgstr "UPnP est desactivé sur l\\''appareil" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:545 msgid "Software firewall interference with UPnP" -msgstr "Il y a de l\'intérference entre un pare-feu en software et UPnP" +msgstr "Il y a de l\\''intérference entre un pare-feu en software et UPnP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:547 msgid "Bugs in the device's UPnP implementation" -msgstr "Il y a des bogues dans l\'implementation d\'UPnP dans l\'appareil" +msgstr "Il y a des bogues dans l\\''implementation d\\''UPnP dans l\\''appareil" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:549 msgid "Multiple firewall/routers in the internet connection path" -msgstr "Il y a plusieurs routeurs/pare-feux entre le routeur I2P et l\'internet" +msgstr "Il y a plusieurs routeurs/pare-feux entre le routeur I2P et l\\''internet" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:551 msgid "UPnP device change, reset, or address change" -msgstr "Un changement de l\'appareil UPnP, une redémarrage, ou une changement d\'adresse IP" +msgstr "Un changement de l\\''appareil UPnP, une redémarrage, ou une changement d\\''adresse IP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:553 msgid "Review the UPnP status here." @@ -4380,7 +4380,7 @@ msgstr "UPnP peut être activé ou desactivé au-dessus, mais afin de prendre en #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 msgid "Hostnames entered above will be published in the network database." -msgstr "Les noms d\'hôtes qui ont été saisis au-dessus seront publié dans la base de données du réseau I2P." +msgstr "Les noms d\\''hôtes qui ont été saisis au-dessus seront publié dans la base de données du réseau I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 msgid "They are not private." @@ -4392,11 +4392,11 @@ msgstr "En plus, ne saisissez pas une adresse IP privée tel que 127.0.0. #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 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 "Si vous saisissez une mauvaise adresse IP ou nom d\'hôte, ou configurer votre NAT ou pare-feu incorrectement, votre intégration avec le réseau I2P dégradera substantiellement." +msgstr "Si vous saisissez une mauvaise adresse IP ou nom d\\''hôte, ou configurer votre NAT ou pare-feu incorrectement, votre intégration avec le réseau I2P dégradera substantiellement." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 msgid "When in doubt, leave the settings at the defaults." -msgstr "Si vous n\'êtes pas sûr de vous, laisser la configuration par défaut." +msgstr "Si vous n\\''êtes pas sûr de vous, laisser la configuration par défaut." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 msgid "Reachability Help" @@ -4404,11 +4404,11 @@ msgstr "Aide sur la joignabilité" #: ../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 "Si vous pensez que vous avez ouvert votre pare-feu et qu\'I2P indique toujours que vous êtes derrière le pare-feu, n\'oubliez pas que vous avez peut-être plusieurs pare-feux: par exemple celui de votre box DSL et un pare-feu logiciel dans votre ordinateur." +msgstr "Si vous pensez que vous avez ouvert votre pare-feu et qu\\''I2P indique toujours que vous êtes derrière le pare-feu, n\\''oubliez pas que vous avez peut-être plusieurs pare-feux: par exemple celui de votre box DSL et un pare-feu logiciel dans votre ordinateur." #: ../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 "S\'il y a une erreur, les historiques peuvent aider au diagnostic." +msgstr "S\\''il y a une erreur, les historiques peuvent aider au diagnostic." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 msgid "Your UDP port appears to be firewalled." @@ -4424,19 +4424,19 @@ msgstr "Cependant, si ça se reproduit systématiquement, vous devez vérifier q #: ../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 fonctionne très bien derrière un pare-feu, ça n\'est pas un problème. Derrière un pare-feu, le routeur utilise des \"entremetteurs\" pour relayer les connexions entrantes." +msgstr "I2P fonctionne très bien derrière un pare-feu, ça n\\''est pas un problème. Derrière un pare-feu, le routeur utilise des \"entremetteurs\" pour relayer les connexions entrantes." #: ../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 "Cependant, vous obtiendrez plus de trafic participants et aiderez plus le réseau si vous avez la possibilité d\'ouvrir vos pare-feux." +msgstr "Cependant, vous obtiendrez plus de trafic participants et aiderez plus le réseau si vous avez la possibilité d\\''ouvrir vos pare-feux." #: ../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 "S vous pensez que vous l\'avez déjà fait, n\'oubliez pas que vous avez peut-être un pare-feu matériel et logiciel, ou que vous êtes derrière un pare-feu supplémentaire sur lequel vous n\'avez aucun contrôle (p.e. en entreprise)." +msgstr "S vous pensez que vous l\\''avez déjà fait, n\\''oubliez pas que vous avez peut-être un pare-feu matériel et logiciel, ou que vous êtes derrière un pare-feu supplémentaire sur lequel vous n\\''avez aucun contrôle (p.e. en entreprise)." #: ../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 "De plus, certains pare-feux ne peuvent pas transférer correctement TCP et UDP sur le même port, ou il pourrait y avoir d\'autres limitations ou des bogues qui les empêcheraient de passer le trafic à I2P." +msgstr "De plus, certains pare-feux ne peuvent pas transférer correctement TCP et UDP sur le même port, ou il pourrait y avoir d\\''autres limitations ou des bogues qui les empêcheraient de passer le trafic à I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 msgid "The router is currently testing whether your UDP port is firewalled." @@ -4444,7 +4444,7 @@ msgstr "Le routeur teste actuellement si votre port UDP est bloqué." #: ../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 "Le routeur n\'est pas configuré pour publier son adresse, donc il n\'attend pas de connexions entrantes." +msgstr "Le routeur n\\''est pas configuré pour publier son adresse, donc il n\\''attend pas de connexions entrantes." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 msgid "WARN - Firewalled and Fast" @@ -4472,11 +4472,11 @@ msgstr "WARN - Pare-feu avec TCP entrant activé" #: ../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 "Vous avez configuré le TCP entrant, cependant votre port UDP est bloqué et en conséquence il est probable que TCP l\'est aussi." +msgstr "Vous avez configuré le TCP entrant, cependant votre port UDP est bloqué et en conséquence il est probable que TCP l\\''est aussi." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 msgid "Please open your firewall or disable inbound TCP above." -msgstr "Merci d\'ouvrir votre pare-feu ou de désactiver le TCP entrant ci-dessus." +msgstr "Merci d\\''ouvrir votre pare-feu ou de désactiver le TCP entrant ci-dessus." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 msgid "WARN - Firewalled with UDP Disabled" @@ -4492,7 +4492,7 @@ msgstr "Vous apparaissez comme étant bloqué par un pare-feu pour TCP, et en co #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:631 msgid "Please open your firewall or enable UDP." -msgstr "Merci d\'ouvrir votre pare-feu ou d\'activer UDP." +msgstr "Merci d\\''ouvrir votre pare-feu ou d\\''activer UDP." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 msgid "ERR - Clock Skew" @@ -4500,11 +4500,11 @@ msgstr "ERR - horloge décalée" #: ../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 "L\'horloge système est décalée, ce qui rend la participation au réseau difficile." +msgstr "L\\''horloge système est décalée, ce qui rend la participation au réseau difficile." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:637 msgid "Correct your clock setting if this error persists." -msgstr "Corrigez votre réglage d\'horloge si cette erreur persiste." +msgstr "Corrigez votre réglage d\\''horloge si cette erreur persiste." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 msgid "ERR - Private TCP Address" @@ -4512,7 +4512,7 @@ msgstr "ERR - Adresse TCP privée" #: ../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 "Vous ne devez jamais publier une IP non routable telle que 127.0.0.1 ou 192.168.1.1 en tant qu\'adresse externe." +msgstr "Vous ne devez jamais publier une IP non routable telle que 127.0.0.1 ou 192.168.1.1 en tant qu\\''adresse externe." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 msgid "Correct the address or disable inbound TCP above." @@ -4532,19 +4532,19 @@ msgstr "I2P marche mal derrière ce genre de pare-feu. vous ne pourrez sûrement #: ../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 - Port UDP en cours d\'utilisation - réglez i2np.udp.internalPort=xxxx dans la configuration avancée et redémarrez" +msgstr "ERR - Port UDP en cours d\\''utilisation - réglez i2np.udp.internalPort=xxxx dans la configuration avancée et redémarrez" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 msgid "I2P was unable to bind to port 8887 or other configured port." -msgstr "I2P n\'a pas pu s\'attacher au port 8887 ou un autre port configuré." +msgstr "I2P n\\''a pas pu s\\''attacher au port 8887 ou un autre port configuré." #: ../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 "Vérifiez si un autre programme utilise le port configuré pour I2P. Si oui, arrêtez ce programme ou configurez I2P pour qu\'il utilise un port différent (dans Windows tapez netstat dans une boîte de commandes pour lister les ports utilisés par les programmes)." +msgstr "Vérifiez si un autre programme utilise le port configuré pour I2P. Si oui, arrêtez ce programme ou configurez I2P pour qu\\''il utilise un port différent (dans Windows tapez netstat dans une boîte de commandes pour lister les ports utilisés par les programmes)." #: ../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 "Il s\'agit peut-être d\'une erreur passagère, si l\'autre programme n\'utilise plus le port." +msgstr "Il s\\''agit peut-être d\\''une erreur passagère, si l\\''autre programme n\\''utilise plus le port." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:659 msgid "However, a restart is always required after this error." @@ -4552,11 +4552,11 @@ msgstr "Cependant un redémarrage du routeur est toujours requis après cette er #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 msgid "ERR - UDP Disabled and Inbound TCP host/port not set" -msgstr "ERR - UDP est désactivé et l\'hôte/port entrants ne sont pas définis." +msgstr "ERR - UDP est désactivé et l\\''hôte/port entrants ne sont pas définis." #: ../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 "vous n\'avez pas configuré le TCP entrant ci-dessus avec un nom d\'hôte et un port, mais vous avez désactivé UDP." +msgstr "vous n\\''avez pas configuré le TCP entrant ci-dessus avec un nom d\\''hôte et un port, mais vous avez désactivé UDP." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:665 msgid "Therefore your router cannot accept inbound connections." @@ -4564,7 +4564,7 @@ msgstr "Le routeur ne peut donc pas accepter de connexions entrantes." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:667 msgid "Please configure a TCP host and port above or enable UDP." -msgstr "Merci de configurer ci-dessus un nom et un port TCP, ou d\'activer UDP." +msgstr "Merci de configurer ci-dessus un nom et un port TCP, ou d\\''activer UDP." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:669 msgid "ERR - Client Manager I2CP Error - check logs" @@ -4572,11 +4572,11 @@ msgstr "ERR - Client Manager I2CP Error - vérifiez les historique" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 msgid "This is usually due to a port 7654 conflict. Check the logs to verify." -msgstr "Ceci est habituellement dû à un conflit de port 7654. Vérifiez dans l\'historique. (et pensez éventuellement à netstat ;-) ) " +msgstr "Ceci est habituellement dû à un conflit de port 7654. Vérifiez dans l\\''historique. (et pensez éventuellement à netstat ;-) ) " #: ../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 "Avez-vous une autre instance d\'I2P en cours d\'exécution? Arrêtez le programme en conflit et redémarrez I2P." +msgstr "Avez-vous une autre instance d\\''I2P en cours d\\''exécution? Arrêtez le programme en conflit et redémarrez I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:107 msgid "config advanced" @@ -4608,11 +4608,11 @@ msgstr "Configuration client" #: ../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 "Les client Java listés ci-dessous sont démarrés par le routeur et s\'exécutent dans la même JVM." +msgstr "Les client Java listés ci-dessous sont démarrés par le routeur et s\\''exécutent dans la même JVM." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:318 msgid "To change other client options, edit the file" -msgstr "Pour changer d\'autres options du client, modifiez le fichier" +msgstr "Pour changer d\\''autres options du client, modifiez le fichier" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:325 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:401 @@ -4622,7 +4622,7 @@ msgstr "Tous les changements nécessitent un redémarrage pour prendre effet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:339 msgid "External I2CP (I2P Client Protocol) Interface Configuration" -msgstr "Configuration de l\'interface I2CP (I2P Client Protocol) externe" +msgstr "Configuration de l\\''interface I2CP (I2P Client Protocol) externe" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 msgid "Enabled without SSL" @@ -4666,7 +4666,7 @@ msgstr "Tous les changements apportés ici doivent être répercutés dans le cl #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:399 msgid "Many clients do not support SSL or authorization." -msgstr "Nombre de clients ne prennent pas en charge l\'authentification ou SSL." +msgstr "Nombre de clients ne prennent pas en charge l\\''authentification ou SSL." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:407 msgid "WebApp Configuration" @@ -4674,11 +4674,11 @@ msgstr "Configuration WebApp" #: ../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 "Les applications Web Java listées ci-dessous sont démarrées par le client webConsole et s\'exécutent dans la même JVM que le routeur. Il s\'agit généralement d\'applications web accessibles par la console du routeur. Il peut s\'agir d\'applications complètes (p.e. i2pSnark), d\'interfaces pour d\'autres clients ou applications qui doivent être activées séparément (p.e. susidns, i2ptunnel), ou n\'ayant absolument aucune interface web (p.e. le carnet d\'adresses)" +msgstr "Les applications Web Java listées ci-dessous sont démarrées par le client webConsole et s\\''exécutent dans la même JVM que le routeur. Il s\\''agit généralement d\\''applications web accessibles par la console du routeur. Il peut s\\''agir d\\''applications complètes (p.e. i2pSnark), d\\''interfaces pour d\\''autres clients ou applications qui doivent être activées séparément (p.e. susidns, i2ptunnel), ou n\\''ayant absolument aucune interface web (p.e. le carnet d\\''adresses)" #: ../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 "Une appli web peut aussi être désactivée en supprimant le ficher .war du répertoire des web apps; mais le fichier et la web app reviendront à l\'occasion d\'une mise à jour du routeur, et donc la désactivation depuis la console est la méthode recommandée." +msgstr "Une appli web peut aussi être désactivée en supprimant le ficher .war du répertoire des web apps; mais le fichier et la web app reviendront à l\\''occasion d\\''une mise à jour du routeur, et donc la désactivation depuis la console est la méthode recommandée." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:350 msgid "Plugin Configuration" @@ -4694,7 +4694,7 @@ msgstr "Installation de greffon" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 msgid "To install a plugin, enter the download URL:" -msgstr "Pour installer un greffon, entrez l\'URL de téléchargement:" +msgstr "Pour installer un greffon, entrez l\\''URL de téléchargement:" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:106 msgid "config keyring" @@ -4746,7 +4746,7 @@ msgstr "Configuration des historiques I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 msgid "Configure I2P Logging Options" -msgstr "Configuration des options d\'historiques" +msgstr "Configuration des options d\\''historiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:303 msgid "Logging filename" @@ -4754,15 +4754,15 @@ msgstr "Nom du fichier des historiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307 msgid "(the symbol '@' will be replaced during log rotation)" -msgstr "(le caractère \'@\' sera remplacé lors des rotations d\'historiques)" +msgstr "(le caractère \\''@\\'' sera remplacé lors des rotations d\\''historiques)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:309 msgid "Log record format" -msgstr "Format des enregistrements d\'historiques" +msgstr "Format des enregistrements d\\''historiques" #: ../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 "(use \'d\' = date, \'c\' = classe, \'t\' = tâche, \'p\' = priorité, \'m\' = message)" +msgstr "(use \\''d\\'' = date, \\''c\\'' = classe, \\''t\\'' = tâche, \\''p\\'' = priorité, \\''m\\'' = message)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:315 msgid "Log date format" @@ -4770,15 +4770,15 @@ msgstr "Format de date des historiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 msgid "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)" -msgstr "(\'MM\' = mois, \'dd\' = jour, \'HH\' = heure, \'mm\' = minute, \'ss\' = seconde, \'SSS\' = milliseconde)" +msgstr "(\\''MM\\'' = mois, \\''dd\\'' = jour, \\''HH\\'' = heure, \\''mm\\'' = minute, \\''ss\\'' = seconde, \\''SSS\\'' = milliseconde)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:321 msgid "Max log file size" -msgstr "Taille max des fichiers d\'historiques" +msgstr "Taille max des fichiers d\\''historiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:325 msgid "Default log level" -msgstr "Niveau d\'historisation par défaut" +msgstr "Niveau d\\''historisation par défaut" #: ../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)" @@ -4786,7 +4786,7 @@ msgstr "(DEBUG et INFO sont déconseillés, car ils ralentissent double-plus-gr #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:331 msgid "Log level overrides" -msgstr "Remplacements du niveau d\'historisation" +msgstr "Remplacements du niveau d\\''historisation" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:335 msgid "New override" @@ -4810,7 +4810,7 @@ msgstr "Empreinte du routeur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:311 msgid "Manually Ban / Unban a Peer" -msgstr "(Dé)banissement manuel d\'un pair" +msgstr "(Dé)banissement manuel d\\''un pair" #: ../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." @@ -4847,19 +4847,19 @@ msgstr "Arrêter le routeur" #: ../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 "Un arrêt respectueux permet au routeur de satisfaire les accords en place avec d\'autres routeurs avant la fermeture, mais cela prendra quelques minutes." +msgstr "Un arrêt respectueux permet au routeur de satisfaire les accords en place avec d\\''autres routeurs avant la fermeture, mais cela prendra quelques minutes." #: ../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 "Si vous avez besoin d\'arrêter le routeur I2P immédiatement, cette option est également disponible." +msgstr "Si vous avez besoin d\\''arrêter le routeur I2P immédiatement, cette option est également disponible." #: ../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 "Si vous voulez que le routeur redémarre après l\'arrêt, vous pouvez choisir une des possibilités suivantes." +msgstr "Si vous voulez que le routeur redémarre après l\\''arrêt, vous pouvez choisir une des possibilités suivantes." #: ../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 "C\'est utile dans certaines situations: p.e. quand vous faites un réglage que telle application cliente ne lit qu\'au démarrage, comme le mot de passe de la console ou l\'interface sur lequel elle écoute." +msgstr "C\\''est utile dans certaines situations: p.e. quand vous faites un réglage que telle application cliente ne lit qu\\''au démarrage, comme le mot de passe de la console ou l\\''interface sur lequel elle écoute." #: ../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." @@ -4875,7 +4875,7 @@ msgstr "Intégration dans la zone de notification" #: ../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 "Sur Windows, une icône pour la zone de notification indiquant l\'état du routeur " +msgstr "Sur Windows, une icône pour la zone de notification indiquant l\\''état du routeur " #: ../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)." @@ -4899,7 +4899,7 @@ msgstr "Si vous préférez la ligne commande, vous pouvez aussi exécuter la" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:340 msgid "If you are running I2P as service right now, removing it will shut down your router immediately." -msgstr "Si vous exécutez actuellement I2P en tant que service, l\'enlever arrêtera le routeur immédiatement." +msgstr "Si vous exécutez actuellement I2P en tant que service, l\\''enlever arrêtera le routeur immédiatement." #: ../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." @@ -4911,11 +4911,11 @@ msgstr "Débogage" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:348 msgid "View the job queue" -msgstr "Voir la file d\'attente " +msgstr "Voir la file d\\''attente " #: ../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 "À l\'occasion, il peut être utile de déboguer I2P à l\'aide d\'un cliché de tâche. Pour ce faire, merci de sélectionner l\'option suivante de passer en revue le résultat dans l\'historique du service Wrapper." +msgstr "À l\\''occasion, il peut être utile de déboguer I2P à l\\''aide d\\''un cliché de tâche. Pour ce faire, merci de sélectionner l\\''option suivante de passer en revue le résultat dans l\\''historique du service Wrapper." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 msgid "Launch browser on router startup?" @@ -4923,7 +4923,7 @@ msgstr "Lancer le navigateur au démarrage du routeur?" #: ../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 "La plus grande partie de la configuration d\'I2P se fait dans cette console, et donc pour votre confort, I2P peut lancer au démarrage votre navigateur sur " +msgstr "La plus grande partie de la configuration d\\''I2P se fait dans cette console, et donc pour votre confort, I2P peut lancer au démarrage votre navigateur sur " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:107 msgid "config stats" @@ -4931,7 +4931,7 @@ msgstr "config stats" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:228 msgid "I2P Stats Configuration" -msgstr "Configuration des statistiques d\'I2P" +msgstr "Configuration des statistiques d\\''I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302 msgid "Configure I2P Stat Collection" @@ -5020,7 +5020,7 @@ msgstr "configuration IHM" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:240 msgid "I2P UI Configuration" -msgstr "Réglages de l\'interface" +msgstr "Réglages de l\\''interface" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:292 msgid "Router Console Theme" @@ -5032,7 +5032,7 @@ msgstr "Sélection de thème indisponible pour Internet Explorer, désolé." #: ../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 "Si vous n\'utilisez pas IE, c\'est que votre navigateur tente de le faire croire; configurez-le (ou son proxy) pour qu\'il utilise une chaîne \"User Agent\" différente si vous souhaitez pouvoir changer de thème." +msgstr "Si vous n\\''utilisez pas IE, c\\''est que votre navigateur tente de le faire croire; configurez-le (ou son proxy) pour qu\\''il utilise une chaîne \"User Agent\" différente si vous souhaitez pouvoir changer de thème." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:316 msgid "Router Console Language" @@ -5072,7 +5072,7 @@ msgstr "Actualités URL" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:321 msgid "Refresh frequency" -msgstr "Fréquence d\'actualisation" +msgstr "Fréquence d\\''actualisation" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:327 msgid "Update policy" @@ -5080,7 +5080,7 @@ msgstr "Méthode de mise à jour" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331 msgid "Update through the eepProxy?" -msgstr "Mettre à jour utilisant l\'eeProxy ?" +msgstr "Mettre à jour utilisant l\\''eeProxy ?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:335 msgid "eepProxy host" @@ -5104,11 +5104,11 @@ msgstr "Mettre à jour avec une version non signée?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:355 msgid "Unsigned Build URL" -msgstr "L\'URL de version non signée" +msgstr "L\\''URL de version non signée" #: ../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 "Les mises à jours d\'I2P sont désactivées car vous n\'avez pas le droit d\'écriture sur le dossier d\'installation. " +msgstr "Les mises à jours d\\''I2P sont désactivées car vous n\\''avez pas le droit d\\''écriture sur le dossier d\\''installation. " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:367 msgid "Save" @@ -5144,11 +5144,11 @@ msgstr "accueil" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:105 msgid "job queue" -msgstr "file d\'attente" +msgstr "file d\\''attente" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:226 msgid "I2P Router Job Queue" -msgstr "File d\'attente de travail du routeur" +msgstr "File d\\''attente de travail du routeur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:105 msgid "logs" @@ -5160,7 +5160,7 @@ msgstr "Fichier traces du routeur I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:229 msgid "I2P Version & Running Environment" -msgstr "Version d\'I2P & environnement d\'exécution" +msgstr "Version d\\''I2P & environnement d\\''exécution" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:231 msgid "Please report bugs on trac.i2p2.i2p." @@ -5200,7 +5200,7 @@ msgstr "Application web inactive" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:232 msgid "The requested web application is not running." -msgstr "L\'application web demandée est inactive." +msgstr "L\\''application web demandée est inactive." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:235 msgid "Please visit the config clients page to start it." From 25d2ce65e248e5d9af9bb8e4cfd281ab2745cd75 Mon Sep 17 00:00:00 2001 From: magma Date: Fri, 25 Mar 2011 17:20:18 +0000 Subject: [PATCH 347/463] add --- apps/i2ptunnel/locale/messages_fr.po | 763 +++++++++++++++++++++++++++ 1 file changed, 763 insertions(+) create mode 100644 apps/i2ptunnel/locale/messages_fr.po diff --git a/apps/i2ptunnel/locale/messages_fr.po b/apps/i2ptunnel/locale/messages_fr.po new file mode 100644 index 000000000..c901f3135 --- /dev/null +++ b/apps/i2ptunnel/locale/messages_fr.po @@ -0,0 +1,763 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the i2ptunnel package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P i2ptunnel\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-03-25 15:21+0000\n" +"PO-Revision-Date: 2011-03-25 18:18+0100\n" +"Last-Translator: magma \n" +"Language-Team: duck \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474 +#, java-format +msgid "To visit the destination in your host database, click here. To visit the conflicting addresshelper destination, click here." +msgstr "Pour aller à la destination de votre base de données d'hôtes, cliquez here. Pour aller à la destination de l'aide d'adresse en conflit, cliquez ." + +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931 +msgid "Click a link below to look for an address helper by using a \"jump\" service:" +msgstr "Cliquez sur un des liens ci-dessous pour chercher une aide d'adresse en utilisant un service de \"saut\":" + +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336 +msgid "internal" +msgstr "interne" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:171 +msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit." +msgstr "Échec de soumission du formulaire: vous avez peut-être utilisé le bouton 'Page précédente' ou 'Recherger' de votre navigateur. Merci de soumettre à nouveau." + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218 +msgid "Configuration reloaded for all tunnels" +msgstr "Configuration rechargée pour tous les tunnels" + +#. and give them something to look at in any case +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:230 +msgid "Starting tunnel" +msgstr "Démarrage du tunnel" + +#. and give them something to look at in any case +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:243 +msgid "Stopping tunnel" +msgstr "Arrêt du tunnel" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:311 +msgid "Configuration changes saved" +msgstr "Modification de configuration enregistrée" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314 +msgid "Failed to save configuration" +msgstr "Échec d'enregistrement de la configuration" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398 +msgid "New Tunnel" +msgstr "Nouveau tunnel" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418 +msgid "Standard client" +msgstr "Client standard" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419 +msgid "HTTP client" +msgstr "Client HTTP" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420 +msgid "IRC client" +msgstr "Client IRC" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:421 +msgid "Standard server" +msgstr "Serveur standard" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:422 +msgid "HTTP server" +msgstr "Serveur HTTP" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:423 +msgid "SOCKS 4/4a/5 proxy" +msgstr "Mandataire SOCKS 4/4a/5" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:424 +msgid "SOCKS IRC proxy" +msgstr "Mandataire IRC SOCKS" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:425 +msgid "CONNECT/SSL/HTTPS proxy" +msgstr "Mandataire CONNECT/SSL/HTTPS" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:426 +msgid "IRC server" +msgstr "Serveur IRC" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:427 +msgid "Streamr client" +msgstr "Client flux" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:428 +msgid "Streamr server" +msgstr "Serveur flux" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:429 +msgid "HTTP bidir" +msgstr "bidir HTTP" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:293 +msgid "Host not set" +msgstr "Hôte non défini" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:521 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:275 +msgid "Port not set" +msgstr "Port non défini" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:73 +msgid "I2P Tunnel Manager - Edit Client Tunnel" +msgstr "Gestionnaire de tunnels I2P: Modifiez le tunnel client" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:93 +msgid "Edit proxy settings" +msgstr "Modifiez les réglages de mandataire" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:101 +msgid "New proxy settings" +msgstr "Paramètres de nouveau mandataire" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:112 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:112 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:110 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:124 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:245 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:260 +msgid "Name" +msgstr "Nom" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:116 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:116 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:249 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:282 +msgid "Type" +msgstr "Type" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:120 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:120 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:229 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:389 +msgid "Description" +msgstr "Description" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:126 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:136 +msgid "Target" +msgstr "Cible" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:130 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:132 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:162 +msgid "Access Point" +msgstr "Point d'accès" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:150 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:192 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:153 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:167 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:213 +msgid "required" +msgstr "requis" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:159 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:178 +msgid "Reachable by" +msgstr "Joignable par" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:180 +msgid "Outproxies" +msgstr "Mandataires sortants" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:187 +msgid "Tunnel Destination" +msgstr "Destination de tunnel" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:199 +msgid "name or destination" +msgstr "nom ou destination" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202 +msgid "b32 not recommended" +msgstr "b32 déconseillée" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208 +msgid "Shared Client" +msgstr "Client partagé" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:212 +msgid "(Share tunnels with other clients and irc/httpclients? Change requires restart of client proxy)" +msgstr "Partager les tunnels avec d'autres clients et des clients http/irc? La modification requiert le redémarrage du client mandataire)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:124 +msgid "Auto Start" +msgstr "Démarrage automatique" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:128 +msgid "(Check the Box for 'YES')" +msgstr "(Cochez la case pour le démarrage auto en même temps que le routeur)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:243 +msgid "Advanced networking options" +msgstr "Options de réseau avancées" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224 +msgid "(NOTE: when this client proxy is configured to share tunnels, then these options are for all the shared proxy clients!)" +msgstr "(NOTE: quand ce mandataire client est configuré pour partager les tunnels, ces options sont appliquées à tous les mandataires clients partagés)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245 +msgid "Tunnel Options" +msgstr "Options de tunnel" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:247 +msgid "Length" +msgstr "Longueur" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:254 +msgid "0 hop tunnel (low anonymity, low latency)" +msgstr "Tunnel à 0 saut (anonymat et latence faibles)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:258 +msgid "1 hop tunnel (medium anonymity, medium latency)" +msgstr "Tunnel à 1 saut (anonymat et latence moyens)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:262 +msgid "2 hop tunnel (high anonymity, high latency)" +msgstr "Tunnel à 2 sauts (anonymat et latence élevés)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:266 +msgid "3 hop tunnel (very high anonymity, poor performance)" +msgstr "Tunnel à 3 sauts (anonymat et latence très élevés)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:256 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:275 +msgid "hop tunnel (very poor performance)" +msgstr "Tunnel de saut (performances médiocres)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:261 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:280 +msgid "Variance" +msgstr "Variance" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:268 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:287 +msgid "0 hop variance (no randomisation, consistant performance)" +msgstr "Variance à 0 saut (pas d'aléa, performances stables)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:272 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:291 +msgid "+ 0-1 hop variance (medium additive randomisation, subtractive performance)" +msgstr "Variance à + 0 ou 1 saut (aléa moyen, performances diminuées)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295 +msgid "+ 0-2 hop variance (high additive randomisation, subtractive performance)" +msgstr "Variance à + 0 à 2 sauts (aléa élevé, performances diminuées)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:299 +msgid "+/- 0-1 hop variance (standard randomisation, standard performance)" +msgstr "Variance à +/- 0 ou 1 saut (aléas légers, performances diminuées)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:284 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:303 +msgid "+/- 0-2 hop variance (not recommended)" +msgstr "Variance à +/- 0 à 2 sauts (déconseillée)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:315 +msgid "hop variance" +msgstr "variance de saut" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:320 +msgid "Count" +msgstr "Nombre" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:327 +msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)" +msgstr "Tunnel à 1 entrant/1 sortant (faible consommation de bande passante, moins fiable)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:331 +msgid "2 inbound, 2 outbound tunnels (standard bandwidth usage, standard reliability)" +msgstr "Tunnels à 2 entrants/2 sortants (consommation de bande passante standard, fiabilité standard)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335 +msgid "3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)" +msgstr "Tunnels à 3 entrants/3 sortants (consommation de bande passante plus élevée, fiabilité élevée)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:344 +msgid "tunnels" +msgstr "tunnels" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349 +msgid "Backup Count" +msgstr "Secours" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:356 +msgid "0 backup tunnels (0 redundancy, no added resource usage)" +msgstr "Aucun tunnel de secours (pas de tolérance de pannes, pas de consommation de ressources) " + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:360 +msgid "1 backup tunnel each direction (low redundancy, low resource usage)" +msgstr "1 tunnel de secours par direction (légère tolérance de pannes, faible consommation de ressources)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364 +msgid "2 backup tunnels each direction (medium redundancy, medium resource usage)" +msgstr "2 tunnels de secours par direction (tolérance de pannes moyenne, consommation de ressources moyenne)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:349 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:368 +msgid "3 backup tunnels each direction (high redundancy, high resource usage)" +msgstr "3 tunnels de secours par direction (tolérance de pannes élevée, consommation de ressources élevée)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:358 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377 +msgid "backup tunnels" +msgstr "Tunnels de secours" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:384 +msgid "Profile" +msgstr "Profil" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:372 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:391 +msgid "interactive connection" +msgstr "connexion interactive" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:376 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:395 +msgid "bulk connection (downloads/websites/BT)" +msgstr "connexion portefaix (téléchargements/sites web/BT)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:378 +msgid "Delay Connect" +msgstr "Connexion à retard" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:382 +msgid "for request/response connections" +msgstr "connexions pour demandes/réponses" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399 +msgid "Router I2CP Address" +msgstr "Adresse I2CP du routeur" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401 +msgid "Host" +msgstr "Hôte" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:396 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:148 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:269 +msgid "Port" +msgstr "Port" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:406 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479 +msgid "Reduce tunnel quantity when idle" +msgstr "Réduire le nombre de tunnels quand inactif" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:408 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:422 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:430 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:442 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:452 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:472 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:419 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481 +msgid "Enable" +msgstr "Activer" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:412 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:485 +msgid "Reduced tunnel count" +msgstr "Tunnels réduits" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:416 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:489 +msgid "Idle minutes" +msgstr "Minutes d'inactivité" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420 +msgid "Close tunnels when idle" +msgstr "Fermer les tunnels quand inactif" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:426 +msgid "New Keys on Reopen" +msgstr "Nouvelles clés à la réouverture" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435 +msgid "Disable" +msgstr "Désactiver" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440 +msgid "Delay tunnel open until required" +msgstr "Retarder l'ouverture jusqu'à l'utilisation" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:450 +msgid "Persistent private key" +msgstr "Clé privée persistante" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:456 +msgid "File" +msgstr "Fichier" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:460 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:220 +msgid "Local destination" +msgstr "Destination locale" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464 +msgid "(if known)" +msgstr "(si connu)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:470 +msgid "Local Authorization" +msgstr "Autorisation locale" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490 +msgid "Username" +msgstr "Identifiant" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:480 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:494 +msgid "Password" +msgstr "Mot de passe" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484 +msgid "Outproxy Authorization" +msgstr "Autorisation de mandataire sortant" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502 +msgid "Jump URL List" +msgstr "Liste d'URL de sauts" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:508 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525 +msgid "Custom options" +msgstr "Options personnelles" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:512 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:529 +msgid "NOTE: If tunnel is currently running, most changes will not take effect until tunnel is stopped and restarted." +msgstr "NOTE: si le tunnel est actif, la plupart des modifications ne prendront effet qu'après son redémarrage." + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:514 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531 +msgid "Cancel" +msgstr "Annuler" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535 +msgid "Delete" +msgstr "Supprimer" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:520 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537 +msgid "Save" +msgstr "Enregistrer" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:73 +msgid "I2P Tunnel Manager - Edit Server Tunnel" +msgstr "Gestionnaire de tunnels I2P: Modifier le tunnel serveur" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:93 +msgid "Edit server settings" +msgstr "Modifier les paramètres du serveur" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:101 +msgid "New server settings" +msgstr "Paramètres de nouveau serveur" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:199 +msgid "Website name" +msgstr "Nom du site web" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:203 +msgid "(leave blank for outproxies)" +msgstr "(laisser vide pour les mandataires sortants)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:208 +msgid "Private key file" +msgstr "Fichier de clé privée" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:230 +msgid "Add to local addressbook" +msgstr "Ajouter au carnet d'adresses local" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:237 +msgid "Hostname Signature" +msgstr "Signature du nom d'hôte" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417 +msgid "Encrypt Leaseset" +msgstr "Jeu de baux crypté" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423 +msgid "Encryption Key" +msgstr "Clé de cryptage" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427 +msgid "Generate New Key" +msgstr "Générer une nouvelle clé" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429 +msgid "Generate" +msgstr "Générer" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:523 +msgid "(Tunnel must be stopped first)" +msgstr "(Le tunnel doit préalablement être arrêté)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433 +msgid "Restricted Access List" +msgstr "Liste d'accès réservée" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439 +msgid "Whitelist" +msgstr "Liste blanche" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443 +msgid "Blacklist" +msgstr "Liste noire" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447 +msgid "Access List" +msgstr "Liste d'accès" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451 +msgid "Inbound connection limits (0=unlimited)" +msgstr "Limite de connexions entrantes (0=pas de limite)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453 +msgid "Per client" +msgstr "Par client" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455 +msgid "Per minute" +msgstr "Par minute" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459 +msgid "Per hour" +msgstr "Par heure" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463 +msgid "Per day" +msgstr "Par jour" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467 +msgid "Total" +msgstr "Total" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475 +msgid "Max concurrent connections (0=unlimited)" +msgstr "Connexions simultanées maximum (0=pas de limite)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493 +msgid "New Certificate type" +msgstr "Type de nouveau certificat" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495 +msgid "None" +msgstr "Aucun" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499 +msgid "Hashcash (effort)" +msgstr "Pénalité" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505 +msgid "Hashcash Calc Time" +msgstr "Temps de calcul de pénalisation" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507 +msgid "Estimate" +msgstr "Estimer" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509 +msgid "Hidden" +msgstr "Masqué" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513 +msgid "Signed (signed by)" +msgstr "Signé (signé par)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519 +msgid "Modify Certificate" +msgstr "Modifier le certificat" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521 +msgid "Modify" +msgstr "Modifier" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:74 +msgid "I2P Tunnel Manager - List" +msgstr "Gestionnaire de tunnels I2P - Liste" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:86 +msgid "Status Messages" +msgstr "Messages d'état" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:90 +msgid "Refresh" +msgstr "Actualiser" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:94 +msgid "Stop All" +msgstr "Arrêter tous" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:98 +msgid "Start All" +msgstr "Démarrer tous" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:102 +msgid "Restart All" +msgstr "Redémarrer tous" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:106 +msgid "Reload Config" +msgstr "Recharger la configuration" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:108 +msgid "I2P Server Tunnels" +msgstr "Tunnels serveurs I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:112 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:133 +msgid "Points at" +msgstr "Pointe vers" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:114 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:156 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:160 +msgid "Preview" +msgstr "Aperçu" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:116 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:180 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:253 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:300 +msgid "Status" +msgstr "État" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:166 +msgid "Base32 Address" +msgstr "Adresse Base32" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:174 +msgid "No Preview" +msgstr "Aucun aperçu" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:187 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:307 +msgid "Starting..." +msgstr "Démarrage..." + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:194 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:208 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:314 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:328 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:342 +msgid "Stop" +msgstr "Arrêt" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:201 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:335 +msgid "Running" +msgstr "Actif" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:349 +msgid "Stopped" +msgstr "Arrêté" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:356 +msgid "Start" +msgstr "Démarrer" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:237 +msgid "New server tunnel" +msgstr "Nouveau tunnel serveur" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:399 +msgid "Standard" +msgstr "Standard" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:401 +msgid "Create" +msgstr "Créer" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:243 +msgid "I2P Client Tunnels" +msgstr "Tunnels clients I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:251 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:286 +msgid "Interface" +msgstr "Interface" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:321 +msgid "Standby" +msgstr "Pause" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:366 +msgid "Outproxy" +msgstr "Mandataire sortant" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:370 +msgid "Destination" +msgstr "Destination" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:384 +msgid "none" +msgstr "aucun" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:397 +msgid "New client tunnel" +msgstr "Nouveau tunnel client" + From 109bd978ded5650e00c3d03fd02ea87e5e8f9910 Mon Sep 17 00:00:00 2001 From: magma Date: Fri, 25 Mar 2011 19:41:25 +0000 Subject: [PATCH 348/463] fix --- apps/routerconsole/locale/messages_fr.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 5a547f218..cc431045e 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-11-19 18:16+0000\n" -"PO-Revision-Date: 2011-03-25 15:35+0100\n" -"Last-Translator: \n" +"PO-Revision-Date: 2011-03-25 20:38+0100\n" +"Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" "MIME-Version: 1.0\n" @@ -3377,7 +3377,7 @@ msgstr "Durée de cette session" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195 msgid "Uptime" -msgstr "Temps de service" +msgstr "Lancé depuis" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 msgid "Help with configuring your firewall and router for optimal I2P performance" From d47de894abc95ff8717d39658b55f9c46943a93b Mon Sep 17 00:00:00 2001 From: magma Date: Fri, 25 Mar 2011 19:54:59 +0000 Subject: [PATCH 349/463] fix --- apps/routerconsole/locale/messages_fr.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index cc431045e..1ace10599 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-11-19 18:16+0000\n" -"PO-Revision-Date: 2011-03-25 20:38+0100\n" +"PO-Revision-Date: 2011-03-25 20:54+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -3381,7 +3381,7 @@ msgstr "Lancé depuis" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 msgid "Help with configuring your firewall and router for optimal I2P performance" -msgstr "Aide avec la configuration du pare-feu et du routeur afin d\\''optimiser la performance d\\''I2P" +msgstr "Aide à la configuration du pare-feu et du routeur afin d\\''optimiser la performance d\\''I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 msgid "Download" @@ -3409,7 +3409,7 @@ msgstr "Connu" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:308 msgid "Help with firewall configuration" -msgstr "Aide avec la configuration du pare-feu" +msgstr "Aide à la configuration du pare-feu" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:310 msgid "Check NAT/firewall" @@ -4327,7 +4327,7 @@ msgstr "Un changement de cette configuration entraînera un redémarrage du rout #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:518 msgid "Configuration Help" -msgstr "Aide avec la configuration" +msgstr "Aide à la configuration" #: ../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 From ea86b6880f102e4852b704215e8f1361b88e8de6 Mon Sep 17 00:00:00 2001 From: magma Date: Fri, 25 Mar 2011 22:19:29 +0000 Subject: [PATCH 350/463] fix --- installer/resources/readme/readme_fr.html | 75 ++++++++++++++++------- 1 file changed, 52 insertions(+), 23 deletions(-) diff --git a/installer/resources/readme/readme_fr.html b/installer/resources/readme/readme_fr.html index 4fa9ec2a0..794fbb204 100644 --- a/installer/resources/readme/readme_fr.html +++ b/installer/resources/readme/readme_fr.html @@ -1,42 +1,71 @@
    -

    Si vous venez juste de lancer I2P, les chiffres sur la gauche à coté de Active devraient commencer à augmenter dans les prochaines minutes et vous verrez un "Shared client" en destination locale listés sur la gauche (si non, voir plus bas). Une fois qu'ils apparaissent, vous pouvez:

    +

    Si vous venez juste de lancer I2P, les chiffres sur la gauche à coté de Active devraient commencer à augmenter dans +les prochaines minutes et vous verrez un "Shared client" en destination locale listés sur la gauche (si non, +voir plus bas). Une fois qu'ils apparaissent, vous pouvez:

      -
    • Parcourir les "eepsites" - sur I2P il y a des sites web anonymes hébergés - dites à votre navigateur d'utiliser le HTTP proxy a l'adresse 127.0.0.1 port 4444, ensuite vous pouvez naviguer sur les eepsites:
      +
    • Parcourir les "eepsites" - sur I2P il y a des sites web anonymes hébergés - dites à votre navigateur +d'utiliser le HTTP proxy a l'adresse 127.0.0.1 port 4444, ensuite vous pouvez naviguer sur les eepsites:
      - Il y a bien plus d'eepsites - suivez juste les liens au départ de ceux sur lesquels vous êtes, mettez-les dans vos favoris et visitez-les souvent!
    • -
    • Parcourir le web - Il y a pour l'instant un outproxy HTTP sur I2P attaché à votre propre proxy HTTP sur le port 4444 - vous devez simplement configurer le proxy de votre navigateur pour l'utiliser (comme expliqué ci-dessus) et aller sur n'importe quel URL normale - vos requêtes seront relayées par le réseau i2p.
    • -
    • Transfer de fichiers - Il y a un port intégré de Snark le client BitTorrent.
    • -
    • Utiliser le service de mail anonyme - Postman a créé un sytème de mails compatible avec un client de messagerie normal (POP3 / SMTP) qui permet d'envoyer des emails autant au sein d'i2p que vers et à partir de l'internet normal! Créez-vous un compte à hq.postman.i2p. + Il y a bien plus d'eepsites - suivez juste les liens au départ de ceux sur lesquels vous êtes, mettez-les dans vos +favoris et visitez-les souvent!
    • +
    • Parcourir le web - Il y a pour l'instant un outproxy HTTP sur I2P attaché à votre propre +proxy HTTP sur le port 4444 - vous devez simplement configurer le proxy de votre navigateur pour l'utiliser (comme +expliqué ci-dessus) et aller sur n'importe quel URL normale - vos requêtes seront relayées par le réseau i2p.
    • +
    • Transfer de fichiers - Il y a un port intégré de +Snark le client BitTorrent.
    • +
    • Utiliser le service de mail anonyme - Postman a créé un sytème de mails compatible avec +un client de messagerie normal (POP3 / SMTP) qui permet d'envoyer des emails autant au sein d'i2p que vers et à partir +de l'internet normal! Créez-vous un compte à hq.postman.i2p. Nous fournissons dans la version de base de i2p susimail, - un client web pop3/smtp orienté sur l'anonymat qui est configuré pour accéder aux services email de postman. -
      Alternativement, vous pouvez essayer le nouveau système de courrier sans serveur et crypté de bout-en-bout - I2P-Bote (avec une interface web), installable comme un plugin.
    • -
    • Chatter de manière anonyme - Activez votre client IRC et connectez-le sur le serveur 127.0.0.1 port 6668. Ceci pointe vers l'un des deux serveur IRC anonyme, mais ni vous ni eux ne savent qui est l'autre
    • -
    • Créez-vous un blog anonyme - Renseignez-vous chez Syndie
    • + un client web pop3/smtp orienté sur l'anonymat qui est configuré pour accéder aux services email de postman. +
      Alternativement, vous pouvez essayer le nouveau système de courrier sans serveur et crypté de bout-en-bout + I2P-Bote (avec une interface +web), installable comme un plugin.
      +
    • Chatter de manière anonyme - Activez votre client IRC et connectez-le sur le serveur +127.0.0.1 port 6668. Ceci pointe vers l'un des deux serveur IRC anonyme, mais ni vous ni eux ne savent qui est +l'autre
    • +
    • Créez-vous un blog anonyme - Renseignez-vous chez +Syndie
    • Et bien d'autres

    Vous voulez votre propre eepsite?

    -

    Nous fournissons de base quelques logiciels pour vous permettre de créer votre propre eepsite - une instance -Jetty, qui écoute sur -http://127.0.0.1:7658/. Placer simplement vos fichiers dans le répertoire eepsite/docroot/ (ou placez n'importe quel fichier JSP/Servlet standard .war) dans eepsite/webapps, ou script CGI standard dans eepsite/cgi-bin) et ils apparaitront. Après avoir démarré un tunnel pour votre eepsite (le tunnel doit pointer sur l'adresse locale du eepsite), votre eepsite sera visible pour les autes. Des instructions plus détaillées pour créer un eepsite se trouvent sur Votre eepsite temporaire. +

    Nous fournissons de base quelques logiciels pour vous permettre de créer votre propre eepsite - une instance +Jetty, qui écoute sur +http://127.0.0.1:7658/. Placer simplement vos fichiers dans le répertoire +eepsite/docroot/ (ou placez n'importe quel fichier JSP/Servlet standard .war) dans +eepsite/webapps, ou script CGI standard dans eepsite/cgi-bin) et ils apparaitront. Après avoir démarré un +tunnel pour votre eepsite (le tunnel doit pointer sur l'adresse locale du eepsite), votre +eepsite sera visible pour les autes. Des instructions plus détaillées pour créer un eepsite se trouvent sur +Votre eepsite temporaire.

    -

    Dépannage

    +

    Dépannage

    -

    Soyez patient - i2p peut s'avérer lent à démarrer la première fois car il recherche des pairs. Si, après 30 minutes, votre Actives: connecté/récent compte moins de 10 pairs connectés, vous devez ouvrir le port 8887 sur votre pare-feu pour avoir une meilleure connection. Si vous ne pouvez accéder à aucun eepsite (même www.i2p2.i2p), soyez sûr que votre navigateur utilise bien le proxy 127.0.0.1 sur le port 4444. Vous pouvez aussi faire part de votre démarche sur le site web I2P, poster des message sur le forum de discussion, +

    Soyez patient - i2p peut s'avérer lent à démarrer la première fois car il recherche des pairs. Si, après 30 minutes, +vos "Actifs: Connectés/Récents" compte moins de 10 pairs connectés, vous devez ouvrir dans votre pare-feu le port +choisi aléatoirement pendant l'installation pour avoir une meilleure connection. Si vous ne pouvez accéder à aucun eepsite (même +www.i2p2.i2p), assurez-vous que votre navigateur utilise bien le +proxy 127.0.0.1 sur le port 4444. Vous pouvez aussi faire part de votre démarche sur le +site web I2P, poster des message sur le +forum de discussion, ou passer par - #i2p-help, #i2p-fr, #i2p ou #i2p-chat - sur IRC sur le serveur irc.freenode.net, irc.postman.i2p ou irc.freshcoffee.i2p (ils sont liés).

    + #i2p-help, #i2p-fr, +#i2p ou #i2p-chat + sur IRC sur le serveur irc.freenode.net, irc.postman.i2p ou +irc.freshcoffee.i2p (ils sont liés).

    From cdd986c56ba12f6b31a6ba8348c978f7f1b24b2b Mon Sep 17 00:00:00 2001 From: m1xxy Date: Fri, 25 Mar 2011 22:55:37 +0000 Subject: [PATCH 351/463] update translation de --- apps/routerconsole/locale/messages_de.po | 1370 ++++++++++++---------- 1 file changed, 721 insertions(+), 649 deletions(-) diff --git a/apps/routerconsole/locale/messages_de.po b/apps/routerconsole/locale/messages_de.po index 9f6319ca5..da8ba6f42 100644 --- a/apps/routerconsole/locale/messages_de.po +++ b/apps/routerconsole/locale/messages_de.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-03-03 18:27+0000\n" -"PO-Revision-Date: 2011-03-04 19:51+0100\n" -"Last-Translator: mixxy \n" +"POT-Creation-Date: 2011-03-25 12:46+0000\n" +"PO-Revision-Date: 2011-03-25 16:01+0100\n" +"Last-Translator: \n" "Language-Team: echelon , Sperreingang \n" "Language: \n" "MIME-Version: 1.0\n" @@ -65,7 +65,7 @@ msgstr[0] "1 Stunde" msgstr[1] "{0} Stunden" #: ../../../core/java/src/net/i2p/data/DataHelper.java:1158 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:314 msgid "n/a" msgstr "k.A." @@ -146,36 +146,36 @@ msgstr "Akzeptiere Tunnelanfragen" msgid "Rejecting tunnels" msgstr "Weise Tunnelanfragen zurück" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:105 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:125 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 msgid "Reseeding" msgstr "Reseeden" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:128 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:141 #, java-format msgid "Reseed fetched only 1 router." msgid_plural "Reseed fetched only {0} routers." msgstr[0] "Nur Daten eines Routers per Reseed erhalten" msgstr[1] "Nur {0} Routerinformationen per Reseed erhalten" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:135 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:148 msgid "Reseed failed." msgstr "Reseed fehlgeschlagen" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:136 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:149 #, java-format msgid "See {0} for help." msgstr "Für Hilfe, siehe {0}!" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:137 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:150 msgid "reseed configuration page" msgstr "Einstellungen für den Reseed" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:239 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:293 msgid "Reseeding: fetching seed URL." msgstr "Reseed: Hole die Seed-URL" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:335 #, java-format msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." msgstr "Reseed: Holen der Router-Informationen von Seed-URL ({0} erfolgreich, {1} Fehler)." @@ -203,7 +203,7 @@ msgid "{0} is used for outbound connections only" msgstr "{0} wird nur für ausgehende Verbindungen genutzt" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:518 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129 msgid "Help" msgstr "Hilfe" @@ -216,18 +216,18 @@ msgid "To override these limits, add the settings i2np.ntcp.maxConnections=nnn a msgstr "Um diese Einstellungen zu umgehen, fügen Sie folgende Einstellungen der Seite \"Erweiterte Einstellungen\" hinzu: i2np.ntcp.maxConnections=nnn und i2np.udp.maxConnections=nnn" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 msgid "Definitions" msgstr "Definitionen" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:735 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890 #: ../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/ProfileOrganizerRenderer.java:189 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:238 msgid "Peer" msgstr "Teilnehmer" @@ -237,7 +237,7 @@ msgid "The remote peer, identified by router hash" msgstr "Der entfernte Teilnehmer, über seine Router-Prüfsumme erkannt" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:736 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 msgid "Dir" msgstr "Richtung" @@ -263,13 +263,13 @@ msgid "How long since a packet has been received / sent" msgstr "Vergangene Zeit seit ein Paket empfangen/gesendet wurde" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895 msgid "Idle" msgstr "Untätig" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1900 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "In/Out" @@ -284,13 +284,13 @@ msgid "How long ago this connection was established" msgstr "Wie lange die Verbindung schon besteht" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905 msgid "Up" msgstr "Verbunden" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:742 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1907 msgid "Skew" msgstr "Differenz" @@ -341,7 +341,7 @@ msgid "Current maximum send packet size / estimated maximum receive packet size msgstr "Derzeit maximale Größe der gesendeten Pakete / geschätzte maximale Größe der empfangenen Pakete (Bytes)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:743 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 msgid "TX" msgstr "Gesendet" @@ -351,7 +351,7 @@ msgid "The total number of packets sent to the peer" msgstr "Gesamtanzahl der an den Teilnehmer gesendeten Pakete" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:742 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:744 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926 msgid "RX" msgstr "Empfangen" @@ -384,42 +384,42 @@ msgstr "Gesamtanzahl der vom Teilnehmer erneut empfangenen Pakete" msgid "Excessive clock skew: {0}" msgstr "Zu hohe Abweichung der Uhrzeit: {0}" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:730 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732 msgid "NTCP connections" msgstr "NTCP-Verbindungen" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:731 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:733 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1886 msgid "Limit" msgstr "Obere Grenze" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:734 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 msgid "Timeout" msgstr "Timeout" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:743 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:745 msgid "Out Queue" msgstr "Ausgehende Warteschlange" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:744 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:746 msgid "Backlogged?" msgstr "Rückstau" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:758 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1949 -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87 msgid "Inbound" msgstr "ankommend" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:762 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1951 -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87 msgid "Outbound" msgstr "abgehend" #. buf.append("
    \n"); -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:807 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:809 msgid "peers" msgstr "Teilnehmer" @@ -539,20 +539,20 @@ msgstr "Ignoriere Tunnelanfragen: zu langsam" msgid "Dropping tunnel requests: Overloaded" msgstr "Ignoriere Tunnelanfragen: überlastet" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:460 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:470 msgid "Rejecting tunnels: Request overload" msgstr "Weise Tunnelanfragen zurück: Überlast an Anfragen" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:485 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:495 msgid "Rejecting tunnels: Connection limit" msgstr "Weise Tunnelanfragen zurück: Verbindungslimit erreicht" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:685 -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:706 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:695 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:716 msgid "Dropping tunnel requests: High load" msgstr "Ignoriere Tunnelanfragen: Hohe Last" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:698 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:708 msgid "Dropping tunnel requests: Queue time" msgstr "Ignoriere Tunnelanfragen: zu lange Warteschlange" @@ -1483,12 +1483,12 @@ msgstr "Sambia" msgid "Zimbabwe" msgstr "Simbabwe" -#: ../java/src/net/i2p/router/web/CSSHelper.java:58 +#: ../java/src/net/i2p/router/web/CSSHelper.java:60 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:35 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:37 #: ../java/strings/Strings.java:29 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:119 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:233 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:125 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:257 msgid "I2P Router Console" msgstr "I2P-Routerkonsole" @@ -1507,27 +1507,27 @@ msgid "Error saving the configuration (applied but not saved) - please see the e msgstr "Fehler beim Speichern der Einstellungen (angewendet aber nicht gespeichert) - Bitte schau in die Fehlerberichte!" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:355 msgid "Save Client Configuration" msgstr "Speichere Klienteneinstellungen" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:39 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:405 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427 msgid "Save Interface Configuration" msgstr "Speichere Interface-Einstellungen" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:441 msgid "Save WebApp Configuration" msgstr "Speichere WebApplikations-Einstellungen" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:47 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:453 msgid "Save Plugin Configuration" msgstr "Speichere Einstellungen des Zusatzprogrammes" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:51 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:461 msgid "Install Plugin" msgstr "Zusatzprogramm installieren" @@ -1580,7 +1580,7 @@ msgstr "Falscher Index für den Klienten" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:392 #: ../java/src/net/i2p/router/web/SummaryHelper.java:384 msgid "Client" msgstr "Klient" @@ -1662,7 +1662,7 @@ msgid "Edit" msgstr "Bearbeiten" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:94 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351 msgid "Add Client" msgstr "Klienten hinzufügen" @@ -1693,7 +1693,7 @@ msgid "Plugin" msgstr "Zusatzprogramm" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:161 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:273 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185 msgid "Version" msgstr "Version" @@ -1728,14 +1728,12 @@ msgstr "Stopp" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:262 #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:78 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331 msgid "Check for updates" msgstr "Auf Aktualisierungen prüfen" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:263 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:242 msgid "Update" msgstr "Aktualisierung" @@ -1749,12 +1747,12 @@ msgid "Delete" msgstr "löschen" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:18 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:343 msgid "Add key" msgstr "Schlüssel hinzufügen" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:19 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:341 msgid "Delete key" msgstr "Schlüssel löschen" @@ -1851,7 +1849,7 @@ msgstr "Service" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:101 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381 #: ../java/strings/Strings.java:72 msgid "Tunnels" msgstr "Tunnel" @@ -1865,7 +1863,7 @@ msgid "Clients" msgstr "Klienten" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:293 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:315 msgid "Keyring" msgstr "Schlüsselbund" @@ -1875,13 +1873,13 @@ msgstr "Statusmitschnitt" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:107 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260 +#: ../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:387 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:389 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:143 msgid "Stats" msgstr "Statistiken" @@ -1894,13 +1892,13 @@ msgstr "Erweitert" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:264 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:29 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:34 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:360 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:516 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:307 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:341 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:352 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:377 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:344 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:378 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:534 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:370 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:362 msgid "Save changes" msgstr "Änderungen speichern" @@ -2004,7 +2002,7 @@ msgid "or {0} bytes per month maximum" msgstr "oder maximal {0} Bytes im Monat" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:20 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:333 msgid "Ban peer until restart" msgstr "Den Teilnehmer bis zum Neustart sperren" @@ -2024,7 +2022,7 @@ msgid "Invalid peer" msgstr "ungültiger Teilnehmer" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:28 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:335 msgid "Unban peer" msgstr "Sperrung des Teilnehmers aufheben" @@ -2037,7 +2035,7 @@ msgid "is not currently banned" msgstr "ist zur Zeit nicht gesperrt" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:39 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:361 msgid "Adjust peer bonuses" msgstr "Teilnehmer-Boni anpassen" @@ -2050,7 +2048,7 @@ msgid "Bad capacity value" msgstr "ungültiger Wert für die Kapazität" #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:17 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:368 msgid "Save changes and reseed now" msgstr "Änderungen speichern und Reseed beginnen" @@ -2070,7 +2068,7 @@ msgstr "Einstellungen erfolgreich gespeichert" #. 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:293 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:311 msgid "Shutdown immediately" msgstr "Beende I2P sofort" @@ -2117,7 +2115,7 @@ msgid "Restart in {0}" msgstr "Neustart in {0}" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:53 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:291 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:309 msgid "Shutdown gracefully" msgstr "Kontrolliert ausschalten" @@ -2130,7 +2128,7 @@ msgid "Shutdown immediately! boom bye bye bad bwoy" msgstr "Unverzüglich ausschalten! - Und tschüss!" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:61 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:313 msgid "Cancel graceful shutdown" msgstr "Kontrolliertes Ausschalten abbrechen" @@ -2139,7 +2137,7 @@ msgid "Graceful shutdown cancelled" msgstr "Kontrolliertes Ausschalten abgebrochen" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:64 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 msgid "Graceful restart" msgstr "Kontrollierter Neustart" @@ -2148,7 +2146,7 @@ msgid "Graceful restart requested" msgstr "Kontrollierter Neustart angefordert" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:68 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 msgid "Hard restart" msgstr "Harter Neustart" @@ -2173,22 +2171,22 @@ msgid "Rekeying after graceful shutdown" msgstr "Neue RouterID nach sanftem Herunterfahren" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:80 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 msgid "Run I2P on startup" msgstr "Starte I2P beim Systemstart" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:82 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:355 msgid "Don't run I2P on startup" msgstr "Starte I2P nicht beim Systemstart" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:84 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:355 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:373 msgid "Dump threads" msgstr "Threadliste ausgeben" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:91 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:381 msgid "View console on startup" msgstr "Zeige die Konsole nach dem Starten" @@ -2197,7 +2195,7 @@ msgid "Console is to be shown on startup" msgstr "Konsole wird nach dem Starten angezeigt" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:94 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:383 msgid "Do not view console on startup" msgstr "Zeige Konsole beim Starten nicht" @@ -2265,58 +2263,58 @@ msgid_plural "{0} tunnels" msgstr[0] "1 Tunnel" msgstr[1] "{0} Tunnel" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:26 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:35 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:41 msgid "Exploratory tunnels" msgstr "Erkundungstunnel" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:46 -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:61 -msgid "Client tunnels for" -msgstr "Kliententunnel für" +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:51 +#, java-format +msgid "Client tunnels for {0}" +msgstr "Kliententunnel für {0}" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:69 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74 msgid "ANONYMITY WARNING - Settings include 0-hop tunnels." msgstr "ANONYMITÄTSWARNUNG - Einstellungen beinhalten Tunnel ohne Zwischenstationen" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:79 msgid "ANONYMITY WARNING - Settings include 1-hop tunnels." msgstr "ANONYMITÄTSWARNUNG - Einstellungen beinhalten Tunnel mit nur einer Zwischenstation" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:77 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 msgid "PERFORMANCE WARNING - Settings include very long tunnels." msgstr "LEISTUNGSWARNUNG - Einstellungen beinhalten sehr lange Tunnel" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:80 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:85 msgid "PERFORMANCE WARNING - Settings include high tunnel quantities." msgstr "LEISTUNGSWARNUNG - Einstellungen beinhalten sehr viele Tunnel" #. buf.append("\n"); #. tunnel depth -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:92 msgid "Length" msgstr "Länge" #. tunnel depth variance -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:104 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:109 msgid "Randomization" msgstr "Zufallskomponente" #. tunnel quantity -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:128 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:133 msgid "Quantity" msgstr "Anzahl" #. tunnel backup quantity -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:145 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:150 msgid "Backup quantity" msgstr "Anzahl der Ersatztunnel" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:167 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:172 msgid "Inbound options" msgstr "Optionen für eingehende Tunnel" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:180 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:185 msgid "Outbound options" msgstr "Optionen für ausgehende Tunnel" @@ -2433,7 +2431,7 @@ msgstr "Nur herunterladen und überprüfen" msgid "Download, verify, and restart" msgstr "Herunterladen, überprüfen und neustarten" -#: ../java/src/net/i2p/router/web/FormHandler.java:174 +#: ../java/src/net/i2p/router/web/FormHandler.java:176 msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit." msgstr "Ungültige Übertragung der eingegebenen Daten, möglicherweise da Sie den 'Zurück'- oder 'Neu Laden'-Knopf in Ihrem Browser gedrückt haben. Bitte erneut senden." @@ -2464,8 +2462,8 @@ msgid "Plot averages" msgstr "Zeichne Mittelwerte" #: ../java/src/net/i2p/router/web/GraphHelper.java:152 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:333 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:351 msgid "or" msgstr "oder" @@ -2601,96 +2599,96 @@ msgstr "Zeige alle Router" msgid "Show all routers with full stats" msgstr "Zeige alle Router mit vollständigen Statistiken" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:265 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:266 msgid "Network Database Router Statistics" msgstr "Netzwerkdatenbank Routerstatistiken" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:273 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:287 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:305 msgid "Count" msgstr "Anzahl" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:287 msgid "Transports" msgstr "Transporte" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:305 msgid "Country" msgstr "Land" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:342 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:344 msgid "Our info" msgstr "Informationen über uns" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:344 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:346 msgid "Peer info for" msgstr "Informationen über den Teilnehmer" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:348 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:350 msgid "Full entry" msgstr "Ganzer Eintrag" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:356 #: ../java/src/net/i2p/router/web/SummaryHelper.java:115 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 msgid "Hidden" msgstr "Versteckt" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:356 msgid "Updated" msgstr "Aktualisiert" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:355 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:358 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:357 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:360 #, java-format msgid "{0} ago" msgstr "vor {0}" #. shouldnt happen -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:357 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:361 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:359 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:363 msgid "Published" msgstr "Veröffentlicht" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:363 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:365 msgid "Address(es)" msgstr "Adresse(n)" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:376 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:378 msgid "cost" msgstr "Kosten" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 msgid "Hidden or starting up" msgstr "Versteckt oder Startphase" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 msgid "SSU" msgstr "SSU" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 msgid "SSU with introducers" msgstr "SSU mit Hilfsrouter" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:404 msgid "NTCP" msgstr "NTCP" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:404 msgid "NTCP and SSU" msgstr "NTCP und SSU" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:404 msgid "NTCP and SSU with introducers" msgstr "NTCP und SSU mit Hilfsrouter" -#: ../java/src/net/i2p/router/web/NewsFetcher.java:93 +#: ../java/src/net/i2p/router/web/NewsFetcher.java:92 #, java-format msgid "News last updated {0} ago." msgstr "Zeit seit letzter Aktualisierung der Nachrichten: {0};" -#: ../java/src/net/i2p/router/web/NewsFetcher.java:99 +#: ../java/src/net/i2p/router/web/NewsFetcher.java:98 #, java-format msgid "News last checked {0} ago." msgstr "Zeit seit letzter Prüfung auf neue Nachrichten: {0}" @@ -2708,7 +2706,7 @@ msgstr "Auf Aktualisierungen des Zusatzprogramms {0} prüfen" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:154 #, java-format msgid "New plugin version {0} is available" -msgstr "Neue Version des Zusatzprogramms {0} ist verfügbar" +msgstr "Neue Version des Zusatzprogramms ist verfügbar ({0})" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:156 #, java-format @@ -2725,7 +2723,7 @@ msgid "Downloading plugin" msgstr "Lade Zusatzprogramm herunter" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:146 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:244 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:245 #, java-format msgid "{0}B transferred" msgstr "{0}Bytes übertragen" @@ -2741,7 +2739,7 @@ msgid "Cannot create plugin directory {0}" msgstr "Kann kein Verzeichnis für das Zusatzprogramm {0} anlegen" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:167 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:298 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:299 #, java-format msgid "from {0}" msgstr "von {0}" @@ -2861,37 +2859,43 @@ msgstr "Teilnehmerprofile" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:73 #, java-format -msgid "Showing {0} recent profiles." -msgstr "Zeige {0} aktuelle Profile." +msgid "Showing 1 recent profile." +msgid_plural "Showing {0} recent profiles." +msgstr[0] "Zeige ein aktuelles Profil an." +msgstr[1] "Zeige {0} aktuelle Profile." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:75 #, java-format -msgid "Hiding {0} older profiles." -msgstr "Zeige {0} alte Profile nicht an." +msgid "Hiding 1 older profile." +msgid_plural "Hiding {0} older profiles." +msgstr[0] "Zeige ein altes Profil nicht an." +msgstr[1] "Zeige {0} alte Profile nicht an." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:77 #, java-format -msgid "Hiding {0} standard profiles." -msgstr "Zeige {0} Standardprofile nicht an." +msgid "Hiding 1 standard profile." +msgid_plural "Hiding {0} standard profiles." +msgstr[0] "Zeige ein Standardprofil nicht an." +msgstr[1] "Zeige {0} Standardprofile nicht an." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:82 msgid "Groups (Caps)" msgstr "Gruppen (Kategorien)" #: ../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:335 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:252 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:353 msgid "Speed" msgstr "Geschwindigkeit" #: ../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:339 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:254 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:357 msgid "Capacity" msgstr "Kapazität" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:85 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:255 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:256 msgid "Integration" msgstr "Integration" @@ -2917,7 +2921,7 @@ msgid "Failing" msgstr "fehlgeschlagen" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:287 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:282 msgid "Integrated" msgstr "integriert" @@ -2930,151 +2934,156 @@ msgstr "Unerreichbar" msgid "Test Fails" msgstr "Test fehlgeschlagen" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:175 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:177 msgid "profile" msgstr "Profil" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:184 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:186 msgid "Floodfill and Integrated Peers" msgstr "Floodfill und integrierte Teilnhemer" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:188 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190 msgid "Caps" msgstr "Kategorien" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:189 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:191 msgid "Integ. Value" msgstr "Integrationswert" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:192 msgid "Last Heard About" msgstr "Zuletzt etwas über ihn gehört" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:191 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:193 msgid "Last Heard From" msgstr "Letzte Nachricht empfangen" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:192 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:194 msgid "Last Good Send" msgstr "Letzte geglückte Sendung" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:193 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195 msgid "Last Bad Send" msgstr "Letzte fehlgeschlagene Sendung" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:194 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196 msgid "10m Resp. Time" msgstr "10 Min. Antwortzeit" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:197 msgid "1h Resp. Time" msgstr "1 Std. Antwortzeit" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:198 msgid "1d Resp. Time" msgstr "1 Tag Antwortzeit" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:197 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:199 msgid "Last Good Lookup" msgstr "Letzte erfolgreiche Suche" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:198 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:200 msgid "Last Bad Lookup" msgstr "Letzte fehlgeschlagene Suche" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:199 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201 msgid "Last Good Store" msgstr "Letztes erfolgreiches Speichern" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:200 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 msgid "Last Bad Store" msgstr "Letztes fehlgeschlagene Speichern" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:203 msgid "1h Fail Rate" msgstr "stündl. Fehlerrate" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:204 msgid "1d Fail Rate" msgstr "tägl. Fehlerrate" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:250 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:251 msgid "Thresholds" msgstr "Grenzwerte" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:252 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:253 msgid "fast peers" msgstr "schnelle Teilnehmer" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:254 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:255 msgid "high capacity peers" msgstr "Teilnehmer hoher Kapazität" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:256 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 msgid " well integrated peers" msgstr "gut integrierte Teilnehmer" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 msgid "as determined by the profile organizer" msgstr "wie vom Profilorganisator ermittelt" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 msgid "groups" msgstr "Gruppen" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 msgid "capabilities in the netDb, not used to determine profiles" msgstr "Werte in der Netzwerkdatenbank, nicht zum Ermitteln der Profile verwendet" #. capabilities -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 #: ../java/strings/Strings.java:81 msgid "caps" msgstr "Kategorien" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 msgid "peak throughput (bytes per second) over a 1 minute period that the peer has sustained in a single tunnel" msgstr "maximaler Durchsatz (Bytes je Tunnel) innerhalb einer Minute, den ein Teilnehmer in einem einzelnen Tunnel erreicht hat" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 msgid "speed" msgstr "Geschwindigkeit" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 msgid "capacity" msgstr "Kapazität" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 msgid "how many tunnels can we ask them to join in an hour?" msgstr "Wie viele Tunnel können wir bei diesem Teilnehmer innerhalb einer Stunde bekommen?" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 msgid "how many new peers have they told us about lately?" msgstr "Wie viele neue Kontakte hat dieser Teilnehmer uns kürzlich mitgeteilt?" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 msgid "integration" msgstr "Integration" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264 msgid "is the peer banned, or unreachable, or failing tunnel tests?" msgstr "Ist der Teilnehmer gesperrt, unerreichbar, oder schlagen die Tunneltests fehl?" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264 msgid "status" msgstr "Status" -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:57 +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:47 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:410 +msgid "none" +msgstr "keine" + +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:62 #, java-format msgid "Temporary ban expiring in {0}" msgstr "vorübergehende Sperrung endet in {0}" -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:59 +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:64 #, java-format msgid "Banned until restart or in {0}" msgstr "Gesperrt bis zum Neustart oder in {0}" -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:71 +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:76 msgid "unban now" msgstr "Bann aufheben" @@ -3129,20 +3138,20 @@ msgstr "Die Daten werden über jeweils 1 Minute erhoben und repräsentieren dahe msgid "These statistics are primarily used for development and debugging." msgstr "Diese Statistiken dienen vorrangig der Entwicklung und Fehlerbeseitigung." -#: ../java/src/net/i2p/router/web/StatsGenerator.java:105 -#: ../java/src/net/i2p/router/web/StatsGenerator.java:156 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:106 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:157 msgid "No lifetime events" msgstr "Bisher keine Ereignisse" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:116 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:117 msgid "frequency" msgstr "Häufigkeit" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:120 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:121 msgid "Rolling average events per period" msgstr "Fortschreitender Durchschnittshäufigkeit von Ereignissen je Zeitintervall" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:124 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:125 msgid "Highest events per period" msgstr "höchste Anzahl an Ereignissen je Zeitintervall" @@ -3153,38 +3162,46 @@ msgstr "höchste Anzahl an Ereignissen je Zeitintervall" #. } #. buf.append(" avg interval between updates: (").append(num(curFreq.getAverageInterval())).append("ms, min "); #. buf.append(num(curFreq.getMinAverageInterval())).append("ms)"); -#: ../java/src/net/i2p/router/web/StatsGenerator.java:135 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:136 msgid "Lifetime average events per period" msgstr "Anzahl an Ereignissen je Zeitintervall über die Lebenszeit gemittelt" #. Display the strict average -#: ../java/src/net/i2p/router/web/StatsGenerator.java:140 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:141 msgid "Lifetime average frequency" msgstr "durchschnittliche Häufigkeit über Lebenszeit" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:168 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:144 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:234 +#, java-format +msgid "1 event" +msgid_plural "{0} events" +msgstr[0] "ein Ereignis" +msgstr[1] "{0} Ereignisse" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:169 msgid "rate" msgstr "Rate" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:170 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:171 msgid "Average" msgstr "Mittelwert" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:173 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:174 msgid "Highest average" msgstr "höchster Durchscnittslwert" -#. breaking the sentence like before makes translation in my language impossible. #: ../java/src/net/i2p/router/web/StatsGenerator.java:201 #, java-format -msgid "There were {0} event(s) in this period" -msgstr "Es gab {0} Vorkommnis(se) in dieser Zeitspanne" +msgid "There was 1 event in this period." +msgid_plural "There were {0} events in this period." +msgstr[0] "Es gab ein Vorkommnis in dieser Zeitspanne" +msgstr[1] "Es gab {0} Vorkommnisse in dieser Zeitspanne." -#. buf.append(' '); #: ../java/src/net/i2p/router/web/StatsGenerator.java:203 #, java-format -msgid " which ended {0} ago." -msgstr ", welche vor {0} endete." +msgid "The period ended {0} ago." +msgstr "Die Zeitspanne endete vor {0}." #: ../java/src/net/i2p/router/web/StatsGenerator.java:205 msgid "No events" @@ -3272,12 +3289,12 @@ msgid "I2P Internals" msgstr "Einstellungen" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:99 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:384 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:379 msgid "View existing tunnels and tunnel build status" msgstr "Betrachte die existierenden Tunnel und den Status des Tunnelaufbaus" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:105 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253 msgid "Show all current peer connections" msgstr "Zeige alle bestehenden Verbindungen zu Teilnehmern" @@ -3363,93 +3380,99 @@ msgstr "Laufzeit" msgid "Help with configuring your firewall and router for optimal I2P performance" msgstr "Hilfe bei der Konfiguration Ihrer Firewall und Ihres Routers für eine optimale Leistung." -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 -msgid "Download" -msgstr "Herunterladen" +#. Note to translators: parameter is a version, e.g. "0.8.4" +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:232 +#, java-format +msgid "Download {0} Update" +msgstr "Aktualisierung herunterladen ({0})" +#. Note to translators: parameter is a date and time, e.g. "02-Mar 20:34 UTC" +#.
    is optional, to help the browser make the lines even in the button +#. If the translation is shorter than the English, you should probably not include
    #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:240 -msgid "Download Unsigned" -msgstr "unsignierte Aktualisierung herunterladen" +#, java-format +msgid "Download Unsigned
    Update {0}" +msgstr "unsignierte Aktualisierung herunterladen: {0}" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261 msgid "Active" msgstr "aktiv" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270 msgid "Fast" msgstr "schnell" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:281 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:276 msgid "High capacity" msgstr "hohe Kapazität" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:293 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288 msgid "Known" msgstr "bekannt" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:308 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:303 msgid "Help with firewall configuration" msgstr "Hilfe bei der Firewalleinstellung" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:310 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:305 msgid "Check NAT/firewall" msgstr "Überprüfe NAT/Firewall!" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:330 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:325 msgid "Reseed" msgstr "Hole neue Teilnehmerinformationen" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:347 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:342 msgid "Configure router bandwidth allocation" msgstr "Konfigurieren der Bandbreitenzuweisung des Routers" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:349 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:344 msgid "Bandwidth in/out" msgstr "Bandbreite ein-/ausgehend" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:369 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:364 msgid "Total" msgstr "gesamt" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:371 msgid "Used" msgstr "genutzt" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:391 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 msgid "Exploratory" msgstr "Erkundung" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:398 msgid "Participating" msgstr "teilnehmend an" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:409 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:404 msgid "Share ratio" msgstr "" "Verhältnis \n" " fremder/eigenen Hops" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:410 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:417 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412 msgid "Congestion" msgstr "Aufgaben" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:422 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 msgid "Job lag" msgstr "Aufgabenverzug" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:428 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:423 msgid "Message delay" msgstr "Nachrichtenverzug" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:434 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:429 msgid "Tunnel lag" msgstr "Tunnelverzug" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435 msgid "Backlog" msgstr "Anfragenrückstau" @@ -3463,7 +3486,7 @@ msgid "ERR-Clock Skew of {0}" msgstr "FEHLER: Uhrzeitdifferenz von {0}" #: ../java/src/net/i2p/router/web/SummaryHelper.java:122 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:595 msgid "OK" msgstr "OK" @@ -3488,7 +3511,7 @@ msgid "WARN-Firewalled and Fast" msgstr "WARNUNG: Firewall aktiv und Schnell" #: ../java/src/net/i2p/router/web/SummaryHelper.java:133 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 msgid "Firewalled" msgstr "Firewall aktiv" @@ -3509,7 +3532,7 @@ msgid "WARN-Firewalled with UDP Disabled" msgstr "WARNUNG: Firewall aktiv und UDP deaktiviert" #: ../java/src/net/i2p/router/web/SummaryHelper.java:148 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 msgid "Testing" msgstr "Teste" @@ -3553,10 +3576,6 @@ msgstr "Baue auf" msgid "Building tunnels" msgstr "Baue Tunnel auf" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:410 -msgid "none" -msgstr "keine" - #. 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 @@ -3591,10 +3610,14 @@ 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:287 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:309 msgid "configure" msgstr "ändern" +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:61 +msgid "Client tunnels for" +msgstr "Kliententunnel für" + #: ../java/src/net/i2p/router/web/TunnelRenderer.java:65 msgid "dead" msgstr "tot" @@ -3719,67 +3742,67 @@ msgstr "Fremde Tunnel" msgid "Totals" msgstr "Gesamt" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:66 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:142 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:237 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:67 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:143 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:238 msgid "Updating" msgstr "Aktualisiere" #. Process the .sud/.su2 file -#: ../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:261 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:286 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:89 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:112 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:117 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:262 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:287 msgid "Update downloaded" msgstr "Aktualisierung heruntergeladen" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:91 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:92 #, java-format msgid "Unsigned update file from {0} is corrupt" msgstr "Unsignierte Aktualisierungsdatei von {0} ist fehlerhaft" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:111 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:281 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:112 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:282 msgid "Restarting" msgstr "Starte neu" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:118 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:288 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:119 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:289 msgid "Click Restart to install" msgstr "Klicken Sie auf Neustart zum Installieren der" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:120 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:290 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:121 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:291 msgid "Click Shutdown and restart to install" msgstr "Klicken Sie zum Installieren auf Herunterfahren und Neustarten" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:121 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:292 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:122 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:293 #, java-format msgid "Version {0}" msgstr "Version {0}" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:126 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:127 #, java-format msgid "Failed copy to {0}" msgstr "Kopieren nach {0} fehlgeschlagen" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:184 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:185 #, java-format msgid "Updating from {0}" msgstr "Aktualisiere von {0}" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:253 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:254 #, java-format msgid "No new version found at {0}" msgstr "Keine neue Version unter {0} gefunden" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:281 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:282 msgid "Update verified" msgstr "Aktualisierung verifiziert" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:307 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:308 #, java-format msgid "Transfer failed from {0}" msgstr "Übertragung von {0} fehlgeschlagen" @@ -4031,1402 +4054,1453 @@ msgstr "ausgehende Low-Level Übertragungsrate" msgid "How many peers we are actively talking with" msgstr "Anzahl aktiver Teilnehmer mit denen wir reden" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:112 msgid "config networking" msgstr "Netzwerkeinstellungen" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:224 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:224 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:231 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:222 +msgid "Summary Bar" +msgstr "Schnellübersicht" + #. 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:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:217 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:230 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:217 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:227 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:222 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:234 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:250 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:244 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:242 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:235 msgid "Refresh (s)" msgstr "Auffrischen {s}" #. ditto -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:221 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:234 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:221 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:231 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:226 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:237 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:254 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:251 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:248 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:245 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:239 msgid "Enable" msgstr "Aktiviere" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:262 msgid "I2P Network Configuration" msgstr "I2P-Netzwerkeinstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:298 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:316 msgid "Bandwidth limiter" msgstr "Bandbreitenbegrenzer" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:300 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:318 msgid "I2P will work best if you configure your rates to match the speed of your internet connection." msgstr "" "I2P funktioniert am besten, wenn Sie die Werte so konfigurieren, \n" "dass die Geschwindigkeit zu Ihrer Internetverbindung passt." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:322 msgid "KBps In" msgstr "kByte/s eingehend" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:336 msgid "KBps Out" msgstr "kByte/s ausgehend" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:334 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:352 msgid "Share" msgstr "für andere zur Benutzung freigegeben" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:341 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:326 msgid "NOTE" msgstr "HINWEIS" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:361 #, java-format msgid "You have configured I2P to share only {0} KBps." msgstr "Sie haben I2P angewiesen, nur {0} kbit/s mit anderen zu teilen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:346 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:364 msgid "I2P requires at least 12KBps to enable sharing. " msgstr "I2P benötigt mindestens 12 kbit/s, um das Durchleiten zu ermöglichen. " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:365 msgid "Please enable sharing (participating in tunnels) by configuring more bandwidth. " msgstr "" "Bitte aktivieren Sie die gemeinsame Nutzung (Teilnahme an Tunneln),\n" "indem Sie mehr Bandbreite freigeben. " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:348 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:366 msgid "It improves your anonymity by creating cover traffic, and helps the network." msgstr "" "Es verbessert Ihre Anonymität durch Herstellen von s. g. Rauschen und \n" "es hilft zudem dem Netzwerk." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:369 #, java-format msgid "You have configured I2P to share {0} KBps." msgstr "Sie haben I2P konfiguriert, {0} kBytes/s durchzuleiten. " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:354 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:372 msgid "The higher the share bandwidth the more you improve your anonymity and help the network." msgstr "" "Je höher der Anteil an geteilter Bandbreite ist, desto mehr verbessert sich \n" "Ihre Anonymität, und darüber hinaus hilft es dem Netz. " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:358 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:305 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:327 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:403 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:348 -#: ../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:342 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:322 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:376 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:532 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:425 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:366 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:360 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:383 msgid "Cancel" msgstr "Abbruch" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:375 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:393 msgid "IP and Transport Configuration" msgstr "IP- und Transport-Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:377 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:395 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:324 msgid "The default settings will work for most people." msgstr "Die Standardeinstellungen funktionieren für die meisten Anwender." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:379 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:397 msgid "There is help below." msgstr "Weiter unten finden Sie eine Hilfe." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:381 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399 msgid "UPnP Configuration" msgstr "UPnP-Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:385 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 msgid "Enable UPnP to open firewall ports" msgstr "Aktiviere UPnP, um Ports in der Firewall freizuschalten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:387 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:405 msgid "UPnP status" msgstr "UPnP-Status" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:389 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:407 msgid "IP Configuration" msgstr "IP-Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:391 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:461 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 msgid "Externally reachable hostname or IP address" msgstr "Extern erreichbarer Hostname oder IP-Adresse" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:413 msgid "Use all auto-detect methods" msgstr "Alle automatisch erkannten Modi benutzen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 msgid "Disable UPnP IP address detection" msgstr "UPnP IP-Adresserkennung deaktivieren" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:421 msgid "Ignore local interface IP address" msgstr "IP-Adresse der lokalen Schnittstelle ignorieren" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:407 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:425 msgid "Use SSU IP address detection only" msgstr "Nur die SSU-Adresserkennung benutzen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:411 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:429 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 msgid "Specify hostname or IP" msgstr "Hostnamen oder IP angeben" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 msgid "Select Interface" msgstr "Schnittstelle auswählen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:449 msgid "Hidden mode - do not publish IP" msgstr "Versteckter Modus - veröffentlicht die IP-Adresse nicht" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:451 msgid "(prevents participating traffic)" msgstr "(verhindert die Teilnahme an fremden Tunneln)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:453 msgid "Action when IP changes" msgstr "Aktion wenn sich die IP-Adresse ändert" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:439 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:457 msgid "Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity" msgstr "Laptop Modus - ändert zur Erhöhung der Anonymität Ihre Router-Identifikation und den UDP-Port, wenn sich Ihre IP ändert" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:441 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 msgid "Experimental" msgstr "experimentell" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:443 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:461 msgid "UDP Configuration:" msgstr "UDP-Einstellungen:" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:445 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:463 msgid "UDP port:" msgstr "UDP-Port:" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:477 msgid "TCP Configuration" msgstr "TCP-Einstellungen:" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:465 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:483 msgid "Use auto-detected IP address" msgstr "Automatisch erkannte IP-Adresse benutzen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:467 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:517 msgid "currently" msgstr "derzeit" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:471 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:489 msgid "if we are not firewalled" msgstr "wenn keine Firewall aktiv ist" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:475 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 msgid "Always use auto-detected IP address (Not firewalled)" msgstr "Immer die automatisch erkannte IP-Adresse benutzen (bei inaktiver Firewall)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:503 msgid "Disable inbound (Firewalled)" msgstr "Deaktiviere eingehende Verbindungen (Firewall ist aktiv)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:489 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:507 msgid "Completely disable" msgstr "Komplett deaktivieren" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:491 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 msgid "(select only if behind a firewall that throttles or blocks outbound TCP)" msgstr "" "(nur auswählen, wenn dieser Router hinter einer Firewall ist, die ausgehenden \n" "TCP-Verkehr blokiertt oder begrenzt)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:511 msgid "Externally reachable TCP port" msgstr "Extern erreichbarer TCP-Port" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:515 msgid "Use the same port configured for UDP" msgstr "Den selben Port wie für UDP benutzen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:505 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:523 msgid "Specify Port" msgstr "Gib den Port an" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:527 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:348 msgid "Note" msgstr "Hinweis" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:512 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:530 msgid "Changing these settings will restart your router." msgstr "Veränderungen an diesen Werten bewirken einen Neustart des Routers." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:536 msgid "Configuration Help" msgstr "Konfigurationshilfe" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:520 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:538 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587 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 funktioniert auch hinter den meisten Firewalls, aber die Geschwindigkeit und Integration ins I2P-Netz erhöhen sich, wenn der I2P-Port in der Firewall für TCP und UDP freigegeben und auf Ihren Computer weitergeleitet wird." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:522 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:540 msgid "If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you." msgstr "" "Falls es Ihnen möglich ist, richten Sie bitte Ihre Firewall so ein, dass \n" "TCP- und UDP-Pakete Ihren Computer unverändert erreichen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:524 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:542 msgid "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic." msgstr "" "Falls Ihnen das nicht möglich ist, hat I2P UPnP-Unterstützung (Universelles \n" "Plug and Play) und UDP-Weiterleitung mit Hilfe der „SSU-Hilfsrouter“ eingebaut." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:526 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:544 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 "" "Die meisten der obenstehenden Optionen sind für besondere Situationen,\n" "wenn z. B. UPnP nicht funktioniert oder die Firewall nicht geändert werden \n" "kann und Probleme bereitet." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:528 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:546 msgid "Certain firewalls such as symmetric NATs may not work well with I2P." msgstr "" "Bestimmte Firewalls, wie auch symmetrische NATs, arbeiten unter Umständen\n" "nicht gut mit I2P zusammen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:537 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 msgid "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports." msgstr "" "UPnP kommuniziert normalerweise mit den Internet Gateway Devices (IGDs), um \n" "die extern erreichbare IP-Adresse zu ermitteln und die Ports weiterzuleiten." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:539 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 msgid "UPnP support is beta, and may not work for any number of reasons" msgstr "" "Die Unterstützung für UPnP ist noch in der Testphase und kann aus vielen\n" "Gründen nicht funktionieren" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:541 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 msgid "No UPnP-compatible device present" msgstr "Kein UPnP-fähiges Gerät gefunden" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:543 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 msgid "UPnP disabled on the device" msgstr "UPnP ist für dieses Gerät deaktiviert" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:545 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 msgid "Software firewall interference with UPnP" msgstr "Die Software-Firewall stört UPnP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:547 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 msgid "Bugs in the device's UPnP implementation" msgstr "Fehlerhafte UPnP-Integration im Gerät" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:549 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 msgid "Multiple firewall/routers in the internet connection path" msgstr "Mehrere Firewalls / Router in der Verbindung zum Internet" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:551 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 msgid "UPnP device change, reset, or address change" msgstr "UPnP-Gerät geändert, neugestartet oder mit geänderter Adresse" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:553 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:571 msgid "Review the UPnP status here." msgstr "Überprüfen Sie hier den UPnP-Status." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:573 msgid "UPnP may be enabled or disabled above, but a change requires a router restart to take effect." msgstr "" "UPnP kann aktiviert oder deaktiviert werden, aber ein wechseln \n" "erfordert einen Routerneustart um wirksam zu werden." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575 msgid "Hostnames entered above will be published in the network database." msgstr "Oben eingegebene Hostnamen werden in der Netzwerk-Datenbank veröffentlicht." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 msgid "They are not private." msgstr "Sie sind nicht geheim." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 msgid "Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1." msgstr "" "Geben Sie auch keine IP-Adresse für den privaten Gebrauch wie\n" "127.0.0.1 oder 192.168.1.1 an!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 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 "" "Wenn Sie eine falsche IP-Adresse oder einen falschen Hostnamen angeben, oder Ihre Firewall oder NAT nicht richtig konfigurieren, \n" "wird sich Ihre Netzwerk-Performance erheblich verschlechtern." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 msgid "When in doubt, leave the settings at the defaults." msgstr "Wenn Sie Zweifel haben, lassen Sie die Einstellungen auf den Standardwerten." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 msgid "Reachability Help" msgstr "Hilfe zur Erreichbarkeit" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:572 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:590 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 "" "Wenn Sie meinen, Sie haben Ihre Firewall geöffnet und I2P breichtet dennoch, es wäre\n" "hinter einer Firewall, dann prüfen Sie, ob Sie möglicherweise mehrere Firewalls\n" "- zum Beispiel sowohl Software- als auch externer Hardware-Router - haben." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593 msgid "If there is an error, the logs may also help diagnose the problem." msgstr "" "Wenn ein Fehler auftritt, können die Berichte helfen, \n" "das Problem zu diagnostizieren." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 msgid "Your UDP port does not appear to be firewalled." msgstr "Ihr UDP-Port wird anscheinend nicht von der Firewall geblockt." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 msgid "Your UDP port appears to be firewalled." msgstr "Ihr UDP-Port wird anscheinend von der Firewall geblockt." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603 msgid "As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error." msgstr "" "Da die Firewall-Nachweismethoden nicht zu 100% zuverlässig sind, ist die \n" "Anzeige gelegentlich fehlerhaft." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 msgid "However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port." msgstr "" "Wenn es allerdings dauerhaft angezeigt wird, sollten Sie überprüfen, ob Ihre Ports,\n" "sowohl der externen wie auch der internen Firewall, geöffnet sind." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:589 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 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 wird auch mit geschlossener Firewall gut funktionieren, es besteht kein \n" "Grund zur Besorgnis. Bei geschlossener Firewall verwendet der Router \n" "\"Hilfsrouter\", um eingehende Verbindungen zu übertragen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:591 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 msgid "However, you will get more participating traffic and help the network more if you can open your firewall(s)." msgstr "Falls Sie Ihre Firewall(s) öffnen, helfen Sie dem Netzwerk mehr und gleichzeitig erhöhen Sie Ihre Anonymität durch die Teilnahme an fremden Tunneln." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 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 "Falls Sie dies schon getan haben, denken Sie bitte daran, dass Sie eine Hardware- und eine Software-Firewall haben könnten, oder aber hinter einer Firewall sind, die Sie nicht ändern können (z.B. seitens Ihres Providers)." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:595 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 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 "Auch können manche Router nicht TCP und UDP korrekt auf dem selben Port weiterleiten, oder haben andere Beschränkungen oder Fehler, die die Portweiterleitung an den I2P-Router behindern." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 msgid "The router is currently testing whether your UDP port is firewalled." msgstr "Der Router testet gerade, ob Ihr UDP-Port offen ist." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 msgid "The router is not configured to publish its address, therefore it does not expect incoming connections." msgstr "Die Einstellungen des Routers verhindern die Veröffentlichung der Adresse, deswegen akzeptiert er keine eingehenden Verbindungen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 msgid "WARN - Firewalled and Fast" msgstr "WARNUNG: Firewall aktiv und schnell" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 msgid "You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled." msgstr "Sie haben I2P angewiesen, mehr als 128 kbit/s Bandbreite zu teilen, aber leider sind Sie hinter einer Firewall." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 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 funktioniert zwar auch mit dieser Einstellung, falls Sie jedoch wirklich über mehr als 128 kbit/s Bandbreite zum Teilen verfügen, sind Sie mit einer offenen Firewall viel hilfreicher für das Netzwerk." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 msgid "WARN - Firewalled and Floodfill" msgstr "WARNUNG: Firewall und Floodfillfunktion aktiv" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:631 msgid "You have configured I2P to be a floodfill router, but you are firewalled." msgstr "Sie haben I2P als Floodfill-Router eingerichtet, jedoch sind sie hinter einer Firewall." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 msgid "For best participation as a floodfill router, you should open your firewall." msgstr "Für die beste Teilnahme als Floodfill-Router, sollten Sie Ihre Firewall öffnen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 msgid "WARN - Firewalled with Inbound TCP Enabled" msgstr "WARNUNG: von Firewall geblockt und ankommendes TCP aktiviert" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:637 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 "Sie haben eingehendes TCP konfiguriert, jedoch ist ihr UDP-Port hinter einer Firewall. Deswegen ist es wahrscheinlich, dass Ihr TCP-Port auch hinter einer Firewall ist." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 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 "Falls Ihr TCP Port gesperrt ist und Sie \"eingehendes TCP\" aktiviert haben, werden andere Router Sie nicht via TCP erreichen können. Dies schadet dem Netzwerk." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 msgid "Please open your firewall or disable inbound TCP above." msgstr "Bitte öffnen Sie Ihre Firewall oder schalten Sie ankommendes TCP oben aus" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 msgid "WARN - Firewalled with UDP Disabled" msgstr "WARNUNG: Firewall aktiv und UDP deaktiviert" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 msgid "You have configured inbound TCP, however you have disabled UDP." msgstr "Sie haben eingehendes TCP aktiviert, jedoch UDP deaktiviert." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 msgid "You appear to be firewalled on TCP, therefore your router cannot accept inbound connections." msgstr "Sie scheinen auf TCP eine Firewall zu haben, deswegen kann Ihr Router keine eingehenden Verbindungen entgegennehmen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:631 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 msgid "Please open your firewall or enable UDP." msgstr "Bitte öffnen Sie Ihre Firewall oder aktivieren Sie UDP!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:651 msgid "ERR - Clock Skew" msgstr "FEHLER: Uhr nicht synchron" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 msgid "Your system's clock is skewed, which will make it difficult to participate in the network." msgstr "Ihre Uhrzeit ist nicht synchron mit dem Netzwerk, dies macht es schwierig, am Netzwerk teilzunehmen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:637 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:655 msgid "Correct your clock setting if this error persists." msgstr "Korrigieren Sie Ihre Uhrzeit falls dieser Fehler bestehen bleibt!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:657 msgid "ERR - Private TCP Address" msgstr "FEHLER: Private TCP-Adresse" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:659 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 "Sie dürfen nie eine nicht routebare IP wie 127.0.0.1 oder 192.168.1.1 als Ihre extern erreichbare Adresse angeben." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 msgid "Correct the address or disable inbound TCP above." msgstr "Korrigieren Sie die Adresse oder deaktivieren Sie eingehendes TCP oben!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:663 msgid "ERR - SymmetricNAT" msgstr "FEHLER: symmetrische NAT" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:665 msgid "I2P detected that you are firewalled by a Symmetric NAT." msgstr "I2P hat erkannt, dass Sie hinter einer symmetrischen NAT gesperrt sind." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:667 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 funktioniert hinter diesem Typ Firewall nicht gut. Sie können wahrscheinlich keine eingehenden Verbindungen akzeptieren, was Ihre Teilnahme am Netzwerk beeinträchtigt." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:651 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:669 msgid "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" msgstr "FEHLER: UDP-Port wird schon benutzt. Setzen Sie i2np.udp.internalPort=xxxx in den erweiterten Einstellungen und starten Sie neu!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 msgid "I2P was unable to bind to port 8887 or other configured port." msgstr "I2P konnte sich nicht auf den konfigurierten Port binden." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:655 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:673 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 "Überprüfen Sie, ob ein anderes Programm den eingestellten Port benutzt. Falls ja, beenden Sie dieses Programm oder wählen Sie einen anderen Port für I2P!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:657 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:675 msgid "This may be a transient error, if the other program is no longer using the port." msgstr "Dies kann ein vorübergehender Fehler sein, falls das andere Programm diesen Port nicht mehr nutzt." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:659 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:677 msgid "However, a restart is always required after this error." msgstr "Jedoch ist nach diesem Fehler immer ein Neustart erforderlich." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:679 msgid "ERR - UDP Disabled and Inbound TCP host/port not set" msgstr "FEHLER: UDP deaktiviert und eingehende TCP-Adresse/Port nicht konfiguriert" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:663 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:681 msgid "You have not configured inbound TCP with a hostname and port above, however you have disabled UDP." msgstr "Sie haben unter TCP eingehend keinen Hostnamen und Port eingetragen und dennoch UDP deaktiviert." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:665 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:683 msgid "Therefore your router cannot accept inbound connections." msgstr "Somit kann Ihr Router keine eigehenden Verbindungen akzeptieren." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:667 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:685 msgid "Please configure a TCP host and port above or enable UDP." msgstr "Bitte konfigurieren Sie eine Adresse und einen Port im oberen Bereich für TCP oder aktivieren Sie UDP!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:669 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:687 msgid "ERR - Client Manager I2CP Error - check logs" msgstr "FEHLER: Klientenmanager I2CP Fehler - Schauen Sie in die Berichte!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:689 msgid "This is usually due to a port 7654 conflict. Check the logs to verify." msgstr "Dies geschieht für gewöhnlich wegen eines Konflikts auf Port 7654. Prüfen Sie die Berichte, um dies zu verifizieren!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:673 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:691 msgid "Do you have another I2P instance running? Stop the conflicting program and restart I2P." msgstr "Haben Sie eine zweite I2P-Instanz laufen? Beenden Sie das störende Programm und starten Sie I2P neu!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:107 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:113 msgid "config advanced" msgstr "Erweiterte Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:263 msgid "I2P Advanced Configuration" msgstr "I2P - Erweiterte Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:319 msgid "Advanced I2P Configuration" msgstr "Erweiterte I2P-Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:329 msgid "Some changes may require a restart to take effect." msgstr "Einige Einstellungen benötigen einen Routerneustart, um aktiv zu werden." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:112 msgid "config clients" msgstr "Klienten einrichten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:265 msgid "I2P Client Configuration" msgstr "Konfiguration der I2P-Klienten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:330 msgid "Client Configuration" msgstr "Klienten-Konfiguration" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:314 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:332 msgid "The Java clients listed below are started by the router and run in the same JVM." msgstr "" "Die Java-Klienten unten werden durch den Router gestartet und laufen in der \n" "selben JVM." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:338 msgid "To change other client options, edit the file" msgstr "Bearbeiten Sie diese Datei, um andere Klienten-Optionen zu ändern:" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:325 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:401 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:415 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:439 msgid "All changes require restart to take effect." msgstr "Alle Änderungen erfordern einen Neustart, um aktiv zu werden." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 msgid "Advanced Client Interface Configuration" msgstr "Erweiterte Einstellungen des Klienten-Interfaces" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:361 msgid "External I2CP (I2P Client Protocol) Interface Configuration" msgstr "Eintellungen des externen I2CP-Interfaces (I2P-Klienten-Protokoll)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:367 msgid "Enabled without SSL" msgstr "Aktiviert; ohne SSL" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:373 msgid "Enabled with SSL required" msgstr "Aktiviert, SSL erforderlich" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:379 msgid "Disabled - Clients outside this Java process may not connect" msgstr "Deaktiviert - Klienten außerhalb dieses Javaprozesses können sich nicht verbinden" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:381 msgid "I2CP Port" msgstr "I2CP-Port" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:385 msgid "I2CP Interface" msgstr "I2CP-Interface" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:379 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:401 msgid "Authorization" msgstr "Autorisation" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:385 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:407 msgid "Require username and password" msgstr "Zugangskontrolle per Benutzername und Passwort aktivieren" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:387 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 msgid "Username" msgstr "Benutzername" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:391 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:413 msgid "Password" msgstr "Passwort" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:419 msgid "Any changes made here must also be configured in the external client." msgstr "Alle hier vorgenommenen Änderungen müssen auch in den externen Klienten vorgenommen werden." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:399 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:421 msgid "Many clients do not support SSL or authorization." msgstr "Vielle Klienten unterstützen kein SSL und/oder keine Authentifikation." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:407 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:429 msgid "WebApp Configuration" msgstr "WebApp-Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 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 "Untengenannte Java-Anwendungen werden vom WebKonsolen-Klienten gestartet und laufen in der selben JVM wie der Router. Es handelt sich dabei normalerweise Web-Anwendungen, die über die Routerkonsole erreichbar sind. Es können komplette Anwendungen (z.B. i2psnark), reine Oberflächen für andere Klienten, Anwendungen, die separat aktiviert werden müssen (z.B. susidns, i2ptunnel), oder Anwendungen ohne Oberfläche (Adressbuch) sein." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:411 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433 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 "Eine Webanwendung kann auch durch das Entfernen der .war-Datei deaktiviert werden. Jedoch werden die .war-Datei und die Anwendung nach einer Aktualisierung des Routers wieder erscheinen. Somit ist das Deaktivieren der Web-Anwendung hier die bevorzugte Methode." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:421 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:445 msgid "Plugin Configuration" msgstr "Konfiguration der Zusatzprogramme" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:447 msgid "The plugins listed below are started by the webConsole client." msgstr "Die unten aufgelisteten Zusatzprogramme werden vom WebKonsolen-Klienten gestartet." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:429 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:455 msgid "Plugin Installation" msgstr "Installation von Zusatzprogrammen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:457 msgid "To install a plugin, enter the download URL:" msgstr "Für die Installation eines Zusatzprogramms bitte die Download-URL eingeben:" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:112 msgid "config keyring" msgstr "Schlüsselbund einrichten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:249 msgid "I2P Keyring Configuration" msgstr "Einstellungen des I2P-Schlüsselbunds" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:317 msgid "The router keyring is used to decrypt encrypted leaseSets." msgstr "Der Router-Schlüsselbund wird zum Entschlüsseln verschlüsselter LeaseSets verwendet." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:298 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:320 msgid "The keyring may contain keys for local or remote encrypted destinations." msgstr "Der Schlüsselbund kann Schlüssel für lokale oder entfernte verschlüsselte Leasesets enthalten." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:326 msgid "Manual Keyring Addition" msgstr "Manuelles Hinzufügen zum Schlüsselbund" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:328 msgid "Enter keys for encrypted remote destinations here." msgstr "Geben Sie hier die Schlüssel für entfernte verschlüsselte Ziele ein!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:331 msgid "Keys for local destinations must be entered on the" msgstr "Schlüssel für lokale Ziele müssen dort eingegeben werden" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:333 msgid "I2PTunnel page" msgstr "I2PTunnel-Seite" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:335 msgid "Dest. name, hash, or full key" msgstr "Name des Ziels, Prüfsumme oder ganzer Schlüssel" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:337 msgid "Encryption Key" msgstr "Schlüssel zum Kodieren" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:107 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:113 msgid "config logging" msgstr "Berichte einrichten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:263 msgid "I2P Logging Configuration" msgstr "Einstellungen der I2P-Berichte" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 msgid "Configure I2P Logging Options" msgstr "Richte I2P-Berichte ein" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:321 msgid "Logging filename" msgstr "Dateiname für Berichte" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:325 msgid "(the symbol '@' will be replaced during log rotation)" msgstr "(Das Zeichen '@' wird bei der Rotation der Berichtedatei ersetzt)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:327 msgid "Log record format" msgstr "Format der Berichtedatei" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:331 msgid "(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" msgstr "(Benutzen Sie 'd' = Datum, 'c' = Klasse, 't' = Thread, 'p' = Priorität, 'm' = Nachricht)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:333 msgid "Log date format" msgstr "Datumsformat der Berichte" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:337 msgid "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)" msgstr "('MM' = Monat, 'dd' = Tag, 'HH' = Stunde, 'mm' = Minute, 'ss' = Sekunde, 'SSS' = Millisekunde)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 msgid "Max log file size" msgstr "max. Dateigröße der Berichte" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:343 msgid "Default log level" msgstr "Standardlevel für Berichte" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:347 msgid "(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)" msgstr "(DEBUG und INFO sind nicht empfohlen, da diese den Router drastisch verlangsamen)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:349 msgid "Log level overrides" msgstr "Berichtelevel - Sonderoptionen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:353 msgid "New override" msgstr "Neue Zusatzoption" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:112 msgid "config peers" msgstr "Teilnehmer einrichten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:249 msgid "I2P Peer Configuration" msgstr "Einstellungen zu I2P-Teilnehmern" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:323 msgid "Manual Peer Controls" msgstr "Manuelles Verwalten der Teilnehmer" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 msgid "Router Hash" msgstr "Router-Prüfsumme" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:329 msgid "Manually Ban / Unban a Peer" msgstr "Einen Teilnehmer manuell sperren/entsperren" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:331 msgid "Banning will prevent the participation of this peer in tunnels you create." msgstr "Eine Sperrung verhindert, dass der Teilnehmer in von Ihnen aufgebauten Tunneln partizipiert." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:341 msgid "Adjust Profile Bonuses" msgstr "Profilboni anpassen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:343 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 "Boni können positiv oder negativ sein. Sie beeinflussen die Aufnahme der Teilnehmer in die Klassen schneller Router und Router hoher Kapazität. Schnelle Teilnehmer werden für Klienten-Tunnel genutzt, Teilnehmer mit hoher Kapazität für einige Erkundungstunnel. Derzeitige Boni werden dargestellt auf der " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:345 msgid "profiles page" msgstr "Profile-Seite" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:345 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:251 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:273 msgid "Banned Peers" msgstr "Gesperrte Teilnehmer" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:366 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:384 msgid "Banned IPs" msgstr "Gesperrte IPs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:112 msgid "config reseeding" msgstr "Reseed-Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:262 msgid "I2P Reseeding Configuration" msgstr "I2P-Reseed-Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:300 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 msgid "Reseeding Configuration" msgstr "Reseed-Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:320 msgid "Reseeding is the bootstrapping process used to find other routers when you first install I2P, or when your router has too few router references remaining." msgstr "Der Reseed ist ein \"bootstrapping\"-Prozess, der das erstmalige Verbinden mit dem Netzwerk ermöglicht. Hierbei werden andere Netzwerkteilnehmer gefunden. Dies ist nötig nach der Installation oder wenn der Router aus anderen Gründen nur noch sehr wenige Kontakte gespeichert hat." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:322 msgid "If reseeding has failed, you should first check your network connection." msgstr "Schlägt der Reseed fehl, solltest du zuallererst deine Internetverbindung überprüfen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:326 msgid "Change these only if HTTP is blocked by a restrictive firewall, reseed has failed, and you have access to an HTTP proxy." msgstr "Ändere diese Einstellungen nur wenn HTTP von einer restriktiven Firewall blockiert wird, der Reseed fehlschlägt, und dir ein HTTP-Proxy zur Verfügung steht." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:328 #, java-format msgid "See {0} for instructions on reseeding manually." msgstr "Für einen manuellen Reseed, lies die Anleitung unter {0}!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:328 msgid "the FAQ" msgstr "die FAQ" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:330 msgid "Reseed URL Selection" msgstr "Auswahl der Reseed-URL" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:336 msgid "Try SSL first then non-SSL" msgstr "Probiere zunächst SSL, dann nicht-SSL" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:324 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:342 msgid "Use SSL only" msgstr "nur SSL verwenden" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:348 msgid "Use non-SSL only" msgstr "kein SSL verwenden" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:332 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 msgid "Reseed URLs" msgstr "Reseed-URLs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:336 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:354 msgid "Enable HTTP proxy (not used for SSL)" msgstr "HTTP-Proxy aktivieren (nicht für SSL)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:340 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:358 msgid "HTTP Proxy Host" msgstr "IP der HTTP-Brücke" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:344 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:362 msgid "HTTP Proxy Port" msgstr "Port der HTTP-Brücke" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:112 msgid "config service" msgstr "Dienste einrichten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:249 msgid "I2P Service Configuration" msgstr "I2P-Dienste-Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:285 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:303 msgid "Shutdown the router" msgstr "Router herunterfahren" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:287 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 msgid "Graceful shutdown lets the router satisfy the agreements it has already made before shutting down, but may take a few minutes." msgstr "Das kontrollierte Herunterfahren lässt dem Router Zeit, alle Zusagen, die er gemacht hat, noch zu erfüllen. Dafür benötigt er bis zu 11 Minuten." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:289 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:307 msgid "If you need to kill the router immediately, that option is available as well." msgstr "Es gibt auch eine Option zum sofortigen Beenden des Routers, falls Sie diese benötigen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:299 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 msgid "If you want the router to restart itself after shutting down, you can choose one of the following." msgstr "Falls Sie den Router nach dem Herunterfahren automatisch wieder starten lassen wollen, wählen Sie eine der folgenden Optionen aus." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 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 "Dies ist in manchen Situationen hilfreich - zum Beispiel wenn Sie einige Optionen geändert haben, die die Klienten-Anwendung nur beim Starten einliest (Routerkonsolen-Passwort oder das Interface auf dem es arbeitet)." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 msgid "A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately." msgstr "Ein kontrollierter Neustart benötigt bis zu 11 Minuten (Ihre Teilnehmer sind für Ihre Geduld dankbar); ein harter Neustart erfolgt sofort." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 msgid "After tearing down the router, it will wait 1 minute before starting back up again." msgstr "Nachdem der Router heruntergefahren ist, wartet er eine Minute, bevor er wieder startet." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:333 msgid "Systray integration" msgstr "Systemtray-Integration" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 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 "Auf Windows-Systemen gibt es eine kleine Anwendung, die es Ihnen ermöglicht, den Routerstatus im Systemtray zu sehen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 msgid "(later on, I2P client applications will be able to integrate their own functionality into the system tray as well)." msgstr "(Später werden I2P-Anwendungen auch ihre eigenen Funktionen in den Systemtray integrieren können)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339 msgid "If you are on windows, you can either enable or disable that icon here." msgstr "Falls Sie Windows nutzen, können Sie hier dieses Symbol aktiveren oder deaktivieren." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 msgid "Show systray icon" msgstr "Systemtray-Icon anzeigen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:343 msgid "Hide systray icon" msgstr "Systemtray-Icon deaktivieren" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:345 msgid "Run on startup" msgstr "Beim Hochfahren starten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:329 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 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 "Sie können mit folgenden Optionen festlegen, ob I2P beim Hochfahren gestartet wird oder nicht - I2P wird dementsprechend einen Service einrichten (oder ggf. entfernen)." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 msgid "If you prefer the command line, you can also run the " msgstr "Falls Sie die Eingabeaufforderung bevorzugen, können Sie auch folgendes ausführen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 msgid "If you are running I2P as service right now, removing it will shut down your router immediately." msgstr "Falls Sie I2P zurzeit als Service gestartet haben, wird ein Entfernen des Services den Router sofort beenden." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:361 msgid "You may want to consider shutting down gracefully, as above, then running uninstall_i2p_service_winnt.bat." msgstr "Sie sollten I2P, wie oben beschrieben, kontrolliert herunterfahren und dann uninstall_i2p_service_winnt.bat ausführen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:365 msgid "Debugging" msgstr "Debuggen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:367 msgid "View the job queue" msgstr "Die Auftragswarteschlange ansehen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:371 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 "Manchmal ist es zur Fehlerbeseitigung in I2P hilfreich, eine Liste der aktiven Prozesse zu erzeugen. Dafür wählen Sie bitte folgende Option aus und überprüfen die Liste der aktiven Prozesse in der wrapper.log Datei!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:377 msgid "Launch browser on router startup?" msgstr "Beim Starten einen Browser aufrufen?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:361 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:379 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 "Die Web-Konsole ist I2Ps wichtigstes Interface für Einstellungen. I2P kann für Sie beim Starten einen Browser öffnen und die Routerkonsole anzeigen, unter" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:107 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:113 msgid "config stats" msgstr "Statistiken einrichten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:250 msgid "I2P Stats Configuration" msgstr "I2P - Einstellungen zu den Statistiken" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:320 msgid "Configure I2P Stat Collection" msgstr "I2P-Statistiken anpassen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:322 msgid "Enable full stats?" msgstr "Vollständige Statistiken aktivieren?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:329 msgid "change requires restart to take effect" msgstr "Änderungen erfordern einen Routerneustart" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:331 msgid "Stat file" msgstr "Status Datei" -#: ../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:335 msgid "Filter" msgstr "Filter" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:319 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:328 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:348 msgid "toggle all" msgstr "Wähle alle" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:350 msgid "Log" msgstr "Berichte" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:332 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:352 msgid "Graph" msgstr "Graphen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:371 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:391 msgid "Advanced filter" msgstr "Erweiterte Filter" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:112 msgid "config tunnels" msgstr "Tunnel einrichten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:262 msgid "I2P Tunnel Configuration" msgstr "Einstellungen der I2P-Tunnel" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:328 msgid "The default settings work for most people." msgstr "Die Standardeinstellungen funktionieren für die meisten." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:332 msgid "There is a fundamental tradeoff between anonymity and performance." msgstr "Es gibt einen grundsätzlichen Kompromiss zwischen Anonymität und Performance." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:335 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 "Tunnel mit mehr als 3 Zwischenstationen (z.B. 2+0-2, 3+0-1 oder 3+0-2) oder eine große Anzahl an Tunneln + Ersatztunneln kann die Performance oder Zuverlässigkeit erheblich verringern." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:338 msgid "High CPU and/or high outbound bandwidth usage may result." msgstr "Eine hohe CPU-Last und/oder hohe ausgehende Bandbreite können die Folge sein." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:341 msgid "Change these settings with care, and adjust them if you have problems." msgstr "Ändern Sie diese Einstellungen nur, wenn Sie Probleme haben, und stets mit besonderer Vorsicht!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:333 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:351 msgid "Exploratory tunnel setting changes are stored in the router.config file." msgstr "Einstellungen der Erkundungstunnel sind in der Datei router.config gespeichert." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:336 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:354 msgid "Client tunnel changes are temporary and are not saved." msgstr "Änderungen an den Kliententunneln sind nur temporär und werden nicht gespeichert." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:338 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:356 msgid "To make permanent client tunnel changes see the" msgstr "Um permanente Änderungen an den Kliententunneln zu machen, gehen Sie auf die " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:340 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:358 msgid "i2ptunnel page" msgstr "I2PTunnel-Seite" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:112 msgid "config UI" msgstr "konfiguriere UI" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:262 msgid "I2P UI Configuration" msgstr "I2P UI-Konfiguration" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:314 msgid "Router Console Theme" msgstr "Thema der Routerkonsole" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:339 msgid "Theme selection disabled for Internet Explorer, sorry." msgstr "Themenauswahl für den Internet Explorer ist ausgeschaltet, bedauere." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:341 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 "Falls Sie nicht den Internet Explorer (IE) benutzen, gibt Ihr Browser wahrscheinlich vor, IE zu sein. Wenn Sie die Konsolenthemen nutzen möchten, ändern Sie bitte Ihren Browser (oder Proxy) so, dass er einen anderen User-Agenten sendet!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:345 msgid "Router Console Language" msgstr "Sprache der Routerkonsole" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:320 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:349 msgid "Please contribute to the router console translation project! Contact the developers on IRC #i2p to help." msgstr "" "Bitte tragen Sie zum Routerkonsolen-Übersetzungsprojekt bei! Kontaktieren \n" "Sie hierzu die Entwickler über den IRC-Kanal #i2p!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:324 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:353 msgid "Apply" msgstr "Anwenden" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:112 msgid "config update" msgstr "Aktualisierung der Konfiguration" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:249 msgid "I2P Update Configuration" msgstr "Einstellungen zu Aktualisierungen von I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:321 msgid "Check for I2P and news updates" msgstr "Überprüfe auf Aktualisierungen von I2P und auf Nachrichten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:323 msgid "News & I2P Updates" msgstr "Neuigkeiten & Aktualisierungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:327 msgid "Update In Progress" msgstr "Aktualisierung wird vorgenommen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:335 msgid "News URL" msgstr "Nachrichten-URL" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:339 msgid "Refresh frequency" msgstr "Aktualisierungshäufigkeit" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:345 msgid "Update policy" msgstr "Aktualisierungsregeln" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:349 msgid "Update through the eepProxy?" msgstr "Aktualisierung durch den eepProxy?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:353 msgid "eepProxy host" msgstr "eepProxy-Host" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:357 msgid "eepProxy port" msgstr "eepProxy-Port" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 msgid "Update URLs" msgstr "URLs aktualisieren" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:365 msgid "Trusted keys" msgstr "Vertraute Schlüssel" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:369 msgid "Update with unsigned development builds?" msgstr "Aktualisieren mit unsignierten Entwicklerversionen?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:355 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:373 msgid "Unsigned Build URL" msgstr "URL für nicht signierte Aktualisierungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:379 msgid "I2P updates are disabled because you do not have write permission for the install directory." msgstr "Aktualisierungen für I2P sind deaktiviert, da Sie (I2P) keine Schreibberechtigung im Installationsverzeichnis haben." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:367 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:385 msgid "Save" msgstr "Speichern" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:115 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:121 msgid "Internal Error" msgstr "interner Fehler" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:117 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123 msgid "Router Console" msgstr "I2P-Routerkonsole" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:121 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:127 msgid "Configuration" msgstr "Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:135 msgid "Sorry! There has been an internal error." msgstr "Entschuldigung! es gab einen internen Fehler." #. note to translators - both parameters are URLs -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:133 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:232 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:254 #, java-format msgid "Please report bugs on {0} or {1}." msgstr "Bitte melden Sie Fehler unter {0} oder {1}!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:137 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:258 msgid "You may use the username \"guest\" and password \"guest\" if you do not wish to register." msgstr "Sie können hierfür den Benutzernamen \"guest\" und das Passwort \"guest\" verwenden, wenn Sie sich nicht registrieren wollen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:145 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:260 msgid "Please include this information in bug reports" msgstr "Bitte fügen Sie folgende Informationen dem Bugreport bei!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:141 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:147 msgid "Error Details" msgstr "Fehlerdetails" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:149 #, java-format msgid "Error {0}" msgstr "Fehler {0}" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:163 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:169 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:250 msgid "I2P Version and Running Environment" msgstr "I2P-Version & Laufzeitumgebung" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:197 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:288 msgid "Note that system information, log timestamps, and log messages may provide clues to your location; please review everything you include in a bug report." msgstr "Beachten Sie, dass Systeminformationen, Zeitstempel der Berichte sowie die Fehlerberichte selbst Hinweise auf Ihren Standort enthalten können. Bitte überprüfen Sie Fehlerberichte, die Sie einreichen wollen, diesbezüglich!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:117 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:123 msgid "Page Not Found" msgstr "Seite nicht gefunden" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:242 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:264 msgid "Sorry! You appear to be requesting a non-existent Router Console page or resource." msgstr "" "Bedaure. Anscheinend haben Sie eine nicht vorhandene Routerkonsolenseite\n" "oder -Ressource angefordert." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:244 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:266 msgid "Error 404" msgstr "Fehler 404" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:249 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:271 msgid "not found" msgstr "nicht gefunden" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:112 msgid "graphs" msgstr "Diagramme" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:249 msgid "I2P Performance Graphs" msgstr "I2P-Leistungsdiagramme" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:111 msgid "home" msgstr "Heim" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:331 +msgid "Welcome to I2P" +msgstr "Willkommen im I2P!" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:111 msgid "job queue" msgstr "Auftragswarteschlange" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:248 msgid "I2P Router Job Queue" msgstr "I2P-Router-Auftragswarteschlange" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:111 msgid "logs" msgstr "Protokolle" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:248 msgid "I2P Router Logs" msgstr "I2P-Router-Protokolle" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:281 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:303 msgid "Critical Logs" msgstr "Berichte kritischer Ereignisse" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:285 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:307 msgid "Router Logs" msgstr "Router-Berichte" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:291 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:313 msgid "Service (Wrapper) Logs" msgstr "Berichte des Services (Wrapper)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:111 msgid "network database summary" msgstr "Netzwerkdatenbank Zusammenfassung" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:248 msgid "I2P Network Database Summary" msgstr "I2P-Netzwerkdatenbank Zusammenfassung" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:109 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:115 msgid "WebApp Not Found" msgstr "WebApplikation nicht gefunden" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:230 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:252 msgid "Web Application Not Running" msgstr "Web Applikation ist nicht aktiv" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:232 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:254 msgid "The requested web application is not running." msgstr "Die angeforderte Web-Anwendung ist nicht aktiv." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:256 msgid "Please visit the config clients page to start it." msgstr "Bitte besuchen Sie die Klienten-Konfigurations Seite, um diese zu starten." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:111 msgid "peer connections" msgstr "Verbindungen zu Teilnehmern" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:248 msgid "I2P Network Peers" msgstr "I2P-Netzwerkteilnehmer" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:111 msgid "peer profiles" msgstr "Teilnehmerprofile" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:248 msgid "I2P Network Peer Profiles" msgstr "Profile der I2P-Netzwerkteilnehmer" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:111 msgid "statistics" msgstr "Statistiken" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:265 msgid "I2P Router Statistics" msgstr "I2P-Router-Statistiken" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:255 #, java-format msgid "Disable {0} Refresh" msgstr "Alle-{0}-Auffrischen
    ausschalten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:111 msgid "tunnel summary" msgstr "Tunnel Zusammenfassung" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:248 msgid "I2P Tunnel Summary" msgstr "I2P-Tunnel Zusammenfassung" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:111 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:248 +msgid "Peer Profile" +msgstr "Teilnehmerprofil" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:275 +#, java-format +msgid "Profile for peer {0}" +msgstr "Teilnehmerprofil von {0}" + +#~ msgid "Download" +#~ msgstr "Herunterladen" #~ msgid "" #~ "Ensure that nothing blocks outbound HTTP, check logs and if nothing helps, read the trac.i2p2.i2p!" #~ msgid "avg value" #~ msgstr "Durchschnitt" -#~ msgid "events" -#~ msgstr "Ereignisse" #~ msgid "lifetime average" #~ msgstr "Mittelwert seit Start" #~ msgid "peak average" From 1271e03192fe1b293b76a220066678d9c5b98d26 Mon Sep 17 00:00:00 2001 From: magma Date: Fri, 25 Mar 2011 23:15:40 +0000 Subject: [PATCH 352/463] fix --- installer/resources/readme/readme_fr.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer/resources/readme/readme_fr.html b/installer/resources/readme/readme_fr.html index 794fbb204..397dfbcad 100644 --- a/installer/resources/readme/readme_fr.html +++ b/installer/resources/readme/readme_fr.html @@ -58,7 +58,7 @@ eepsite sera visible pour les autes. Des instructions plus détaillées pour cr

    Soyez patient - i2p peut s'avérer lent à démarrer la première fois car il recherche des pairs. Si, après 30 minutes, vos "Actifs: Connectés/Récents" compte moins de 10 pairs connectés, vous devez ouvrir dans votre pare-feu le port -choisi aléatoirement pendant l'installation pour avoir une meilleure connection. Si vous ne pouvez accéder à aucun eepsite (même +choisi aléatoirement pendant l'installation pour avoir une meilleure connection. Si vous ne pouvez accéder à aucun eepsite (même www.i2p2.i2p), assurez-vous que votre navigateur utilise bien le proxy 127.0.0.1 sur le port 4444. Vous pouvez aussi faire part de votre démarche sur le site web I2P, poster des message sur le From ba67bb9412c23e7ec4e6b599648da7a797b3fa7b Mon Sep 17 00:00:00 2001 From: magma Date: Sat, 26 Mar 2011 00:29:00 +0000 Subject: [PATCH 353/463] fix --- apps/i2psnark/locale/messages_fr.po | 162 ++++++++++++++-------------- 1 file changed, 83 insertions(+), 79 deletions(-) diff --git a/apps/i2psnark/locale/messages_fr.po b/apps/i2psnark/locale/messages_fr.po index 5c9869d7e..abac71a9f 100644 --- a/apps/i2psnark/locale/messages_fr.po +++ b/apps/i2psnark/locale/messages_fr.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-28 00:08+0000\n" -"PO-Revision-Date: 2011-03-24 16:06+0100\n" -"Last-Translator: \n" +"POT-Creation-Date: 2011-03-25 12:48+0000\n" +"PO-Revision-Date: 2011-03-26 01:27+0100\n" +"Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" "MIME-Version: 1.0\n" @@ -32,12 +32,12 @@ msgstr "La limite minimale agrégée des uploaders est : {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:321 #, java-format msgid "Up BW limit changed to {0}KBps" -msgstr "La limite d’upload modifiée : {0} Ko/s" +msgstr "La limite d’upload modifiée : {0} ko/s" #: ../java/src/org/klomp/snark/SnarkManager.java:323 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" -msgstr "La limite minimale d’upload est {0} Ko/s" +msgstr "La limite minimale d’upload est {0} ko/s" #: ../java/src/org/klomp/snark/SnarkManager.java:335 #, java-format @@ -46,7 +46,7 @@ msgstr "Délai de démarrage modifié à {0} minutes" #: ../java/src/org/klomp/snark/SnarkManager.java:386 msgid "I2CP and tunnel changes will take effect after stopping all torrents" -msgstr "Les modifications I2CP et des tunnels seront prise en compte après avoir arrêté tous les torrents" +msgstr "Les modifications d'I2CP et des tunnels seront prise en compte après avoir arrêté tous les torrents" #: ../java/src/org/klomp/snark/SnarkManager.java:393 msgid "Disconnecting old I2CP destination" @@ -84,15 +84,15 @@ msgstr "Le démarrage automatique est désactivé" #: ../java/src/org/klomp/snark/SnarkManager.java:437 msgid "Enabled open trackers - torrent restart required to take effect." -msgstr "Les open trackers sont activés - ceci a nécessité un redémarrage des torrents pour être pris en compte." +msgstr "Les open trackers sont activés - redémarrage des torrents requis pour prise en compte." #: ../java/src/org/klomp/snark/SnarkManager.java:439 msgid "Disabled open trackers - torrent restart required to take effect." -msgstr "Les open trackers sont désactivés - ceci a nécessité un redémarrage des torrents pour être pris en compte." +msgstr "Les open trackers sont désactivés - redémarrage des torrents requis pour prise en compte." #: ../java/src/org/klomp/snark/SnarkManager.java:447 msgid "Open Tracker list changed - torrent restart required to take effect." -msgstr "Liste des Open trackers modifiée - ceci nécessite un redémarrage des torrents pour être pris en compte" +msgstr "Liste des Open trackers modifiée - redémarrage des torrents requis pour prise en compte" #: ../java/src/org/klomp/snark/SnarkManager.java:454 #, java-format @@ -128,147 +128,147 @@ msgid "Cannot open \"{0}\"" msgstr "Impossible d’ouvrir: \"{0}\"" #. TODO - if the existing one is a magnet, delete it and add the metainfo instead? -#: ../java/src/org/klomp/snark/SnarkManager.java:586 -#: ../java/src/org/klomp/snark/SnarkManager.java:661 -#: ../java/src/org/klomp/snark/SnarkManager.java:716 +#: ../java/src/org/klomp/snark/SnarkManager.java:589 +#: ../java/src/org/klomp/snark/SnarkManager.java:665 +#: ../java/src/org/klomp/snark/SnarkManager.java:720 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "Un torrent avec cette empreinte est déjà actif: {0}" #. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:593 +#: ../java/src/org/klomp/snark/SnarkManager.java:596 #, java-format msgid "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers only." msgstr "Attention - Les trackers non-i2p dans \"{0}\" sont ignorés, seuls les trackers ouverts I2P seront utilisés!" #. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:598 +#: ../java/src/org/klomp/snark/SnarkManager.java:601 #, java-format msgid "Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is enabled before starting this torrent." msgstr "Attention - aucun tracker i2p dans \"{0}\". Vous devez activer les open trackers avant de démarrer le torrent!" -#: ../java/src/org/klomp/snark/SnarkManager.java:619 +#: ../java/src/org/klomp/snark/SnarkManager.java:622 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "Le torrent dans \"{0}\" est invalide" -#: ../java/src/org/klomp/snark/SnarkManager.java:624 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 +#: ../java/src/org/klomp/snark/SnarkManager.java:627 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1998 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "ERREUR - Mémoire insuffisante, impossible de créer le torrent de {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:635 +#: ../java/src/org/klomp/snark/SnarkManager.java:639 #, java-format msgid "Torrent added and started: \"{0}\"" msgstr "Torrent ajouté et démarré: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:637 +#: ../java/src/org/klomp/snark/SnarkManager.java:641 #, java-format msgid "Torrent added: \"{0}\"" msgstr "Torrent ajouté: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:672 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490 +#: ../java/src/org/klomp/snark/SnarkManager.java:676 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491 #, java-format msgid "Fetching {0}" msgstr "Envoi {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:675 +#: ../java/src/org/klomp/snark/SnarkManager.java:679 #, java-format msgid "We have no saved peers and no other torrents are running. Fetch of {0} will not succeed until you start another torrent." msgstr "Aucun pair sauvegardé et aucun autre torrent en cours. Le téléchargement de {0} ne commencera que lorsque vous démarrerez un autre torrent." -#: ../java/src/org/klomp/snark/SnarkManager.java:679 +#: ../java/src/org/klomp/snark/SnarkManager.java:683 #, java-format msgid "Adding {0}" msgstr "Ajout {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:726 -#: ../java/src/org/klomp/snark/SnarkManager.java:749 -#: ../java/src/org/klomp/snark/SnarkManager.java:1174 +#: ../java/src/org/klomp/snark/SnarkManager.java:730 +#: ../java/src/org/klomp/snark/SnarkManager.java:753 +#: ../java/src/org/klomp/snark/SnarkManager.java:1178 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "Impossible de copier le torrent vers {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:972 +#: ../java/src/org/klomp/snark/SnarkManager.java:976 #, java-format msgid "Too many files in \"{0}\" ({1}), deleting it!" msgstr "Trop de fichiers dans \"{0}\" ({1}), suppression! " -#: ../java/src/org/klomp/snark/SnarkManager.java:974 +#: ../java/src/org/klomp/snark/SnarkManager.java:978 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" msgstr "Le fichier torrent \"{0}\" ne peut pas se terminer par \".torrent\", suppression!" -#: ../java/src/org/klomp/snark/SnarkManager.java:976 +#: ../java/src/org/klomp/snark/SnarkManager.java:980 #, java-format msgid "No pieces in \"{0}\", deleting it!" msgstr "Pas de morceaux dans \"{0}\", suppression!" -#: ../java/src/org/klomp/snark/SnarkManager.java:978 +#: ../java/src/org/klomp/snark/SnarkManager.java:982 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!" msgstr "Trop de morceaux dans \"{0}\" , la limite est {1}, suppression!" -#: ../java/src/org/klomp/snark/SnarkManager.java:980 +#: ../java/src/org/klomp/snark/SnarkManager.java:984 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B), deleting it." msgstr "Les morceaux sont trop larges dans \"{0}\" ({1}B), suppresion." -#: ../java/src/org/klomp/snark/SnarkManager.java:981 +#: ../java/src/org/klomp/snark/SnarkManager.java:985 #, java-format msgid "Limit is {0}B" msgstr "La limite est de \"{0}\"Octets" -#: ../java/src/org/klomp/snark/SnarkManager.java:989 +#: ../java/src/org/klomp/snark/SnarkManager.java:993 #, java-format msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" msgstr "Les torrents dont la taille est supérieure à \"{0}\"Octets ne sont pas encore supportés, suppression \"{1}\"." -#: ../java/src/org/klomp/snark/SnarkManager.java:1005 +#: ../java/src/org/klomp/snark/SnarkManager.java:1009 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Erreur: Impossible de supprimer le torrent \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1026 -#: ../java/src/org/klomp/snark/SnarkManager.java:1044 +#: ../java/src/org/klomp/snark/SnarkManager.java:1030 +#: ../java/src/org/klomp/snark/SnarkManager.java:1048 #, java-format msgid "Torrent stopped: \"{0}\"" msgstr "Torrent arrêté:\"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1065 +#: ../java/src/org/klomp/snark/SnarkManager.java:1069 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "Torrent supprimé:\"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1073 +#: ../java/src/org/klomp/snark/SnarkManager.java:1077 #, java-format msgid "Adding torrents in {0}" msgstr "Ajout des torrents dans {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1122 +#: ../java/src/org/klomp/snark/SnarkManager.java:1126 #, java-format msgid "Download finished: {0}" msgstr "Téléchargement terminé:\"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1170 +#: ../java/src/org/klomp/snark/SnarkManager.java:1174 #, java-format msgid "Metainfo received for {0}" msgstr "Metainfo reçue pour {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1171 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525 +#: ../java/src/org/klomp/snark/SnarkManager.java:1175 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:526 #, java-format msgid "Starting up torrent {0}" msgstr "Démarrage du torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1225 +#: ../java/src/org/klomp/snark/SnarkManager.java:1229 msgid "Unable to connect to I2P!" msgstr "Impossible de se connecter à I2P!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1231 +#: ../java/src/org/klomp/snark/SnarkManager.java:1235 #, java-format msgid "Unable to add {0}" msgstr "Impossible d’ajouter {0}" @@ -316,7 +316,7 @@ msgstr "Afficher les pairs" msgid "Torrent" msgstr "Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310 msgid "Estimated time remaining" msgstr "temps restant estimé" @@ -361,79 +361,79 @@ msgstr "Vitesse" msgid "Up Rate" msgstr "Taux d'envoi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:366 msgid "Stop all torrents and the I2P tunnel" msgstr "Arrêter tous les torrents et le tunnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:367 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 msgid "Stop All" msgstr "Arrêter tout" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377 msgid "Start all torrents and the I2P tunnel" msgstr "Démarrer tous les torrents et le tunnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:378 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:379 msgid "Start All" msgstr "Démarrer tout" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:398 msgid "No torrents loaded." msgstr "Aucun torrent chargé." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403 msgid "Totals" msgstr "Totaux" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:405 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" msgstr[0] "1 torrent" msgstr[1] "{0} torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:408 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" msgstr[0] "1 pair connecté" msgstr[1] "{0} pairs connectés" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:497 #, java-format msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" msgstr "URL incorrecte - elle doit débuter par \"http://\", \"{0}\", ou \"{1}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:545 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:572 #, java-format msgid "Magnet deleted: {0}" msgstr "Magnet supprimé: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:553 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:578 #, java-format msgid "Torrent file deleted: {0}" msgstr "Fichier torrent effacé: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 #, java-format msgid "Data file deleted: {0}" msgstr "Fichier de données effacé: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:585 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:586 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 #, java-format msgid "Data file could not be deleted: {0}" msgstr "Le fichier de données ne peut être effacé: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:605 #, java-format msgid "Data dir deleted: {0}" msgstr "Répertoire des données effacé: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 msgid "Error creating torrent - you must select a tracker" msgstr "Erreur lors de la création du torrent - vous devez sélectionner un tracker" @@ -523,12 +523,12 @@ msgstr "Pas de pair" msgid "Stopped" msgstr "Arrêté" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837 -#, java-format -msgid "Details at {0} tracker" -msgstr "Détails au tracker {0}" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:886 +msgid "Torrent details" +msgstr "Détails du torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160 msgid "Info" msgstr "Info" @@ -540,12 +540,7 @@ msgstr "Voir les fichiers" msgid "Open file" msgstr "Ouvrir fichier" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:865 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1569 -msgid "Open" -msgstr "Ouvrir le fichier" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:909 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:957 msgid "Stop the torrent" msgstr "Arrêter le torrent" @@ -617,6 +612,11 @@ msgstr "aucun intérêt (nous n'avons aucun morceau utile au pair)" msgid "Choking (We are not allowing the peer to request pieces)" msgstr "bridage (nous ne permettons pas au pair de demander un morceau)" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159 +#, java-format +msgid "Details at {0} tracker" +msgstr "Détails au tracker {0}" + #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1188 msgid "Add Torrent" msgstr "Ajouter torrent" @@ -850,6 +850,10 @@ msgstr "complet" msgid "bytes remaining" msgstr "Octets restants" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806 +msgid "Open" +msgstr "Ouvrir le fichier" + #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1832 msgid "High" msgstr "Haut" @@ -871,22 +875,22 @@ msgstr "Sauvegarder les priorités" msgid "Torrent fetched from {0}" msgstr "Torrent envoyé de {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1989 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988 #, java-format msgid "Torrent already running: {0}" msgstr "Torrent déjà actif: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1991 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1990 #, java-format msgid "Torrent already in the queue: {0}" msgstr "Torrent déjà dans la queue: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1996 #, java-format msgid "Torrent at {0} was not valid" msgstr "Le torrent {0} n'est pas valide" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2004 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2003 #, java-format msgid "Torrent was not retrieved from {0}" msgstr "Le torrent n’a pas été reçu par {0}" From bcf9d59c822db4da1e82a1cd9978036f0cb80356 Mon Sep 17 00:00:00 2001 From: magma Date: Sat, 26 Mar 2011 01:49:09 +0000 Subject: [PATCH 354/463] fix --- apps/routerconsole/locale/messages_fr.po | 1673 +++++++++++++--------- 1 file changed, 958 insertions(+), 715 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 1ace10599..ce7be1c36 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-11-19 18:16+0000\n" -"PO-Revision-Date: 2011-03-25 20:54+0100\n" +"POT-Creation-Date: 2011-03-25 21:19+0000\n" +"PO-Revision-Date: 2011-03-26 02:46+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -65,7 +65,7 @@ msgstr[0] "1 heure" msgstr[1] "{0} heures" #: ../../../core/java/src/net/i2p/data/DataHelper.java:1158 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:314 msgid "n/a" msgstr "n/d" @@ -146,42 +146,40 @@ msgstr "Tunnels acceptés" msgid "Rejecting tunnels" msgstr "Rejet de tunnels" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:105 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:125 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 msgid "Reseeding" msgstr "Réamorçage en cours" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:146 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:141 +#, java-format +msgid "Reseed fetched only 1 router." +msgid_plural "Reseed fetched only {0} routers." +msgstr[0] "Le réamorçage n'a trouvé qu'un seul routeur." +msgstr[1] "Le réamorçage n'a trouvé que {0} routeurs." + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:148 +msgid "Reseed failed." +msgstr "Échec de réamorçage" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:149 +#, java-format +msgid "See {0} for help." +msgstr "Voir {0} pour l'aide." + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:150 +msgid "reseed configuration page" +msgstr "page de configuration du réamorçage" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:293 msgid "Reseeding: fetching seed URL." msgstr "Réamorçage: collecte des URL sources." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:152 -msgid "Last reseed failed fully (failed reading seed URL)." -msgstr "Échec complet du dernier réamorçage (échec de lecture de l\\''URL source)" - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:178 -msgid "Last reseed failed fully (no routerInfo URLs at seed URL)." -msgstr "Échec complet du dernier réamorçage (pas de routerInfo à l\\''URL source)" - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:191 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:335 #, java-format msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." msgstr "Réamorçage: collecte routerInfo depuis l\\''URL source ({0} réussie, {1} erreurs)." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281 -#, java-format -msgid "Last reseed failed partly ({0}% of {1})." -msgstr "Échec partiel du dernier réamorçage ({0}% de {1})." - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:217 -#, java-format -msgid "Last reseed failed ({0}% of {1})." -msgstr "Échec du dernier réamorçage ({0}% de {1})." - -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:227 -msgid "Last reseed failed fully (exception caught)." -msgstr "Échec complet du dernier réamorçage (exception interceptée)." - #: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:512 msgid "NetDb entry" msgstr "Entrée netDb" @@ -204,6 +202,11 @@ msgstr "Adresses de transport du routeur" msgid "{0} is used for outbound connections only" msgstr "{0} est utilisé seulement pour les connexions sortantes" +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129 +msgid "Help" +msgstr "Aide" + #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 msgid "Your transport connection limits are automatically set based on your configured bandwidth." msgstr "Vos limites de connexion de transport sont réglées automatiquement selon votre configuration de bande passante." @@ -213,18 +216,18 @@ msgid "To override these limits, add the settings i2np.ntcp.maxConnections=nnn a msgstr "Pour modifier ces limites, ajoutez les réglages i2np.ntcp.maxConnections=nnn et i2np.udp.maxConnections=nnn dans la configuration avancée." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 msgid "Definitions" msgstr "Définitions" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:735 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890 #: ../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/ProfileOrganizerRenderer.java:189 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:238 msgid "Peer" msgstr "Pair" @@ -234,16 +237,16 @@ msgid "The remote peer, identified by router hash" msgstr "Le pair distant, identifié par son hachage routeur" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:736 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 msgid "Dir" msgstr "Dossier" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:522 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 msgid "Inbound connection" msgstr "Connexion entrante" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 msgid "Outbound connection" msgstr "Connexion sortante" @@ -260,13 +263,13 @@ msgid "How long since a packet has been received / sent" msgstr "Combien de temps écoulé depuis la dernière réception / émission d\\''un paquet " #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895 msgid "Idle" msgstr "En attente" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1900 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "In/Out" @@ -281,13 +284,13 @@ msgid "How long ago this connection was established" msgstr "Depuis combien de temps cette connexion est établie" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905 msgid "Up" msgstr "En marche" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:742 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1907 msgid "Skew" msgstr "décallée" @@ -296,7 +299,7 @@ msgstr "décallée" msgid "The difference between the peer's clock and your own" msgstr "L\\''écart de temps entre l\\''horloge du pair et la votre" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 msgid "The congestion window, which is how many bytes can be sent without an acknowledgement" msgstr "La fenêtre de congestion, en nombre d\\''octets transmissibles sans acquitement" @@ -333,12 +336,12 @@ msgstr "La dérive standard d\\''aller-retour en ms" msgid "The retransmit timeout in milliseconds" msgstr "Le délai de retransmission en ms" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 msgid "Current maximum send packet size / estimated maximum receive packet size (bytes)" msgstr "Taille actuelle maximum de paquet envoyé / taille maximum estimée de paquet reçu (octets) " #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:743 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 msgid "TX" msgstr "TX" @@ -348,7 +351,7 @@ msgid "The total number of packets sent to the peer" msgstr "Le nombre de paquets envoyés au pair" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:742 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:744 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926 msgid "RX" msgstr "RX" @@ -381,46 +384,46 @@ msgstr "Le nombre de paquets en double reçus du pair" msgid "Excessive clock skew: {0}" msgstr "Décalage excessif de l\\''horloge: {0}" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:730 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732 msgid "NTCP connections" msgstr "connexions NTCP" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:731 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:733 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1886 msgid "Limit" msgstr "Limite" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:734 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 msgid "Timeout" msgstr "Dépassement d\\''attente" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:743 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:745 msgid "Out Queue" msgstr "File de sortie" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:724 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:746 msgid "Backlogged?" msgstr "Rétro enregistré?" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:758 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1949 -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87 msgid "Inbound" msgstr "Entrant" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:762 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1951 -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87 msgid "Outbound" msgstr "Sortant" #. buf.append("

    \n"); -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:787 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:809 msgid "peers" msgstr "Pairs" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1883 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1885 msgid "UDP connections" msgstr "connexions UDP" @@ -536,20 +539,20 @@ msgstr "Perte de demandes de tunnels: Trop lent" msgid "Dropping tunnel requests: Overloaded" msgstr "Perte de demandes de tunnnels: Surchargé" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:460 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:470 msgid "Rejecting tunnels: Request overload" msgstr "Rejet de tunnels: Surcharge de requêtes " -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:485 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:495 msgid "Rejecting tunnels: Connection limit" msgstr "Rejet de tunnels: Limite de connexions" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:685 -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:706 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:695 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:716 msgid "Dropping tunnel requests: High load" msgstr "Perte de tunnels: Forte charge" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:698 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:708 msgid "Dropping tunnel requests: Queue time" msgstr "Perte de tunnels: Temps en file d\\''attente" @@ -1480,12 +1483,12 @@ msgstr "Zambie" msgid "Zimbabwe" msgstr "Zimbabwe" -#: ../java/src/net/i2p/router/web/CSSHelper.java:58 +#: ../java/src/net/i2p/router/web/CSSHelper.java:60 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:35 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:37 #: ../java/strings/Strings.java:29 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:119 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:233 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:125 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:257 msgid "I2P Router Console" msgstr "Console du routeur I2P" @@ -1504,27 +1507,27 @@ msgid "Error saving the configuration (applied but not saved) - please see the e msgstr "Erreur pendant l\\''enregistrement de la configuration (appliquée mais non sauvegardée): contrôlez les historiques" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:355 msgid "Save Client Configuration" msgstr "Sauvegarder Configuration Client " #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:39 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:405 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427 msgid "Save Interface Configuration" msgstr "Sauvegarder la configuration de l\\''interface" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:441 msgid "Save WebApp Configuration" msgstr "Enregistrer la configuration WebApp" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:42 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:356 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:47 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:453 msgid "Save Plugin Configuration" msgstr "Enregistrer la configuration du greffon" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:51 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:461 msgid "Install Plugin" msgstr "Installation du greffon" @@ -1577,7 +1580,7 @@ msgstr "Index client incorrect." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:392 #: ../java/src/net/i2p/router/web/SummaryHelper.java:384 msgid "Client" msgstr "Client" @@ -1595,7 +1598,7 @@ msgstr "effacé" msgid "WebApp configuration saved." msgstr "Sauvegardé configuration WebApp" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:251 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:256 msgid "Plugin configuration saved." msgstr "Configuration du greffon enregistrée" @@ -1634,7 +1637,7 @@ msgstr "Greffon ou téléchargement de mise à jour déjà en cours d\\''exécut msgid "Downloading plugin from {0}" msgstr "Téléchargement greffon depuis {0}" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:324 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:329 #, java-format msgid "Checking plugin {0} for updates" msgstr "Cherche de mise à jour du greffon {0}" @@ -1659,7 +1662,7 @@ msgid "Edit" msgstr "Modifier" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:94 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351 msgid "Add Client" msgstr "Ajouter client" @@ -1690,7 +1693,7 @@ msgid "Plugin" msgstr "Greffon" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:161 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:273 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185 msgid "Version" msgstr "Version" @@ -1715,7 +1718,7 @@ msgstr "Licence" msgid "Website" msgstr "Site web" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:146 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:212 msgid "Update link" msgstr "Mise à jour du lien" @@ -1725,14 +1728,12 @@ msgstr "Arrêt" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:262 #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:78 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331 msgid "Check for updates" msgstr "Chercher des mises à jour" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:263 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:242 msgid "Update" msgstr "Mettre à jour" @@ -1741,17 +1742,17 @@ msgstr "Mettre à jour" msgid "Are you sure you want to delete {0}?" msgstr "Voulez-vous vraiment supprimer {0}?" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:204 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:270 msgid "Delete" msgstr "Effacer" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:18 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:343 msgid "Add key" msgstr "Ajouter une clé" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:19 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:341 msgid "Delete key" msgstr "Supprimer une clé" @@ -1848,7 +1849,7 @@ msgstr "Service" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:101 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381 #: ../java/strings/Strings.java:72 msgid "Tunnels" msgstr "Tunnels" @@ -1862,7 +1863,7 @@ msgid "Clients" msgstr "Clients" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:293 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:315 msgid "Keyring" msgstr "Porte-clés" @@ -1872,13 +1873,13 @@ msgstr "Enregistrements" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:107 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:255 #: ../java/strings/Strings.java:67 msgid "Peers" msgstr "Pairs" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:387 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:389 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:143 msgid "Stats" msgstr "Statistiques" @@ -1891,13 +1892,13 @@ msgstr "Avancé" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:264 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:29 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:34 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:360 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:516 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:307 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:341 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:352 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:377 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:344 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:378 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:534 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:370 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:362 msgid "Save changes" msgstr "Sauvegarder" @@ -2001,7 +2002,7 @@ msgid "or {0} bytes per month maximum" msgstr "= {0} o/mois maximum" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:20 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:333 msgid "Ban peer until restart" msgstr "Interdire pair jusqu\\''au redémarrage" @@ -2021,7 +2022,7 @@ msgid "Invalid peer" msgstr "Pair pas valable" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:28 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:335 msgid "Unban peer" msgstr "Banissement du pair levé" @@ -2034,9 +2035,9 @@ msgid "is not currently banned" msgstr "n\\''est pas actuellement interdit" #: ../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 "Ajuster les boni du profil" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:361 +msgid "Adjust peer bonuses" +msgstr "Ajuster les boni des pairs" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:47 msgid "Bad speed value" @@ -2047,7 +2048,7 @@ msgid "Bad capacity value" msgstr "Mauvaise valeur de capacité" #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:17 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:368 msgid "Save changes and reseed now" msgstr "Sauvegarder et réamorcer" @@ -2067,7 +2068,7 @@ msgstr "Configuration sauvegardée" #. 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:293 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:311 msgid "Shutdown immediately" msgstr "Arrêter immédiatement" @@ -2114,7 +2115,7 @@ msgid "Restart in {0}" msgstr "Redémarrage dans {0}" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:53 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:291 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:309 msgid "Shutdown gracefully" msgstr "Arrêt respectueux" @@ -2127,7 +2128,7 @@ msgid "Shutdown immediately! boom bye bye bad bwoy" msgstr "Arrêt immédiat! (À la sauvage)" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:61 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:313 msgid "Cancel graceful shutdown" msgstr "Annuler l\\''arrêt respectueux" @@ -2136,7 +2137,7 @@ msgid "Graceful shutdown cancelled" msgstr "Arrêt respectueux annulé" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:64 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 msgid "Graceful restart" msgstr "Redémarrage respectueux" @@ -2145,7 +2146,7 @@ msgid "Graceful restart requested" msgstr "Redémarrage respectueux demandé" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:68 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 msgid "Hard restart" msgstr "Redémarrage immédiat" @@ -2170,45 +2171,22 @@ msgid "Rekeying after graceful shutdown" msgstr "Régénération clé après arrêt respectueux" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:80 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 msgid "Run I2P on startup" msgstr "Lancer I2P au démarrage" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:82 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:355 msgid "Don't run I2P on startup" msgstr "Ne pas lancer I2P au démarrage" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:84 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:355 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:373 msgid "Dump threads" msgstr "Dump fils d\\''exécution" #: ../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 "Afficher l\\''icône de zone de notification" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96 -msgid "System tray icon enabled." -msgstr "Icône de zone de notification système activée." - -#: ../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 "Fonctionnalité \"Icône de zone de notification système\" non disponible sur cette plateforme. Désolé!" - -#: ../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 "Avertissement: impossible de contacter le gestionnaire de zone de notification." - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:108 -msgid "System tray icon disabled." -msgstr "Icône de zone de notification système désactivée." - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:115 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:362 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:381 msgid "View console on startup" msgstr "Montrer la console au démarrage" @@ -2217,7 +2195,7 @@ msgid "Console is to be shown on startup" msgstr "Afficher la console au démarrage" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:94 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:383 msgid "Do not view console on startup" msgstr "Ne pas montrer la console au démarrage" @@ -2249,7 +2227,7 @@ msgstr "Filtre de statistiques et emplacement mis à jour à " msgid "Failed to update the stat filter and location" msgstr "Échec de mise à jour du filtre de statistiques et emplacement" -#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:121 +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:114 msgid "Graph list updated, may take up to 60s to be reflected here and on the Graphs Page" msgstr "Liste des graphiques mise à jour. Peut nécessiter jusqu\\''à 60s pour être répercutée ici et sur la page des graphiques" @@ -2283,58 +2261,58 @@ msgid_plural "{0} tunnels" msgstr[0] "1 tunnel" msgstr[1] "{0} tunnels" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:26 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:35 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:41 msgid "Exploratory tunnels" msgstr "Tunnels exploratoires" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:46 -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:61 -msgid "Client tunnels for" -msgstr "Tunnels clients pour" +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:51 +#, java-format +msgid "Client tunnels for {0}" +msgstr "Tunnels clients pour {0}" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:69 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74 msgid "ANONYMITY WARNING - Settings include 0-hop tunnels." msgstr "AVERTISSEMENT d\\''ANONYMAT: les réglages incluent des tunnels à 0 saut!" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:79 msgid "ANONYMITY WARNING - Settings include 1-hop tunnels." msgstr "AVERTISSEMENT d\\''ANONYMAT: les réglages incluent des tunnels à 1 saut!" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:77 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 msgid "PERFORMANCE WARNING - Settings include very long tunnels." msgstr "AVERTISSEMENT de PERFORMANES: les réglages incluent des tunnels très longs!" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:80 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:85 msgid "PERFORMANCE WARNING - Settings include high tunnel quantities." msgstr "AVERTISSEMENT de PERFORMANES: les réglages incluent de grandes quantités de tunnels!" #. buf.append("\n"); #. tunnel depth -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:92 msgid "Length" msgstr "Longueur" #. tunnel depth variance -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:104 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:109 msgid "Randomization" msgstr "Randomisation" #. tunnel quantity -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:128 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:133 msgid "Quantity" msgstr "Quantité" #. tunnel backup quantity -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:145 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:150 msgid "Backup quantity" msgstr "Quantité de secours" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:167 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:172 msgid "Inbound options" msgstr "Options Entrants" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:180 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:185 msgid "Outbound options" msgstr "Options Sortants" @@ -2451,7 +2429,7 @@ msgstr "Télécharger et vérifier seulement" msgid "Download, verify, and restart" msgstr "Télécharger, vérifier et redémarrer" -#: ../java/src/net/i2p/router/web/FormHandler.java:163 +#: ../java/src/net/i2p/router/web/FormHandler.java:176 msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit." msgstr "Soumission de formulaire incorrecte: vous avez peut-être utilisé le bouton \\''Page arrière\\'' ou \\''Rechargement\\'' de votre navigateur. Merci de renvoyer." @@ -2482,8 +2460,8 @@ msgid "Plot averages" msgstr "Tracer les moyennes" #: ../java/src/net/i2p/router/web/GraphHelper.java:152 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:333 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:351 msgid "or" msgstr "ou" @@ -2512,22 +2490,14 @@ msgstr "pixels" msgid "Refresh delay" msgstr "Delai d\\''actualisation" -#: ../java/src/net/i2p/router/web/GraphHelper.java:138 -msgid "hour" -msgstr "heure" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:138 -msgid "minute" -msgstr "mn" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:138 -msgid "minutes" -msgstr "minutes" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:139 +#: ../java/src/net/i2p/router/web/GraphHelper.java:171 msgid "Redraw" msgstr "Rafraîchir" +#: ../java/src/net/i2p/router/web/GraphHelper.java:203 +msgid "Graph settings saved" +msgstr "Réglages des graphiques enregistrés" + #: ../java/src/net/i2p/router/web/LogsHelper.java:13 #: ../java/src/net/i2p/router/web/LogsHelper.java:37 msgid "File location" @@ -2627,96 +2597,96 @@ msgstr "Afficher tous les routeurs" msgid "Show all routers with full stats" msgstr "Afficher toutes les statistiques de tous les routeurs" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:265 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:266 msgid "Network Database Router Statistics" msgstr "Statistiques NetDb du routeur " -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:273 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:287 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:305 msgid "Count" msgstr "Comptage" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:287 msgid "Transports" msgstr "Transports" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:305 msgid "Country" msgstr "Pays" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:342 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:344 msgid "Our info" msgstr "Notre info" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:344 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:346 msgid "Peer info for" msgstr "Mise à jour en cours" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:348 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:350 msgid "Full entry" msgstr "Entrée complète" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:356 #: ../java/src/net/i2p/router/web/SummaryHelper.java:115 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 msgid "Hidden" msgstr "Caché" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:356 msgid "Updated" msgstr "Mise à jour fini" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:355 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:358 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:357 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:360 #, java-format msgid "{0} ago" msgstr "il y a {0}" #. shouldnt happen -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:357 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:361 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:359 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:363 msgid "Published" msgstr "Publié il y a" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:363 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:365 msgid "Address(es)" msgstr "Adresse(s)" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:376 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:378 msgid "cost" msgstr "coût" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 msgid "Hidden or starting up" msgstr "Masqué ou en cours de démarrage" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 msgid "SSU" msgstr "SSU" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 msgid "SSU with introducers" msgstr "SSU avec introducers" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:404 msgid "NTCP" msgstr "NTCP" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:404 msgid "NTCP and SSU" msgstr "NTCP et SSU" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:404 msgid "NTCP and SSU with introducers" msgstr "NTCP et SSU avec introducers" -#: ../java/src/net/i2p/router/web/NewsFetcher.java:93 +#: ../java/src/net/i2p/router/web/NewsFetcher.java:92 #, java-format msgid "News last updated {0} ago." msgstr "Actualités mises à jour il y a {0}" -#: ../java/src/net/i2p/router/web/NewsFetcher.java:99 +#: ../java/src/net/i2p/router/web/NewsFetcher.java:98 #, java-format msgid "News last checked {0} ago." msgstr "Actualités vérifiés il y a {0}" @@ -2751,7 +2721,7 @@ msgid "Downloading plugin" msgstr "Téléchargement greffon en cours" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:146 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:244 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:245 #, java-format msgid "{0}B transferred" msgstr "{0}o transférés" @@ -2767,7 +2737,7 @@ msgid "Cannot create plugin directory {0}" msgstr "Impossible de créer le répertoire du greffon {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:167 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:298 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:299 #, java-format msgid "from {0}" msgstr "depuis {0}" @@ -2815,7 +2785,7 @@ msgstr "Ce greffon nécessite I2P version {0} ou plus récente" msgid "This plugin requires Java version {0} or higher" msgstr "Ce greffon nécessite Java version {0} ou plus récente" -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:281 +#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 msgid "Downloaded plugin is for new installs only, but the plugin is already installed" msgstr "La version du greffon téléchargée est faite pour les nouvelles installations, mais le greffon est déjà installé " @@ -2887,37 +2857,43 @@ msgstr "Profils des pairs" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:73 #, java-format -msgid "Showing {0} recent profiles." -msgstr "Montrant {0} profiles récents" +msgid "Showing 1 recent profile." +msgid_plural "Showing {0} recent profiles." +msgstr[0] "Affiche {0} profil récent" +msgstr[1] "Affiche {0} profils récents" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:75 #, java-format -msgid "Hiding {0} older profiles." -msgstr "Cachant {0} profiles anciens" +msgid "Hiding 1 older profile." +msgid_plural "Hiding {0} older profiles." +msgstr[0] "Masque {0} profil ancien" +msgstr[1] "Masque {0} profils anciens" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:77 #, java-format -msgid "Hiding {0} standard profiles." -msgstr "Masquage de {0} profils standards." +msgid "Hiding 1 standard profile." +msgid_plural "Hiding {0} standard profiles." +msgstr[0] "Masque {0} profil standard." +msgstr[1] "Masque {0} profils standards." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:82 msgid "Groups (Caps)" msgstr "Groupes" #: ../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:335 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:252 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:353 msgid "Speed" msgstr "Vitesse" #: ../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:339 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:254 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:357 msgid "Capacity" msgstr "Capacité" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:85 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:255 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:256 msgid "Integration" msgstr "Intégration" @@ -2943,7 +2919,7 @@ msgid "Failing" msgstr "Défaillant" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:287 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:282 msgid "Integrated" msgstr "Intégré" @@ -2956,165 +2932,170 @@ msgstr "Inaccessible" msgid "Test Fails" msgstr "Test échec" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:175 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:177 msgid "profile" msgstr "Profil" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:184 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:186 msgid "Floodfill and Integrated Peers" msgstr "Floodfill et pairs intégrés" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:188 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190 msgid "Caps" msgstr "Majuscules" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:189 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:191 msgid "Integ. Value" msgstr "Valeur entière" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:192 msgid "Last Heard About" msgstr "Signalé pour la dernière fois" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:191 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:193 msgid "Last Heard From" msgstr "Dernière signalisation par" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:192 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:194 msgid "Last Good Send" msgstr "Dernière envoi correct" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:193 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195 msgid "Last Bad Send" msgstr "Dernier mauvais envoi" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:194 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196 msgid "10m Resp. Time" msgstr "Temps de réponse (10mn)" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:197 msgid "1h Resp. Time" msgstr "Temps de réponse (1h)" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:198 msgid "1d Resp. Time" msgstr "Temps de réponse (1j)" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:197 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:199 msgid "Last Good Lookup" msgstr "Dernière bonne recherche" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:198 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:200 msgid "Last Bad Lookup" msgstr "Dernière mauvaise recherche" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:199 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201 msgid "Last Good Store" msgstr "Dernier bon stockage" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:200 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 msgid "Last Bad Store" msgstr "Dernier mauvais stockage" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:203 msgid "1h Fail Rate" msgstr "Taux d\\''échec (1h)" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:204 msgid "1d Fail Rate" msgstr "Taux d\\''échec (1j)" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:250 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:251 msgid "Thresholds" msgstr "Seuils" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:252 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:253 msgid "fast peers" msgstr "Pairs rapides" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:254 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:255 msgid "high capacity peers" msgstr "Pairs à haute capacités" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:256 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 msgid " well integrated peers" msgstr "Pairs bien intégrés" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 msgid "as determined by the profile organizer" msgstr "tel que défini par l\\''organisateur du profil" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 msgid "groups" msgstr "groupes" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 msgid "capabilities in the netDb, not used to determine profiles" msgstr "possibilités de la NetDb, non utilisée pour déterminer les profils" #. capabilities -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 #: ../java/strings/Strings.java:81 msgid "caps" msgstr "capitales" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 msgid "peak throughput (bytes per second) over a 1 minute period that the peer has sustained in a single tunnel" msgstr "débit crête (o/s) sur 1mn maintenu par le pair sur un seul tunnel" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 msgid "speed" msgstr "vitesse" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 msgid "capacity" msgstr "capacité" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 msgid "how many tunnels can we ask them to join in an hour?" msgstr "combien de tunnels pouvons nous leur demander de joindre en une heure?" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 msgid "how many new peers have they told us about lately?" msgstr "de combien de nouveaux pairs nous ont-ils parlé récemment?" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 msgid "integration" msgstr "intégration" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264 msgid "is the peer banned, or unreachable, or failing tunnel tests?" msgstr "Le pair est-il banni, injoignable ou échoue-t-il à tester le tunnel?" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264 msgid "status" msgstr "statut" -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:57 +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:47 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:410 +msgid "none" +msgstr "aucun" + +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:62 #, java-format msgid "Temporary ban expiring in {0}" msgstr "Le bannissement temporaire expire dans {0}" -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:59 +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:64 #, java-format msgid "Banned until restart or in {0}" msgstr "Banni jusqu\\''au redémarrage ou dans {0}" -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:71 +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:76 msgid "unban now" msgstr "lever le bannissement" #. 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 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:223 msgid "Bandwidth usage" msgstr "Utilisation de la bande passante" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:181 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:230 msgid "Outbound bytes/sec" msgstr "o/s sortants" #. def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3); -#: ../java/src/net/i2p/router/web/StatSummarizer.java:183 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:232 msgid "Inbound bytes/sec" msgstr "o/s entrants" @@ -3125,7 +3106,7 @@ msgstr "o/s entrants" msgid "bytes/sec" msgstr "o/s" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:186 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:235 msgid "out average" msgstr "hors moyenne" @@ -3135,7 +3116,7 @@ msgstr "hors moyenne" msgid "max" msgstr "max" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:188 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:237 msgid "in average" msgstr "dans la moyenne" @@ -3155,20 +3136,20 @@ msgstr "Les données collectées sont quantifiées sur 1mn, et ne doivent être msgid "These statistics are primarily used for development and debugging." msgstr "Ces statistiques sont initialement destinées au développement et au débogage." -#: ../java/src/net/i2p/router/web/StatsGenerator.java:105 -#: ../java/src/net/i2p/router/web/StatsGenerator.java:156 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:106 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:157 msgid "No lifetime events" msgstr "pas d\\''événement de durée de vie" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:116 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:117 msgid "frequency" msgstr "fréquence" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:120 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:121 msgid "Rolling average events per period" msgstr "Moyenne glissante d\\''évènements par période" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:124 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:125 msgid "Highest events per period" msgstr "maximum d\\''évènements par période" @@ -3179,34 +3160,48 @@ msgstr "maximum d\\''évènements par période" #. } #. buf.append(" avg interval between updates: (").append(num(curFreq.getAverageInterval())).append("ms, min "); #. buf.append(num(curFreq.getMinAverageInterval())).append("ms)"); -#: ../java/src/net/i2p/router/web/StatsGenerator.java:135 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:136 msgid "Lifetime average events per period" msgstr "évènements de durée de vie moyenne par période" #. Display the strict average -#: ../java/src/net/i2p/router/web/StatsGenerator.java:140 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:141 msgid "Lifetime average frequency" msgstr "Fréquence moyenne de durée de vie" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:168 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:144 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:234 +#, java-format +msgid "1 event" +msgid_plural "{0} events" +msgstr[0] "1 évènement" +msgstr[1] "{0} évènements" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:169 msgid "rate" msgstr "taux" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:170 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:171 msgid "Average" msgstr "moyenne" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:173 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:174 msgid "Highest average" msgstr "Plus haute moyenne" -#. breaking the sentence like before makes translation in my language impossible. #: ../java/src/net/i2p/router/web/StatsGenerator.java:201 #, java-format -msgid "in this period which ended {0} ago." -msgstr "dans cette période qui s\\''est terminée il y a {0}." +msgid "There was 1 event in this period." +msgid_plural "There were {0} events in this period." +msgstr[0] "Il y a eu 1 évènement sur cette période." +msgstr[1] "Il y a eu {0} évènements sur cette période." -#: ../java/src/net/i2p/router/web/StatsGenerator.java:204 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:203 +#, java-format +msgid "The period ended {0} ago." +msgstr "La période s\\''est terminée il y a {0}." + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:205 msgid "No events" msgstr "pas d\\''événement" @@ -3218,7 +3213,7 @@ msgstr "nombre moyen d\\''évènements" msgid "Events in peak period" msgstr "Évènements dans la période crête" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:220 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:221 msgid "Graph Data" msgstr "Graphique de données" @@ -3292,12 +3287,12 @@ msgid "I2P Internals" msgstr "Configuration" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:99 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:384 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:379 msgid "View existing tunnels and tunnel build status" msgstr "Montrer les tunnels existants et le statut de création des tunnels" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:105 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253 msgid "Show all current peer connections" msgstr "Montrer toutes les connexions actuelles aux pairs" @@ -3383,63 +3378,69 @@ msgstr "Lancé depuis" msgid "Help with configuring your firewall and router for optimal I2P performance" msgstr "Aide à la configuration du pare-feu et du routeur afin d\\''optimiser la performance d\\''I2P" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 -msgid "Download" -msgstr "Télécharger" +#. Note to translators: parameter is a version, e.g. "0.8.4" +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:232 +#, java-format +msgid "Download {0} Update" +msgstr "Télécharger la version {0}" +#. Note to translators: parameter is a date and time, e.g. "02-Mar 20:34 UTC" +#.
    is optional, to help the browser make the lines even in the button +#. If the translation is shorter than the English, you should probably not include
    #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:240 -msgid "Download Unsigned" -msgstr "Télécharger pas signé" +#, java-format +msgid "Download Unsigned
    Update {0}" +msgstr "Télécharger la version
    non signée {0}" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261 msgid "Active" msgstr "Actif" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270 msgid "Fast" msgstr "Rapide" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:281 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:276 msgid "High capacity" msgstr "Haute capacité" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:293 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288 msgid "Known" msgstr "Connu" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:308 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:303 msgid "Help with firewall configuration" msgstr "Aide à la configuration du pare-feu" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:310 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:305 msgid "Check NAT/firewall" msgstr "Vérifier NAT/pare-feu" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:330 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:325 msgid "Reseed" msgstr "Réamorçage" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:347 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:342 msgid "Configure router bandwidth allocation" msgstr "Configurer la bande passante du routeur" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:349 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:344 msgid "Bandwidth in/out" msgstr "Bande passante entrante/sortante" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:369 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:364 msgid "Total" msgstr "Totale" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:371 msgid "Used" msgstr "Utilisée" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:391 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 msgid "Exploratory" msgstr "Exploratoire" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:398 msgid "Participating" msgstr "Participant" @@ -3447,27 +3448,27 @@ msgstr "Participant" msgid "Share ratio" msgstr "Rapport de partage" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:410 msgid "What's in the router's job queue?" msgstr "Montrer les tâches du routeur qui sont à traiter " -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412 msgid "Congestion" msgstr "Saturation réseau" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:422 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 msgid "Job lag" msgstr "Tâche décalage" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:428 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:423 msgid "Message delay" msgstr "Message retard" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:434 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:429 msgid "Tunnel lag" msgstr "Tunnel décalage" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435 msgid "Backlog" msgstr "Retard accumulé" @@ -3475,13 +3476,13 @@ msgstr "Retard accumulé" msgid "ERR-Client Manager I2CP Error - check logs" msgstr "ERR-Client Manager I2CP Error - vérifier l\\''historique" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:108 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:113 #, java-format msgid "ERR-Clock Skew of {0}" msgstr "ERR - horloge décalée de {0}" #: ../java/src/net/i2p/router/web/SummaryHelper.java:122 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:595 msgid "OK" msgstr "OK" @@ -3506,11 +3507,11 @@ msgid "WARN-Firewalled and Fast" msgstr "WARN - Pare-feu et Rapide" #: ../java/src/net/i2p/router/web/SummaryHelper.java:133 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 msgid "Firewalled" msgstr "Bloqué par un pare-feu" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:130 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:135 msgid "ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" msgstr "ERR-port UDP en cours d\\''utilisation - Réglez i2np.udp.internalPort=xxxx dans la configuration avancée et redémarrez" @@ -3527,7 +3528,7 @@ msgid "WARN-Firewalled with UDP Disabled" msgstr "WARN - Pare-feu avec UDP desactivé" #: ../java/src/net/i2p/router/web/SummaryHelper.java:148 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 msgid "Testing" msgstr "Test en cours" @@ -3571,10 +3572,6 @@ msgstr "Construction" msgid "Building tunnels" msgstr "Création des tunnels en cours" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 -msgid "none" -msgstr "aucun" - #. 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 @@ -3609,10 +3606,14 @@ msgstr "maintenant" #: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:309 msgid "configure" msgstr "configuration" +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:61 +msgid "Client tunnels for" +msgstr "Tunnels clients pour" + #: ../java/src/net/i2p/router/web/TunnelRenderer.java:65 msgid "dead" msgstr "mort" @@ -3737,60 +3738,70 @@ msgstr "Tunnels participants" msgid "Totals" msgstr "Totaux" -#: ../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:178 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:67 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:143 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:238 msgid "Updating" msgstr "Mise à jour en cours" #. Process the .sud/.su2 file -#: ../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:189 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:214 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:89 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:112 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:117 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:262 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:287 msgid "Update downloaded" msgstr "Mise à jour téléchargée" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:91 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:92 #, java-format msgid "Unsigned update file from {0} is corrupt" msgstr "Le fichier de mise à jour non signé de {0} est corrompu" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:111 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:209 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:112 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:282 msgid "Restarting" msgstr "Redémarrage en cours" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:118 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:288 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:119 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:289 msgid "Click Restart to install" msgstr "cliquez sur Redémarrer pour installer" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:120 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:290 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:121 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:291 msgid "Click Shutdown and restart to install" msgstr "Cliquez sur \"Arrêter\" et redémarrez pour installer" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:121 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:220 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:122 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:293 #, java-format msgid "Version {0}" msgstr "Version {0}" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:126 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:127 #, java-format msgid "Failed copy to {0}" msgstr "Échec de copie vers {0}" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:209 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:185 +#, java-format +msgid "Updating from {0}" +msgstr "Mise à jour depuis {0}" + +#: ../java/src/net/i2p/router/web/UpdateHandler.java:254 +#, java-format +msgid "No new version found at {0}" +msgstr "Pas de nouvelle trouvée sur {0}" + +#: ../java/src/net/i2p/router/web/UpdateHandler.java:282 msgid "Update verified" msgstr "Mise à jour vérifiée" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:234 -msgid "Transfer failed" -msgstr "Échec de transfert" +#: ../java/src/net/i2p/router/web/UpdateHandler.java:308 +#, java-format +msgid "Transfer failed from {0}" +msgstr "Échec de transfert depuis {0}" #. wars for ConfigClientsHelper #: ../java/strings/Strings.java:12 @@ -4039,1210 +4050,1442 @@ msgstr "Taux de bande passante d\\''émission faible" msgid "How many peers we are actively talking with" msgstr "Nombre de pairs actifs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:112 msgid "config networking" msgstr "Interconnexion configuration" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:224 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:224 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:231 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:222 +msgid "Summary Bar" +msgstr "Panneau de contrôle" + #. 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:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:217 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:230 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:217 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:227 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:222 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:234 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:250 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:244 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:242 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:235 msgid "Refresh (s)" msgstr "Actualiser (s)" #. ditto -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:221 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:234 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:221 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:231 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:226 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:237 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:254 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:251 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:248 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:245 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:239 msgid "Enable" msgstr "Activer" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:262 msgid "I2P Network Configuration" msgstr "Configuration I2P réseau" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:298 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:316 msgid "Bandwidth limiter" msgstr "Limiteur de bande passante" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:300 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:318 msgid "I2P will work best if you configure your rates to match the speed of your internet connection." msgstr "I2P fonctionnera mieux si vous configurez le débit de transmission et réception pour qu\\''ils soient égales à ceux de votre connexion internet." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:322 msgid "KBps In" msgstr "KOps entrant" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:336 msgid "KBps Out" msgstr "KOps sortant" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:334 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:352 msgid "Share" msgstr "Partager" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:341 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:326 msgid "NOTE" msgstr "NOTER" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:361 #, java-format msgid "You have configured I2P to share only {0} KBps." msgstr "Vous avez configuré I2P à partager que {0} KOps." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:346 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:364 msgid "I2P requires at least 12KBps to enable sharing. " msgstr "I2P a besoin de plus de 12KOps afin d\\''activer le partage de bande passante" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:365 msgid "Please enable sharing (participating in tunnels) by configuring more bandwidth. " msgstr "Veuillez activer le partage de bande passante (tunnels participants) en augmentant votre bande passante." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:348 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:366 msgid "It improves your anonymity by creating cover traffic, and helps the network." msgstr "Cela aidera votre anonymat en cachant vos données parmi les données des autres, et cela améliorera le réseau." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:369 #, java-format msgid "You have configured I2P to share {0} KBps." msgstr "Vous avez configuré I2P à partager {0} KOps." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:354 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:372 msgid "The higher the share bandwidth the more you improve your anonymity and help the network." msgstr "En partageant plus de votre bande passante, vous améliorerez votre anonymat et le réseau." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:358 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:305 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:327 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:403 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:348 -#: ../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:342 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:322 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:376 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:532 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:425 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:366 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:360 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:383 msgid "Cancel" msgstr "Annuler" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:375 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:393 msgid "IP and Transport Configuration" msgstr "Configuration IP et transport " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:377 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:395 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:324 msgid "The default settings will work for most people." msgstr "La configuration par défaut marchera pour la plupart des gens." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:379 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:397 msgid "There is help below." msgstr "Voir les explications ci-dessous." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:381 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399 msgid "UPnP Configuration" msgstr "Configuration UPnP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:385 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 msgid "Enable UPnP to open firewall ports" msgstr "Activer UPnP afin d\\''ouvrir les ports du pare-feu" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:387 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:405 msgid "UPnP status" msgstr "Statut UPnP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:389 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:407 msgid "IP Configuration" msgstr "Configuration IP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:391 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:461 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 msgid "Externally reachable hostname or IP address" msgstr "Adresse IP ou nom d\\''hôte qui est joignable depuis l\\''exterieur" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:413 msgid "Use all auto-detect methods" msgstr "Utiliser toute méthode d\\''auto-détection" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 msgid "Disable UPnP IP address detection" msgstr "Desactiver la détection de l\\''adresse IP par UPnP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:421 msgid "Ignore local interface IP address" msgstr "Ignorer l\\''adresse IP de l\\''interface locale" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:407 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:425 msgid "Use SSU IP address detection only" msgstr "Utiliser seulement SSU pour détecter l\\''adresse IP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:411 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:429 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 msgid "Specify hostname or IP" msgstr "Saisir l\\''adresse IP ou le nom de l\\''hôte" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 msgid "Select Interface" msgstr "Choisir l\\''interface" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:449 msgid "Hidden mode - do not publish IP" msgstr "Mode caché - ne pas publier l\\''adresse IP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:451 msgid "(prevents participating traffic)" msgstr "(empêche le trafic participants)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:453 msgid "Action when IP changes" msgstr "Action quand l\\''IP change" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:438 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:457 msgid "Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity" msgstr "Mode IP publique dynamique/PC portable: modifie l\\''identité du router et le port UDP quand l\\''IP change pour améliorer l\\''anonymat" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:441 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 msgid "Experimental" msgstr "Expérimental" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:443 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:461 msgid "UDP Configuration:" msgstr "Configuration UDP :" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:445 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:463 msgid "UDP port:" msgstr "Port UDP :" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:477 msgid "TCP Configuration" msgstr "Configuration TCP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:465 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:483 msgid "Use auto-detected IP address" msgstr "Utiliser l\\''adresse IP qui a été auto-détectée" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:467 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:517 msgid "currently" msgstr "actuellement" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:471 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:489 msgid "if we are not firewalled" msgstr "s\\''il n\\''y a pas de pare-feu" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:475 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 msgid "Always use auto-detected IP address (Not firewalled)" msgstr "Utiliser toujours l\\''adresse IP qui a été auto-détectée (pas de pare-feu)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:503 msgid "Disable inbound (Firewalled)" msgstr "Desactiver les connexions entrantes (derrière un pare-feu)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:489 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:507 msgid "Completely disable" msgstr "Desactiver complètement" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:491 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 msgid "(select only if behind a firewall that throttles or blocks outbound TCP)" msgstr "(selectionner seulement si derrière un pare-feu qui limite les connexions sortantes TCP)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:511 msgid "Externally reachable TCP port" msgstr "Port TCP joignable de l\\''extérieur" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:515 msgid "Use the same port configured for UDP" msgstr "Utiliser le même port qui a été configuré pour UDP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:505 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:523 msgid "Specify Port" msgstr "Saisir le port" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:527 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:348 msgid "Note" msgstr "Noter" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:512 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:530 msgid "Changing these settings will restart your router." msgstr "Un changement de cette configuration entraînera un redémarrage du routeur" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:536 msgid "Configuration Help" msgstr "Aide à la configuration" -#: ../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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:538 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587 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 fonctionnera derrière la plupart des pare-feux, mais votre vitesse et votre intégration avec le réseau sera améliorée par la redirection des ports UDP et TCP d\\''I2P." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:528 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:540 +msgid "If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you." +msgstr "If vous pouvez, ouvrez un port dans votre pare-feu pour recevoir les paquets UDP et TCP non sollicités." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:542 +msgid "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic." +msgstr "Sinon, I2P est compatible UPnP (Universal Plug and Play) et perçage de trou UDP par \"introductions SSU\" pour relayer le trafic." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:544 +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 "La plupart des options ci-dessous concernent des situations particulières, par exemple quand UPnP ne marche pas correctement, ou qu'un pare-feu hors de contrôle fait son pénible." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:546 msgid "Certain firewalls such as symmetric NATs may not work well with I2P." msgstr "Il y a des certains types de pare-feu (tel que les NAT symétriques) qui ne fonctionnent pas bien avec I2P." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:537 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 msgid "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports." msgstr "UPnP est utilisé pour communiquer avec des \"Internet Gateway Devices (IGDs)\" afin de détecter l\\''adresse IP extérieure et de contrôler la redirection des ports." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:539 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 msgid "UPnP support is beta, and may not work for any number of reasons" msgstr "UPnP est toujours en développement, et il peut arrêter de fonctionner correctement à cause de " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:541 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 msgid "No UPnP-compatible device present" msgstr "Il n\\''y a pas d\\''appareil qui est compatible avec UPnP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:543 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 msgid "UPnP disabled on the device" msgstr "UPnP est desactivé sur l\\''appareil" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:545 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 msgid "Software firewall interference with UPnP" msgstr "Il y a de l\\''intérference entre un pare-feu en software et UPnP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:547 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 msgid "Bugs in the device's UPnP implementation" msgstr "Il y a des bogues dans l\\''implementation d\\''UPnP dans l\\''appareil" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:549 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 msgid "Multiple firewall/routers in the internet connection path" msgstr "Il y a plusieurs routeurs/pare-feux entre le routeur I2P et l\\''internet" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:551 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 msgid "UPnP device change, reset, or address change" msgstr "Un changement de l\\''appareil UPnP, une redémarrage, ou une changement d\\''adresse IP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:553 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:571 msgid "Review the UPnP status here." msgstr "Consulter le statut de UPnP ici." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:573 msgid "UPnP may be enabled or disabled above, but a change requires a router restart to take effect." msgstr "UPnP peut être activé ou desactivé au-dessus, mais afin de prendre en compte la changement il faut rédemarrer le routeur I2P." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575 msgid "Hostnames entered above will be published in the network database." msgstr "Les noms d\\''hôtes qui ont été saisis au-dessus seront publié dans la base de données du réseau I2P." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 msgid "They are not private." msgstr "Ils ne sont pas privés." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 msgid "Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1." msgstr "En plus, ne saisissez pas une adresse IP privée tel que 127.0.0.1 ou 192.168.1.1." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 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 "Si vous saisissez une mauvaise adresse IP ou nom d\\''hôte, ou configurer votre NAT ou pare-feu incorrectement, votre intégration avec le réseau I2P dégradera substantiellement." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 msgid "When in doubt, leave the settings at the defaults." msgstr "Si vous n\\''êtes pas sûr de vous, laisser la configuration par défaut." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 msgid "Reachability Help" msgstr "Aide sur la joignabilité" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:571 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:590 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 "Si vous pensez que vous avez ouvert votre pare-feu et qu\\''I2P indique toujours que vous êtes derrière le pare-feu, n\\''oubliez pas que vous avez peut-être plusieurs pare-feux: par exemple celui de votre box DSL et un pare-feu logiciel dans votre ordinateur." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:574 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593 msgid "If there is an error, the logs may also help diagnose the problem." msgstr "S\\''il y a une erreur, les historiques peuvent aider au diagnostic." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 +msgid "Your UDP port does not appear to be firewalled." +msgstr "Votre port UDP ne semble pas bloqué par un pare-feu." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 msgid "Your UDP port appears to be firewalled." msgstr "Votre port UDP semble bloqué par un pare-feu." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:584 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603 msgid "As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error." msgstr "Comme les méthodes de détection de pare-feu ne sont pas fiables à 100%, ceci peut occasionnellement générer une erreur." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:586 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 msgid "However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port." msgstr "Cependant, si ça se reproduit systématiquement, vous devez vérifier que votre box et vos pare-feux internes sont ouverts pour votre port." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:588 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 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 fonctionne très bien derrière un pare-feu, ça n\\''est pas un problème. Derrière un pare-feu, le routeur utilise des \"entremetteurs\" pour relayer les connexions entrantes." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:590 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 msgid "However, you will get more participating traffic and help the network more if you can open your firewall(s)." msgstr "Cependant, vous obtiendrez plus de trafic participants et aiderez plus le réseau si vous avez la possibilité d\\''ouvrir vos pare-feux." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:592 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 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 "S vous pensez que vous l\\''avez déjà fait, n\\''oubliez pas que vous avez peut-être un pare-feu matériel et logiciel, ou que vous êtes derrière un pare-feu supplémentaire sur lequel vous n\\''avez aucun contrôle (p.e. en entreprise)." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:594 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 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 "De plus, certains pare-feux ne peuvent pas transférer correctement TCP et UDP sur le même port, ou il pourrait y avoir d\\''autres limitations ou des bogues qui les empêcheraient de passer le trafic à I2P." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 msgid "The router is currently testing whether your UDP port is firewalled." msgstr "Le routeur teste actuellement si votre port UDP est bloqué." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:602 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 msgid "The router is not configured to publish its address, therefore it does not expect incoming connections." msgstr "Le routeur n\\''est pas configuré pour publier son adresse, donc il n\\''attend pas de connexions entrantes." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 msgid "WARN - Firewalled and Fast" msgstr "WARN - Pare-feu et Rapide" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:606 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 msgid "You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled." msgstr "Vous avez configuré I2P pour partager plus de 128ko/s de bande passante, mais vous êtes bloqué par un pare-feu." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 +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 "Bien qu'I2P fonctionne correctement dans cette configuration, si vous avez vraiment plus de 128ko/s (~1Mb/s) de bande passante à partager, il serait bénéfique pour le réseau que vous ouvriez un port dans votre pare-feu." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 msgid "WARN - Firewalled and Floodfill" msgstr "WARN - Pare-feu et Floodfill" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:612 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:631 msgid "You have configured I2P to be a floodfill router, but you are firewalled." msgstr "Vous avez configuré I2P pour être un routeur de remplissage par diffusion, mais vous êtes derrière un pare-feu." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:614 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 msgid "For best participation as a floodfill router, you should open your firewall." msgstr "Pour une meilleure participation en tant que diffuseur, vous devriez ouvrir votre pare-feu." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 msgid "WARN - Firewalled with Inbound TCP Enabled" msgstr "WARN - Pare-feu avec TCP entrant activé" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:618 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:637 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 "Vous avez configuré le TCP entrant, cependant votre port UDP est bloqué et en conséquence il est probable que TCP l\\''est aussi." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 +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 "Si votre port TCp est bloqué et les connexions entrantes TCP activées dans la console, les routeurs ne pourront pas vous contacter via TCP, ce qui va perturber le réseau. " + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 msgid "Please open your firewall or disable inbound TCP above." msgstr "Merci d\\''ouvrir votre pare-feu ou de désactiver le TCP entrant ci-dessus." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 msgid "WARN - Firewalled with UDP Disabled" msgstr "WARN - Pare-feu avec UDP désactivé" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 msgid "You have configured inbound TCP, however you have disabled UDP." msgstr "Vous avez configuré le TCP entrant, mais vous avez désactivé UDP." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:628 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 msgid "You appear to be firewalled on TCP, therefore your router cannot accept inbound connections." msgstr "Vous apparaissez comme étant bloqué par un pare-feu pour TCP, et en conséquence votre routeur ne peut pas accepter les connexions entrantes." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:631 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 msgid "Please open your firewall or enable UDP." msgstr "Merci d\\''ouvrir votre pare-feu ou d\\''activer UDP." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:651 msgid "ERR - Clock Skew" msgstr "ERR - horloge décalée" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:634 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 msgid "Your system's clock is skewed, which will make it difficult to participate in the network." msgstr "L\\''horloge système est décalée, ce qui rend la participation au réseau difficile." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:637 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:655 msgid "Correct your clock setting if this error persists." msgstr "Corrigez votre réglage d\\''horloge si cette erreur persiste." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:657 msgid "ERR - Private TCP Address" msgstr "ERR - Adresse TCP privée" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:640 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:659 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 "Vous ne devez jamais publier une IP non routable telle que 127.0.0.1 ou 192.168.1.1 en tant qu\\''adresse externe." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 msgid "Correct the address or disable inbound TCP above." msgstr "Corrigez cette adresse ou désactivez le TCP entrant ci-dessus." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:663 msgid "ERR - SymmetricNAT" msgstr "ERR - NAT symétrique" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:665 msgid "I2P detected that you are firewalled by a Symmetric NAT." msgstr "I2P a détecté que vous êtes derrière un NAT symétrique." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:648 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:667 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 marche mal derrière ce genre de pare-feu. vous ne pourrez sûrement pas accepter de recevoir de connexions entrantes, ce qui limitera votre participation au réseau." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:650 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:669 msgid "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" msgstr "ERR - Port UDP en cours d\\''utilisation - réglez i2np.udp.internalPort=xxxx dans la configuration avancée et redémarrez" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 msgid "I2P was unable to bind to port 8887 or other configured port." msgstr "I2P n\\''a pas pu s\\''attacher au port 8887 ou un autre port configuré." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:654 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:673 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 "Vérifiez si un autre programme utilise le port configuré pour I2P. Si oui, arrêtez ce programme ou configurez I2P pour qu\\''il utilise un port différent (dans Windows tapez netstat dans une boîte de commandes pour lister les ports utilisés par les programmes)." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:656 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:675 msgid "This may be a transient error, if the other program is no longer using the port." msgstr "Il s\\''agit peut-être d\\''une erreur passagère, si l\\''autre programme n\\''utilise plus le port." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:659 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:677 msgid "However, a restart is always required after this error." msgstr "Cependant un redémarrage du routeur est toujours requis après cette erreur." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:679 msgid "ERR - UDP Disabled and Inbound TCP host/port not set" msgstr "ERR - UDP est désactivé et l\\''hôte/port entrants ne sont pas définis." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:662 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:681 msgid "You have not configured inbound TCP with a hostname and port above, however you have disabled UDP." msgstr "vous n\\''avez pas configuré le TCP entrant ci-dessus avec un nom d\\''hôte et un port, mais vous avez désactivé UDP." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:665 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:683 msgid "Therefore your router cannot accept inbound connections." msgstr "Le routeur ne peut donc pas accepter de connexions entrantes." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:667 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:685 msgid "Please configure a TCP host and port above or enable UDP." msgstr "Merci de configurer ci-dessus un nom et un port TCP, ou d\\''activer UDP." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:669 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:687 msgid "ERR - Client Manager I2CP Error - check logs" msgstr "ERR - Client Manager I2CP Error - vérifiez les historique" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:689 msgid "This is usually due to a port 7654 conflict. Check the logs to verify." msgstr "Ceci est habituellement dû à un conflit de port 7654. Vérifiez dans l\\''historique. (et pensez éventuellement à netstat ;-) ) " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:672 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:691 msgid "Do you have another I2P instance running? Stop the conflicting program and restart I2P." msgstr "Avez-vous une autre instance d\\''I2P en cours d\\''exécution? Arrêtez le programme en conflit et redémarrez I2P." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:107 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:113 msgid "config advanced" msgstr "configuration avancée" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:263 msgid "I2P Advanced Configuration" msgstr "Configuration I2P avancée" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:319 msgid "Advanced I2P Configuration" msgstr "Configuration I2P avancée" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:329 msgid "Some changes may require a restart to take effect." msgstr "Certains changement nécessitent un redémarrage pour prendre effet." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:112 msgid "config clients" msgstr "configuration clients" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:265 msgid "I2P Client Configuration" msgstr "configuration client I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:330 msgid "Client Configuration" msgstr "Configuration client" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:332 msgid "The Java clients listed below are started by the router and run in the same JVM." msgstr "Les client Java listés ci-dessous sont démarrés par le routeur et s\\''exécutent dans la même JVM." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:338 msgid "To change other client options, edit the file" msgstr "Pour changer d\\''autres options du client, modifiez le fichier" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:325 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:401 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:415 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:439 msgid "All changes require restart to take effect." msgstr "Tous les changements nécessitent un redémarrage pour prendre effet." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 +msgid "Advanced Client Interface Configuration" +msgstr "Configuration interface client avancée" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:361 msgid "External I2CP (I2P Client Protocol) Interface Configuration" msgstr "Configuration de l\\''interface I2CP (I2P Client Protocol) externe" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:367 msgid "Enabled without SSL" msgstr "Activé sans SSL" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:373 msgid "Enabled with SSL required" msgstr "Activé avec SLL requis" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:379 msgid "Disabled - Clients outside this Java process may not connect" msgstr "Désactivé: les clients hors de ce processus Java ne peuvent pas se connecter" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:381 msgid "I2CP Port" msgstr "Port I2CP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:385 msgid "I2CP Interface" msgstr "Interface i2CP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:379 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:401 msgid "Authorization" msgstr "Autorisation" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:385 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:407 msgid "Require username and password" msgstr "Utilisateur+Mot de passe requis" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:387 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 msgid "Username" msgstr "Utilisateur" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:391 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:413 msgid "Password" msgstr "Mot de passe" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:419 msgid "Any changes made here must also be configured in the external client." msgstr "Tous les changements apportés ici doivent être répercutés dans le client externe." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:399 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:421 msgid "Many clients do not support SSL or authorization." msgstr "Nombre de clients ne prennent pas en charge l\\''authentification ou SSL." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:407 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:429 msgid "WebApp Configuration" msgstr "Configuration WebApp" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:338 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 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 "Les applications Web Java listées ci-dessous sont démarrées par le client webConsole et s\\''exécutent dans la même JVM que le routeur. Il s\\''agit généralement d\\''applications web accessibles par la console du routeur. Il peut s\\''agir d\\''applications complètes (p.e. i2pSnark), d\\''interfaces pour d\\''autres clients ou applications qui doivent être activées séparément (p.e. susidns, i2ptunnel), ou n\\''ayant absolument aucune interface web (p.e. le carnet d\\''adresses)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:340 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433 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 "Une appli web peut aussi être désactivée en supprimant le ficher .war du répertoire des web apps; mais le fichier et la web app reviendront à l\\''occasion d\\''une mise à jour du routeur, et donc la désactivation depuis la console est la méthode recommandée." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:350 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:445 msgid "Plugin Configuration" msgstr "Configuration du greffon" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:447 msgid "The plugins listed below are started by the webConsole client." msgstr "Les greffons listés ci-dessous sont démarrés par le client webConsole." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:429 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:455 msgid "Plugin Installation" msgstr "Installation de greffon" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:457 msgid "To install a plugin, enter the download URL:" msgstr "Pour installer un greffon, entrez l\\''URL de téléchargement:" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:112 msgid "config keyring" msgstr "Configuration du porte-clés" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:249 msgid "I2P Keyring Configuration" msgstr "Configuration du porte-clés I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:317 msgid "The router keyring is used to decrypt encrypted leaseSets." msgstr "Le trousseau de clefs du routeur est utilisé pour déchiffrer les jeux de baux (leaseSets) cryptés." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:297 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:320 msgid "The keyring may contain keys for local or remote encrypted destinations." msgstr "Le trousseau contient des clés pour des destinations cryptées locales ou distantes." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:326 msgid "Manual Keyring Addition" msgstr "Ajout manuel de trousseau" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:328 msgid "Enter keys for encrypted remote destinations here." msgstr "Entrez les clés pour les destinations chiffrées distantes ici." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:331 msgid "Keys for local destinations must be entered on the" msgstr "Les clés des destinations locales doivent être entrées sur la" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:333 msgid "I2PTunnel page" msgstr "page I2PTunnel" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:335 msgid "Dest. name, hash, or full key" msgstr "Nom de destination, empreinte, ou clé complète" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:337 msgid "Encryption Key" msgstr "Clé de cryptage" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:107 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:113 msgid "config logging" msgstr "configuration des historiques" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:263 msgid "I2P Logging Configuration" msgstr "Configuration des historiques I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 msgid "Configure I2P Logging Options" msgstr "Configuration des options d\\''historiques" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:321 msgid "Logging filename" msgstr "Nom du fichier des historiques" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:325 msgid "(the symbol '@' will be replaced during log rotation)" msgstr "(le caractère \\''@\\'' sera remplacé lors des rotations d\\''historiques)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:327 msgid "Log record format" msgstr "Format des enregistrements d\\''historiques" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:331 msgid "(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" msgstr "(use \\''d\\'' = date, \\''c\\'' = classe, \\''t\\'' = tâche, \\''p\\'' = priorité, \\''m\\'' = message)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:333 msgid "Log date format" msgstr "Format de date des historiques" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:337 msgid "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)" msgstr "(\\''MM\\'' = mois, \\''dd\\'' = jour, \\''HH\\'' = heure, \\''mm\\'' = minute, \\''ss\\'' = seconde, \\''SSS\\'' = milliseconde)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 msgid "Max log file size" msgstr "Taille max des fichiers d\\''historiques" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:343 msgid "Default log level" msgstr "Niveau d\\''historisation par défaut" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:347 msgid "(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)" msgstr "(DEBUG et INFO sont déconseillés, car ils ralentissent double-plus-grâââve votre routeur)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:349 msgid "Log level overrides" msgstr "Remplacements du niveau d\\''historisation" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:353 msgid "New override" msgstr "Nouveau remplacement" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:112 msgid "config peers" msgstr "Configuration des pairs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:249 msgid "I2P Peer Configuration" msgstr "Configuration des pairs I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:323 msgid "Manual Peer Controls" msgstr "Contrôle manuel des pairs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 msgid "Router Hash" msgstr "Empreinte du routeur" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:329 msgid "Manually Ban / Unban a Peer" msgstr "(Dé)banissement manuel d\\''un pair" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:331 msgid "Banning will prevent the participation of this peer in tunnels you create." msgstr "Le banissement empêchera ce pair de participer aux tunnels que vous créez." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:341 +msgid "Adjust Profile Bonuses" +msgstr "Ajuster les boni du profil" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:343 +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 "Les boni peuvent être positifs ou négatifs, et influencent l'affectation des pairs dans les groupes \"Rapides\" et \"Hautes capacités\". Les pairs rapides sont utilisés pour les tunnels clients, et les pairs à hautes capacités pour quelques tunnels exploratoires. Les boni actuels sont affichés sur la" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:345 msgid "profiles page" msgstr "page des profils" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:342 -msgid "Adjust peer bonuses" -msgstr "Ajuster les boni des pairs" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:345 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:251 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:273 msgid "Banned Peers" msgstr "Pairs bannis" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:366 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:384 msgid "Banned IPs" msgstr "Adresses IP bannies" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:112 +msgid "config reseeding" +msgstr "Config réamorçage" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:262 +msgid "I2P Reseeding Configuration" +msgstr "Configuration du réamorçage d'I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 +msgid "Reseeding Configuration" +msgstr "Configuration réamorçage" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:320 +msgid "Reseeding is the bootstrapping process used to find other routers when you first install I2P, or when your router has too few router references remaining." +msgstr "Le réamorçage est le processus de lancement utilisé pour trouver d'autres routeurs lors de l'installation initiale d'I2P, ou lorsqu'il reste au routeur trop peu de références à d'autre routeurs." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:322 +msgid "If reseeding has failed, you should first check your network connection." +msgstr "Si le réamorçage à échoué, vérifiez d'abord l'état de votre connexion au réseau." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:326 +msgid "Change these only if HTTP is blocked by a restrictive firewall, reseed has failed, and you have access to an HTTP proxy." +msgstr "Changez-les seulement si HTTP est bloqué par un pare-feu restrictif, si le réamorçage a échoué, et si vous avez accès à un mandataire (proxy) HTTP." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:328 +#, java-format +msgid "See {0} for instructions on reseeding manually." +msgstr "Voir les instructions de réamorçage manuel sur {0}." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:328 +msgid "the FAQ" +msgstr "la FAQ" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:330 +msgid "Reseed URL Selection" +msgstr "Sélection de l'URL de réamorçage" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:336 +msgid "Try SSL first then non-SSL" +msgstr "Préférer SSL, sinon, repli sur non-SSL" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:342 +msgid "Use SSL only" +msgstr "Avec SSL seulement" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:348 +msgid "Use non-SSL only" +msgstr "Sans SSL" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 +msgid "Reseed URLs" +msgstr "URLs de réamorçage" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:354 +msgid "Enable HTTP proxy (not used for SSL)" +msgstr "Activer le mandataire HTTP (non utilisé pour SSL)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:358 +msgid "HTTP Proxy Host" +msgstr "Hôte mandataire HTTP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:362 +msgid "HTTP Proxy Port" +msgstr "Port mandataire HTTP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:112 msgid "config service" msgstr "Configuration du service" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:249 msgid "I2P Service Configuration" msgstr "Configuration du service I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:285 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:303 msgid "Shutdown the router" msgstr "Arrêter le routeur" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:286 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 msgid "Graceful shutdown lets the router satisfy the agreements it has already made before shutting down, but may take a few minutes." msgstr "Un arrêt respectueux permet au routeur de satisfaire les accords en place avec d\\''autres routeurs avant la fermeture, mais cela prendra quelques minutes." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:288 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:307 msgid "If you need to kill the router immediately, that option is available as well." msgstr "Si vous avez besoin d\\''arrêter le routeur I2P immédiatement, cette option est également disponible." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:298 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 msgid "If you want the router to restart itself after shutting down, you can choose one of the following." msgstr "Si vous voulez que le routeur redémarre après l\\''arrêt, vous pouvez choisir une des possibilités suivantes." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:300 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 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 "C\\''est utile dans certaines situations: p.e. quand vous faites un réglage que telle application cliente ne lit qu\\''au démarrage, comme le mot de passe de la console ou l\\''interface sur lequel elle écoute." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 msgid "A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately." msgstr "Un redémarrage respectueux prendra quelques minutes (mais vos pairs apprécieront votre patience), un redémarrage immédiat est quasi instantané." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 msgid "After tearing down the router, it will wait 1 minute before starting back up again." msgstr "Après le redémarrage du routeur, il attendra 1 minute avant de se relancer." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:333 msgid "Systray integration" msgstr "Intégration dans la zone de notification" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 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 "Sur Windows, une icône pour la zone de notification indiquant l\\''état du routeur " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 msgid "(later on, I2P client applications will be able to integrate their own functionality into the system tray as well)." msgstr "(Ultérieurement, Les applications clientes I2P pourront intégrer leurs propres fonctionnalités dans la zone de notification système)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339 msgid "If you are on windows, you can either enable or disable that icon here." msgstr "Si vous êtes sur Windows, vous pouvez (dés)activer cette icône ici." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 +msgid "Show systray icon" +msgstr "Afficher l\\''icône de zone de notification" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:343 +msgid "Hide systray icon" +msgstr "Masquer l\\''icône de zone de notification" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:345 msgid "Run on startup" msgstr "Lancer au démarrage" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:328 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 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 "Vous pouvez contrôler si I2P est lancé ou pas au démarrage en choisissant une des options suivantes: I2P installera le service en conséquence." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 msgid "If you prefer the command line, you can also run the " msgstr "Si vous préférez la ligne commande, vous pouvez aussi exécuter la" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:340 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 msgid "If you are running I2P as service right now, removing it will shut down your router immediately." msgstr "Si vous exécutez actuellement I2P en tant que service, l\\''enlever arrêtera le routeur immédiatement." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:342 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:361 msgid "You may want to consider shutting down gracefully, as above, then running uninstall_i2p_service_winnt.bat." msgstr "Vous pouvez faire un arrêt respectueux, comme ci-dessus, puis lancer le fichier uninstall_i2p_service_winnt.bat." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:365 msgid "Debugging" msgstr "Débogage" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:348 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:367 msgid "View the job queue" msgstr "Voir la file d\\''attente " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:352 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:371 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 "À l\\''occasion, il peut être utile de déboguer I2P à l\\''aide d\\''un cliché de tâche. Pour ce faire, merci de sélectionner l\\''option suivante de passer en revue le résultat dans l\\''historique du service Wrapper." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:377 msgid "Launch browser on router startup?" msgstr "Lancer le navigateur au démarrage du routeur?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:360 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:379 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 "La plus grande partie de la configuration d\\''I2P se fait dans cette console, et donc pour votre confort, I2P peut lancer au démarrage votre navigateur sur " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:107 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:113 msgid "config stats" msgstr "config stats" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:250 msgid "I2P Stats Configuration" msgstr "Configuration des statistiques d\\''I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:320 msgid "Configure I2P Stat Collection" msgstr "Configurer les groupes de statistiques " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:322 msgid "Enable full stats?" msgstr "Activer toutes les statistiques?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:329 msgid "change requires restart to take effect" msgstr "La modification sera prise en compte au démarrage suivant" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:331 msgid "Stat file" msgstr "Fichier de statistiques" -#: ../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:335 msgid "Filter" msgstr "Filtre" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:319 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:328 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:348 msgid "toggle all" msgstr "basculer tous" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:350 msgid "Log" msgstr "Historique" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:332 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:352 msgid "Graph" msgstr "Graphique" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:371 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:391 msgid "Advanced filter" msgstr "Filtre avancé" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:112 msgid "config tunnels" msgstr "Configuration des tunnels" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:262 msgid "I2P Tunnel Configuration" msgstr "Configuration des tunnels I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:328 msgid "The default settings work for most people." msgstr "La configuration défaut fonctionne pour la plupart des utilisateurs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:332 msgid "There is a fundamental tradeoff between anonymity and performance." msgstr "Il y a une contradiction fondamentale entre anonymat et performances." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:335 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 "Des tunnels à plus de 3 sauts (p.e. 2 sauts + 0-2 sauts, 3 sauts + 0-1 saut, 3 sauts + 0-2 sauts), ou en grand nombre avec une réserve de secours élevée, peuvent gravement réduire les performances ou la fiabilité. " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:338 msgid "High CPU and/or high outbound bandwidth usage may result." msgstr "Une forte charge UC et/ou utilisation de bande passante sortante peuvent en résulter. " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:341 msgid "Change these settings with care, and adjust them if you have problems." msgstr "Modifiez ces réglages avec prudence, et fignolez-les en cas de problèmes." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:332 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:351 msgid "Exploratory tunnel setting changes are stored in the router.config file." msgstr "Les modifications de réglages des tunnels exploratoires sont enregistrés dans le fichier router.config." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:336 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:354 msgid "Client tunnel changes are temporary and are not saved." msgstr "Les modifications de tunnel client sont temporaires et ne sont pas enregistrées." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:338 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:356 msgid "To make permanent client tunnel changes see the" msgstr "Pour faire de modifications permanentes à un tunnel client, voyez la" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:340 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:358 msgid "i2ptunnel page" msgstr "page i2ptunnnel." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:112 msgid "config UI" msgstr "configuration IHM" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:262 msgid "I2P UI Configuration" msgstr "Réglages de l\\''interface" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:314 msgid "Router Console Theme" msgstr "Thème de la console" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:339 msgid "Theme selection disabled for Internet Explorer, sorry." msgstr "Sélection de thème indisponible pour Internet Explorer, désolé." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:341 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 "Si vous n\\''utilisez pas IE, c\\''est que votre navigateur tente de le faire croire; configurez-le (ou son proxy) pour qu\\''il utilise une chaîne \"User Agent\" différente si vous souhaitez pouvoir changer de thème." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:345 msgid "Router Console Language" msgstr "Langue de la console" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:349 msgid "Please contribute to the router console translation project! Contact the developers on IRC #i2p to help." msgstr "Merci de contribuer à la traduction de la console du routeur ! Contactez les développeurs sur IRC #i2p afin de donner un coup de main." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:324 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:353 msgid "Apply" msgstr "Appliquer" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:112 msgid "config update" msgstr "Mettre à jour la configuration" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:249 msgid "I2P Update Configuration" msgstr "Configuration des mises à jour" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:321 msgid "Check for I2P and news updates" msgstr "Vérification de mises à jour I2P et nouvelles" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:323 msgid "News & I2P Updates" msgstr "Actualités & mises à jour" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:327 msgid "Update In Progress" msgstr "Mise à jour en cours" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:335 msgid "News URL" msgstr "Actualités URL" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:339 msgid "Refresh frequency" msgstr "Fréquence d\\''actualisation" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:345 msgid "Update policy" msgstr "Méthode de mise à jour" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:349 msgid "Update through the eepProxy?" msgstr "Mettre à jour utilisant l\\''eeProxy ?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:353 msgid "eepProxy host" msgstr "eeProxy hôte" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:357 msgid "eepProxy port" msgstr "Port eepProxy" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 msgid "Update URLs" msgstr "Mettre à jour à partir de ces URLs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:365 msgid "Trusted keys" msgstr "Clés de confiance" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:369 msgid "Update with unsigned development builds?" msgstr "Mettre à jour avec une version non signée?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:355 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:373 msgid "Unsigned Build URL" msgstr "L\\''URL de version non signée" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:360 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:379 msgid "I2P updates are disabled because you do not have write permission for the install directory." msgstr "Les mises à jours d\\''I2P sont désactivées car vous n\\''avez pas le droit d\\''écriture sur le dossier d\\''installation. " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:367 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:385 msgid "Save" msgstr "Enregistrer" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:117 -msgid "Page Not Found" -msgstr "Page introuvable" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:121 +msgid "Internal Error" +msgstr "Erreur interne" -#: ../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 "Désolé! Vous avez demandé une page ou ressource de la console inexistante. " +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123 +msgid "Router Console" +msgstr "Console du routeur I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:244 -msgid "Error 404" -msgstr "Erreur 404" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:127 +msgid "Configuration" +msgstr "Configuration" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:249 -msgid "not found" -msgstr "non trouvé" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:135 +msgid "Sorry! There has been an internal error." +msgstr "Désolé! Une erreur interne est survenue." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:106 -msgid "graphs" -msgstr "graphiques" +#. note to translators - both parameters are URLs +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:254 +#, java-format +msgid "Please report bugs on {0} or {1}." +msgstr "Merci de signaler les bogues sur {0} ou {1}." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:227 -msgid "I2P Performance Graphs" -msgstr "Graphiques de performances" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:258 +msgid "You may use the username \"guest\" and password \"guest\" if you do not wish to register." +msgstr "Vous pouvez utiliser l'identifiant \"guest\" et le mot de passe \"guest\" si vous ne souhaitez pas vous inscrire." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:105 -msgid "home" -msgstr "accueil" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:105 -msgid "job queue" -msgstr "file d\\''attente" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:226 -msgid "I2P Router Job Queue" -msgstr "File d\\''attente de travail du routeur" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:105 -msgid "logs" -msgstr "historiques" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:226 -msgid "I2P Router Logs" -msgstr "Fichier traces du routeur I2P" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:229 -msgid "I2P Version & Running Environment" -msgstr "Version d\\''I2P & environnement d\\''exécution" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:231 -msgid "Please report bugs on trac.i2p2.i2p." -msgstr "Merci de signaler les bogues sur trac.i2p2.i2p." - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:233 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:145 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:260 msgid "Please include this information in bug reports" msgstr "Veuillez inclure cette information dans les rapports des bugs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:274 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:147 +msgid "Error Details" +msgstr "Détails de l'erreur" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:149 +#, java-format +msgid "Error {0}" +msgstr "Erreur {0}" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:169 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:250 +msgid "I2P Version and Running Environment" +msgstr "Version d\\''I2P & environnement d\\''exécution" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:197 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:288 +msgid "Note that system information, log timestamps, and log messages may provide clues to your location; please review everything you include in a bug report." +msgstr "Veuillez prendre note que les informations système, les tampons horaires, et les messages d'historiques contiennent des indices susceptibles de révéler votre identité. Merci de vérifier tout ce que vous incluez dans un rapport de bogue." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:123 +msgid "Page Not Found" +msgstr "Page introuvable" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:264 +msgid "Sorry! You appear to be requesting a non-existent Router Console page or resource." +msgstr "Désolé! Vous avez demandé une page ou ressource de la console inexistante. " + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:266 +msgid "Error 404" +msgstr "Erreur 404" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:271 +msgid "not found" +msgstr "non trouvé" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:112 +msgid "graphs" +msgstr "graphiques" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:249 +msgid "I2P Performance Graphs" +msgstr "Graphiques de performances" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:111 +msgid "home" +msgstr "accueil" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:331 +msgid "Welcome to I2P" +msgstr "Bienvenue sur I2P !" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:111 +msgid "job queue" +msgstr "file d\\''attente" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:248 +msgid "I2P Router Job Queue" +msgstr "File d\\''attente de travail du routeur" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:111 +msgid "logs" +msgstr "historiques" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:248 +msgid "I2P Router Logs" +msgstr "Fichier traces du routeur I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:303 msgid "Critical Logs" msgstr "Historiques critiques" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:278 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:307 msgid "Router Logs" msgstr "Historiques du routeur" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:291 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:313 msgid "Service (Wrapper) Logs" msgstr "Historique du service Wrapper" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:111 msgid "network database summary" msgstr "Résumé base de données" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:248 msgid "I2P Network Database Summary" msgstr "Résumé base de données I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:109 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:115 msgid "WebApp Not Found" msgstr "Application web introuvable" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:231 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:252 msgid "Web Application Not Running" msgstr "Application web inactive" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:232 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:254 msgid "The requested web application is not running." msgstr "L\\''application web demandée est inactive." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:256 msgid "Please visit the config clients page to start it." msgstr "Merci de visiter la page de configuration des clients pour le lancer." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:111 msgid "peer connections" msgstr "connexions de pairs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:248 msgid "I2P Network Peers" msgstr "Pairs I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:111 msgid "peer profiles" msgstr "profile de pairs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:248 msgid "I2P Network Peer Profiles" msgstr "Profils de pairs I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:111 msgid "statistics" msgstr "statistiques" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:265 msgid "I2P Router Statistics" msgstr "Statistiques du routeur I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:255 #, java-format msgid "Disable {0} Refresh" msgstr "Désactiver {0} Actualiser" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:111 msgid "tunnel summary" msgstr "résumé des tunnels" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:248 msgid "I2P Tunnel Summary" msgstr "Résumé des tunnels I2P" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:111 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:248 +msgid "Peer Profile" +msgstr "Profils de pair" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:275 +#, java-format +msgid "Profile for peer {0}" +msgstr "Profil du pair {0}" + +#~ msgid "Last reseed failed fully (failed reading seed URL)." +#~ msgstr "" +#~ "Échec complet du dernier réamorçage (échec de lecture de l\\''URL source)" +#~ msgid "Last reseed failed fully (no routerInfo URLs at seed URL)." +#~ msgstr "" +#~ "Échec complet du dernier réamorçage (pas de routerInfo à l\\''URL source)" +#~ msgid "Last reseed failed partly ({0}% of {1})." +#~ msgstr "Échec partiel du dernier réamorçage ({0}% de {1})." +#~ msgid "Last reseed failed ({0}% of {1})." +#~ msgstr "Échec du dernier réamorçage ({0}% de {1})." +#~ msgid "Last reseed failed fully (exception caught)." +#~ msgstr "Échec complet du dernier réamorçage (exception interceptée)." +#~ msgid "System tray icon enabled." +#~ msgstr "Icône de zone de notification système activée." +#~ msgid "System tray icon feature not supported on this platform. Sorry!" +#~ msgstr "" +#~ "Fonctionnalité \"Icône de zone de notification système\" non disponible " +#~ "sur cette plateforme. Désolé!" +#~ msgid "Warning: unable to contact the systray manager" +#~ msgstr "" +#~ "Avertissement: impossible de contacter le gestionnaire de zone de " +#~ "notification." +#~ msgid "System tray icon disabled." +#~ msgstr "Icône de zone de notification système désactivée." +#~ msgid "hour" +#~ msgstr "heure" +#~ msgid "minute" +#~ msgstr "mn" +#~ msgid "minutes" +#~ msgstr "minutes" +#~ msgid "Download" +#~ msgstr "Télécharger" +#~ msgid "" +#~ "Please report bugs on trac." +#~ "i2p2.i2p." +#~ msgstr "" +#~ "Merci de signaler les bogues sur trac.i2p2.i2p." #~ msgid "This is useful in some situations" #~ msgstr "C'est utile dans certains cas" #~ msgid "Start Now" From 26cc6a26b82291e77d1061c1dc6af2fd9b268241 Mon Sep 17 00:00:00 2001 From: magma Date: Sat, 26 Mar 2011 02:38:34 +0000 Subject: [PATCH 355/463] add --- apps/routerconsole/jsp/help_fr.jsp | 178 +++++++++++++++++++++++++++++ 1 file changed, 178 insertions(+) create mode 100644 apps/routerconsole/jsp/help_fr.jsp diff --git a/apps/routerconsole/jsp/help_fr.jsp b/apps/routerconsole/jsp/help_fr.jsp new file mode 100644 index 000000000..b57b0e47f --- /dev/null +++ b/apps/routerconsole/jsp/help_fr.jsp @@ -0,0 +1,178 @@ +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> + +<% + /* + * Do not tag this file for translation - copy it to help_xx.jsp and translate inline. + */ +%> +Console du routeur I2P - Aide +<%@include file="css.jsi" %> + +<%@include file="summary.jsi" %> +Traduction de mars 2011 (magma@mail.i2p) +

    Aide et assistance du routeur I2P

    +

    +Si vous souhaitez améliorer ou traduire la documentation ou d'autres versants du projet, merci de vous reporter à +la page consacrée aux volontaires. +

    D'autres détails sont disponibles ici: +

    +
    Il y a aussi le forum I2P +et l'IRC.

    + +

    Informations du panneau de contrôle

    +Plusieurs des statistiques du panneau de contrôle peuvent être configurées pour être +affichées sous forme de graphiques pour l'analyse à postériori. +

    GÉNÉRAL

      +
    • Identité locale: +Cliquez sur "Afficher" pour voir l'empreinte Base64 à 44 caractères (256 bits) de votre routeur. Le hachage +complet est affiché sur votre page d'infos routeur. Ne la divulguez jamais à personne, +car l'info routeur contient votre adresse IP. +
    • Version: +La version d'I2P qui vous affiche actuellement cette page. +
    • Lancé depuis: +Indique depuis combien de temps le routeur tourne. +
    • Réseau: +Statut de joignabilité du routeur par les autres routeurs. +Plus d'infos sur la page de configuration. +

    Pairs

      +
    • Actifs: +le premier nombre est celui des routeurs avec qui le votre a communiqué dans les dernières minutes. Ça peut varier de +8-10 à plusieurs centaines, suivant votre bande passante, son ratio de partage, et le trafic généré localement. Le +second est celui des pairs vus dans les dernières heures. Ces nombres penvent varier sensiblement sans conséquence. +[Activer les courbes]. +
    • Rapides: +le nombre de pairs que vous mettez à contribution pour construire vos tunnels clients. En général dans une tranche de +8 à 30. Vos pairs rapides sont détaillés sur la page profils. +[Activer les courbes]. +
    • Hautes capacités: +nombre des pairs que vous utilisez pour construire quelques uns de vos tunnels exploratoires. Habituellement de 8 à 75. +Les pairs rapides font partie du groupe des \"Hautes capacités\". Vos pairs à hautes capacités sont aussi listés sur +la page profils. +[Activer les courbes]. +
    • Bien intégrés: +vous utilisez ce groupe pour vos requêtes à la base de données du réseau. Ils sont souvent des pairs de remplissage par +diffusion ("floodfill"). Vos pairs "bien intégrés" sont affichés en bas de la même page +profils. +
    • Connus: +c'est tous les routeurs dont vous connaissez l'existance. Il sont listés sur la page +base de données du réseau. De moins de 100 à 1000 ou plus. Ce nombre ne représente pas la +taille totale du réseau; il varie en fonction de votre bande passante totale, du ratio de partage, et du trafic local. +I2P n'a pas besoin que chaque routeur connaisse tous les autres. +

    Bande passante entrée/sortie

    +Ça parle tout seul. Toutes les valeurs sont en octets par seconde (o/s), pas en bits par seconde (b/s). Modifiez vos +limites de bande passante sur la page de configuration. +Le graphique de bande passante est activé par défaut.
    + +

    Destinations locales

    +C'est le nom I2P des applications qui se connectent par votre routeur. Elles peuvent être des clients lancés depuis +I2PTunnel ou des programmes tiers qui se connectent via SAM, BOB ou directement à +I2CP. +

    Tunnels entrée/sortie

    +The actual tunnels are shown on the the tunnels page.
      +
    • Exploratory: +Tunnels built by your router and used for communication with the floodfill peers, +building new tunnels, and testing existing tunnels.
      +
    • Client: +Tunnels built by your router for each client's use. +
    • Participating: +Tunnels built by other routers through your router. +This may vary widely depending on network demand, your +shared bandwidth, and amount of locally-generated traffic. +The recommended method for limiting participating tunnels is +to change your share percentage on the configuration page. +You may also limit the total number by setting router.maxParticipatingTunnels=nnn on +the advanced configuration page. [Enable graphing]. +
    • Share ratio: +The number of participating tunnels you route for others, divided by the total number of hops in +all your exploratory and client tunnels. +A number greater than 1.00 means you are contributing more tunnels to the network than you are using. +
    + +

    Congestion

    +Some basic indications of router overload:
      +
    • Job lag: +How long jobs are waiting before execution. The job queue is listed on the jobs page. +Unfortunately, there are several other job queues in the router that may be congested, +and their status is not available in the router console. +The job lag should generally be zero. +If it is consistently higher than 500ms, your computer is very slow, or the +router has serious problems. +[Enable graphing]. +
    • Message delay: +How long an outbound message waits in the queue. +This should generally be a few hundred milliseconds or less. +If it is consistently higher than 1000ms, your computer is very slow, +or you should adjust your bandwidth limits, or your (bittorrent?) clients +may be sending too much data and should have their transmit bandwidth limit reduced. +[Enable graphing] (transport.sendProcessingTime). +
    • Tunnel lag: +This is the round trip time for a tunnel test, which sends a single message +out a client tunnel and in an exploratory tunnel, or vice versa. +It should usually be less than 5 seconds. +If it is consistently higher than that, your computer is very slow, +or you should adjust your bandwidth limits, or there are network problems. +[Enable graphing] (tunnel.testSuccessTime). +
    • Handle backlog: +This is the number of pending requests from other routers to build a +participating tunnel through your router. +It should usually be close to zero. +If it is consistently high, your computer is too slow, +and you should reduce your share bandwidth limits. +
    • Accepting/Rejecting: +Your router's status on accepting or rejecting +requests from other routers to build a +participating tunnel through your router. +Your router may accept all requests, accept or reject a percentage of requests, +or reject all requests for a number of reasons, to control +the bandwidth and CPU demands and maintain capacity for +local clients.
    + +

    Legal stuff

    The I2P router (router.jar) and SDK (i2p.jar) are almost entirely public domain, with +a few notable exceptions:

      +
    • ElGamal and DSA code, under the BSD license, written by TheCrypto
    • +
    • SHA256 and HMAC-SHA256, under the MIT license, written by the Legion of the Bouncycastle
    • +
    • AES code, under the Cryptix (MIT) license, written by the Cryptix team
    • +
    • SNTP code, under the BSD license, written by Adam Buckley
    • +
    • The rest is outright public domain, written by jrandom, mihi, hypercubus, oOo, + ugha, duck, shendaras, and others.
    • +
    + +

    On top of the I2P router are a series of client applications, each with their own set of +licenses and dependencies. This webpage is being served as part of the I2P routerconsole +client application, which is built off a trimmed down Jetty +instance (trimmed down, as in, we do not include the demo apps or other add-ons, and we simplify configuration), +allowing you to deploy standard JSP/Servlet web applications into your router. Jetty in turn makes use of +Apache's javax.servlet (javax.servlet.jar) implementation. +This product includes software developed by the Apache Software Foundation +(http://www.apache.org/).

    + +

    Another application you can see on this webpage is I2PTunnel +(your web interface) - a GPL'ed application written by mihi that +lets you tunnel normal TCP/IP traffic over I2P (such as the eepproxy and the irc proxy). There is also a +susimail web based mail client available on +the console, which is a GPL'ed application written by susi23. The addressbook application, written by +Ragnarok helps maintain your hosts.txt files (see ./addressbook/ for +more information).

    + +

    The router by default also includes human's public domain SAM bridge, +which other client applications (such the bittorrent port) can use. +There is also an optimized library for doing large number calculations - jbigi - which in turn uses the +LGPL licensed GMP library, tuned for various PC architectures. Launchers for windows users are built with Launch4J, and the installer is built with IzPack. For +details on other applications available, as well as their licenses, please see the +license policy. Source for the I2P code and most bundled +client applications can be found on our download page. +.

    + +

    Change Log

    + + <% java.io.File fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getBaseDir(), "history.txt"); %> + + + + + +

    View the full change log +


    From d97f991230b92c26e635fa94bc00c7b6a357a2f8 Mon Sep 17 00:00:00 2001 From: magma Date: Sat, 26 Mar 2011 08:59:39 +0000 Subject: [PATCH 356/463] fix --- apps/i2psnark/locale/messages_fr.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/i2psnark/locale/messages_fr.po b/apps/i2psnark/locale/messages_fr.po index abac71a9f..b1acafa74 100644 --- a/apps/i2psnark/locale/messages_fr.po +++ b/apps/i2psnark/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-25 12:48+0000\n" -"PO-Revision-Date: 2011-03-26 01:27+0100\n" +"PO-Revision-Date: 2011-03-26 09:58+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -873,7 +873,7 @@ msgstr "Sauvegarder les priorités" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967 #, java-format msgid "Torrent fetched from {0}" -msgstr "Torrent envoyé de {0}" +msgstr "Torrent reçu de {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988 #, java-format From d68e59fb04e3fc27901df1650f647d659cd85fb6 Mon Sep 17 00:00:00 2001 From: magma Date: Sat, 26 Mar 2011 10:03:39 +0000 Subject: [PATCH 357/463] tweak --- apps/routerconsole/locale/messages_fr.po | 25 +++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index ce7be1c36..425824e5e 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-03-25 21:19+0000\n" -"PO-Revision-Date: 2011-03-26 02:46+0100\n" +"POT-Creation-Date: 2011-03-26 08:34+0000\n" +"PO-Revision-Date: 2011-03-26 11:02+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -4070,6 +4070,7 @@ msgstr "Interconnexion configuration" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:234 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005ffr_jsp.java:226 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:226 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:226 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:226 @@ -4104,6 +4105,7 @@ msgstr "Panneau de contrôle" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:247 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:236 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005ffr_jsp.java:239 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:239 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:239 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:239 @@ -4139,6 +4141,7 @@ msgstr "Actualiser (s)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:251 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:240 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005ffr_jsp.java:243 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:243 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:243 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:243 @@ -4163,23 +4166,23 @@ msgstr "Configuration I2P réseau" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:316 msgid "Bandwidth limiter" -msgstr "Limiteur de bande passante" +msgstr "Gestionnaire de bande passante" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:318 msgid "I2P will work best if you configure your rates to match the speed of your internet connection." -msgstr "I2P fonctionnera mieux si vous configurez le débit de transmission et réception pour qu\\''ils soient égales à ceux de votre connexion internet." +msgstr "I2P fonctionnera mieux si vous configurez les débits de réception et d\\''émission pour qu\\''ils correspondent à ceux de votre connexion Internet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:322 msgid "KBps In" -msgstr "KOps entrant" +msgstr "ko/s entrants" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:336 msgid "KBps Out" -msgstr "KOps sortant" +msgstr "ko/s sortants" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:352 msgid "Share" -msgstr "Partager" +msgstr "Partagés" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:359 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:327 @@ -4190,15 +4193,15 @@ msgstr "NOTER" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:361 #, java-format msgid "You have configured I2P to share only {0} KBps." -msgstr "Vous avez configuré I2P à partager que {0} KOps." +msgstr "Vous avez configuré I2P pour qu'il ne partage que {0} ko/s." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:364 msgid "I2P requires at least 12KBps to enable sharing. " -msgstr "I2P a besoin de plus de 12KOps afin d\\''activer le partage de bande passante" +msgstr "I2P a besoin de plus de 12ko/s afin d\\''activer le partage de bande passante." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:365 msgid "Please enable sharing (participating in tunnels) by configuring more bandwidth. " -msgstr "Veuillez activer le partage de bande passante (tunnels participants) en augmentant votre bande passante." +msgstr "Merci d\\'' activer le partage de bande passante (en participant aux tunnels) en augmentant votre bande passante, si possible." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:366 msgid "It improves your anonymity by creating cover traffic, and helps the network." @@ -4207,7 +4210,7 @@ msgstr "Cela aidera votre anonymat en cachant vos données parmi les données de #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:369 #, java-format msgid "You have configured I2P to share {0} KBps." -msgstr "Vous avez configuré I2P à partager {0} KOps." +msgstr "Vous avez configuré le partage I2P à {0}ko/s." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:372 msgid "The higher the share bandwidth the more you improve your anonymity and help the network." From b639482c4ac2012f1bc3d546ed7dbd57283f55d4 Mon Sep 17 00:00:00 2001 From: magma Date: Sat, 26 Mar 2011 10:47:16 +0000 Subject: [PATCH 358/463] tweak --- apps/routerconsole/jsp/help_fr.jsp | 61 +++++++++++------------- apps/routerconsole/locale/messages_fr.po | 14 +++--- 2 files changed, 36 insertions(+), 39 deletions(-) diff --git a/apps/routerconsole/jsp/help_fr.jsp b/apps/routerconsole/jsp/help_fr.jsp index b57b0e47f..26fc266ad 100644 --- a/apps/routerconsole/jsp/help_fr.jsp +++ b/apps/routerconsole/jsp/help_fr.jsp @@ -40,7 +40,7 @@ Plus d'infos sur la page de configuration.

    Pairs

    • Actifs: le premier nombre est celui des routeurs avec qui le votre a communiqué dans les dernières minutes. Ça peut varier de -8-10 à plusieurs centaines, suivant votre bande passante, son ratio de partage, et le trafic généré localement. Le +8-10 à plusieurs centaines, selon votre bande passante et son rapport de partage, et le trafic généré localement. Le second est celui des pairs vus dans les dernières heures. Ces nombres penvent varier sensiblement sans conséquence. [Activer les courbes].
    • Rapides: @@ -56,11 +56,10 @@ la page profils. vous utilisez ce groupe pour vos requêtes à la base de données du réseau. Ils sont souvent des pairs de remplissage par diffusion ("floodfill"). Vos pairs "bien intégrés" sont affichés en bas de la même page profils. -
    • Connus: -c'est tous les routeurs dont vous connaissez l'existance. Il sont listés sur la page -base de données du réseau. De moins de 100 à 1000 ou plus. Ce nombre ne représente pas la -taille totale du réseau; il varie en fonction de votre bande passante totale, du ratio de partage, et du trafic local. -I2P n'a pas besoin que chaque routeur connaisse tous les autres. +
    • Connus: c'est tous les routeurs dont vous connaissez l'existance. Il sont listés sur la +page base de données du réseau. De moins de 100 à 1000 ou plus. Ce nombre ne représente pas la +taille totale du réseau; il varie en fonction de votre bande passante totale et son rapport de partage, et du trafic +local. I2P n'a pas besoin que chaque routeur connaisse tous les autres.

    Bande passante entrée/sortie

    Ça parle tout seul. Toutes les valeurs sont en octets par seconde (o/s), pas en bits par seconde (b/s). Modifiez vos limites de bande passante sur la page de configuration. @@ -70,30 +69,25 @@ Le graphique de bande passante est activé par défaut. C'est le nom I2P des applications qui se connectent par votre routeur. Elles peuvent être des clients lancés depuis I2PTunnel ou des programmes tiers qui se connectent via SAM, BOB ou directement à I2CP. -

    Tunnels entrée/sortie

    -The actual tunnels are shown on the the tunnels page.
      -
    • Exploratory: -Tunnels built by your router and used for communication with the floodfill peers, -building new tunnels, and testing existing tunnels.
      -
    • Client: -Tunnels built by your router for each client's use. -
    • Participating: -Tunnels built by other routers through your router. -This may vary widely depending on network demand, your -shared bandwidth, and amount of locally-generated traffic. -The recommended method for limiting participating tunnels is -to change your share percentage on the configuration page. -You may also limit the total number by setting router.maxParticipatingTunnels=nnn on -the advanced configuration page. [Enable graphing]. -
    • Share ratio: -The number of participating tunnels you route for others, divided by the total number of hops in -all your exploratory and client tunnels. -A number greater than 1.00 means you are contributing more tunnels to the network than you are using. +

      TUNNELS:

      +Les tunnels actuels sont affichés sur la page tunnels.
        +
      • Exploratoires: tunnels créés par votre routeur et utilisés avec les +pairs diffuseurs pour la création des nouveaux tunnels et le test des tunnels existants.
        +
      • Clients: tunnels créés par votre routeur pour chaque utilisation cliente. +
      • Participants: les tunnels créés par d'autres routeurs et qui passent par le votre. Leur +nombre dépend largement de la demande du réseau, de votre part de bande passante partagée, et du trafic local. +La méthode recommandée pour limiter leur nombre est de diminuer le rapport de bande passante partagée dans la +configuration. Vous pouvez également limiter ce nombre en définissant la variable +router.maxParticipatingTunnels=nnn dans la configuration avancée. +[Activer les statistiques]. +
      • Rapport de partage: le nombre de tunnels participants que vous routez pour les autres, +divisé par le nombre total de sauts dans tous vos tunnels exploratoires et clients. S'il est supérieur à 1, cela +signifie que vous contribuez à plus de tunnels que vous n'en utilisez.
      -

      Congestion

      -Some basic indications of router overload:
        -
      • Job lag: +

        ENCOMBREMENT

        +Indications de base sur la charge du routeur:
          +
        • Retard de tâches: How long jobs are waiting before execution. The job queue is listed on the jobs page. Unfortunately, there are several other job queues in the router that may be congested, and their status is not available in the router console. @@ -101,21 +95,21 @@ The job lag should generally be zero. If it is consistently higher than 500ms, your computer is very slow, or the router has serious problems. [Enable graphing]. -
        • Message delay: +
        • Retard de messages: How long an outbound message waits in the queue. This should generally be a few hundred milliseconds or less. If it is consistently higher than 1000ms, your computer is very slow, or you should adjust your bandwidth limits, or your (bittorrent?) clients may be sending too much data and should have their transmit bandwidth limit reduced. [Enable graphing] (transport.sendProcessingTime). -
        • Tunnel lag: +
        • Retard de tunnels: This is the round trip time for a tunnel test, which sends a single message out a client tunnel and in an exploratory tunnel, or vice versa. It should usually be less than 5 seconds. If it is consistently higher than that, your computer is very slow, or you should adjust your bandwidth limits, or there are network problems. [Enable graphing] (tunnel.testSuccessTime). -
        • Handle backlog: +
        • En attente: This is the number of pending requests from other routers to build a participating tunnel through your router. It should usually be close to zero. @@ -160,7 +154,10 @@ more information).

          The router by default also includes human's public domain SAM bridge, which other client applications (such the bittorrent port) can use. There is also an optimized library for doing large number calculations - jbigi - which in turn uses the -LGPL licensed GMP library, tuned for various PC architectures. Launchers for windows users are built with Launch4J, and the installer is built with IzPack. For +LGPL licensed GMP library, tuned for various PC architectures. +Launchers for windows users are built +with Launch4J, and the installer is built with +IzPack. For details on other applications available, as well as their licenses, please see the license policy. Source for the I2P code and most bundled client applications can be found on our download page. diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 425824e5e..33044f491 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-26 08:34+0000\n" -"PO-Revision-Date: 2011-03-26 11:02+0100\n" +"PO-Revision-Date: 2011-03-26 11:45+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -3268,7 +3268,7 @@ msgstr "Client webmail anonyme" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:77 msgid "Webmail" -msgstr "messagerie Web" +msgstr "Messagerie web" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:81 msgid "Anonymous resident webserver" @@ -3454,23 +3454,23 @@ msgstr "Montrer les tâches du routeur qui sont à traiter " #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412 msgid "Congestion" -msgstr "Saturation réseau" +msgstr "Encombrement" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 msgid "Job lag" -msgstr "Tâche décalage" +msgstr "Retard de tâches" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:423 msgid "Message delay" -msgstr "Message retard" +msgstr "Retard de messages" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:429 msgid "Tunnel lag" -msgstr "Tunnel décalage" +msgstr "Retard de tunnels" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435 msgid "Backlog" -msgstr "Retard accumulé" +msgstr "En attente" #: ../java/src/net/i2p/router/web/SummaryHelper.java:106 msgid "ERR-Client Manager I2CP Error - check logs" From b3dec96e1e82a3cadb2e83d969085b723387a83a Mon Sep 17 00:00:00 2001 From: magma Date: Sat, 26 Mar 2011 15:03:26 +0000 Subject: [PATCH 359/463] see trac #450 --- apps/routerconsole/jsp/help.jsp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/routerconsole/jsp/help.jsp b/apps/routerconsole/jsp/help.jsp index 636e8800d..76e723fff 100644 --- a/apps/routerconsole/jsp/help.jsp +++ b/apps/routerconsole/jsp/help.jsp @@ -47,7 +47,7 @@ This may range from 8-10 to several hundred, depending on your total bandwidth, shared bandwidth, and locally-generated traffic. The second number is the number of peers seen in the last hour or so. Do not be concerned if these numbers vary widely. -[Enable graphing]. +

        • Fast: This is the number of peers you use for building client tunnels. It is generally in the range 8-30. Your fast peers are shown on the profiles page. From 52a0ab5482be14aa4569ed0f1aa848982ae259c8 Mon Sep 17 00:00:00 2001 From: magma Date: Sat, 26 Mar 2011 15:24:23 +0000 Subject: [PATCH 360/463] same for highCap --- apps/routerconsole/jsp/help.jsp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/routerconsole/jsp/help.jsp b/apps/routerconsole/jsp/help.jsp index 76e723fff..9b9e3da55 100644 --- a/apps/routerconsole/jsp/help.jsp +++ b/apps/routerconsole/jsp/help.jsp @@ -56,7 +56,7 @@ range 8-30. Your fast peers are shown on the profiles pag This is the number of peers you use for building some of your exploratory tunnels. It is generally in the range 8-75. The fast peers are included in the high capacity tier. Your high capacity peers are shown on the profiles page. -[Enable graphing]. +
        • Well Integrated: This is the number of peers you use for network database inquiries. These are usually the "floodfill" peers. From 3fe232a5357df4ff9d4f8a85fa994cadd4d6d754 Mon Sep 17 00:00:00 2001 From: magma Date: Sat, 26 Mar 2011 16:49:29 +0000 Subject: [PATCH 361/463] typo --- installer/resources/initialNews/initialNews_fr.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/installer/resources/initialNews/initialNews_fr.xml b/installer/resources/initialNews/initialNews_fr.xml index 6386394c3..2007268ea 100644 --- a/installer/resources/initialNews/initialNews_fr.xml +++ b/installer/resources/initialNews/initialNews_fr.xml @@ -1,7 +1,7 @@
          -

          Mille bravos pour cette installation d'I2P!

          +

          Mille bravos pour cette installation d'I2P !

          -Bienvenue sur I2P! +Bienvenue sur I2P ! Merci de patienter le temps qu'I2P démarre et trouve des pairs.

          From b14c17c88406edcf07938181b7bc906d0e87e1fa Mon Sep 17 00:00:00 2001 From: magma Date: Sat, 26 Mar 2011 17:50:54 +0000 Subject: [PATCH 362/463] add news_fr.xml .... feel free to use for tests or mtn delete --- installer/resources/news_fr.xml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 installer/resources/news_fr.xml diff --git a/installer/resources/news_fr.xml b/installer/resources/news_fr.xml new file mode 100644 index 000000000..ab045e4bf --- /dev/null +++ b/installer/resources/news_fr.xml @@ -0,0 +1,21 @@ + +

          +

          2011-03-02: La version 0.8.4 est sortie

          +

          +Cette version 0.8.4 contient quelques améliorations de performances et des corrections de bogues importantes. +i2psnark prend désormais en charge les liens magnet. +Comme d'habitude, la mise à jour est recommmandée. +

          +Merci de participer à la croissance du réseau. +Venez nous encourager sur le canal IRC #i2p-help. +Impliquez-vous, +passez le mot, +et un petit don! +Si vous trouvez un bogue, merci d'entrer un rapport sur trac. +Nous cherchons toujours des volontaires pour travailler sur les traductions existantes et des nouvelles. +Merci de vous manifester sur l'IRC #i2p-dev. +

          +
          From 9911d22ac3ec023cb08be8e10c3fd1404bf9782c Mon Sep 17 00:00:00 2001 From: magma Date: Sat, 26 Mar 2011 20:54:17 +0000 Subject: [PATCH 363/463] transl --- apps/routerconsole/jsp/help_fr.jsp | 136 +++++++++++++---------------- 1 file changed, 59 insertions(+), 77 deletions(-) diff --git a/apps/routerconsole/jsp/help_fr.jsp b/apps/routerconsole/jsp/help_fr.jsp index 26fc266ad..e206d965a 100644 --- a/apps/routerconsole/jsp/help_fr.jsp +++ b/apps/routerconsole/jsp/help_fr.jsp @@ -24,7 +24,7 @@ et l'IRC.

          Informations du panneau de contrôle

          Plusieurs des statistiques du panneau de contrôle peuvent être configurées pour être -affichées sous forme de graphiques pour l'analyse à postériori. +affichées sous forme de graphiques pour l'analyse à posteriori.

          GÉNÉRAL

          • Identité locale: Cliquez sur "Afficher" pour voir l'empreinte Base64 à 44 caractères (256 bits) de votre routeur. Le hachage @@ -42,16 +42,16 @@ Plus d'infos sur la page de configuration. le premier nombre est celui des routeurs avec qui le votre a communiqué dans les dernières minutes. Ça peut varier de 8-10 à plusieurs centaines, selon votre bande passante et son rapport de partage, et le trafic généré localement. Le second est celui des pairs vus dans les dernières heures. Ces nombres penvent varier sensiblement sans conséquence. -[Activer les courbes]. +
          • Rapides: le nombre de pairs que vous mettez à contribution pour construire vos tunnels clients. En général dans une tranche de 8 à 30. Vos pairs rapides sont détaillés sur la page profils. -[Activer les courbes]. +[Activer le graphique].
          • Hautes capacités: nombre des pairs que vous utilisez pour construire quelques uns de vos tunnels exploratoires. Habituellement de 8 à 75. Les pairs rapides font partie du groupe des \"Hautes capacités\". Vos pairs à hautes capacités sont aussi listés sur la page profils. -[Activer les courbes]. +
          • Bien intégrés: vous utilisez ce groupe pour vos requêtes à la base de données du réseau. Ils sont souvent des pairs de remplissage par diffusion ("floodfill"). Vos pairs "bien intégrés" sont affichés en bas de la même page @@ -63,7 +63,7 @@ local. I2P n'a pas besoin que chaque routeur connaisse tous les autres.

          Bande passante entrée/sortie

          Ça parle tout seul. Toutes les valeurs sont en octets par seconde (o/s), pas en bits par seconde (b/s). Modifiez vos limites de bande passante sur la page de configuration. -Le graphique de bande passante est activé par défaut.
          +Le graphique de bande passante est activé par défaut.

          Destinations locales

          C'est le nom I2P des applications qui se connectent par votre routeur. Elles peuvent être des clients lancés depuis @@ -79,7 +79,7 @@ nombre dépend largement de la demande du réseau, de votre part de bande passan La méthode recommandée pour limiter leur nombre est de diminuer le rapport de bande passante partagée dans la configuration. Vous pouvez également limiter ce nombre en définissant la variable router.maxParticipatingTunnels=nnn dans la configuration avancée. -[Activer les statistiques]. +[Activer le graphique].
        • Rapport de partage: le nombre de tunnels participants que vous routez pour les autres, divisé par le nombre total de sauts dans tous vos tunnels exploratoires et clients. S'il est supérieur à 1, cela signifie que vous contribuez à plus de tunnels que vous n'en utilisez. @@ -87,83 +87,65 @@ signifie que vous contribuez à plus de tunnels que vous n'en utilisez.

          ENCOMBREMENT

          Indications de base sur la charge du routeur:
            -
          • Retard de tâches: -How long jobs are waiting before execution. The job queue is listed on the jobs page. -Unfortunately, there are several other job queues in the router that may be congested, -and their status is not available in the router console. -The job lag should generally be zero. -If it is consistently higher than 500ms, your computer is very slow, or the -router has serious problems. -[Enable graphing]. -
          • Retard de messages: -How long an outbound message waits in the queue. -This should generally be a few hundred milliseconds or less. -If it is consistently higher than 1000ms, your computer is very slow, -or you should adjust your bandwidth limits, or your (bittorrent?) clients -may be sending too much data and should have their transmit bandwidth limit reduced. -[Enable graphing] (transport.sendProcessingTime). -
          • Retard de tunnels: -This is the round trip time for a tunnel test, which sends a single message -out a client tunnel and in an exploratory tunnel, or vice versa. -It should usually be less than 5 seconds. -If it is consistently higher than that, your computer is very slow, -or you should adjust your bandwidth limits, or there are network problems. -[Enable graphing] (tunnel.testSuccessTime). -
          • En attente: -This is the number of pending requests from other routers to build a -participating tunnel through your router. -It should usually be close to zero. -If it is consistently high, your computer is too slow, -and you should reduce your share bandwidth limits. -
          • Accepting/Rejecting: -Your router's status on accepting or rejecting -requests from other routers to build a -participating tunnel through your router. -Your router may accept all requests, accept or reject a percentage of requests, -or reject all requests for a number of reasons, to control -the bandwidth and CPU demands and maintain capacity for -local clients.
          +
        • Retard de tâches: temps d'attente des tâches avant exécution. La file d'attente est +présentée la pages des tâches. Malheureusement, il y a dans le routeur plusieurs autres files +d'attentes qui ne peuvent être affichées dans la console. Le retard de tâches devrait rester à zéro en permamence. s'il +régulièrement supérieur à 500ms, soit votre PC est très lent, soit le routeur a de sérieux problèmes. +[Activer le graphique]. +
        • Retard de messages: temps de rétention des messages en file d'attente d'envois, normalement +quelques centaines de ms ou moins. Au dessus d'une seconde, votre PC est très lent, vous devriez fignoler vos réglages +de bande passante, ou vos clients (bittorrent, iMule...?) envoient trop de données et il faudrait voir à leur tenir +la bride. [Activer le graphique] +(transport.sendProcessingTime). +
        • Retard de tunnels: le temps d'aller-retour pour un test de tunnel (envoi d'un seul message +par un tunnel client et dans un tunnel exploratoire ou vice versa. Normalement inférieur à 5s. Si c'est constamment +supérieur, votre PC est très lent, vous devriez retoucher vos limites de bande passante, ou il y a un problème réseau. +[Activer le graphique] (tunnel.testSuccessTime). +
        • En attente: nombre de requêtes de création de tunnels participants en attente provenant +d'autres routeurs. Normalement proche de zéro. Sinon, votre ordinateur est trop lent et vous devriez diminuer votre +limite de bande passante partagée. +
        • Accepte/Refuse: c'est le statut de votre routeur au regard de son comportement vis à vis +des demandes de création de tunnels participants provenant d'autres routeurs. Votre routeur peut accepter ou refuser +tout ou partie des requêtes, ou les refuser en totalité pour des raisons prévues telles que le contrôle de la bande +passante et des ressources CPU en vue de préserver les performances des clients locaux.
        -

        Legal stuff

        The I2P router (router.jar) and SDK (i2p.jar) are almost entirely public domain, with -a few notable exceptions:

          -
        • ElGamal and DSA code, under the BSD license, written by TheCrypto
        • -
        • SHA256 and HMAC-SHA256, under the MIT license, written by the Legion of the Bouncycastle
        • -
        • AES code, under the Cryptix (MIT) license, written by the Cryptix team
        • -
        • SNTP code, under the BSD license, written by Adam Buckley
        • -
        • The rest is outright public domain, written by jrandom, mihi, hypercubus, oOo, - ugha, duck, shendaras, and others.
        • +

          Informations légales

          Le routeur I2P (router.jar) et le SDK (i2p.jar) sont presque entièrement dans le +domaine public, à quelques notobles exceptions près:

            +
          • Le code ElGamal et DSA, sous licence BSD, écrits par TheCrypto
          • +
          • SHA256 et HMAC-SHA256, sous licence MIT, écrits par the Legion of the Bouncycastle
          • +
          • Le code AES, sous licence Cryptix (MIT), écrit pas l'équipe the Cryptix
          • +
          • Le code SNTP, sous licence BSD, écrit par Adam Buckley
          • +
          • Le reste, directement issu du domaine public, est écrit par jrandom, mihi, hypercubus, oOo, + ugha, duck, shendaras, et d'autres.
          -

          On top of the I2P router are a series of client applications, each with their own set of -licenses and dependencies. This webpage is being served as part of the I2P routerconsole -client application, which is built off a trimmed down Jetty -instance (trimmed down, as in, we do not include the demo apps or other add-ons, and we simplify configuration), -allowing you to deploy standard JSP/Servlet web applications into your router. Jetty in turn makes use of -Apache's javax.servlet (javax.servlet.jar) implementation. -This product includes software developed by the Apache Software Foundation -(http://www.apache.org/).

          +

          Au-dessus du routeur I2P on a une série d'applications clientes, ayant chacune ses particularités en termes de +licences et de dépendances. Cette page est affichée en tant qu'élément de l'application cliente console du routeur I2P, +qui est une version allégée d'une instance Jetty (allégée en +ce que nous n'avons pas inclus les applications de démo et autres compléments, et que nous avons simplifié la +configuration), vous permettant de déployer dans votre routeur des applications web JSP/Servlet standards. De son côté +Jetty fait usage de l'implémentation javax.servlet d'Apache. Ce dispositif inclus du logiciel développé par la +fondation Apache Software (http://www.apache.org/).

          -

          Another application you can see on this webpage is I2PTunnel -(your web interface) - a GPL'ed application written by mihi that -lets you tunnel normal TCP/IP traffic over I2P (such as the eepproxy and the irc proxy). There is also a -susimail web based mail client available on -the console, which is a GPL'ed application written by susi23. The addressbook application, written by -Ragnarok helps maintain your hosts.txt files (see ./addressbook/ for -more information).

          +

          Une autre application visible sur cette page: I2PTunnel +(votre interface web) sous licence GPL écrite par mihi qui vous permet de +mettre en tunnels le trafic normal TCP/IP sur I2P (comme les proxy eep et le proxy irc). Il y a aussi un client webmail +susimail disponible dans la console, qui est sous +licence GPL et écrit par susi23. L'application carnet d'adresses, écrite par +Ragnarok gère votre fichier hosts.txt (voir ./addressbook/ pour plus de détails).

          -

          The router by default also includes human's public domain SAM bridge, -which other client applications (such the bittorrent port) can use. -There is also an optimized library for doing large number calculations - jbigi - which in turn uses the -LGPL licensed GMP library, tuned for various PC architectures. -Launchers for windows users are built -with Launch4J, and the installer is built with -IzPack. For -details on other applications available, as well as their licenses, please see the -license policy. Source for the I2P code and most bundled -client applications can be found on our download page. +

          Le routeur inclu aussi par défaut le pont SAM du domaine public de l'humanité, +que les autres applications clientes (comme le portage bittorrent) peuvent à leur +tour utiliser. Il y a aussi une bibliothèque optimisée pour les calculs sur les grand nombres - jbigi - qui de son +côté utilise la bibliothèque sous licence LGPL GMP, adaptée à diverses architectures +PC. Les lanceurs pour Windows sont faits avec Launch4J, et l'installeur +avec IzPack. Les détails sur les autres applications disponibles comme sur +leurs licences respectives, référez-vous à notre politique de licences. +Les sources du code I2P et de la plupart des applications jointes est sur notre page de +téléchargements. .

          -

          Change Log

          +

          Historique des évolutions

          <% java.io.File fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getBaseDir(), "history.txt"); %> @@ -171,5 +153,5 @@ client applications can be found on our d -

          View the full change log +

          Historique intégral


          From 4fbde3a0bcec4c4bc6d043f80873a65f408c2ab4 Mon Sep 17 00:00:00 2001 From: magma Date: Sat, 26 Mar 2011 20:55:47 +0000 Subject: [PATCH 364/463] better --- apps/routerconsole/locale/messages_fr.po | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 33044f491..656152f92 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-26 08:34+0000\n" -"PO-Revision-Date: 2011-03-26 11:45+0100\n" +"PO-Revision-Date: 2011-03-26 21:54+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -99,44 +99,44 @@ msgstr "IP bannie(s) via entrée blocklist.txt {0}" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:92 msgid "Rejecting tunnels: Shutting down" -msgstr "Rejet tous tunnels: Arrêt en cours" +msgstr "Refuse les tunnels: (arrêt en cours)" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:141 msgid "Rejecting tunnels: High message delay" -msgstr "Tunnels rejetés: délai de messages élevé" +msgstr "Refus de tunnels: (délai de messages élevé)" #. 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 "Rejet tous tunnels: trop de requêtes" +msgstr "Refuse la plupart des tunnels: (trop de requêtes)" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:233 msgid "Rejecting tunnels: Limit reached" -msgstr "Rejets de tunnels: limite atteinte" +msgstr "Refus de tunnels: (limite atteinte)" #. .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 "Rejets de tunnels: limite de bande passante" +msgstr "Refus de tunnels: (limite de bande passante)" #. 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 "Rejet tous tunnels: limite de bande passante" +msgstr "Refuse la plupart des tunnels: (limite de bande passante)" #. 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 "Tunnels acceptés en majorité" +msgstr "Accepte la plupart des tunnels" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:377 msgid "Accepting tunnels" -msgstr "Tunnels acceptés" +msgstr "Accepte les tunnels" #. NPE, too early #. if (_context.router().getRouterInfo().getBandwidthTier().equals("K")) @@ -144,7 +144,7 @@ msgstr "Tunnels acceptés" #. else #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:488 msgid "Rejecting tunnels" -msgstr "Rejet de tunnels" +msgstr "Refus des tunnels" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:125 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 @@ -5222,7 +5222,7 @@ msgstr "Mise à jour en cours" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:335 msgid "News URL" -msgstr "Actualités URL" +msgstr "URL des actualités" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:339 msgid "Refresh frequency" From 0617ee99cd0662c35761b5ffb492ba2ce696cabf Mon Sep 17 00:00:00 2001 From: HungryHobo Date: Sun, 27 Mar 2011 01:30:30 +0000 Subject: [PATCH 365/463] Fix: Wrong working dir when running as a Windows service --- build.xml | 1 + installer/install.xml | 5 +---- .../resources/set_config_dir_for_nt_service.bat | 4 ++++ .../src/net/i2p/router/startup/WorkingDir.java | 16 ++++++++++++---- 4 files changed, 18 insertions(+), 8 deletions(-) create mode 100644 installer/resources/set_config_dir_for_nt_service.bat diff --git a/build.xml b/build.xml index 678abccf9..a947584ad 100644 --- a/build.xml +++ b/build.xml @@ -408,6 +408,7 @@ + diff --git a/installer/install.xml b/installer/install.xml index 4adcf1609..40a6e59c8 100644 --- a/installer/install.xml +++ b/installer/install.xml @@ -183,8 +183,8 @@ Automatically start I2P in the background + @@ -198,9 +198,6 @@ - diff --git a/installer/resources/set_config_dir_for_nt_service.bat b/installer/resources/set_config_dir_for_nt_service.bat new file mode 100644 index 000000000..adbabdad7 --- /dev/null +++ b/installer/resources/set_config_dir_for_nt_service.bat @@ -0,0 +1,4 @@ +@echo off +cd /d %~dp0 +echo. +echo wrapper.java.additional.5=-Di2p.dir.config="%APPDATA%\i2p">>wrapper.config diff --git a/router/java/src/net/i2p/router/startup/WorkingDir.java b/router/java/src/net/i2p/router/startup/WorkingDir.java index 1a8249798..a1f414ac2 100644 --- a/router/java/src/net/i2p/router/startup/WorkingDir.java +++ b/router/java/src/net/i2p/router/startup/WorkingDir.java @@ -164,14 +164,22 @@ public class WorkingDir { } } - /** Returns false if a directory is empty, or contains nothing besides a subdirectory named plugins */ + /** + * Tests if dir has been set up as a I2P working directory.
          + * Returns false if a directory is empty, or contains nothing besides + * subdirectories named plugins and/or logs.
          + * Returns true if the directory contains something not named + * plugins or logs.
          + * This allows to pre-install plugins before the first router start. + */ private static boolean isSetup(File dir) { if (dir.isDirectory()) { String[] files = dir.list(); - if (files.length == 0) + if (files == null) return false; - if (files.length>1 || !"plugins".equals(files[0])) - return true; + for (String file: files) + if (!"plugins".equals(file) && !"logs".equals(file)) + return true; } return false; } From a188275608f3ae82e541c8507c8e7167698b21e7 Mon Sep 17 00:00:00 2001 From: magma Date: Sun, 27 Mar 2011 09:01:43 +0000 Subject: [PATCH 366/463] revert trac #450: need enable all stats to enable active & fast peers statsgrphs, text added in help, comments removed --- apps/routerconsole/jsp/help.jsp | 4 ++-- apps/routerconsole/jsp/help_fr.jsp | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/apps/routerconsole/jsp/help.jsp b/apps/routerconsole/jsp/help.jsp index 9b9e3da55..d166532de 100644 --- a/apps/routerconsole/jsp/help.jsp +++ b/apps/routerconsole/jsp/help.jsp @@ -47,7 +47,7 @@ This may range from 8-10 to several hundred, depending on your total bandwidth, shared bandwidth, and locally-generated traffic. The second number is the number of peers seen in the last hour or so. Do not be concerned if these numbers vary widely. - +First enable all stats to [Enable graphing].
        • Fast: This is the number of peers you use for building client tunnels. It is generally in the range 8-30. Your fast peers are shown on the profiles page. @@ -56,7 +56,7 @@ range 8-30. Your fast peers are shown on the profiles pag This is the number of peers you use for building some of your exploratory tunnels. It is generally in the range 8-75. The fast peers are included in the high capacity tier. Your high capacity peers are shown on the profiles page. - +First enable all stats to [Enable graphing].
        • Well Integrated: This is the number of peers you use for network database inquiries. These are usually the "floodfill" peers. diff --git a/apps/routerconsole/jsp/help_fr.jsp b/apps/routerconsole/jsp/help_fr.jsp index e206d965a..181c1c5b2 100644 --- a/apps/routerconsole/jsp/help_fr.jsp +++ b/apps/routerconsole/jsp/help_fr.jsp @@ -42,7 +42,8 @@ Plus d'infos sur la page de configuration. le premier nombre est celui des routeurs avec qui le votre a communiqué dans les dernières minutes. Ça peut varier de 8-10 à plusieurs centaines, selon votre bande passante et son rapport de partage, et le trafic généré localement. Le second est celui des pairs vus dans les dernières heures. Ces nombres penvent varier sensiblement sans conséquence. - +[Activer le graphique] (activer auparavant \"toutes +les statistiques\").
        • Rapides: le nombre de pairs que vous mettez à contribution pour construire vos tunnels clients. En général dans une tranche de 8 à 30. Vos pairs rapides sont détaillés sur la page profils. @@ -51,7 +52,8 @@ le nombre de pairs que vous mettez à contribution pour construire vos tunnels c nombre des pairs que vous utilisez pour construire quelques uns de vos tunnels exploratoires. Habituellement de 8 à 75. Les pairs rapides font partie du groupe des \"Hautes capacités\". Vos pairs à hautes capacités sont aussi listés sur la page profils. - +[Activer le graphique] (activer auparavant \"toutes les +statistiques\").
        • Bien intégrés: vous utilisez ce groupe pour vos requêtes à la base de données du réseau. Ils sont souvent des pairs de remplissage par diffusion ("floodfill"). Vos pairs "bien intégrés" sont affichés en bas de la même page From 0b510cdc21fa8e83108a2c5f70b4cdc3ca3fb16f Mon Sep 17 00:00:00 2001 From: magma Date: Sun, 27 Mar 2011 10:03:04 +0000 Subject: [PATCH 367/463] fignolage help_fr & console messages_fr.po --- apps/routerconsole/jsp/help_fr.jsp | 7 +++--- apps/routerconsole/locale/messages_fr.po | 32 ++++++++++++------------ 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/apps/routerconsole/jsp/help_fr.jsp b/apps/routerconsole/jsp/help_fr.jsp index 181c1c5b2..e6b4e4e51 100644 --- a/apps/routerconsole/jsp/help_fr.jsp +++ b/apps/routerconsole/jsp/help_fr.jsp @@ -22,9 +22,10 @@ la page consacrée aux volonta
          Il y a aussi le
          forum I2P et l'IRC.

          -

          Informations du panneau de contrôle

          -Plusieurs des statistiques du panneau de contrôle peuvent être configurées pour être -affichées sous forme de graphiques pour l'analyse à posteriori. +

          Informations du panneau de surveillance

          +Plusieurs des statistiques affichées dans le panneau de surveillance peuvent être +configurées pour être affichées sous forme de graphiques pour +analyse sur la durée.

          GÉNÉRAL

          • Identité locale: Cliquez sur "Afficher" pour voir l'empreinte Base64 à 44 caractères (256 bits) de votre routeur. Le hachage diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 656152f92..32f408803 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-26 08:34+0000\n" -"PO-Revision-Date: 2011-03-26 21:54+0100\n" +"PO-Revision-Date: 2011-03-27 11:56+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -1900,7 +1900,7 @@ msgstr "Avancé" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:397 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:362 msgid "Save changes" -msgstr "Sauvegarder" +msgstr "Enregistrer" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:121 msgid "Rechecking router reachability..." @@ -2435,7 +2435,7 @@ msgstr "Soumission de formulaire incorrecte: vous avez peut-être utilisé le bo #: ../java/src/net/i2p/router/web/GraphHelper.java:93 msgid "Combined bandwidth graph" -msgstr "Graphique de bandes passantes combinées" +msgstr "Graphique combiné de bandes passantes" #. e.g. "statname for 60m" #: ../java/src/net/i2p/router/web/GraphHelper.java:107 @@ -2445,15 +2445,15 @@ msgstr "{0} pour {1}" #: ../java/src/net/i2p/router/web/GraphHelper.java:146 msgid "Configure Graph Display" -msgstr "Graphe affichage configuration" +msgstr "Paramètres d'affichage des graphiques" #: ../java/src/net/i2p/router/web/GraphHelper.java:146 msgid "Select Stats" -msgstr "Sélectionnez les statistiques" +msgstr "Choix des statistiques" #: ../java/src/net/i2p/router/web/GraphHelper.java:150 msgid "Periods" -msgstr "Périodes" +msgstr "Plage (mn)" #: ../java/src/net/i2p/router/web/GraphHelper.java:151 msgid "Plot averages" @@ -2467,7 +2467,7 @@ msgstr "ou" #: ../java/src/net/i2p/router/web/GraphHelper.java:152 msgid "plot events" -msgstr "tracer les événements" +msgstr "les événements" #: ../java/src/net/i2p/router/web/GraphHelper.java:153 msgid "Image sizes" @@ -2488,7 +2488,7 @@ msgstr "pixels" #: ../java/src/net/i2p/router/web/GraphHelper.java:156 msgid "Refresh delay" -msgstr "Delai d\\''actualisation" +msgstr "Actualiser toutes les" #: ../java/src/net/i2p/router/web/GraphHelper.java:171 msgid "Redraw" @@ -5089,19 +5089,19 @@ msgstr "Configuration des statistiques d\\''I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:320 msgid "Configure I2P Stat Collection" -msgstr "Configurer les groupes de statistiques " +msgstr "Sélection des données à collecter" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:322 msgid "Enable full stats?" -msgstr "Activer toutes les statistiques?" +msgstr "Activer toutes les statistiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:329 msgid "change requires restart to take effect" -msgstr "La modification sera prise en compte au démarrage suivant" +msgstr "la modification sera prise en compte au prochain démarrage" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:331 msgid "Stat file" -msgstr "Fichier de statistiques" +msgstr "Fichier des statistiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:335 msgid "Filter" @@ -5110,15 +5110,15 @@ msgstr "Filtre" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:337 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:348 msgid "toggle all" -msgstr "basculer tous" +msgstr "basculer tout" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:350 msgid "Log" -msgstr "Historique" +msgstr "Histo." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:352 msgid "Graph" -msgstr "Graphique" +msgstr "Graph." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:391 msgid "Advanced filter" @@ -5342,7 +5342,7 @@ msgstr "graphiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:249 msgid "I2P Performance Graphs" -msgstr "Graphiques de performances" +msgstr "Graphiques de performances I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:111 msgid "home" From 4d176430642e8cd01499e4c6b5321f8b405d5897 Mon Sep 17 00:00:00 2001 From: magma Date: Sun, 27 Mar 2011 18:37:09 +0000 Subject: [PATCH 368/463] messages_fr.po --- apps/routerconsole/locale/messages_fr.po | 140 +++++++++++------------ 1 file changed, 70 insertions(+), 70 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 32f408803..cde75ae6b 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-26 08:34+0000\n" -"PO-Revision-Date: 2011-03-27 11:56+0100\n" +"PO-Revision-Date: 2011-03-27 20:35+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -301,11 +301,11 @@ msgstr "L\\''écart de temps entre l\\''horloge du pair et la votre" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 msgid "The congestion window, which is how many bytes can be sent without an acknowledgement" -msgstr "La fenêtre de congestion, en nombre d\\''octets transmissibles sans acquitement" +msgstr "Fenêtre de congestion, en nombre d\\''octets transmissibles sans acquittement" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 msgid "The number of sent messages awaiting acknowledgement" -msgstr "Le nombre de messages en attente d\\''acquitement" +msgstr "Nombre de messages en attente d\\''acquittement" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 msgid "The maximum number of concurrent messages to send" @@ -321,7 +321,7 @@ msgstr "Le seuil de démarrage lent" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 msgid "The round trip time in milliseconds" -msgstr "L\\''aller-retour en ms" +msgstr "Aller-retour en ms" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 @@ -1529,7 +1529,7 @@ msgstr "Enregistrer la configuration du greffon" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:51 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:461 msgid "Install Plugin" -msgstr "Installation du greffon" +msgstr "Installer le greffon" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:87 #, java-format @@ -1664,23 +1664,23 @@ msgstr "Modifier" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:94 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351 msgid "Add Client" -msgstr "Ajouter client" +msgstr "Ajouter un client" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 msgid "Class and arguments" -msgstr "Classe et arguments" +msgstr "Classe et paramètres" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 msgid "Control" -msgstr "Contrôle" +msgstr "Actions" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 msgid "Run at Startup?" -msgstr "Lancer au démarrage ?" +msgstr "Lancé au démarrage" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 @@ -1730,7 +1730,7 @@ msgstr "Arrêt" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:78 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331 msgid "Check for updates" -msgstr "Chercher des mises à jour" +msgstr "Vérifier les mises à jour" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:263 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 @@ -1749,12 +1749,12 @@ msgstr "Effacer" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:18 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:343 msgid "Add key" -msgstr "Ajouter une clé" +msgstr "Ajouter la clé" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:19 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:341 msgid "Delete key" -msgstr "Supprimer une clé" +msgstr "Supprimer la clé" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:21 msgid "You must enter a destination" @@ -1772,23 +1772,23 @@ msgstr "Clé pour" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:34 msgid "added to keyring" -msgstr "ajouté au porte-clés " +msgstr "ajoutée au porte-clés " #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:36 msgid "Invalid destination or key" -msgstr "Destination ou clé pas valable" +msgstr "Destination ou clé incorrecte" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:41 msgid "removed from keyring" -msgstr "enlévé du porte-clés" +msgstr "enlevée du porte-clés" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:43 msgid "not found in keyring" -msgstr "pas trouvé sur le porte-clés" +msgstr "pas trouvée sur le porte-clés" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:45 msgid "Invalid destination" -msgstr "Destination pas valable" +msgstr "Destination incorrecte" #: ../java/src/net/i2p/router/web/ConfigLoggingHandler.java:82 msgid "Log overrides updated" @@ -2509,11 +2509,11 @@ msgstr "Fichier pas trouvé" #: ../java/src/net/i2p/router/web/LogsHelper.java:52 msgid "No log messages" -msgstr "Pas de messages d\\''historique" +msgstr "Historique vide" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:80 msgid "Network Database RouterInfo Lookup" -msgstr "Recherche RouterInfo dans NetDb " +msgstr "Recherche RouterInfo dans la base de données du réseau " #: ../java/src/net/i2p/router/web/NetDbRenderer.java:95 #: ../java/strings/Strings.java:68 @@ -2591,11 +2591,11 @@ msgstr "Routeurs" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:228 msgid "Show all routers" -msgstr "Afficher tous les routeurs" +msgstr "Tous, avec statistiques basiques" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:230 msgid "Show all routers with full stats" -msgstr "Afficher toutes les statistiques de tous les routeurs" +msgstr "Tous, avec statistiques complètes" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:266 msgid "Network Database Router Statistics" @@ -2605,7 +2605,7 @@ msgstr "Statistiques NetDb du routeur " #: ../java/src/net/i2p/router/web/NetDbRenderer.java:287 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:305 msgid "Count" -msgstr "Comptage" +msgstr "Nombre" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:287 msgid "Transports" @@ -2617,7 +2617,7 @@ msgstr "Pays" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:344 msgid "Our info" -msgstr "Notre info" +msgstr "Moi" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:346 msgid "Peer info for" @@ -2859,26 +2859,26 @@ msgstr "Profils des pairs" #, java-format msgid "Showing 1 recent profile." msgid_plural "Showing {0} recent profiles." -msgstr[0] "Affiche {0} profil récent" -msgstr[1] "Affiche {0} profils récents" +msgstr[0] "Affichage de 1 profil récent," +msgstr[1] "Affichage de {0} profils récents," #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:75 #, java-format msgid "Hiding 1 older profile." msgid_plural "Hiding {0} older profiles." -msgstr[0] "Masque {0} profil ancien" -msgstr[1] "Masque {0} profils anciens" +msgstr[0] "Masquage de 1 profil très anciens," +msgstr[1] "Masquage de {0} très anciens profils," #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:77 #, java-format msgid "Hiding 1 standard profile." msgid_plural "Hiding {0} standard profiles." -msgstr[0] "Masque {0} profil standard." -msgstr[1] "Masque {0} profils standards." +msgstr[0] "Masquage de 1 profil standard." +msgstr[1] "Masquage de {0} profils standards." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:82 msgid "Groups (Caps)" -msgstr "Groupes" +msgstr "Groupes (capacités)" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:83 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:252 @@ -2899,7 +2899,7 @@ msgstr "Intégration" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:86 msgid "Status" -msgstr "Statut actuel" +msgstr "état" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:126 msgid "Fast, High Capacity" @@ -3064,7 +3064,7 @@ msgstr "Le pair est-il banni, injoignable ou échoue-t-il à tester le tunnel?" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264 msgid "status" -msgstr "statut" +msgstr "état" #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:47 #: ../java/src/net/i2p/router/web/SummaryHelper.java:410 @@ -3289,24 +3289,24 @@ msgstr "Configuration" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:99 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:379 msgid "View existing tunnels and tunnel build status" -msgstr "Montrer les tunnels existants et le statut de création des tunnels" +msgstr "État des tunnels existants et de la création de tunnels" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:105 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253 msgid "Show all current peer connections" -msgstr "Montrer toutes les connexions actuelles aux pairs" +msgstr "Afficher toutes les connexions actuelles aux pairs" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:111 msgid "Show recent peer performance profiles" -msgstr "Montrer les profils de la performance récente des pairs" +msgstr "Afficher les profils de la performance récente des pairs" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:113 msgid "Profiles" -msgstr "Profiles" +msgstr "Profils" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:117 msgid "Show list of all known I2P routers" -msgstr "Montrer une liste de touts le routeurs I2P connus" +msgstr "Afficher tous les routeurs I2P connus" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:119 msgid "NetDB" @@ -3314,7 +3314,7 @@ msgstr "NetDb" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123 msgid "Health Report" -msgstr "Fichier traces du routeur" +msgstr "Bilan de santé" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:125 msgid "Logs" @@ -3322,7 +3322,7 @@ msgstr "Fichier traces" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:135 msgid "Graph router performance" -msgstr "Montrer la performance du routeur avec des graphes" +msgstr "Graphique de performances du routeur" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:137 msgid "Graphs" @@ -3330,7 +3330,7 @@ msgstr "Graphes" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141 msgid "Textual router performance statistics" -msgstr "La performance statistique du routeur en texte" +msgstr "Statistiques textuelles de performance du routeur" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147 #: ../java/src/net/i2p/router/web/SummaryHelper.java:370 @@ -3344,7 +3344,7 @@ msgstr "I2PTunnel" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164 msgid "I2P Router Help" -msgstr "Aide routeur I2P" +msgstr "Aide du routeur I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166 msgid "General" @@ -3356,11 +3356,11 @@ msgstr "Identité locale" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:175 msgid "Your unique I2P router identity is" -msgstr "L\\''identité unique de votre routeur est" +msgstr "L\\''identité unique de votre routeur commence par" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179 msgid "never reveal it to anyone" -msgstr "ne jamais la révéler à personne" +msgstr "NE la révélez JAMAIS à PERSONNE !" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:181 msgid "show" @@ -3620,7 +3620,7 @@ msgstr "mort" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:71 msgid "Participating tunnels" -msgstr "tunnels participants" +msgstr "Tunnels participants" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:72 msgid "From" @@ -3679,7 +3679,7 @@ msgstr "Tunnels participants inactifs" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:127 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:218 msgid "Lifetime bandwidth usage" -msgstr "Durée de vie de l\\''utilisation de bande passante" +msgstr "Utilisation de la bande passante depuis le démarrage" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "Expiry" @@ -3901,19 +3901,19 @@ msgstr "iMule" #. standard themes for ConfigUIHelper #: ../java/strings/Strings.java:51 msgid "classic" -msgstr "classique" +msgstr "Classique" #: ../java/strings/Strings.java:52 msgid "dark" -msgstr "foncé" +msgstr "Sombre" #: ../java/strings/Strings.java:53 msgid "light" -msgstr "léger" +msgstr "Clair" #: ../java/strings/Strings.java:54 msgid "midnight" -msgstr "minuit" +msgstr "Minuit" #. stat groups for stats.jsp #: ../java/strings/Strings.java:57 @@ -3926,7 +3926,7 @@ msgstr "Limiteur de bande passante" #: ../java/strings/Strings.java:59 msgid "ClientMessages" -msgstr "Messages client" +msgstr "Messages clients" #: ../java/strings/Strings.java:60 msgid "Encryption" @@ -4122,7 +4122,7 @@ msgstr "Panneau de contrôle" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:235 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:235 msgid "Refresh (s)" -msgstr "Actualiser (s)" +msgstr "Actualisation auto. (s)" #. ditto #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:240 @@ -4188,7 +4188,7 @@ msgstr "Partagés" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:327 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:326 msgid "NOTE" -msgstr "NOTER" +msgstr "NOTE" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:361 #, java-format @@ -4255,7 +4255,7 @@ msgstr "Activer UPnP afin d\\''ouvrir les ports du pare-feu" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:405 msgid "UPnP status" -msgstr "Statut UPnP" +msgstr "État de UPnP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:407 msgid "IP Configuration" @@ -4268,7 +4268,7 @@ msgstr "Adresse IP ou nom d\\''hôte qui est joignable depuis l\\''exterieur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:413 msgid "Use all auto-detect methods" -msgstr "Utiliser toute méthode d\\''auto-détection" +msgstr "Utiliser toutes les méthodes d\\''auto-détection" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 msgid "Disable UPnP IP address detection" @@ -4338,7 +4338,7 @@ msgstr "s\\''il n\\''y a pas de pare-feu" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 msgid "Always use auto-detected IP address (Not firewalled)" -msgstr "Utiliser toujours l\\''adresse IP qui a été auto-détectée (pas de pare-feu)" +msgstr "Toujours utiliser l\\''adresse IP qui a été auto-détectée (non bloquée)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:503 msgid "Disable inbound (Firewalled)" @@ -4368,7 +4368,7 @@ msgstr "Saisir le port" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:357 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:348 msgid "Note" -msgstr "Noter" +msgstr "Note" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:530 msgid "Changing these settings will restart your router." @@ -4397,19 +4397,19 @@ msgstr "La plupart des options ci-dessous concernent des situations particulièr #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:546 msgid "Certain firewalls such as symmetric NATs may not work well with I2P." -msgstr "Il y a des certains types de pare-feu (tel que les NAT symétriques) qui ne fonctionnent pas bien avec I2P." +msgstr "Certains types de pare-feu (tels que les NAT symétriques) empêchent un fonctionnement correct." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 msgid "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports." -msgstr "UPnP est utilisé pour communiquer avec des \"Internet Gateway Devices (IGDs)\" afin de détecter l\\''adresse IP extérieure et de contrôler la redirection des ports." +msgstr "UPnP est utilisé pour communiquer avec des \"passerelles Internet\" pour détecter l\\''adresse IP extérieure et contrôler la redirection des ports." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 msgid "UPnP support is beta, and may not work for any number of reasons" -msgstr "UPnP est toujours en développement, et il peut arrêter de fonctionner correctement à cause de " +msgstr "La gestion par UPnP est toujours en développement, et peut ne pas fonctionner pour plusieurs raisons" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 msgid "No UPnP-compatible device present" -msgstr "Il n\\''y a pas d\\''appareil qui est compatible avec UPnP" +msgstr "Aucun appareil compatible UPnP détecté" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 msgid "UPnP disabled on the device" @@ -4433,7 +4433,7 @@ msgstr "Un changement de l\\''appareil UPnP, une redémarrage, ou une changement #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:571 msgid "Review the UPnP status here." -msgstr "Consulter le statut de UPnP ici." +msgstr "Vérifier l'état de UPnP ici." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:573 msgid "UPnP may be enabled or disabled above, but a change requires a router restart to take effect." @@ -4673,11 +4673,11 @@ msgstr "configuration clients" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:265 msgid "I2P Client Configuration" -msgstr "configuration client I2P" +msgstr "Configuration clients I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:330 msgid "Client Configuration" -msgstr "Configuration client" +msgstr "Préférences" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:332 msgid "The Java clients listed below are started by the router and run in the same JVM." @@ -4771,7 +4771,7 @@ msgstr "Installation de greffon" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:457 msgid "To install a plugin, enter the download URL:" -msgstr "Pour installer un greffon, entrez l\\''URL de téléchargement:" +msgstr "Pour installer un greffon, entrez son URL de téléchargement:" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:112 msgid "config keyring" @@ -4787,11 +4787,11 @@ msgstr "Le trousseau de clefs du routeur est utilisé pour déchiffrer les jeux #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:320 msgid "The keyring may contain keys for local or remote encrypted destinations." -msgstr "Le trousseau contient des clés pour des destinations cryptées locales ou distantes." +msgstr "Le trousseau contient les clés des destinations cryptées locales ou distantes." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:326 msgid "Manual Keyring Addition" -msgstr "Ajout manuel de trousseau" +msgstr "Ajout manuel de clés" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:328 msgid "Enter keys for encrypted remote destinations here." @@ -4863,11 +4863,11 @@ msgstr "(DEBUG et INFO sont déconseillés, car ils ralentissent double-plus-gr #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:349 msgid "Log level overrides" -msgstr "Remplacements du niveau d\\''historisation" +msgstr "Exceptions au niveau d\\''historisation" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:353 msgid "New override" -msgstr "Nouveau remplacement" +msgstr "Nouvelle exception" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:112 msgid "config peers" @@ -5170,7 +5170,7 @@ msgstr "page i2ptunnnel." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:112 msgid "config UI" -msgstr "configuration IHM" +msgstr "configuration de la console" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:262 msgid "I2P UI Configuration" @@ -5431,7 +5431,7 @@ msgstr "Statistiques du routeur I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:255 #, java-format msgid "Disable {0} Refresh" -msgstr "Désactiver {0} Actualiser" +msgstr "Désactiver l\\''actualisation automatique {0}" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:111 msgid "tunnel summary" From 7a69024fb5e912395f600ec7cefd143fdf5675f6 Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 28 Mar 2011 13:59:46 +0000 Subject: [PATCH 369/463] messages_fr.po & readme_fr.html --- apps/routerconsole/locale/messages_fr.po | 74 ++--- installer/resources/readme/readme_fr.html | 336 ++++++++++++++++++---- 2 files changed, 310 insertions(+), 100 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index cde75ae6b..de9e0d581 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-26 08:34+0000\n" -"PO-Revision-Date: 2011-03-27 20:35+0100\n" +"PO-Revision-Date: 2011-03-28 12:17+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -2899,7 +2899,7 @@ msgstr "Intégration" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:86 msgid "Status" -msgstr "état" +msgstr "État" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:126 msgid "Fast, High Capacity" @@ -2921,7 +2921,7 @@ msgstr "Défaillant" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:282 msgid "Integrated" -msgstr "Intégré" +msgstr "Bien intégrés" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:164 msgid "Unreachable" @@ -2930,7 +2930,7 @@ msgstr "Inaccessible" #. hide if < 10% #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:171 msgid "Test Fails" -msgstr "Test échec" +msgstr "Échec de test" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:177 msgid "profile" @@ -2938,59 +2938,59 @@ msgstr "Profil" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:186 msgid "Floodfill and Integrated Peers" -msgstr "Floodfill et pairs intégrés" +msgstr "Pairs diffuseurs et intégrés" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190 msgid "Caps" -msgstr "Majuscules" +msgstr "Possib." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:191 msgid "Integ. Value" -msgstr "Valeur entière" +msgstr "Valeur intég." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:192 msgid "Last Heard About" -msgstr "Signalé pour la dernière fois" +msgstr "Signalé la dernière fois" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:193 msgid "Last Heard From" -msgstr "Dernière signalisation par" +msgstr "Entendu depuis" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:194 msgid "Last Good Send" -msgstr "Dernière envoi correct" +msgstr "Dernier envoi OK" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195 msgid "Last Bad Send" -msgstr "Dernier mauvais envoi" +msgstr "Dernier envoi KO" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196 msgid "10m Resp. Time" -msgstr "Temps de réponse (10mn)" +msgstr "Tps de rép.(10mn)" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:197 msgid "1h Resp. Time" -msgstr "Temps de réponse (1h)" +msgstr "Tps de rép. (1h)" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:198 msgid "1d Resp. Time" -msgstr "Temps de réponse (1j)" +msgstr "Tps de rép.(1j)" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:199 msgid "Last Good Lookup" -msgstr "Dernière bonne recherche" +msgstr "Dernière req. OK" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:200 msgid "Last Bad Lookup" -msgstr "Dernière mauvaise recherche" +msgstr "Dernière req. KO" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201 msgid "Last Good Store" -msgstr "Dernier bon stockage" +msgstr "Dernier stk.OK" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 msgid "Last Bad Store" -msgstr "Dernier mauvais stockage" +msgstr "Dernier stk.KO" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:203 msgid "1h Fail Rate" @@ -3006,65 +3006,65 @@ msgstr "Seuils" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:253 msgid "fast peers" -msgstr "Pairs rapides" +msgstr "pairs rapides" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:255 msgid "high capacity peers" -msgstr "Pairs à haute capacités" +msgstr "pairs à haute capacités" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 msgid " well integrated peers" -msgstr "Pairs bien intégrés" +msgstr "pairs bien intégrés" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 msgid "as determined by the profile organizer" -msgstr "tel que défini par l\\''organisateur du profil" +msgstr "tels que définis par le gestionnaire de profils" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 msgid "groups" -msgstr "groupes" +msgstr "Groupes" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 msgid "capabilities in the netDb, not used to determine profiles" -msgstr "possibilités de la NetDb, non utilisée pour déterminer les profils" +msgstr "possibilités vues dans la base de données du réseau (non utilisées pour définir les profils)" #. capabilities #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 #: ../java/strings/Strings.java:81 msgid "caps" -msgstr "capitales" +msgstr "Possib." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 msgid "peak throughput (bytes per second) over a 1 minute period that the peer has sustained in a single tunnel" -msgstr "débit crête (o/s) sur 1mn maintenu par le pair sur un seul tunnel" +msgstr "débit crête (o/s) tenu sur 1mn par le pair sur un seul tunnel" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 msgid "speed" -msgstr "vitesse" +msgstr "Vitesse" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 msgid "capacity" -msgstr "capacité" +msgstr "Capacité" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 msgid "how many tunnels can we ask them to join in an hour?" -msgstr "combien de tunnels pouvons nous leur demander de joindre en une heure?" +msgstr "combien de tunnels nous pouvons lui demander de rejoindre en une heure." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 msgid "how many new peers have they told us about lately?" -msgstr "de combien de nouveaux pairs nous ont-ils parlé récemment?" +msgstr "sur combien de nouveaux pairs il nous a renseigné récemment." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 msgid "integration" -msgstr "intégration" +msgstr "Intégration" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264 msgid "is the peer banned, or unreachable, or failing tunnel tests?" -msgstr "Le pair est-il banni, injoignable ou échoue-t-il à tester le tunnel?" +msgstr "Le pair banni, injoignable ou les tests de tunnels échouent." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264 msgid "status" -msgstr "état" +msgstr "État" #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:47 #: ../java/src/net/i2p/router/web/SummaryHelper.java:410 @@ -3394,19 +3394,19 @@ msgstr "Télécharger la version
            non signée {0}" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261 msgid "Active" -msgstr "Actif" +msgstr "Actifs" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270 msgid "Fast" -msgstr "Rapide" +msgstr "Rapides" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:276 msgid "High capacity" -msgstr "Haute capacité" +msgstr "Hautes capacités" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288 msgid "Known" -msgstr "Connu" +msgstr "Connus" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:303 msgid "Help with firewall configuration" diff --git a/installer/resources/readme/readme_fr.html b/installer/resources/readme/readme_fr.html index 397dfbcad..428157e76 100644 --- a/installer/resources/readme/readme_fr.html +++ b/installer/resources/readme/readme_fr.html @@ -1,71 +1,281 @@
            +(traduction de mars 2011 - cliquez sur le drapeau ci-dessous pour l'original en anglais) +
            From 516216730b7cd088d2669904deaaef10a6377142 Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 28 Mar 2011 14:25:47 +0000 Subject: [PATCH 370/463] readme_fr.html --- installer/resources/readme/readme_fr.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/installer/resources/readme/readme_fr.html b/installer/resources/readme/readme_fr.html index 428157e76..e1115c1dd 100644 --- a/installer/resources/readme/readme_fr.html +++ b/installer/resources/readme/readme_fr.html @@ -31,7 +31,7 @@ le mandataire 127.0.0.1 sur le port 4444, puis promenez-vous sur le (adresses http://. Vous trouverez sûrement un intérêt à utiliser un navigateur préconfiguré: essayez I2PFox, une version de Firefox renforcée en termes de sécurité et spécialement adaptée à i2P. Si vous voulez désactiver ou modifier l'accès mandaté à l'Internet normal, enlevez ou modifiez l'entrée -false.i2p dans les options de mandataires du gestionnaire de tunnels pour le +false.i2p dans les options de mandataires du gestionnaire de tunnels pour le mandataire HTTP I2P. Dans la section "Sites intéressants" ci-dessous, vous trouverez notre petite sélection de sites hébergés sur I2P.
          • @@ -224,13 +224,13 @@ consultez la documentation appropriée, visitez les forums, ou venez faire un to
          • Activez Universal Plug and Play (UPnP)
            Votre modem-routeur est peut-être compatible avec Universal Plug -& Play (UPnP), qui permet le transfert de ports automatique. Vérifiez que le support UPnP pour I2P est activé +& Play (UPnP) qui permet le transfert de ports automatique. Vérifiez que le support UPnP pour I2P est activé dans la page de configuration, puis essayez d'activer UPnP dans votre modem-routeur et éventuellement dans votre ordinateur. Maintenant, redémarrez le routeur I2P. Si ça marche, le panneau de surveillance devrait alors indiquer "Réseau: OK" une fois que le routeur I2P aura terminé ses tests de connectivité.
          • -
          • Transfert de ports
            Ouvrez le port d'I2P sur votre modem, routeur +
          • Redirection de ports
            Ouvrez le port d'I2P sur votre modem, routeur et/ou pare-feu(x) logiciels pour améliorer la connectivité (idéalement, pour UDP et TCP). Plus d'informations sur la façon de s'y prendre pour divers matériels est accessible sur portforward.com, avec nos forums et canaux IRC listés ci-dessous. From 7feefc049c4aa41871fa2ea54761dc3df69f0a80 Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 28 Mar 2011 22:53:58 +0000 Subject: [PATCH 371/463] readme_fr.html --- installer/resources/readme/readme_fr.html | 228 +++++++++++----------- 1 file changed, 112 insertions(+), 116 deletions(-) diff --git a/installer/resources/readme/readme_fr.html b/installer/resources/readme/readme_fr.html index e1115c1dd..50888873a 100644 --- a/installer/resources/readme/readme_fr.html +++ b/installer/resources/readme/readme_fr.html @@ -3,7 +3,7 @@ -

            Anonymous Encrypted Web Hosting on I2P

            +

            Hébergement crypté anonyme sur I2P

            +
          • Prêt à servir!
            I2P arrive avec un serveur intégré, prêt à servir votre propre site web +anonyme (eepsite) sur le réseau I2P: une instance Jetty qui +écoute sur http://127.0.0.1:7658/. Pour héberger votre propre +contenu, placez tout bêtement vos fichiers dans le répertoire eepsite/docroot/ (ou déposez n'importe quel +fichier JSP/Servlet standard .war dans eepsite/webapps, ou des scripts CGI standards dans +eepsite/cgi-bin) et ils s'afficheront. Vous gardez tout loisir de choisir le serveur web qui vous convient +pour fonctionner sur I2P et remplacer le serveur intégré, ou exécuter celui-ci sur un autre tunnel.
          • +
          • Démarrez votre tunnel
            + Après le démarrage de votre Tunnel serveurWeb I2P, votre eepsite sera +visible (mais pas encore découvrable) par les I2P'nautes. Les instructions détaillées de démarrage de votre eepsite, +d'enregistrement d'un domaine .i2p et de promotion de votre site sont accessibles via votre propre serveur à +l'adresse http://127.0.0.1:7658/help/.
          -

          I2P-Hosted Sites of Interest

          +

          Sites I2P intéressants

          @@ -168,7 +164,7 @@ essayez de le laisser marcher le plus longtemps que vous pouvez, 24h/24 7j/7 si inférieur à 5, voici ce que vous pouvez faire pour trouver l'origine du problème:
        • -
        • Vérifiez votre configuration & allocation de bande passante
          I2P functionne au mieux +
        • Vérifiez votre configuration & allocation de bande passante
          I2P fonctionne au mieux quand vous reflétez correctement la vitesse de votre connexion Internet dans la section Gestionnaire de bande passante. I2P est configuré par défaut avec des valeurs volontairement faibles qui ne conviennent généralement pas. Merci de @@ -234,8 +230,8 @@ de surveillance devrait alors indiquer "Réseau: OK" une fois que le routeur I2P et/ou pare-feu(x) logiciels pour améliorer la connectivité (idéalement, pour UDP et TCP). Plus d'informations sur la façon de s'y prendre pour divers matériels est accessible sur portforward.com, avec nos forums et canaux IRC listés ci-dessous. -Notez qu'I2P ne prend pas en charge la connexion à Internet via des mandataires (proxies) http ou socks [bienvenue -correctifs!], bien qui vous puissiez vous connecter à des mandataires via I2P lui-même quand il connecté au réseau
        • +Notez qu'I2P ne prend pas en charge la connexion à Internet via des mandataires (proxies) http ou socks [correctifs +bienvenus!], bien qui vous puissiez vous connecter à des mandataires via I2P lui-même quand il connecté au réseau
        • Aide en ligne
          Vous pouvez trouver de l'information à parcourir sur le site web I2P, poster des messages sur le @@ -250,7 +246,7 @@ via le serveur IRC Freenode.
        • Rapports de bogues
          Si vous voulez rapporter un bogue, merci d'enregistrer un ticket sur trac.i2p2.i2p. Les développeurs discutent sur les -fora de developpeurs de zzz ou sur le +fora de développeurs de zzz ou sur le canal des développeurs. Les développeurs peuvent consulter les sources sur l'explorateur du dépôt de zzz, l'instance de Sponge, ou par @@ -267,7 +263,7 @@ développeurs qui rechercheraient des incitations, et nous sommes en recherche p codeurs Java, de traducteurs, de prescripteurs et d'utilisateurs pour accélérer la diffusion d'I2P. Plus grand sera le réseau I2P, plus tout le monde en profitera, -alors en parler simplement avec vos amis au lieu de vous étriper à l'apéro pour savoir si le PSG est plus tafiole +alors en parler simplement à l'apéro avec vos amis au lieu de vous étriper pour savoir si le PSG est plus tafiole que l'OM n'est tarlouze, (et tendre la main à votre pire ennemi pour l'installation et les réglages chaque fois que le besoin s'en fait sentir) sera une belle participation! Pour en savoir plus sur les façons de participer, venez visiter le zoo sur la page \"Engagez-vous!\" du From b7072d48b6f598c61a147766478f37198727855c Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 28 Mar 2011 22:54:26 +0000 Subject: [PATCH 372/463] messages_fr.po & readme_fr.html --- apps/routerconsole/locale/messages_fr.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index de9e0d581..2c90a34b7 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-26 08:34+0000\n" -"PO-Revision-Date: 2011-03-28 12:17+0100\n" +"PO-Revision-Date: 2011-03-29 00:53+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" From 3e5713e479f52ae1f5c070d59d597350f85d189b Mon Sep 17 00:00:00 2001 From: magma Date: Tue, 29 Mar 2011 00:05:29 +0000 Subject: [PATCH 373/463] readme_fr.html --- installer/resources/readme/readme_fr.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/installer/resources/readme/readme_fr.html b/installer/resources/readme/readme_fr.html index 50888873a..d38306332 100644 --- a/installer/resources/readme/readme_fr.html +++ b/installer/resources/readme/readme_fr.html @@ -1,5 +1,5 @@
          -(traduction de mars 2011 - cliquez sur le drapeau ci-dessous pour l'original en anglais) +(traduction de mars 2011 - cliquez sur le drapeau ci-dessus pour l'original en anglais) - +

          Document mis à jour en février 2011
          From 8ea721696f21e78f446f56ddf3d8febf59a25de0 Mon Sep 17 00:00:00 2001 From: magma Date: Tue, 29 Mar 2011 00:33:45 +0000 Subject: [PATCH 374/463] readme_fr.html --- installer/resources/readme/readme_fr.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/installer/resources/readme/readme_fr.html b/installer/resources/readme/readme_fr.html index d38306332..92108ed2f 100644 --- a/installer/resources/readme/readme_fr.html +++ b/installer/resources/readme/readme_fr.html @@ -59,12 +59,12 @@ Chatzilla, Pidgin, XChat, etc…) et connectez-vous au messagerie instantanée à la sauce I2P pour le claviotage anonyme (tiens, le rev'là) non surveillable et non censurable, ainsi que d'autres serveurs IRC, Jabber, website-based chat, and more. Et bien sûr vous avez l'entière liberté de faire tourner vos propres serveurs sur I2P, dans la version qui From 9e4e9c197bf643c1dbfafbb5f6cfdcde6bcce6ed Mon Sep 17 00:00:00 2001 From: magma Date: Tue, 29 Mar 2011 15:17:09 +0000 Subject: [PATCH 375/463] typo --- installer/resources/readme/readme_fr.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/installer/resources/readme/readme_fr.html b/installer/resources/readme/readme_fr.html index 92108ed2f..69f545cc4 100644 --- a/installer/resources/readme/readme_fr.html +++ b/installer/resources/readme/readme_fr.html @@ -59,9 +59,9 @@ Chatzilla, Pidgin, XChat, etc…) et connectez-vous au Vérifiez que Java est à jour
          Assurez-vous que vous avez la dernière version de Java [vers. 1.6 ou plus récente recommandée, et impérative pour certaines fonctionnalités]. Vérifez la version de votre JRE -JRE (
          + ( Java Runtime Environment) en haut de page de vos historiques. Si vous êtes un développeur, un SDK Java et Apache Ant sont nécessaires à la compilation des sources. From f992a07df93ac5b14d28bfceb9555975bb0dd2da Mon Sep 17 00:00:00 2001 From: magma Date: Wed, 30 Mar 2011 20:09:42 +0000 Subject: [PATCH 376/463] redo --- apps/i2psnark/locale/messages_fr.po | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/apps/i2psnark/locale/messages_fr.po b/apps/i2psnark/locale/messages_fr.po index b1acafa74..0bd450919 100644 --- a/apps/i2psnark/locale/messages_fr.po +++ b/apps/i2psnark/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-25 12:48+0000\n" -"PO-Revision-Date: 2011-03-26 09:58+0100\n" +"PO-Revision-Date: 2011-03-30 22:08+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -205,17 +205,17 @@ msgstr "Le fichier torrent \"{0}\" ne peut pas se terminer par \".torrent\", sup #: ../java/src/org/klomp/snark/SnarkManager.java:980 #, java-format msgid "No pieces in \"{0}\", deleting it!" -msgstr "Pas de morceaux dans \"{0}\", suppression!" +msgstr "Pas de tronçon dans \"{0}\", suppression!" #: ../java/src/org/klomp/snark/SnarkManager.java:982 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!" -msgstr "Trop de morceaux dans \"{0}\" , la limite est {1}, suppression!" +msgstr "Trop de tronçons dans \"{0}\" , la limite est {1}, suppression!" #: ../java/src/org/klomp/snark/SnarkManager.java:984 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B), deleting it." -msgstr "Les morceaux sont trop larges dans \"{0}\" ({1}B), suppresion." +msgstr "Les tronçons sont trop larges dans \"{0}\" ({1}B), suppresion." #: ../java/src/org/klomp/snark/SnarkManager.java:985 #, java-format @@ -598,19 +598,19 @@ msgstr "Seed" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Uninteresting (The peer has no pieces we need)" -msgstr "aucun intérêt (le pair n'a aucun morceau utile)" +msgstr "aucun intérêt (le pair n'a aucun tronçon utile)" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079 msgid "Choked (The peer is not allowing us to request pieces)" -msgstr "bridé (le pair ne nous permet pas de demander un morceau)" +msgstr "bridé (le pair ne nous permet pas de demander des tronçons)" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1099 msgid "Uninterested (We have no pieces the peer needs)" -msgstr "aucun intérêt (nous n'avons aucun morceau utile au pair)" +msgstr "aucun intérêt (nous n'avons aucun tronçon utile au pair)" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101 msgid "Choking (We are not allowing the peer to request pieces)" -msgstr "bridage (nous ne permettons pas au pair de demander un morceau)" +msgstr "bridage (nous ne permettons pas au pair de demander un tronçon)" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159 #, java-format @@ -811,11 +811,11 @@ msgstr "Fichiers" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674 msgid "Pieces" -msgstr "Pièces" +msgstr "Tronçons" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675 msgid "Piece size" -msgstr "Taille des pièces" +msgstr "Taille des tronçons" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697 msgid "Magnet link" @@ -883,7 +883,7 @@ msgstr "Torrent déjà actif: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1990 #, java-format msgid "Torrent already in the queue: {0}" -msgstr "Torrent déjà dans la queue: {0}" +msgstr "Torrent déjà dans la file d'attente: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1996 #, java-format @@ -893,7 +893,7 @@ msgstr "Le torrent {0} n'est pas valide" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2003 #, java-format msgid "Torrent was not retrieved from {0}" -msgstr "Le torrent n’a pas été reçu par {0}" +msgstr "Le torrent n’a pas été reçu de {0}" #~ msgid "Torrent file must originate from an I2P-based tracker" #~ msgstr "Le fichier torrent doit provenir d'un tracker I2P" From 4c743154115272b2b6ac7402c8ac83b4269a4446 Mon Sep 17 00:00:00 2001 From: magma Date: Wed, 30 Mar 2011 20:12:09 +0000 Subject: [PATCH 377/463] redo --- apps/desktopgui/locale/messages_fr.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/desktopgui/locale/messages_fr.po b/apps/desktopgui/locale/messages_fr.po index 44e38cd60..1e540d68b 100644 --- a/apps/desktopgui/locale/messages_fr.po +++ b/apps/desktopgui/locale/messages_fr.po @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: I2P desktopgui\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-03 18:29+0000\n" -"PO-Revision-Date: 2011-03-25 10:12+0100\n" -"Last-Translator: \n" +"PO-Revision-Date: 2011-03-30 21:58+0100\n" +"Last-Translator: magma \n" "Language-Team: duck \n" "Language: \n" "MIME-Version: 1.0\n" @@ -52,5 +52,5 @@ msgstr "configuration de l'icône de notification" #: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47 msgid "Should tray icon be enabled?" -msgstr "Activer l'icône de notification?" +msgstr "Activer l'icône de notification" From 49ac0278f028b2be071136f59699555d3035c51d Mon Sep 17 00:00:00 2001 From: magma Date: Wed, 30 Mar 2011 20:17:44 +0000 Subject: [PATCH 378/463] redo --- apps/susimail/locale/messages_fr.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/susimail/locale/messages_fr.po b/apps/susimail/locale/messages_fr.po index 07d930a91..d44ac0f27 100644 --- a/apps/susimail/locale/messages_fr.po +++ b/apps/susimail/locale/messages_fr.po @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: I2P susimail\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-24 16:49+0000\n" -"PO-Revision-Date: 2011-03-25 11:04+0100\n" -"Last-Translator: \n" +"PO-Revision-Date: 2011-03-30 22:16+0100\n" +"Last-Translator: magma \n" "Language-Team: duck \n" "Language: \n" "MIME-Version: 1.0\n" From 1a40178e8c1ab3061cb971f8669b924ee0186863 Mon Sep 17 00:00:00 2001 From: magma Date: Wed, 30 Mar 2011 20:20:14 +0000 Subject: [PATCH 379/463] fix --- apps/susidns/locale/messages_fr.po | 211 ++++++++--------------------- 1 file changed, 54 insertions(+), 157 deletions(-) diff --git a/apps/susidns/locale/messages_fr.po b/apps/susidns/locale/messages_fr.po index 5be688a7b..546e3a71f 100644 --- a/apps/susidns/locale/messages_fr.po +++ b/apps/susidns/locale/messages_fr.po @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: I2P susidns\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-24 16:49+0000\n" -"PO-Revision-Date: 2011-03-24 02:29+0100\n" -"Last-Translator: \n" +"PO-Revision-Date: 2011-03-30 22:19+0100\n" +"Last-Translator: magma \n" "Language-Team: duck \n" "Language: \n" "MIME-Version: 1.0\n" @@ -76,12 +76,8 @@ msgstr "L'hôte {0} est déjà présent: inchangé." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266 #, java-format -msgid "" -"Host name {0} is already in addressbook with a different destination. Click " -"\"Replace\" to overwrite." -msgstr "" -"L'hôte {0} est déjà présent avec une destination différente. Cliquez sur " -"\"Remplacer\"...pour le remplacer." +msgid "Host name {0} is already in addressbook with a different destination. Click \"Replace\" to overwrite." +msgstr "L'hôte {0} est déjà présent avec une destination différente. Cliquez sur \"Remplacer\"...pour le remplacer." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278 #, java-format @@ -127,12 +123,8 @@ msgstr "ERREUR: impossible d'enregistrer le fichier carnet d'adresses." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:148 #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151 -msgid "" -"Invalid form submission, probably because you used the \"back\" or \"reload" -"\" button on your browser. Please resubmit." -msgstr "" -"Soumission du formulaire incorrecte: vous avez peutêtre utilisé le bouton " -"\"Page précédente\" ou \"Recharger\". Merci de soumettre à nouveau." +msgid "Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit." +msgstr "Soumission du formulaire incorrecte: vous avez peut-être utilisé le bouton \"Page précédente\" ou \"Recharger\". Merci de soumettre à nouveau." #: ../src/java/src/i2p/susi/dns/ConfigBean.java:139 #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130 @@ -162,11 +154,8 @@ msgstr "Configuration rechargée." #. with the correct parameters will kick off a #. config reload and fetch. #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:139 -msgid "" -"Subscriptions saved, updating addressbook from subscription sources now." -msgstr "" -"Souscriptions enregistrées, mise à jour en cours du carnet d'adresses à " -"partir de celles-ci." +msgid "Subscriptions saved, updating addressbook from subscription sources now." +msgstr "Souscriptions enregistrées, mise à jour en cours du carnet d'adresses à partir de celles-ci." #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143 msgid "Subscriptions saved." @@ -293,46 +282,24 @@ msgid "Hints" msgstr "Aides" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134 -msgid "" -"File and directory paths here are relative to the addressbook's working " -"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P" -"\\addressbook\\ (Windows)." -msgstr "" -"Les chemins des fichiers et dossiers listés sont relatifs au répertoire de " -"travail du carnet d'adresses, normalement ~/.i2p/addressbook/ (Linux) ou " -"%APPDATA%\\I2P\\addressbook\\ (Windows)." +msgid "File and directory paths here are relative to the addressbook's working directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P\\addressbook\\ (Windows)." +msgstr "Les chemins des fichiers et dossiers listés sont relatifs au répertoire de travail du carnet d'adresses, normalement ~/.i2p/addressbook/ (Linux) ou %APPDATA%\\I2P\\addressbook\\ (Windows)." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:136 -msgid "" -"If you want to manually add lines to an addressbook, add them to the private " -"or master addressbooks." -msgstr "" -"si vous voulez ajouter manuellement des lignes dans un carnet d'adresses, " -"faites-le dans le carnet privé ou principal." +msgid "If you want to manually add lines to an addressbook, add them to the private or master addressbooks." +msgstr "si vous voulez ajouter manuellement des lignes dans un carnet d'adresses, faites-le dans le carnet privé ou principal." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:138 -msgid "" -"The router addressbook and the published addressbook are updated by the " -"addressbook application." -msgstr "" -"Le carnet d'adresses du routeur et le carnet d'adresses publié sont mis à " -"jour par l'application carnet d'adresses." +msgid "The router addressbook and the published addressbook are updated by the addressbook application." +msgstr "Le carnet d'adresses du routeur et le carnet d'adresses publié sont mis à jour par l'application carnet d'adresses." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:140 -msgid "" -"When you publish your addressbook, ALL destinations from the master and " -"router addressbooks appear there." -msgstr "" -"Quand vous publiez votre carnet d'adresses, TOUTES les destinations des " -"carnets principal et routeur le sont." +msgid "When you publish your addressbook, ALL destinations from the master and router addressbooks appear there." +msgstr "Quand vous publiez votre carnet d'adresses, TOUTES les destinations des carnets principal et routeur le sont." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142 -msgid "" -"Use the private addressbook for private destinations, these are not " -"published." -msgstr "" -"Utilisez le carnet d'adresses privé pour les destinations privées: elles ne " -"seront pas publiées." +msgid "Use the private addressbook for private destinations, these are not published." +msgstr "Utilisez le carnet d'adresses privé pour les destinations privées: elles ne seront pas publiées." #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144 msgid "Options" @@ -340,20 +307,15 @@ msgstr "Options" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146 msgid "File containing the list of subscriptions URLs (no need to change)" -msgstr "" -"fichier contenant la liste des URLs de souscriptions (inutile de modifier)" +msgstr "fichier contenant la liste des URLs de souscriptions (inutile de modifier)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148 msgid "Update interval in hours" msgstr "Intervalle de mise à jour (en heures)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150 -msgid "" -"Your public hosts.txt file (choose a path within your webserver document " -"root)" -msgstr "" -"Votre fichier hosts.txt (choisissez un emplacement dans la racine de votre " -"serveur web)" +msgid "Your public hosts.txt file (choose a path within your webserver document root)" +msgstr "Votre fichier hosts.txt (choisissez un emplacement dans la racine de votre serveur web)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152 msgid "Your hosts.txt (don't change)" @@ -380,20 +342,12 @@ msgid "Whether to update the published addressbook" msgstr "S'il faut actualiser le carnet d'adresses publié" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164 -msgid "" -"File containing the etags header from the fetched subscription URLs (no need " -"to change)" -msgstr "" -"Fichier contenant les en-têtes etag des URLs de souscription (inutile de " -"changer)" +msgid "File containing the etags header from the fetched subscription URLs (no need to change)" +msgstr "Fichier contenant les en-têtes etag des URLs de souscription (inutile de changer)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:166 -msgid "" -"File containing the modification timestamp for each fetched subscription URL " -"(no need to change)" -msgstr "" -"Fichier contenant les tampons horaires de modification de chaque URL de " -"souscription importée (inutile de modifier)" +msgid "File containing the modification timestamp for each fetched subscription URL (no need to change)" +msgstr "Fichier contenant les tampons horaires de modification de chaque URL de souscription importée (inutile de modifier)" #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168 msgid "File to log activity to (change to /dev/null if you like)" @@ -409,130 +363,73 @@ msgstr "Qu'est-ce que le carnet d'adresses?" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:111 msgid "The addressbook application is part of your i2p installation." -msgstr "" -"L'application carnet d'adresses fait partie intégrante de votre installation " -"I2P." +msgstr "L'application carnet d'adresses fait partie intégrante de votre installation I2P." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113 -msgid "" -"It regularly updates your hosts.txt file from distributed sources or " -"\"subscriptions\"." -msgstr "" -"Elle actualise votre fichier hosts.txt à intervalle régulier à partir de " -"sources décentralisées (\"souscriptions\" ou \"abonnements\")" +msgid "It regularly updates your hosts.txt file from distributed sources or \"subscriptions\"." +msgstr "Elle actualise votre fichier hosts.txt à intervalle régulier à partir de sources décentralisées (\"souscriptions\" ou \"abonnements\")" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115 -msgid "" -"In the default configuration, the addressbook is only subscribed to www.i2p2." -"i2p." -msgstr "" -"Dans sa configuration par défaut, le carnet d'adresses est seulement abonné " -"à www.i2p2.i2p." +msgid "In the default configuration, the addressbook is only subscribed to www.i2p2.i2p." +msgstr "Dans sa configuration par défaut, le carnet d'adresses est seulement abonné à www.i2p2.i2p." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117 -msgid "" -"Subscribing to additional sites is easy, just add them to your subscriptions file." -msgstr "" -"La souscription à des sites supplémentaires est aisée: ajoutez-les " -"simplement à votre fichier de souscriptions ." +msgid "Subscribing to additional sites is easy, just add them to your subscriptions file." +msgstr "La souscription à des sites supplémentaires est aisée: ajoutez-les simplement à votre fichier de souscriptions ." #: ../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 "" -"Plus d'infos sur le nommage dans I2P." +msgid "For more information on naming in i2p, see the overview on www.i2p2.i2p." +msgstr "Plus d'infos sur le nommage dans I2P." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121 msgid "How does the addressbook work?" msgstr "Comment le carnet d'adresses fonctionne-t-il?" #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123 -msgid "" -"The addressbook application regularly polls your subscriptions and merges " -"their content into your \"router\" addressbook, stored in the hosts.txt file." -msgstr "" -"L'application carnet d'adresses interroge vos souscriptions à intervalle " -"régulier et fusionne leurs contenus dans le carnet d'adresses du \"routeur" -"\", stocké dans le fichier hosts.txt." +msgid "The addressbook application regularly polls your subscriptions and merges their content into your \"router\" addressbook, stored in the hosts.txt file." +msgstr "L'application carnet d'adresses interroge vos souscriptions à intervalle régulier et fusionne leurs contenus dans le carnet d'adresses du \"routeur\", stocké dans le fichier hosts.txt." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125 -msgid "" -"Then it merges your \"master\" addressbook (userhosts.txt) into the router " -"addressbook as well." -msgstr "" -"Puis elle fusionne votre carnet d'adresses \"principal\" (userhosts.txt) " -"dans celui du routeur. " +msgid "Then it merges your \"master\" addressbook (userhosts.txt) into the router addressbook as well." +msgstr "Puis elle fusionne votre carnet d'adresses \"principal\" (userhosts.txt) dans celui du routeur. " #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:127 -msgid "" -"If configured, the router addressbook is now written to the \"published\" " -"addressbook, which will be publicly available if you are running an eepsite." -msgstr "" -"Si c'est activé, le carnet du routeur est alors écrit dans le carnet " -"d'adresses \"publié\" qui devient publiquement disponible si vous avez votre " -"propre site eep." +msgid "If configured, the router addressbook is now written to the \"published\" addressbook, which will be publicly available if you are running an eepsite." +msgstr "Si c'est activé, le carnet du routeur est alors écrit dans le carnet d'adresses \"publié\" qui devient publiquement disponible si vous avez votre propre site eep." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:129 -msgid "" -"The router also uses a private addressbook (privatehosts.txt, not shown in " -"the picture), which is not merged or published." -msgstr "" -"Le routeur utilise également un carnet privé (privatehosts.txt, non " -"illustré), qui n'est ni fusionné ni publié." +msgid "The router also uses a private addressbook (privatehosts.txt, not shown in the picture), which is not merged or published." +msgstr "Le routeur utilise également un carnet privé (privatehosts.txt, non illustré), qui n'est ni fusionné ni publié." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:131 -msgid "" -"Hosts in the private addressbook can be accessed by you but their addresses " -"are never distributed to others." -msgstr "" -"Les hôtes du carnet privé ne sont accessibles qu'à vous et leurs adresses ne " -"sont jamais distribuées à personne." +msgid "Hosts in the private addressbook can be accessed by you but their addresses are never distributed to others." +msgstr "Les hôtes du carnet privé ne sont accessibles qu'à vous et leurs adresses ne sont jamais distribuées à personne." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:133 -msgid "" -"The private addressbook can also be used for aliases of hosts in your other " -"addressbooks." -msgstr "" -"Le carnet privé peut aussi servir à stocker des alias/pseudos pour des hôtes " -"des autres carnets." +msgid "The private addressbook can also be used for aliases of hosts in your other addressbooks." +msgstr "Le carnet privé peut aussi servir à stocker des alias/pseudos pour des hôtes des autres carnets." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132 msgid "The subscription file contains a list of i2p URLs." msgstr "Le fichier de souscriptions contient une liste d'URLs i2p." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134 -msgid "" -"The addressbook application regularly checks this list for new eepsites." -msgstr "" -"L'application vérifie régulièrement cette liste pour trouver de nouveaux " -"sites eep." +msgid "The addressbook application regularly checks this list for new eepsites." +msgstr "L'application vérifie régulièrement cette liste pour trouver de nouveaux sites eep." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136 msgid "Those URLs refer to published hosts.txt files." msgstr "Ces URLs s'abreuvent aux fichiers hosts.txt des autres utilisateurs." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138 -msgid "" -"The default subscription is the hosts.txt from www.i2p2.i2p, which is " -"updated infrequently." -msgstr "" -"L'abonnement par défaut est le fichier hosts.txt de www.i2p2.i2p, qui est " -"très peu actualisé." +msgid "The default subscription is the hosts.txt from www.i2p2.i2p, which is updated infrequently." +msgstr "L'abonnement par défaut est le fichier hosts.txt de www.i2p2.i2p, qui est très peu actualisé." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:140 -msgid "" -"So it is a good idea to add additional subscriptions to sites that have the " -"latest addresses." -msgstr "" -"C'est donc une bonne idée d'ajouter des souscriptions supplémentaires à des " -"sites qui ont les dernières adresses." +msgid "So it is a good idea to add additional subscriptions to sites that have the latest addresses." +msgstr "C'est donc une bonne idée d'ajouter des souscriptions supplémentaires à des sites qui ont les dernières adresses." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142 msgid "See the FAQ for a list of subscription URLs." -msgstr "" -"Voir la FAQ " -"pour une liste d'URLs de souscriptions." +msgstr "Voir la FAQ pour une liste d'URLs de souscriptions." + From a7d6048748e897f2eb94ee28160b43856aea0250 Mon Sep 17 00:00:00 2001 From: magma Date: Wed, 30 Mar 2011 20:35:27 +0000 Subject: [PATCH 380/463] mini tweaks --- apps/routerconsole/locale/messages_fr.po | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 2c90a34b7..fe7b2b88d 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-26 08:34+0000\n" -"PO-Revision-Date: 2011-03-29 00:53+0100\n" +"PO-Revision-Date: 2011-03-30 22:34+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -81,7 +81,7 @@ msgstr[1] "{0} jours" #: ../../../router/java/src/net/i2p/router/Blocklist.java:122 #, java-format msgid "Banned by router hash: {0}" -msgstr "Banni(s) pour hachage routeur hash: {0}" +msgstr "Banni(s) par hachage routeur: {0}" #: ../../../router/java/src/net/i2p/router/Blocklist.java:124 msgid "Banned by router hash" @@ -1420,7 +1420,7 @@ msgstr "Îles mineures éloignées des États-Unis" #: ../java/build/Countries.java:223 msgid "United States" -msgstr "États unis d\\''amérique" +msgstr "États unis" #: ../java/build/Countries.java:224 msgid "Uruguay" @@ -2318,7 +2318,7 @@ msgstr "Options Sortants" #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:31 msgid "Theme change saved." -msgstr "Changement de thème sauvegardé." +msgstr "Changement de thème enregistré." #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:33 msgid "Refresh the page to view." @@ -2366,11 +2366,11 @@ msgstr "Suédois" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:85 msgid "Update available, attempting to download now" -msgstr "Mise à jour disponible, en tentant de la télécharger actuellement" +msgstr "Mise à jour disponible, essai de téléchargement en cours" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:87 msgid "Update available, click button on left to download" -msgstr "Mise à jour disponible, cliquez sur le bouton sur la gauche pour la télécharger" +msgstr "Mise à jour disponible, cliquez sur le bouton de gauche pour la télécharger" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:93 msgid "No update available" @@ -2579,7 +2579,7 @@ msgstr "Tunnel" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:215 msgid "View LeaseSets" -msgstr "Afficher les LeaseSets" +msgstr "Afficher les jeux de baux" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:217 msgid "Not initialized" @@ -2679,7 +2679,7 @@ msgstr "NTCP et SSU" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:404 msgid "NTCP and SSU with introducers" -msgstr "NTCP et SSU avec introducers" +msgstr "NTCP et SSU avec présentateurs" #: ../java/src/net/i2p/router/web/NewsFetcher.java:92 #, java-format @@ -4609,7 +4609,7 @@ msgstr "ERR - Port UDP en cours d\\''utilisation - réglez i2np.udp.internalPort #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 msgid "I2P was unable to bind to port 8887 or other configured port." -msgstr "I2P n\\''a pas pu s\\''attacher au port 8887 ou un autre port configuré." +msgstr "I2P n\\''a pas pu s\\''attacher au port configuré." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:673 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." @@ -5234,7 +5234,7 @@ msgstr "Méthode de mise à jour" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:349 msgid "Update through the eepProxy?" -msgstr "Mettre à jour utilisant l\\''eeProxy ?" +msgstr "Mettre à jour via l\\''eeProxy ?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:353 msgid "eepProxy host" From df4714e6282b684c7a94c4eba7c32c83405ea330 Mon Sep 17 00:00:00 2001 From: magma Date: Wed, 30 Mar 2011 20:57:34 +0000 Subject: [PATCH 381/463] little fixes --- installer/resources/readme/readme_fr.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/installer/resources/readme/readme_fr.html b/installer/resources/readme/readme_fr.html index 69f545cc4..4689ca43a 100644 --- a/installer/resources/readme/readme_fr.html +++ b/installer/resources/readme/readme_fr.html @@ -25,7 +25,7 @@ s'affichent en face des destinations locales, le monde d'I2P vous est ouv
        • Internet invisible & exploration anonyme du web public
          Sur I2P vous pouvez accéder à des sites anonymes (les sites eep) et à d'autres services (par exemple SSH sur I2P, IRC, Jabber, etc…), et vous pouvez aussi héberger vos propres services anonyme. Vous avez également un accès anonyme au web normal via le -serveur mandataire sortant (\"outproxy\") I2P intégré. Pour ceci, +serveur mandataire sortant ("outproxy") I2P intégré. Pour ceci, configurez votre navigateur pour qu'il utilise le le mandataire 127.0.0.1 sur le port 4444, puis promenez-vous sur les sites eep ou non cryptés normaux (adresses http://. Vous trouverez sûrement un intérêt à utiliser un navigateur préconfiguré: essayez @@ -266,7 +266,7 @@ d'utilisateurs pour accélérer la diffusion d'I2P. Plus grand sera le réseau I alors en parler simplement à l'apéro avec vos amis au lieu de vous étriper pour savoir si le PSG est plus tafiole que l'OM n'est tarlouze, (et tendre la main à votre pire ennemi pour l'installation et les réglages chaque fois que le besoin s'en fait sentir) sera une belle participation! Pour en savoir plus sur les façons de participer, venez -visiter le zoo sur la page \"Engagez-vous!\" du +visiter le zoo sur la page "Engagez-vous!" du site web.
        • From 29c731d660021717314c63fb69d3061ce34d22ee Mon Sep 17 00:00:00 2001 From: magma Date: Wed, 30 Mar 2011 21:08:08 +0000 Subject: [PATCH 382/463] little fixes --- installer/resources/initialNews/initialNews_fr.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/installer/resources/initialNews/initialNews_fr.xml b/installer/resources/initialNews/initialNews_fr.xml index 2007268ea..8f027c270 100644 --- a/installer/resources/initialNews/initialNews_fr.xml +++ b/installer/resources/initialNews/initialNews_fr.xml @@ -1,5 +1,5 @@
          -

          Mille bravos pour cette installation d'I2P !

          +

          Merci d'utiliser I2P !

          Bienvenue sur I2P ! Merci de patienter le temps qu'I2P démarre et trouve des pairs. @@ -9,7 +9,7 @@ Pendant ce temps, merci d'adjuster vos réglages de bande passante sur la configuration.

          -Une fois que vous avez une destination "clients partagés" listée sur la gauche, +Une fois que vous avez une indication "clients partagés…" listée sur la gauche, merci de jeter un œil à la FAQ.

          From 660ba64ce1aed33b7a2a8a2f93c93290c4e54969 Mon Sep 17 00:00:00 2001 From: magma Date: Wed, 30 Mar 2011 22:45:25 +0000 Subject: [PATCH 383/463] little fixes --- apps/routerconsole/jsp/help_fr.jsp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/routerconsole/jsp/help_fr.jsp b/apps/routerconsole/jsp/help_fr.jsp index e6b4e4e51..cd3c3df9d 100644 --- a/apps/routerconsole/jsp/help_fr.jsp +++ b/apps/routerconsole/jsp/help_fr.jsp @@ -43,18 +43,18 @@ Plus d'infos sur la page de configuration. le premier nombre est celui des routeurs avec qui le votre a communiqué dans les dernières minutes. Ça peut varier de 8-10 à plusieurs centaines, selon votre bande passante et son rapport de partage, et le trafic généré localement. Le second est celui des pairs vus dans les dernières heures. Ces nombres penvent varier sensiblement sans conséquence. -[Activer le graphique] (activer auparavant \"toutes -les statistiques\"). +[Activer le graphique] (activer auparavant "toutes +les statistiques").

        • Rapides: le nombre de pairs que vous mettez à contribution pour construire vos tunnels clients. En général dans une tranche de 8 à 30. Vos pairs rapides sont détaillés sur la page profils. [Activer le graphique].
        • Hautes capacités: nombre des pairs que vous utilisez pour construire quelques uns de vos tunnels exploratoires. Habituellement de 8 à 75. -Les pairs rapides font partie du groupe des \"Hautes capacités\". Vos pairs à hautes capacités sont aussi listés sur +Les pairs rapides font partie du groupe des "Hautes capacités". Vos pairs à hautes capacités sont aussi listés sur la page profils. -[Activer le graphique] (activer auparavant \"toutes les -statistiques\"). +[Activer le graphique] (activer auparavant "toutes les +statistiques").
        • Bien intégrés: vous utilisez ce groupe pour vos requêtes à la base de données du réseau. Ils sont souvent des pairs de remplissage par diffusion ("floodfill"). Vos pairs "bien intégrés" sont affichés en bas de la même page @@ -156,5 +156,5 @@ Les sources du code I2P et de la plupart des applications jointes est sur notre -

          Historique intégral +

          Historique complet


        • From 9f010d80fb3a4623d2423c6b630a661d27daac51 Mon Sep 17 00:00:00 2001 From: magma Date: Wed, 30 Mar 2011 22:52:54 +0000 Subject: [PATCH 384/463] checked against console --- apps/routerconsole/locale/messages_fr.po | 322 +++++++++++------------ 1 file changed, 161 insertions(+), 161 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index fe7b2b88d..751aa9850 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-26 08:34+0000\n" -"PO-Revision-Date: 2011-03-30 22:34+0100\n" +"PO-Revision-Date: 2011-03-31 00:51+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -178,7 +178,7 @@ msgstr "Réamorçage: collecte des URL sources." #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:335 #, java-format msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." -msgstr "Réamorçage: collecte routerInfo depuis l\\''URL source ({0} réussie, {1} erreurs)." +msgstr "Réamorçage: collecte routerInfo depuis l'URL source ({0} réussie, {1} erreurs)." #: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:512 msgid "NetDb entry" @@ -240,7 +240,7 @@ msgstr "Le pair distant, identifié par son hachage routeur" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 msgid "Dir" -msgstr "Dossier" +msgstr "Sens" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 msgid "Inbound connection" @@ -252,15 +252,15 @@ msgstr "Connexion sortante" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 msgid "They offered to introduce us (help other peers traverse our firewall)" -msgstr "Ils ont proposé de nous présenter (aide d\\''autres pairs à passer notre pare-feu)" +msgstr "Ils ont proposé de nous présenter (aide d'autres pairs à passer notre pare-feu)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 msgid "We offered to introduce them (help other peers traverse their firewall)" -msgstr "Nous avons proposé de les présenter (aide d\\''autres pairs à passer leur pare-feu)" +msgstr "Nous avons proposé de les présenter (aide d'autres pairs à passer leur pare-feu)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "How long since a packet has been received / sent" -msgstr "Combien de temps écoulé depuis la dernière réception / émission d\\''un paquet " +msgstr "Combien de temps écoulé depuis la dernière réception/émission d'un paquet " #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739 @@ -293,19 +293,19 @@ msgstr "En marche" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:742 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1907 msgid "Skew" -msgstr "décallée" +msgstr "Dérive" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 msgid "The difference between the peer's clock and your own" -msgstr "L\\''écart de temps entre l\\''horloge du pair et la votre" +msgstr "L'écart de temps entre l'horloge du pair et la votre" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 msgid "The congestion window, which is how many bytes can be sent without an acknowledgement" -msgstr "Fenêtre de congestion, en nombre d\\''octets transmissibles sans acquittement" +msgstr "Fenêtre de congestion, en nombre d'octets transmissibles sans acquittement" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 msgid "The number of sent messages awaiting acknowledgement" -msgstr "Nombre de messages en attente d\\''acquittement" +msgstr "Nombre de messages en attente d'acquittement" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 msgid "The maximum number of concurrent messages to send" @@ -313,7 +313,7 @@ msgstr "Le nombre maximum de messages simultanés à envoyer" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 msgid "The number of pending sends which exceed congestion window" -msgstr "Le nombre d\\''envois en attente qui débordent de la fenêtre de congestion" +msgstr "Le nombre d'envois en attente qui débordent de la fenêtre de congestion" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 msgid "The slow start threshold" @@ -326,11 +326,11 @@ msgstr "Aller-retour en ms" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 msgid "Dev" -msgstr "Dev" +msgstr "Deviat." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 msgid "The standard deviation of the round trip time in milliseconds" -msgstr "La dérive standard d\\''aller-retour en ms" +msgstr "La dérive standard d'aller-retour en ms" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 msgid "The retransmit timeout in milliseconds" @@ -382,7 +382,7 @@ msgstr "Le nombre de paquets en double reçus du pair" #: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:627 #, java-format msgid "Excessive clock skew: {0}" -msgstr "Décalage excessif de l\\''horloge: {0}" +msgstr "Décalage excessif de l'horloge: {0}" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732 msgid "NTCP connections" @@ -396,7 +396,7 @@ msgstr "Limite" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:734 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 msgid "Timeout" -msgstr "Dépassement d\\''attente" +msgstr "Dépassement d'attente" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:745 msgid "Out Queue" @@ -457,7 +457,7 @@ msgstr "Tri par durée de connexion" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1908 msgid "Sort by clock skew" -msgstr "Tri par décalage d\\''horloge" +msgstr "Tri par décalage d'horloge" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1911 msgid "Sort by congestion window" @@ -469,11 +469,11 @@ msgstr "Tri par seuil de démarrage lent" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1916 msgid "Sort by round trip time" -msgstr "Tri par durée d\\''aller-retour" +msgstr "Tri par durée d'aller-retour" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918 msgid "Sort by round trip time deviation" -msgstr "Tri par dérive de durée d\\''aller-retour" +msgstr "Tri par dérive de durée d'aller-retour" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1920 msgid "Sort by retransmission timeout" @@ -554,7 +554,7 @@ msgstr "Perte de tunnels: Forte charge" #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:708 msgid "Dropping tunnel requests: Queue time" -msgstr "Perte de tunnels: Temps en file d\\''attente" +msgstr "Perte de tunnels: Temps en file d'attente" #. 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!! @@ -720,7 +720,7 @@ msgstr "Suisse" #: ../java/build/Countries.java:44 msgid "Cote D'Ivoire" -msgstr "Côte d\\''ivoire" +msgstr "Côte d'ivoire" #: ../java/build/Countries.java:45 msgid "Cook Islands" @@ -948,7 +948,7 @@ msgstr "Inde" #: ../java/build/Countries.java:102 msgid "British Indian Ocean Territory" -msgstr "Territoire britannique de l\\''océan Indien" +msgstr "Territoire britannique de l'océan Indien" #: ../java/build/Countries.java:103 msgid "Iraq" @@ -1504,7 +1504,7 @@ msgstr "Configuration sauvegardé avec succès" #: ../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 "Erreur pendant l\\''enregistrement de la configuration (appliquée mais non sauvegardée): contrôlez les historiques" +msgstr "Erreur pendant l'enregistrement de la configuration (appliquée mais non sauvegardée): contrôlez les historiques" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:355 @@ -1514,7 +1514,7 @@ msgstr "Sauvegarder Configuration Client " #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:39 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427 msgid "Save Interface Configuration" -msgstr "Sauvegarder la configuration de l\\''interface" +msgstr "Sauvegarder la configuration de l'interface" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:441 @@ -1549,7 +1549,7 @@ msgstr "Greffon {0} arrêté" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:103 #, java-format msgid "Error stopping plugin {0}" -msgstr "Erreur d\\''arrêt du greffon {0}" +msgstr "Erreur d'arrêt du greffon {0}" #. label (IE) #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:124 @@ -1629,7 +1629,7 @@ msgstr "URL de mise à jour non spécifiée pour {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:320 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:325 msgid "Plugin or update download already in progress." -msgstr "Greffon ou téléchargement de mise à jour déjà en cours d\\''exécution." +msgstr "Greffon ou téléchargement de mise à jour déjà en cours d'exécution." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:311 #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:118 @@ -1654,7 +1654,7 @@ msgstr "Erreur de démarrage du greffon {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 msgid "Interface configuration saved successfully - restart required to take effect." -msgstr "La configuration de l\\''interface a été sauvegardée avec succès - redémarrer pour prise en compte." +msgstr "La configuration de l'interface a été sauvegardée avec succès - redémarrer pour prise en compte." #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:85 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258 @@ -1904,11 +1904,11 @@ msgstr "Enregistrer" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:121 msgid "Rechecking router reachability..." -msgstr "Vérification de l\\''accessibilité du routeur..." +msgstr "Vérification de l'accessibilité du routeur..." #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:153 msgid "Updating IP address" -msgstr "Mise à jour d\\''adresse IP en cours" +msgstr "Mise à jour d'adresse IP en cours" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:171 msgid "Disabling TCP completely" @@ -1968,13 +1968,13 @@ msgstr "Désactivation mode portable" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:250 msgid "Requiring SSU introducers" -msgstr "Nécessite de entremetteurs SSU" +msgstr "Nécessite des présentateurs 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 "Redémarrage respectueux en cours pour modifier l\\''adresse routeur publiée" +msgstr "Redémarrage respectueux en cours pour modifier l'adresse routeur publiée" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:314 msgid "Updating bandwidth share percentage" @@ -2004,7 +2004,7 @@ msgstr "= {0} o/mois maximum" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:20 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:333 msgid "Ban peer until restart" -msgstr "Interdire pair jusqu\\''au redémarrage" +msgstr "Interdire pair jusqu'au redémarrage" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:23 #, java-format @@ -2013,7 +2013,7 @@ msgstr "Banni manuellement via {0}" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24 msgid "banned until restart" -msgstr "interdit jusqu\\''au rédémarrage" +msgstr "interdit jusqu'au rédémarrage" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:27 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:38 @@ -2032,7 +2032,7 @@ msgstr "plus interdit" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35 msgid "is not currently banned" -msgstr "n\\''est pas actuellement interdit" +msgstr "n'est pas banni actuellement" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:39 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:361 @@ -2076,7 +2076,7 @@ msgstr "Arrêter immédiatement" #. give the UI time to respond #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:36 msgid "Cancel shutdown" -msgstr "Annuler l\\''arrêt" +msgstr "Annuler l'arrêt" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:37 msgid "Cancel restart" @@ -2130,7 +2130,7 @@ msgstr "Arrêt immédiat! (À la sauvage)" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:61 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:313 msgid "Cancel graceful shutdown" -msgstr "Annuler l\\''arrêt respectueux" +msgstr "Annuler l'arrêt respectueux" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:63 msgid "Graceful shutdown cancelled" @@ -2183,7 +2183,7 @@ msgstr "Ne pas lancer I2P au démarrage" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:84 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:373 msgid "Dump threads" -msgstr "Dump fils d\\''exécution" +msgstr "Cliché des tâches" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:91 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:381 @@ -2209,7 +2209,7 @@ msgstr "Service installé" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:107 msgid "Warning: unable to install the service" -msgstr "Avertissement: impossible d\\''installer le service" +msgstr "Avertissement: impossible d'installer le service" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:113 msgid "Service removed" @@ -2229,7 +2229,7 @@ msgstr "Échec de mise à jour du filtre de statistiques et emplacement" #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:114 msgid "Graph list updated, may take up to 60s to be reflected here and on the Graphs Page" -msgstr "Liste des graphiques mise à jour. Peut nécessiter jusqu\\''à 60s pour être répercutée ici et sur la page des graphiques" +msgstr "Liste des graphiques mise à jour. Peut nécessiter jusqu'à 60s pour être répercutée ici et la page des graphiques." #. the count isn't really correct anyway, since we don't check for actual changes #. addFormNotice("Updated settings for " + updated + " pools."); @@ -2244,7 +2244,7 @@ msgstr "Configuration du tunnel exploratoire a été sauvegardé avec succès." #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:36 msgid "Error saving the configuration (applied but not saved) - please see the error logs." -msgstr "Erreur pendant l\\''enregistrement de la configuration (appliquée mais non sauvegardée): contrôlez les historiques" +msgstr "Erreur pendant l'enregistrement de la configuration (appliquée mais non sauvegardée): contrôlez les historiques" #. * dummies for translation #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:14 @@ -2273,11 +2273,11 @@ msgstr "Tunnels clients pour {0}" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74 msgid "ANONYMITY WARNING - Settings include 0-hop tunnels." -msgstr "AVERTISSEMENT d\\''ANONYMAT: les réglages incluent des tunnels à 0 saut!" +msgstr "AVERTISSEMENT d'ANONYMAT: les réglages incluent des tunnels à 0 saut!" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:79 msgid "ANONYMITY WARNING - Settings include 1-hop tunnels." -msgstr "AVERTISSEMENT d\\''ANONYMAT: les réglages incluent des tunnels à 1 saut!" +msgstr "AVERTISSEMENT d'ANONYMAT: les réglages incluent des tunnels à 1 saut!" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 msgid "PERFORMANCE WARNING - Settings include very long tunnels." @@ -2378,11 +2378,11 @@ msgstr "Pas de mise à jour disponible" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:101 msgid "Updating news URL to" -msgstr "Mise à jour de l\\''URL de news vers " +msgstr "Mise à jour de l'URL de news vers " #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:109 msgid "Updating proxy host to" -msgstr "Mise à jour de l\\''hôte mandataire vers" +msgstr "Mise à jour de l'hôte mandataire vers" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:117 msgid "Updating proxy port to" @@ -2398,7 +2398,7 @@ msgstr "Mise à jour de la stratégie de mises à jour vers" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:146 msgid "Updating update URLs." -msgstr "Mise à jour de l\\''URL de mises à jour." +msgstr "Mise à jour de l'URL de mises à jour." #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:155 msgid "Updating trusted keys." @@ -2406,7 +2406,7 @@ msgstr "Mise à jour des clefs de confiance." #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:163 msgid "Updating unsigned update URL to" -msgstr "Mise à jour de l\\''URL de mises à jour non signées vers" +msgstr "Mise à jour de l'URL de mises à jour non signées vers" #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:88 #: ../java/src/net/i2p/router/web/GraphHelper.java:167 @@ -2431,7 +2431,7 @@ msgstr "Télécharger, vérifier et redémarrer" #: ../java/src/net/i2p/router/web/FormHandler.java:176 msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit." -msgstr "Soumission de formulaire incorrecte: vous avez peut-être utilisé le bouton \\''Page arrière\\'' ou \\''Rechargement\\'' de votre navigateur. Merci de renvoyer." +msgstr "Soumission de formulaire incorrecte: vous avez peut-être utilisé le bouton 'Page précédente' ou 'Rechargement' de votre navigateur. Merci de renvoyer." #: ../java/src/net/i2p/router/web/GraphHelper.java:93 msgid "Combined bandwidth graph" @@ -2694,7 +2694,7 @@ msgstr "Actualités vérifiés il y a {0}" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:77 #, java-format msgid "Cannot check, plugin {0} is not installed" -msgstr "Non contrôlable, le greffon {0} n\\''est pas installé" +msgstr "Non contrôlable, le greffon {0} n'est pas installé" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:129 #, java-format @@ -2800,7 +2800,7 @@ msgstr "La signature du greffon téléchargé ne correspond pas à celle de celu #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:320 #, java-format msgid "Downloaded plugin version {0} is not newer than installed plugin" -msgstr "La version {0} du greffon téléchargé n\\''est pas plus récente que celle installée" +msgstr "La version {0} du greffon téléchargé n'est pas plus récente que celle installée" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:327 #, java-format @@ -2814,12 +2814,12 @@ msgstr "La mise à jour du greffon nécessite au plus la version {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351 msgid "Plugin is for upgrades only, but the plugin is not installed" -msgstr "Ce greffon est seulement une mise à jour, mais le greffon prérequis n\\''est pas installé" +msgstr "Ce greffon est seulement une mise à jour, mais le greffon prérequis n'est pas installé" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:364 #, java-format msgid "Failed to install plugin in {0}" -msgstr "Échec d\\''installation du greffon {0}" +msgstr "Échec d'installation du greffon {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:371 #, java-format @@ -2994,11 +2994,11 @@ msgstr "Dernier stk.KO" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:203 msgid "1h Fail Rate" -msgstr "Taux d\\''échec (1h)" +msgstr "Taux d'échec (1h)" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:204 msgid "1d Fail Rate" -msgstr "Taux d\\''échec (1j)" +msgstr "Taux d'échec (1j)" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:251 msgid "Thresholds" @@ -3079,7 +3079,7 @@ msgstr "Le bannissement temporaire expire dans {0}" #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:64 #, java-format msgid "Banned until restart or in {0}" -msgstr "Banni jusqu\\''au redémarrage ou dans {0}" +msgstr "Banni jusqu'au redémarrage ou dans {0}" #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:76 msgid "unban now" @@ -3139,7 +3139,7 @@ msgstr "Ces statistiques sont initialement destinées au développement et au d #: ../java/src/net/i2p/router/web/StatsGenerator.java:106 #: ../java/src/net/i2p/router/web/StatsGenerator.java:157 msgid "No lifetime events" -msgstr "pas d\\''événement de durée de vie" +msgstr "Aucun d'événement de durée de vie" #: ../java/src/net/i2p/router/web/StatsGenerator.java:117 msgid "frequency" @@ -3147,11 +3147,11 @@ msgstr "fréquence" #: ../java/src/net/i2p/router/web/StatsGenerator.java:121 msgid "Rolling average events per period" -msgstr "Moyenne glissante d\\''évènements par période" +msgstr "Moyenne glissante d'évènements par période" #: ../java/src/net/i2p/router/web/StatsGenerator.java:125 msgid "Highest events per period" -msgstr "maximum d\\''évènements par période" +msgstr "maximum d'évènements par période" #. if (showAll && (curFreq.getMaxAverageEventsPerPeriod() > 0) && (curFreq.getAverageEventsPerPeriod() > 0) ) { #. buf.append("(current is "); @@ -3199,15 +3199,15 @@ msgstr[1] "Il y a eu {0} évènements sur cette période." #: ../java/src/net/i2p/router/web/StatsGenerator.java:203 #, java-format msgid "The period ended {0} ago." -msgstr "La période s\\''est terminée il y a {0}." +msgstr "La période s'est terminée il y a {0}." #: ../java/src/net/i2p/router/web/StatsGenerator.java:205 msgid "No events" -msgstr "pas d\\''événement" +msgstr "pas d'événement" #: ../java/src/net/i2p/router/web/StatsGenerator.java:211 msgid "Average event count" -msgstr "nombre moyen d\\''évènements" +msgstr "nombre moyen d'évènements" #: ../java/src/net/i2p/router/web/StatsGenerator.java:213 msgid "Events in peak period" @@ -3219,7 +3219,7 @@ msgstr "Graphique de données" #: ../java/src/net/i2p/router/web/StatsGenerator.java:223 msgid "Graph Event Count" -msgstr "nombre d\\''évènements de graphiques" +msgstr "nombre d'évènements de graphiques" #: ../java/src/net/i2p/router/web/StatsGenerator.java:226 msgid "Export Data as XML" @@ -3248,11 +3248,11 @@ msgstr "Services I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:63 msgid "Manage your I2P hosts file here (I2P domain name resolution)" -msgstr "Gérer votre fichier \\''I2P hosts\\'' ici (I2P DNS)" +msgstr "Gérer votre fichier d'hôtes I2P ici (I2P DNS)" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:65 msgid "Addressbook" -msgstr "Carnet d\\''adresses" +msgstr "Carnet d'adresses" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:69 msgid "Built-in anonymous BitTorrent Client" @@ -3356,7 +3356,7 @@ msgstr "Identité locale" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:175 msgid "Your unique I2P router identity is" -msgstr "L\\''identité unique de votre routeur commence par" +msgstr "L'identité unique de votre routeur commence par" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179 msgid "never reveal it to anyone" @@ -3364,7 +3364,7 @@ msgstr "NE la révélez JAMAIS à PERSONNE !" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:181 msgid "show" -msgstr "affiche" +msgstr "Détails" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192 msgid "How long we've been running for this session" @@ -3376,7 +3376,7 @@ msgstr "Lancé depuis" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 msgid "Help with configuring your firewall and router for optimal I2P performance" -msgstr "Aide à la configuration du pare-feu et du routeur afin d\\''optimiser la performance d\\''I2P" +msgstr "Aide à la configuration du pare-feu et du routeur afin d'optimiser la performance d'I2P" #. Note to translators: parameter is a version, e.g. "0.8.4" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:232 @@ -3474,7 +3474,7 @@ msgstr "En attente" #: ../java/src/net/i2p/router/web/SummaryHelper.java:106 msgid "ERR-Client Manager I2CP Error - check logs" -msgstr "ERR-Client Manager I2CP Error - vérifier l\\''historique" +msgstr "ERR-Erreur du gestionnaire de clients I2CP - vérifier l'historique" #: ../java/src/net/i2p/router/web/SummaryHelper.java:113 #, java-format @@ -3513,7 +3513,7 @@ msgstr "Bloqué par un pare-feu" #: ../java/src/net/i2p/router/web/SummaryHelper.java:135 msgid "ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" -msgstr "ERR-port UDP en cours d\\''utilisation - Réglez i2np.udp.internalPort=xxxx dans la configuration avancée et redémarrez" +msgstr "ERR-port UDP en cours d'utilisation - Réglez i2np.udp.internalPort=xxxx dans la configuration avancée et redémarrez" #: ../java/src/net/i2p/router/web/SummaryHelper.java:141 msgid "ERR-No Active Peers, Check Network Connection and Firewall" @@ -3579,7 +3579,7 @@ msgstr "Création des tunnels en cours" #: ../java/src/net/i2p/router/web/SummaryHelper.java:421 #: ../java/strings/Strings.java:36 msgid "shared clients" -msgstr "clients partagés" +msgstr "client partagé" #. Note to translators: all runtime zh translation disabled in this file, no font available in RRD #: ../java/src/net/i2p/router/web/SummaryRenderer.java:89 @@ -3696,7 +3696,7 @@ msgstr "Point terminal" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:205 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:212 msgid "Build in progress" -msgstr "Création d\\''un tunnel en cours" +msgstr "Création d'un tunnel en cours" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:205 msgid "inbound" @@ -3806,7 +3806,7 @@ msgstr "Échec de transfert depuis {0}" #. wars for ConfigClientsHelper #: ../java/strings/Strings.java:12 msgid "addressbook" -msgstr "carnet d\\''adresse" +msgstr "carnet d'adresses" #: ../java/strings/Strings.java:13 msgid "i2psnark" @@ -3841,7 +3841,7 @@ msgstr "Pont applicatif SAM" #: ../java/strings/Strings.java:24 msgid "Application tunnels" -msgstr "Tunnels d\\''application" +msgstr "Tunnels d'applications" #: ../java/strings/Strings.java:25 msgid "My eepsite web server" @@ -3942,7 +3942,7 @@ msgstr "InNetPool" #: ../java/strings/Strings.java:64 msgid "JobQueue" -msgstr "File d\\''attente" +msgstr "File d'attente de travaux" #: ../java/strings/Strings.java:65 msgid "NetworkDatabase" @@ -4043,7 +4043,7 @@ msgstr "Taux de bande passante de réception faible" #. bw.recvRate #: ../java/strings/Strings.java:102 msgid "Low-level bandwidth send rate" -msgstr "Taux de bande passante d\\''émission faible" +msgstr "Taux de bande passante d'émission faible" #. bw.sendRate #: ../java/strings/Strings.java:103 @@ -4170,7 +4170,7 @@ msgstr "Gestionnaire de bande passante" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:318 msgid "I2P will work best if you configure your rates to match the speed of your internet connection." -msgstr "I2P fonctionnera mieux si vous configurez les débits de réception et d\\''émission pour qu\\''ils correspondent à ceux de votre connexion Internet." +msgstr "I2P fonctionnera mieux si vous configurez les débits de réception et d'émission pour qu'ils correspondent à ceux de votre connexion Internet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:322 msgid "KBps In" @@ -4197,11 +4197,11 @@ msgstr "Vous avez configuré I2P pour qu'il ne partage que {0} ko/s." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:364 msgid "I2P requires at least 12KBps to enable sharing. " -msgstr "I2P a besoin de plus de 12ko/s afin d\\''activer le partage de bande passante." +msgstr "I2P a besoin de plus de 12ko/s afin d'activer le partage de bande passante." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:365 msgid "Please enable sharing (participating in tunnels) by configuring more bandwidth. " -msgstr "Merci d\\'' activer le partage de bande passante (en participant aux tunnels) en augmentant votre bande passante, si possible." +msgstr "Merci d'activer le partage de bande passante (en participant aux tunnels) en augmentant votre bande passante, si possible." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:366 msgid "It improves your anonymity by creating cover traffic, and helps the network." @@ -4251,7 +4251,7 @@ msgstr "Configuration UPnP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 msgid "Enable UPnP to open firewall ports" -msgstr "Activer UPnP afin d\\''ouvrir les ports du pare-feu" +msgstr "Activer UPnP afin d'ouvrir les ports du pare-feu" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:405 msgid "UPnP status" @@ -4264,36 +4264,36 @@ msgstr "Configuration IP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:409 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 msgid "Externally reachable hostname or IP address" -msgstr "Adresse IP ou nom d\\''hôte qui est joignable depuis l\\''exterieur" +msgstr "Adresse IP ou nom d'hôte qui est joignable depuis l'extérieur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:413 msgid "Use all auto-detect methods" -msgstr "Utiliser toutes les méthodes d\\''auto-détection" +msgstr "Utiliser toutes les méthodes d'auto-détection" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 msgid "Disable UPnP IP address detection" -msgstr "Desactiver la détection de l\\''adresse IP par UPnP" +msgstr "Desactiver la détection de l'adresse IP par UPnP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:421 msgid "Ignore local interface IP address" -msgstr "Ignorer l\\''adresse IP de l\\''interface locale" +msgstr "Ignorer l'adresse IP de l'interface locale" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:425 msgid "Use SSU IP address detection only" -msgstr "Utiliser seulement SSU pour détecter l\\''adresse IP" +msgstr "Utiliser seulement SSU pour détecter l'adresse IP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:429 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 msgid "Specify hostname or IP" -msgstr "Saisir l\\''adresse IP ou le nom de l\\''hôte" +msgstr "Saisir l'adresse IP ou le nom de l'hôte" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 msgid "Select Interface" -msgstr "Choisir l\\''interface" +msgstr "Choisir l'interface" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:449 msgid "Hidden mode - do not publish IP" -msgstr "Mode caché - ne pas publier l\\''adresse IP" +msgstr "Mode caché - ne pas publier l'adresse IP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:451 msgid "(prevents participating traffic)" @@ -4301,11 +4301,11 @@ msgstr "(empêche le trafic participants)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:453 msgid "Action when IP changes" -msgstr "Action quand l\\''IP change" +msgstr "Action quand l'IP change" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:457 msgid "Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity" -msgstr "Mode IP publique dynamique/PC portable: modifie l\\''identité du router et le port UDP quand l\\''IP change pour améliorer l\\''anonymat" +msgstr "Mode IP publique dynamique/PC portable: modifie l'identité du router et le port UDP quand l'IP change pour améliorer l'anonymat" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 msgid "Experimental" @@ -4325,7 +4325,7 @@ msgstr "Configuration TCP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:483 msgid "Use auto-detected IP address" -msgstr "Utiliser l\\''adresse IP qui a été auto-détectée" +msgstr "Utiliser l'adresse IP qui a été auto-détectée" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:517 @@ -4334,11 +4334,11 @@ msgstr "actuellement" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:489 msgid "if we are not firewalled" -msgstr "s\\''il n\\''y a pas de pare-feu" +msgstr "si vous n'êtes pas bloqué par un pare-feu" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 msgid "Always use auto-detected IP address (Not firewalled)" -msgstr "Toujours utiliser l\\''adresse IP qui a été auto-détectée (non bloquée)" +msgstr "Toujours utiliser l'adresse IP qui a été auto-détectée (non bloquée)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:503 msgid "Disable inbound (Firewalled)" @@ -4354,7 +4354,7 @@ msgstr "(selectionner seulement si derrière un pare-feu qui limite les connexio #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:511 msgid "Externally reachable TCP port" -msgstr "Port TCP joignable de l\\''extérieur" +msgstr "Port TCP joignable de l'extérieur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:515 msgid "Use the same port configured for UDP" @@ -4381,7 +4381,7 @@ msgstr "Aide à la configuration" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:538 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587 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 fonctionnera derrière la plupart des pare-feux, mais votre vitesse et votre intégration avec le réseau sera améliorée par la redirection des ports UDP et TCP d\\''I2P." +msgstr "I2P fonctionnera derrière la plupart des pare-feux, mais votre vitesse et votre intégration avec le réseau sera améliorée par la redirection des ports UDP et TCP d'I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:540 msgid "If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you." @@ -4401,7 +4401,7 @@ msgstr "Certains types de pare-feu (tels que les NAT symétriques) empêchent un #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 msgid "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports." -msgstr "UPnP est utilisé pour communiquer avec des \"passerelles Internet\" pour détecter l\\''adresse IP extérieure et contrôler la redirection des ports." +msgstr "UPnP est utilisé pour communiquer avec des passerelles Internet pour détecter l'adresse IP extérieure et contrôler la redirection des ports." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 msgid "UPnP support is beta, and may not work for any number of reasons" @@ -4413,23 +4413,23 @@ msgstr "Aucun appareil compatible UPnP détecté" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 msgid "UPnP disabled on the device" -msgstr "UPnP est desactivé sur l\\''appareil" +msgstr "UPnP est désactivé sur l'appareil" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 msgid "Software firewall interference with UPnP" -msgstr "Il y a de l\\''intérference entre un pare-feu en software et UPnP" +msgstr "Interférence entre un pare-feu logiciel et UPnP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 msgid "Bugs in the device's UPnP implementation" -msgstr "Il y a des bogues dans l\\''implementation d\\''UPnP dans l\\''appareil" +msgstr "Bogues dans l'implémentation UPnP de l'appareil" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 msgid "Multiple firewall/routers in the internet connection path" -msgstr "Il y a plusieurs routeurs/pare-feux entre le routeur I2P et l\\''internet" +msgstr "Il y a plusieurs routeurs/pare-feux entre le routeur I2P et l'Internet" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 msgid "UPnP device change, reset, or address change" -msgstr "Un changement de l\\''appareil UPnP, une redémarrage, ou une changement d\\''adresse IP" +msgstr "Un changement d'appareil UPnP, un redémarrage, ou un changement d'adresse IP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:571 msgid "Review the UPnP status here." @@ -4441,7 +4441,7 @@ msgstr "UPnP peut être activé ou desactivé au-dessus, mais afin de prendre en #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575 msgid "Hostnames entered above will be published in the network database." -msgstr "Les noms d\\''hôtes qui ont été saisis au-dessus seront publié dans la base de données du réseau I2P." +msgstr "Les noms d'hôtes qui ont été saisis au-dessus seront publié dans la base de données du réseau I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 msgid "They are not private." @@ -4453,11 +4453,11 @@ msgstr "En plus, ne saisissez pas une adresse IP privée tel que 127.0.0. #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 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 "Si vous saisissez une mauvaise adresse IP ou nom d\\''hôte, ou configurer votre NAT ou pare-feu incorrectement, votre intégration avec le réseau I2P dégradera substantiellement." +msgstr "Si vous saisissez une mauvaise adresse IP ou nom d'hôte, ou configurer votre NAT ou pare-feu incorrectement, votre intégration avec le réseau I2P dégradera substantiellement." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 msgid "When in doubt, leave the settings at the defaults." -msgstr "Si vous n\\''êtes pas sûr de vous, laisser la configuration par défaut." +msgstr "Dans le doute, laissez les réglages par défaut." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 msgid "Reachability Help" @@ -4465,11 +4465,11 @@ msgstr "Aide sur la joignabilité" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:590 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 "Si vous pensez que vous avez ouvert votre pare-feu et qu\\''I2P indique toujours que vous êtes derrière le pare-feu, n\\''oubliez pas que vous avez peut-être plusieurs pare-feux: par exemple celui de votre box DSL et un pare-feu logiciel dans votre ordinateur." +msgstr "Si vous pensez que vous avez ouvert votre pare-feu et qu'I2P indique toujours que vous êtes derrière le pare-feu, n'oubliez pas que vous avez peut-être plusieurs pare-feux: par exemple celui de votre box DSL et un pare-feu logiciel dans votre ordinateur." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593 msgid "If there is an error, the logs may also help diagnose the problem." -msgstr "S\\''il y a une erreur, les historiques peuvent aider au diagnostic." +msgstr "S'il y a une erreur, les historiques peuvent aider au diagnostic." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 msgid "Your UDP port does not appear to be firewalled." @@ -4489,19 +4489,19 @@ msgstr "Cependant, si ça se reproduit systématiquement, vous devez vérifier q #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 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 fonctionne très bien derrière un pare-feu, ça n\\''est pas un problème. Derrière un pare-feu, le routeur utilise des \"entremetteurs\" pour relayer les connexions entrantes." +msgstr "I2P fonctionne très bien derrière un pare-feu, ça n'est pas un problème. Derrière un pare-feu, le routeur utilise des \"présentateurs\" pour relayer les connexions entrantes." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 msgid "However, you will get more participating traffic and help the network more if you can open your firewall(s)." -msgstr "Cependant, vous obtiendrez plus de trafic participants et aiderez plus le réseau si vous avez la possibilité d\\''ouvrir vos pare-feux." +msgstr "Cependant, vous obtiendrez plus de trafic participants et aiderez plus le réseau si vous avez la possibilité d'ouvrir vos pare-feux." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 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 "S vous pensez que vous l\\''avez déjà fait, n\\''oubliez pas que vous avez peut-être un pare-feu matériel et logiciel, ou que vous êtes derrière un pare-feu supplémentaire sur lequel vous n\\''avez aucun contrôle (p.e. en entreprise)." +msgstr "S vous pensez que vous l'avez déjà fait, n'oubliez pas que vous avez peut-être un pare-feu matériel et logiciel, ou que vous êtes derrière un pare-feu supplémentaire sur lequel vous n'avez aucun contrôle (p.e. en entreprise)." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 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 "De plus, certains pare-feux ne peuvent pas transférer correctement TCP et UDP sur le même port, ou il pourrait y avoir d\\''autres limitations ou des bogues qui les empêcheraient de passer le trafic à I2P." +msgstr "De plus, certains pare-feux ne peuvent pas transférer correctement TCP et UDP sur le même port, ou il pourrait y avoir d'autres limitations ou des bogues qui les empêcheraient de passer le trafic à I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 msgid "The router is currently testing whether your UDP port is firewalled." @@ -4509,7 +4509,7 @@ msgstr "Le routeur teste actuellement si votre port UDP est bloqué." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 msgid "The router is not configured to publish its address, therefore it does not expect incoming connections." -msgstr "Le routeur n\\''est pas configuré pour publier son adresse, donc il n\\''attend pas de connexions entrantes." +msgstr "Le routeur n'est pas configuré pour publier son adresse, donc il n'attend pas de connexions entrantes." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 msgid "WARN - Firewalled and Fast" @@ -4541,7 +4541,7 @@ msgstr "WARN - Pare-feu avec TCP entrant activé" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:637 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 "Vous avez configuré le TCP entrant, cependant votre port UDP est bloqué et en conséquence il est probable que TCP l\\''est aussi." +msgstr "Vous avez configuré le TCP entrant, cependant votre port UDP est bloqué et en conséquence il est probable que TCP l'est aussi." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 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." @@ -4549,7 +4549,7 @@ msgstr "Si votre port TCp est bloqué et les connexions entrantes TCP activées #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 msgid "Please open your firewall or disable inbound TCP above." -msgstr "Merci d\\''ouvrir votre pare-feu ou de désactiver le TCP entrant ci-dessus." +msgstr "Merci d'ouvrir votre pare-feu ou de désactiver le TCP entrant ci-dessus." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 msgid "WARN - Firewalled with UDP Disabled" @@ -4565,7 +4565,7 @@ msgstr "Vous apparaissez comme étant bloqué par un pare-feu pour TCP, et en co #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 msgid "Please open your firewall or enable UDP." -msgstr "Merci d\\''ouvrir votre pare-feu ou d\\''activer UDP." +msgstr "Merci d'ouvrir votre pare-feu ou d'activer UDP." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:651 msgid "ERR - Clock Skew" @@ -4573,11 +4573,11 @@ msgstr "ERR - horloge décalée" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 msgid "Your system's clock is skewed, which will make it difficult to participate in the network." -msgstr "L\\''horloge système est décalée, ce qui rend la participation au réseau difficile." +msgstr "L'horloge système est décalée, ce qui rend la participation au réseau difficile." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:655 msgid "Correct your clock setting if this error persists." -msgstr "Corrigez votre réglage d\\''horloge si cette erreur persiste." +msgstr "Corrigez votre réglage d'horloge si cette erreur persiste." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:657 msgid "ERR - Private TCP Address" @@ -4585,7 +4585,7 @@ msgstr "ERR - Adresse TCP privée" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:659 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 "Vous ne devez jamais publier une IP non routable telle que 127.0.0.1 ou 192.168.1.1 en tant qu\\''adresse externe." +msgstr "Vous ne devez jamais publier une IP non routable telle que 127.0.0.1 ou 192.168.1.1 en tant qu'adresse externe." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 msgid "Correct the address or disable inbound TCP above." @@ -4605,19 +4605,19 @@ msgstr "I2P marche mal derrière ce genre de pare-feu. vous ne pourrez sûrement #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:669 msgid "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" -msgstr "ERR - Port UDP en cours d\\''utilisation - réglez i2np.udp.internalPort=xxxx dans la configuration avancée et redémarrez" +msgstr "ERR - Port UDP en cours d'utilisation - réglez i2np.udp.internalPort=xxxx dans la configuration avancée et redémarrez" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 msgid "I2P was unable to bind to port 8887 or other configured port." -msgstr "I2P n\\''a pas pu s\\''attacher au port configuré." +msgstr "I2P n'a pas pu s'attacher au port configuré." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:673 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 "Vérifiez si un autre programme utilise le port configuré pour I2P. Si oui, arrêtez ce programme ou configurez I2P pour qu\\''il utilise un port différent (dans Windows tapez netstat dans une boîte de commandes pour lister les ports utilisés par les programmes)." +msgstr "Vérifiez si un autre programme utilise le port configuré pour I2P. Si oui, arrêtez ce programme ou configurez I2P pour qu'il utilise un port différent (dans Windows tapez netstat dans une boîte de commandes pour lister les ports utilisés par les programmes)." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:675 msgid "This may be a transient error, if the other program is no longer using the port." -msgstr "Il s\\''agit peut-être d\\''une erreur passagère, si l\\''autre programme n\\''utilise plus le port." +msgstr "Il s'agit peut-être d'une erreur passagère, si l'autre programme n'utilise plus le port." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:677 msgid "However, a restart is always required after this error." @@ -4625,11 +4625,11 @@ msgstr "Cependant un redémarrage du routeur est toujours requis après cette er #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:679 msgid "ERR - UDP Disabled and Inbound TCP host/port not set" -msgstr "ERR - UDP est désactivé et l\\''hôte/port entrants ne sont pas définis." +msgstr "ERR - UDP est désactivé et l'hôte/port entrants ne sont pas définis." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:681 msgid "You have not configured inbound TCP with a hostname and port above, however you have disabled UDP." -msgstr "vous n\\''avez pas configuré le TCP entrant ci-dessus avec un nom d\\''hôte et un port, mais vous avez désactivé UDP." +msgstr "vous n'avez pas configuré le TCP entrant ci-dessus avec un nom d'hôte et un port, mais vous avez désactivé UDP." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:683 msgid "Therefore your router cannot accept inbound connections." @@ -4637,7 +4637,7 @@ msgstr "Le routeur ne peut donc pas accepter de connexions entrantes." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:685 msgid "Please configure a TCP host and port above or enable UDP." -msgstr "Merci de configurer ci-dessus un nom et un port TCP, ou d\\''activer UDP." +msgstr "Merci de configurer ci-dessus un nom et un port TCP, ou d'activer UDP." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:687 msgid "ERR - Client Manager I2CP Error - check logs" @@ -4645,11 +4645,11 @@ msgstr "ERR - Client Manager I2CP Error - vérifiez les historique" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:689 msgid "This is usually due to a port 7654 conflict. Check the logs to verify." -msgstr "Ceci est habituellement dû à un conflit de port 7654. Vérifiez dans l\\''historique. (et pensez éventuellement à netstat ;-) ) " +msgstr "Ceci est habituellement dû à un conflit de port 7654. Vérifiez dans l'historique. (et pensez éventuellement à netstat ;-) ) " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:691 msgid "Do you have another I2P instance running? Stop the conflicting program and restart I2P." -msgstr "Avez-vous une autre instance d\\''I2P en cours d\\''exécution? Arrêtez le programme en conflit et redémarrez I2P." +msgstr "Avez-vous une autre instance d'I2P en cours d'exécution? Arrêtez le programme en conflit et redémarrez I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:113 msgid "config advanced" @@ -4681,11 +4681,11 @@ msgstr "Préférences" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:332 msgid "The Java clients listed below are started by the router and run in the same JVM." -msgstr "Les client Java listés ci-dessous sont démarrés par le routeur et s\\''exécutent dans la même JVM." +msgstr "Les client Java listés ci-dessous sont démarrés par le routeur et s'exécutent dans la même JVM." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:338 msgid "To change other client options, edit the file" -msgstr "Pour changer d\\''autres options du client, modifiez le fichier" +msgstr "Pour changer d'autres options du client, modifiez le fichier" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 @@ -4699,7 +4699,7 @@ msgstr "Configuration interface client avancée" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:361 msgid "External I2CP (I2P Client Protocol) Interface Configuration" -msgstr "Configuration de l\\''interface I2CP (I2P Client Protocol) externe" +msgstr "Configuration de l'interface I2CP (I2P Client Protocol) externe" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:367 msgid "Enabled without SSL" @@ -4743,7 +4743,7 @@ msgstr "Tous les changements apportés ici doivent être répercutés dans le cl #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:421 msgid "Many clients do not support SSL or authorization." -msgstr "Nombre de clients ne prennent pas en charge l\\''authentification ou SSL." +msgstr "Nombre de clients ne prennent pas en charge l'authentification ou SSL." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:429 msgid "WebApp Configuration" @@ -4751,11 +4751,11 @@ msgstr "Configuration WebApp" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 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 "Les applications Web Java listées ci-dessous sont démarrées par le client webConsole et s\\''exécutent dans la même JVM que le routeur. Il s\\''agit généralement d\\''applications web accessibles par la console du routeur. Il peut s\\''agir d\\''applications complètes (p.e. i2pSnark), d\\''interfaces pour d\\''autres clients ou applications qui doivent être activées séparément (p.e. susidns, i2ptunnel), ou n\\''ayant absolument aucune interface web (p.e. le carnet d\\''adresses)" +msgstr "Les applications Web Java listées ci-dessous sont démarrées par le client webConsole et s'exécutent dans la même JVM que le routeur. Il s'agit généralement d'applications web accessibles par la console du routeur. Il peut s'agir d'applications complètes (p.e. i2pSnark), d'interfaces pour d'autres clients ou applications qui doivent être activées séparément (p.e. susidns, i2ptunnel), ou n'ayant absolument aucune interface web (p.e. le carnet d'adresses)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433 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 "Une appli web peut aussi être désactivée en supprimant le ficher .war du répertoire des web apps; mais le fichier et la web app reviendront à l\\''occasion d\\''une mise à jour du routeur, et donc la désactivation depuis la console est la méthode recommandée." +msgstr "Une appli web peut aussi être désactivée en supprimant le ficher .war du répertoire des web apps; mais le fichier et la web app reviendront à l'occasion d'une mise à jour du routeur, et donc la désactivation depuis la console est la méthode recommandée." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:445 msgid "Plugin Configuration" @@ -4823,7 +4823,7 @@ msgstr "Configuration des historiques I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 msgid "Configure I2P Logging Options" -msgstr "Configuration des options d\\''historiques" +msgstr "Configuration des options d'historiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:321 msgid "Logging filename" @@ -4831,15 +4831,15 @@ msgstr "Nom du fichier des historiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:325 msgid "(the symbol '@' will be replaced during log rotation)" -msgstr "(le caractère \\''@\\'' sera remplacé lors des rotations d\\''historiques)" +msgstr "(le caractère '@' sera remplacé lors des rotations d'historiques)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:327 msgid "Log record format" -msgstr "Format des enregistrements d\\''historiques" +msgstr "Format des enregistrements d'historiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:331 msgid "(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" -msgstr "(use \\''d\\'' = date, \\''c\\'' = classe, \\''t\\'' = tâche, \\''p\\'' = priorité, \\''m\\'' = message)" +msgstr "(utilisez 'd' = date, 'c' = classe, 't' = tâche, 'p' = priorité, 'm' = message)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:333 msgid "Log date format" @@ -4847,15 +4847,15 @@ msgstr "Format de date des historiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:337 msgid "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)" -msgstr "(\\''MM\\'' = mois, \\''dd\\'' = jour, \\''HH\\'' = heure, \\''mm\\'' = minute, \\''ss\\'' = seconde, \\''SSS\\'' = milliseconde)" +msgstr "('MM' = mois, 'dd' = jour, 'HH' = heure, 'mm' = minute, 'ss' = seconde, 'SSS' = milliseconde)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 msgid "Max log file size" -msgstr "Taille max des fichiers d\\''historiques" +msgstr "Taille max des fichiers d'historiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:343 msgid "Default log level" -msgstr "Niveau d\\''historisation par défaut" +msgstr "Niveau d'historisation par défaut" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:347 msgid "(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)" @@ -4863,7 +4863,7 @@ msgstr "(DEBUG et INFO sont déconseillés, car ils ralentissent double-plus-gr #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:349 msgid "Log level overrides" -msgstr "Exceptions au niveau d\\''historisation" +msgstr "Exceptions au niveau d'historisation" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:353 msgid "New override" @@ -4887,7 +4887,7 @@ msgstr "Empreinte du routeur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:329 msgid "Manually Ban / Unban a Peer" -msgstr "(Dé)banissement manuel d\\''un pair" +msgstr "(Dé)banissement manuel d'un pair" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:331 msgid "Banning will prevent the participation of this peer in tunnels you create." @@ -4993,19 +4993,19 @@ msgstr "Arrêter le routeur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 msgid "Graceful shutdown lets the router satisfy the agreements it has already made before shutting down, but may take a few minutes." -msgstr "Un arrêt respectueux permet au routeur de satisfaire les accords en place avec d\\''autres routeurs avant la fermeture, mais cela prendra quelques minutes." +msgstr "Un arrêt respectueux permet au routeur de satisfaire les accords en place avec d'autres routeurs avant la fermeture, mais cela prendra quelques minutes." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:307 msgid "If you need to kill the router immediately, that option is available as well." -msgstr "Si vous avez besoin d\\''arrêter le routeur I2P immédiatement, cette option est également disponible." +msgstr "Si vous avez besoin d'arrêter le routeur I2P immédiatement, cette option est également disponible." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 msgid "If you want the router to restart itself after shutting down, you can choose one of the following." -msgstr "Si vous voulez que le routeur redémarre après l\\''arrêt, vous pouvez choisir une des possibilités suivantes." +msgstr "Si vous voulez que le routeur redémarre après l'arrêt, vous pouvez choisir une des possibilités suivantes." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 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 "C\\''est utile dans certaines situations: p.e. quand vous faites un réglage que telle application cliente ne lit qu\\''au démarrage, comme le mot de passe de la console ou l\\''interface sur lequel elle écoute." +msgstr "C'est utile dans certaines situations: p.e. quand vous faites un réglage que telle application cliente ne lit qu'au démarrage, comme le mot de passe de la console ou l'interface sur lequel elle écoute." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 msgid "A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately." @@ -5021,7 +5021,7 @@ msgstr "Intégration dans la zone de notification" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 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 "Sur Windows, une icône pour la zone de notification indiquant l\\''état du routeur " +msgstr "Sur Windows, une icône pour la zone de notification indiquant l'état du routeur " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 msgid "(later on, I2P client applications will be able to integrate their own functionality into the system tray as well)." @@ -5033,11 +5033,11 @@ msgstr "Si vous êtes sur Windows, vous pouvez (dés)activer cette icône ici." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 msgid "Show systray icon" -msgstr "Afficher l\\''icône de zone de notification" +msgstr "Afficher l'icône de zone de notification" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:343 msgid "Hide systray icon" -msgstr "Masquer l\\''icône de zone de notification" +msgstr "Masquer l'icône de zone de notification" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:345 msgid "Run on startup" @@ -5053,7 +5053,7 @@ msgstr "Si vous préférez la ligne commande, vous pouvez aussi exécuter la" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 msgid "If you are running I2P as service right now, removing it will shut down your router immediately." -msgstr "Si vous exécutez actuellement I2P en tant que service, l\\''enlever arrêtera le routeur immédiatement." +msgstr "Si vous exécutez actuellement I2P en tant que service, l'enlever arrêtera le routeur immédiatement." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:361 msgid "You may want to consider shutting down gracefully, as above, then running uninstall_i2p_service_winnt.bat." @@ -5065,11 +5065,11 @@ msgstr "Débogage" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:367 msgid "View the job queue" -msgstr "Voir la file d\\''attente " +msgstr "Voir la file d'attente " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:371 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 "À l\\''occasion, il peut être utile de déboguer I2P à l\\''aide d\\''un cliché de tâche. Pour ce faire, merci de sélectionner l\\''option suivante de passer en revue le résultat dans l\\''historique du service Wrapper." +msgstr "À l'occasion, il peut être utile de déboguer I2P à l'aide d'un cliché de tâche. Pour ce faire, merci de sélectionner l'option suivante de passer en revue le résultat dans l'historique du service Wrapper." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:377 msgid "Launch browser on router startup?" @@ -5077,7 +5077,7 @@ msgstr "Lancer le navigateur au démarrage du routeur?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:379 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 "La plus grande partie de la configuration d\\''I2P se fait dans cette console, et donc pour votre confort, I2P peut lancer au démarrage votre navigateur sur " +msgstr "La plus grande partie de la configuration d\'I2P se fait dans cette console, et donc pour votre confort, I2P peut lancer au démarrage votre navigateur sur " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:113 msgid "config stats" @@ -5085,7 +5085,7 @@ msgstr "config stats" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:250 msgid "I2P Stats Configuration" -msgstr "Configuration des statistiques d\\''I2P" +msgstr "Configuration des statistiques d'I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:320 msgid "Configure I2P Stat Collection" @@ -5174,7 +5174,7 @@ msgstr "configuration de la console" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:262 msgid "I2P UI Configuration" -msgstr "Réglages de l\\''interface" +msgstr "Réglages de l'interface" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:314 msgid "Router Console Theme" @@ -5186,7 +5186,7 @@ msgstr "Sélection de thème indisponible pour Internet Explorer, désolé." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:341 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 "Si vous n\\''utilisez pas IE, c\\''est que votre navigateur tente de le faire croire; configurez-le (ou son proxy) pour qu\\''il utilise une chaîne \"User Agent\" différente si vous souhaitez pouvoir changer de thème." +msgstr "Si vous n'utilisez pas IE, c'est que votre navigateur tente de le faire croire; configurez-le (ou son proxy) pour qu'il utilise une chaîne User Agent différente si vous souhaitez pouvoir changer de thème." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:345 msgid "Router Console Language" @@ -5226,7 +5226,7 @@ msgstr "URL des actualités" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:339 msgid "Refresh frequency" -msgstr "Fréquence d\\''actualisation" +msgstr "Fréquence d'actualisation" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:345 msgid "Update policy" @@ -5234,7 +5234,7 @@ msgstr "Méthode de mise à jour" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:349 msgid "Update through the eepProxy?" -msgstr "Mettre à jour via l\\''eeProxy ?" +msgstr "Mettre à jour via l'eeProxy ?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:353 msgid "eepProxy host" @@ -5258,11 +5258,11 @@ msgstr "Mettre à jour avec une version non signée?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:373 msgid "Unsigned Build URL" -msgstr "L\\''URL de version non signée" +msgstr "L'URL de version non signée" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:379 msgid "I2P updates are disabled because you do not have write permission for the install directory." -msgstr "Les mises à jours d\\''I2P sont désactivées car vous n\\''avez pas le droit d\\''écriture sur le dossier d\\''installation. " +msgstr "Les mises à jours d'I2P sont désactivées car vous n'avez pas le droit d'écriture sur le dossier d'installation. " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:385 msgid "Save" @@ -5313,7 +5313,7 @@ msgstr "Erreur {0}" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:169 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:250 msgid "I2P Version and Running Environment" -msgstr "Version d\\''I2P & environnement d\\''exécution" +msgstr "Version d'I2P & environnement d'exécution" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:197 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:288 @@ -5354,11 +5354,11 @@ msgstr "Bienvenue sur I2P !" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:111 msgid "job queue" -msgstr "file d\\''attente" +msgstr "file d'attente" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:248 msgid "I2P Router Job Queue" -msgstr "File d\\''attente de travail du routeur" +msgstr "File d'attente de travail du routeur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:111 msgid "logs" @@ -5398,7 +5398,7 @@ msgstr "Application web inactive" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:254 msgid "The requested web application is not running." -msgstr "L\\''application web demandée est inactive." +msgstr "L'application web demandée est inactive." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:256 msgid "Please visit the config clients page to start it." @@ -5431,7 +5431,7 @@ msgstr "Statistiques du routeur I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:255 #, java-format msgid "Disable {0} Refresh" -msgstr "Désactiver l\\''actualisation automatique {0}" +msgstr "Désactiver l'actualisation automatique {0}" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:111 msgid "tunnel summary" From 07e61d499aec12f179bbc3d49f87f39656ce3bc9 Mon Sep 17 00:00:00 2001 From: duck Date: Fri, 1 Apr 2011 21:22:33 +0000 Subject: [PATCH 385/463] Fix French quoting, add to Transifex --- .tx/config | 4 ++++ apps/i2psnark/locale/messages_fr.po | 2 +- apps/i2ptunnel/locale/messages_fr.po | 2 +- apps/routerconsole/locale/messages_fr.po | 22 +++++++++++----------- apps/susidns/locale/messages_fr.po | 4 ++-- apps/susimail/locale/messages_fr.po | 8 ++++---- 6 files changed, 23 insertions(+), 19 deletions(-) diff --git a/.tx/config b/.tx/config index 114a89996..b1f1421c7 100644 --- a/.tx/config +++ b/.tx/config @@ -2,6 +2,7 @@ source_file = apps/i2ptunnel/locale/messages_en.po source_lang = en trans.de = apps/i2ptunnel/locale/messages_de.po +trans.fr = apps/i2ptunnel/locale/messages_fr.po trans.nl = apps/i2ptunnel/locale/messages_nl.po trans.ru = apps/i2ptunnel/locale/messages_ru.po trans.zh_CN = apps/i2ptunnel/locale/messages_zh.po @@ -20,6 +21,7 @@ trans.zh_CN = apps/routerconsole/locale/messages_zh.po source_file = apps/susidns/locale/messages_en.po source_lang = en trans.de = apps/susidns/locale/messages_de.po +trans.fr = apps/susidns/locale/messages_fr.po trans.nl = apps/susidns/locale/messages_nl.po trans.ru = apps/susidns/locale/messages_ru.po trans.zh_CN = apps/susidns/locale/messages_zh.po @@ -27,6 +29,7 @@ trans.zh_CN = apps/susidns/locale/messages_zh.po [I2P.susimail] source_file = apps/susimail/locale/messages_en.po source_lang = en +trans.fr = apps/susimail/locale/messages_fr.po trans.nl = apps/susimail/locale/messages_nl.po [I2P.i2psnark] @@ -43,6 +46,7 @@ trans.zh_CN = apps/i2psnark/locale/messages_zh.po [I2P.desktopgui] source_file = apps/desktopgui/locale/messages_en.po source_lang = en +trans.fr = apps/desktopgui/locale/messages_fr.po trans.nl = apps/desktopgui/locale/messages_nl.po trans.ru = apps/desktopgui/locale/messages_ru.po trans.zh_CN = apps/desktopgui/locale/messages_zh.po diff --git a/apps/i2psnark/locale/messages_fr.po b/apps/i2psnark/locale/messages_fr.po index 0bd450919..2a27c043c 100644 --- a/apps/i2psnark/locale/messages_fr.po +++ b/apps/i2psnark/locale/messages_fr.po @@ -883,7 +883,7 @@ msgstr "Torrent déjà actif: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1990 #, java-format msgid "Torrent already in the queue: {0}" -msgstr "Torrent déjà dans la file d'attente: {0}" +msgstr "Torrent déjà dans la file d\\''attente: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1996 #, java-format diff --git a/apps/i2ptunnel/locale/messages_fr.po b/apps/i2ptunnel/locale/messages_fr.po index c901f3135..68ca3345c 100644 --- a/apps/i2ptunnel/locale/messages_fr.po +++ b/apps/i2ptunnel/locale/messages_fr.po @@ -21,7 +21,7 @@ msgstr "" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474 #, java-format msgid "To visit the destination in your host database, click here. To visit the conflicting addresshelper destination, click here." -msgstr "Pour aller à la destination de votre base de données d'hôtes, cliquez here. Pour aller à la destination de l'aide d'adresse en conflit, cliquez ." +msgstr "Pour aller à la destination de votre base de données d\\''hôtes, cliquez here. Pour aller à la destination de l\\''aide d\\''adresse en conflit, cliquez ." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931 msgid "Click a link below to look for an address helper by using a \"jump\" service:" diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 751aa9850..b7b6d9457 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -155,8 +155,8 @@ msgstr "Réamorçage en cours" #, java-format msgid "Reseed fetched only 1 router." msgid_plural "Reseed fetched only {0} routers." -msgstr[0] "Le réamorçage n'a trouvé qu'un seul routeur." -msgstr[1] "Le réamorçage n'a trouvé que {0} routeurs." +msgstr[0] "Le réamorçage n\\''a trouvé qu\\''un seul routeur." +msgstr[1] "Le réamorçage n\\''a trouvé que {0} routeurs." #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:148 msgid "Reseed failed." @@ -178,7 +178,7 @@ msgstr "Réamorçage: collecte des URL sources." #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:335 #, java-format msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." -msgstr "Réamorçage: collecte routerInfo depuis l'URL source ({0} réussie, {1} erreurs)." +msgstr "Réamorçage: collecte routerInfo depuis l\\''URL source ({0} réussie, {1} erreurs)." #: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:512 msgid "NetDb entry" @@ -382,7 +382,7 @@ msgstr "Le nombre de paquets en double reçus du pair" #: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:627 #, java-format msgid "Excessive clock skew: {0}" -msgstr "Décalage excessif de l'horloge: {0}" +msgstr "Décalage excessif de l\\''horloge: {0}" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732 msgid "NTCP connections" @@ -1549,7 +1549,7 @@ msgstr "Greffon {0} arrêté" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:103 #, java-format msgid "Error stopping plugin {0}" -msgstr "Erreur d'arrêt du greffon {0}" +msgstr "Erreur d\\''arrêt du greffon {0}" #. label (IE) #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:124 @@ -2819,7 +2819,7 @@ msgstr "Ce greffon est seulement une mise à jour, mais le greffon prérequis n' #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:364 #, java-format msgid "Failed to install plugin in {0}" -msgstr "Échec d'installation du greffon {0}" +msgstr "Échec d\\''installation du greffon {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:371 #, java-format @@ -3079,7 +3079,7 @@ msgstr "Le bannissement temporaire expire dans {0}" #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:64 #, java-format msgid "Banned until restart or in {0}" -msgstr "Banni jusqu'au redémarrage ou dans {0}" +msgstr "Banni jusqu\\''au redémarrage ou dans {0}" #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:76 msgid "unban now" @@ -3199,7 +3199,7 @@ msgstr[1] "Il y a eu {0} évènements sur cette période." #: ../java/src/net/i2p/router/web/StatsGenerator.java:203 #, java-format msgid "The period ended {0} ago." -msgstr "La période s'est terminée il y a {0}." +msgstr "La période s\\''est terminée il y a {0}." #: ../java/src/net/i2p/router/web/StatsGenerator.java:205 msgid "No events" @@ -4193,7 +4193,7 @@ msgstr "NOTE" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:361 #, java-format msgid "You have configured I2P to share only {0} KBps." -msgstr "Vous avez configuré I2P pour qu'il ne partage que {0} ko/s." +msgstr "Vous avez configuré I2P pour qu\\''il ne partage que {0} ko/s." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:364 msgid "I2P requires at least 12KBps to enable sharing. " @@ -5077,7 +5077,7 @@ msgstr "Lancer le navigateur au démarrage du routeur?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:379 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 "La plus grande partie de la configuration d\'I2P se fait dans cette console, et donc pour votre confort, I2P peut lancer au démarrage votre navigateur sur " +msgstr "La plus grande partie de la configuration d'I2P se fait dans cette console, et donc pour votre confort, I2P peut lancer au démarrage votre navigateur sur " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:113 msgid "config stats" @@ -5431,7 +5431,7 @@ msgstr "Statistiques du routeur I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:255 #, java-format msgid "Disable {0} Refresh" -msgstr "Désactiver l'actualisation automatique {0}" +msgstr "Désactiver l\\''actualisation automatique {0}" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:111 msgid "tunnel summary" diff --git a/apps/susidns/locale/messages_fr.po b/apps/susidns/locale/messages_fr.po index 546e3a71f..d2b100d5a 100644 --- a/apps/susidns/locale/messages_fr.po +++ b/apps/susidns/locale/messages_fr.po @@ -72,12 +72,12 @@ msgstr "Remplacer" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264 #, java-format msgid "Host name {0} is already in addressbook, unchanged." -msgstr "L'hôte {0} est déjà présent: inchangé." +msgstr "L\\''hôte {0} est déjà présent: inchangé." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266 #, java-format msgid "Host name {0} is already in addressbook with a different destination. Click \"Replace\" to overwrite." -msgstr "L'hôte {0} est déjà présent avec une destination différente. Cliquez sur \"Remplacer\"...pour le remplacer." +msgstr "L\\''hôte {0} est déjà présent avec une destination différente. Cliquez sur \"Remplacer\"...pour le remplacer." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278 #, java-format diff --git a/apps/susimail/locale/messages_fr.po b/apps/susimail/locale/messages_fr.po index d44ac0f27..d93234c78 100644 --- a/apps/susimail/locale/messages_fr.po +++ b/apps/susimail/locale/messages_fr.po @@ -29,7 +29,7 @@ msgstr "Avertissement: pas d'encodage de transfert trouvé: retour en 7bits." #: src/src/i2p/susi/webmail/WebMail.java:478 #, java-format msgid "No encoder found for encoding \\''{0}\\''." -msgstr "Pas d'encodeur trouvé pour encoder \\''{0}\\''." +msgstr "Pas d\\''encodeur trouvé pour encoder \\''{0}\\''." #: src/src/i2p/susi/webmail/WebMail.java:484 msgid "Warning: no charset found, fallback to US-ASCII." @@ -132,12 +132,12 @@ msgstr "ID de message incorrecte." #: src/src/i2p/susi/webmail/WebMail.java:958 #, java-format msgid "No Encoding found for {0}" -msgstr "PAs d'encodage trouvé pour {0}" +msgstr "Pas d\\''encodage trouvé pour {0}" #: src/src/i2p/susi/webmail/WebMail.java:962 #, java-format msgid "Could not encode data: {0}" -msgstr "Impossible d'encoder les données: {0}" +msgstr "Impossible d\\''encoder les données: {0}" #: src/src/i2p/susi/webmail/WebMail.java:967 #, java-format @@ -204,7 +204,7 @@ msgstr "Adresse d'expéditeur correcte non trouvée" #: src/src/i2p/susi/webmail/WebMail.java:1400 #, java-format msgid "Found no valid address in \\''{0}\\''." -msgstr "Pas d'adresse correcte dans \\''{0}\\''." +msgstr "Pas d\\''adresse correcte dans \\''{0}\\''." #: src/src/i2p/susi/webmail/WebMail.java:1419 msgid "No recipients found." From 5d9116965b1a62fa11efac6245d0d1372cefc9db Mon Sep 17 00:00:00 2001 From: duck Date: Fri, 1 Apr 2011 21:29:53 +0000 Subject: [PATCH 386/463] Spanish translations, thanks punkibastardo --- .tx/config | 34 +- apps/desktopgui/locale/messages_es.po | 55 + apps/i2psnark/locale/messages_es.po | 207 +- apps/i2ptunnel/locale/messages_es.po | 809 +++++ apps/routerconsole/locale/messages_es.po | 3568 ++++++++++++---------- apps/susidns/locale/messages_es.po | 544 ++++ apps/susimail/locale/messages_es.po | 444 +++ 7 files changed, 3880 insertions(+), 1781 deletions(-) create mode 100644 apps/desktopgui/locale/messages_es.po create mode 100644 apps/i2ptunnel/locale/messages_es.po create mode 100644 apps/susidns/locale/messages_es.po create mode 100644 apps/susimail/locale/messages_es.po diff --git a/.tx/config b/.tx/config index b1f1421c7..f57cf5be1 100644 --- a/.tx/config +++ b/.tx/config @@ -2,6 +2,7 @@ source_file = apps/i2ptunnel/locale/messages_en.po source_lang = en trans.de = apps/i2ptunnel/locale/messages_de.po +trans.es = apps/i2ptunnel/locale/messages_es.po trans.fr = apps/i2ptunnel/locale/messages_fr.po trans.nl = apps/i2ptunnel/locale/messages_nl.po trans.ru = apps/i2ptunnel/locale/messages_ru.po @@ -17,21 +18,6 @@ trans.nl = apps/routerconsole/locale/messages_nl.po trans.ru = apps/routerconsole/locale/messages_ru.po trans.zh_CN = apps/routerconsole/locale/messages_zh.po -[I2P.susidns] -source_file = apps/susidns/locale/messages_en.po -source_lang = en -trans.de = apps/susidns/locale/messages_de.po -trans.fr = apps/susidns/locale/messages_fr.po -trans.nl = apps/susidns/locale/messages_nl.po -trans.ru = apps/susidns/locale/messages_ru.po -trans.zh_CN = apps/susidns/locale/messages_zh.po - -[I2P.susimail] -source_file = apps/susimail/locale/messages_en.po -source_lang = en -trans.fr = apps/susimail/locale/messages_fr.po -trans.nl = apps/susimail/locale/messages_nl.po - [I2P.i2psnark] source_file = apps/i2psnark/locale/messages_en.po source_lang = en @@ -43,14 +29,32 @@ trans.pt = apps/i2psnark/locale/messages_pt.po trans.ru = apps/i2psnark/locale/messages_ru.po trans.zh_CN = apps/i2psnark/locale/messages_zh.po +[I2P.susidns] +source_file = apps/susidns/locale/messages_en.po +source_lang = en +trans.de = apps/susidns/locale/messages_de.po +trans.es = apps/susidns/locale/messages_es.po +trans.fr = apps/susidns/locale/messages_fr.po +trans.nl = apps/susidns/locale/messages_nl.po +trans.ru = apps/susidns/locale/messages_ru.po +trans.zh_CN = apps/susidns/locale/messages_zh.po + [I2P.desktopgui] source_file = apps/desktopgui/locale/messages_en.po source_lang = en +trans.es = apps/desktopgui/locale/messages_es.po trans.fr = apps/desktopgui/locale/messages_fr.po trans.nl = apps/desktopgui/locale/messages_nl.po trans.ru = apps/desktopgui/locale/messages_ru.po trans.zh_CN = apps/desktopgui/locale/messages_zh.po +[I2P.susimail] +source_file = apps/susimail/locale/messages_en.po +source_lang = en +trans.es = apps/susimail/locale/messages_es.po +trans.fr = apps/susimail/locale/messages_fr.po +trans.nl = apps/susimail/locale/messages_nl.po + [main] host = http://www.transifex.net diff --git a/apps/desktopgui/locale/messages_es.po b/apps/desktopgui/locale/messages_es.po new file mode 100644 index 000000000..f4f5ab5a3 --- /dev/null +++ b/apps/desktopgui/locale/messages_es.po @@ -0,0 +1,55 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the desktopgui package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P\n" +"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" +"POT-Creation-Date: 2011-03-03 18:29+0000\n" +"PO-Revision-Date: 2011-03-22 15:49+0000\n" +"Last-Translator: punkibastardo \n" +"Language-Team: Spanish (Castilian) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:23 +msgid "Start I2P" +msgstr "Iniciar I2P" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 +msgid "I2P is starting!" +msgstr "I2P está iniciando!" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 +msgid "Starting" +msgstr "Iniciando" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:26 +msgid "Launch I2P Browser" +msgstr "Lanzar navegador I2P" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:50 +msgid "Configure desktopgui" +msgstr "Configurar desktopgui" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:67 +msgid "Restart I2P" +msgstr "Reiniciar I2P" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:85 +msgid "Stop I2P" +msgstr "Detener I2P" + +#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:44 +msgid "Tray icon configuration" +msgstr "Configuración del icono de la barra de tareas" + +#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47 +msgid "Should tray icon be enabled?" +msgstr "Debería estar activado el icono de la barra de tareas?" diff --git a/apps/i2psnark/locale/messages_es.po b/apps/i2psnark/locale/messages_es.po index c7d658288..f9522e4e2 100644 --- a/apps/i2psnark/locale/messages_es.po +++ b/apps/i2psnark/locale/messages_es.po @@ -3,26 +3,25 @@ # 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" +"Project-Id-Version: I2P\n" +"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2011-03-03 18:28+0000\n" -"PO-Revision-Date: 2011-01-03 00:58+0100\n" -"Last-Translator: mixxy \n" -"Language-Team: foo \n" -"Language: \n" +"PO-Revision-Date: 2011-03-22 15:46+0000\n" +"Last-Translator: punkibastardo \n" +"Language-Team: Spanish (Castilian) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Spanish\n" +"Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../java/src/org/klomp/snark/SnarkManager.java:307 #, java-format msgid "Total uploaders limit changed to {0}" -msgstr "Límite del número total de subidores cambiado a {0}" +msgstr "Límite del número total de subidores ha cambiado a {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:309 #, java-format @@ -37,12 +36,13 @@ msgstr "Ancho de banda para la subida ha sido cambiado a {0} kbyte/s." #: ../java/src/org/klomp/snark/SnarkManager.java:323 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" -msgstr "El límite mínimo de ancho de banda para la subida está en {0} kbyte/s." +msgstr "" +"El límite mínimo de ancho de banda para la subida está en {0} kbyte/s." #: ../java/src/org/klomp/snark/SnarkManager.java:335 -#, fuzzy, java-format +#, java-format msgid "Startup delay changed to {0}" -msgstr "Demora del arranque cambiado a {0} minutos" +msgstr "retardo de inicio cambiado a {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:386 msgid "I2CP and tunnel changes will take effect after stopping all torrents" @@ -102,8 +102,8 @@ msgstr "" #: ../java/src/org/klomp/snark/SnarkManager.java:447 msgid "Open Tracker list changed - torrent restart required to take effect." msgstr "" -"Lista de rastreadores abiertos cambiada - Para aplicar ello es necesario que " -"reinicies los torrents." +"Lista de rastreadores abiertos cambiada - Para aplicar ello es necesario que" +" reinicies los torrents." #: ../java/src/org/klomp/snark/SnarkManager.java:454 #, java-format @@ -139,34 +139,38 @@ msgstr "Error: No se ha podido añadir el torrent {0}." msgid "Cannot open \"{0}\"" msgstr "No se puede abrir \"{0}\"" -#. TODO - if the existing one is a magnet, delete it and add the metainfo instead? +#. TODO - if the existing one is a magnet, delete it and add the metainfo +#. instead? #: ../java/src/org/klomp/snark/SnarkManager.java:586 #: ../java/src/org/klomp/snark/SnarkManager.java:661 #: ../java/src/org/klomp/snark/SnarkManager.java:716 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976 -#, fuzzy, java-format +#, java-format msgid "Torrent with this info hash is already running: {0}" -msgstr "Torrent ya en marcha: {0}" +msgstr "Ya hay un Torrent con este hash ejecutándose: {0}" -#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); +#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P +#. open trackers and DHT only.", info.getName())); #: ../java/src/org/klomp/snark/SnarkManager.java:593 -#, fuzzy, java-format +#, java-format msgid "" "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers " "only." msgstr "" -"Advertencia - Se ignora rastreado no I2P en \"{0}\", anunciando sólo a los " -"rastreadorse abiertos de I2P" +"Advertencia - No hay trackers de I2P en \"{0}\", se anunciará solamente a " +"los trackers I2P abiertos." -#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); +#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open +#. trackers are disabled, you should enable open trackers or DHT before +#. starting the torrent.", info.getName())); #: ../java/src/org/klomp/snark/SnarkManager.java:598 -#, fuzzy, java-format +#, java-format msgid "" "Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is " "enabled before starting this torrent." msgstr "" -"Advertencia - Se ignora rastreado no I2P en \"{0}\", rastreadores abiertos " -"están desactivados. ¡Tienes que activarlos antes de iniciar el torrent!" +"Advertencia - No se encuentran Trackers I2P en \"{0}\". Asegúrese de que " +"Open Tracker está activado antes de iniciar este torrent." #: ../java/src/org/klomp/snark/SnarkManager.java:619 #, java-format @@ -177,7 +181,7 @@ msgstr "El archivo .torrent en \"{0}\" no es válido." #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" -msgstr "" +msgstr "ERROR - falta de memoria, no se puede crear un torrent de {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:635 #, java-format @@ -201,11 +205,14 @@ msgid "" "We have no saved peers and no other torrents are running. Fetch of {0} will " "not succeed until you start another torrent." msgstr "" +"No tenemos guardado ningún interlocutor y no se está ejecutando ningún otro " +"torrent. La obtención de {0} no tendrá éxito hasta que comience otro " +"torrent." #: ../java/src/org/klomp/snark/SnarkManager.java:679 -#, fuzzy, java-format +#, java-format msgid "Adding {0}" -msgstr "Recogiendo {0}" +msgstr "Añadiendo {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:726 #: ../java/src/org/klomp/snark/SnarkManager.java:749 @@ -223,8 +230,8 @@ msgstr "Hay demasiados archivos en \"{0}\", se borrará ({1}). " #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" msgstr "" -"Archivo de datos del torrent \"{0}\" no puede terminar en \".torrent' y será " -"borrado." +"Archivo de datos del torrent \"{0}\" no puede terminar en \".torrent' y será" +" borrado." #: ../java/src/org/klomp/snark/SnarkManager.java:976 #, java-format @@ -249,8 +256,7 @@ msgstr "El límite es de \"{0}\"Bytes" #: ../java/src/org/klomp/snark/SnarkManager.java:989 #, java-format msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" -msgstr "" -"Torrents más grandes que \"{0}\"Bytes aún no funcionan, se borrará \"{1}\"." +msgstr "Torrents más grandes que \"{0}\"Bytes aún no funcionan, se borrará \"{1}\"." #: ../java/src/org/klomp/snark/SnarkManager.java:1005 #, java-format @@ -269,9 +275,9 @@ msgid "Torrent removed: \"{0}\"" msgstr "Torrent quitado: \"{0}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:1073 -#, fuzzy, java-format +#, java-format msgid "Adding torrents in {0}" -msgstr "Se añaden los torrents en {0} minutos ..." +msgstr "Añadiendo torrents en {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:1122 #, java-format @@ -279,9 +285,9 @@ msgid "Download finished: {0}" msgstr "Terminada la descarga de \"{0}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:1170 -#, fuzzy, java-format +#, java-format msgid "Metainfo received for {0}" -msgstr "Torrent no se ha podido obtener de {0}" +msgstr "Metainfo recibida para {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:1171 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525 @@ -423,15 +429,15 @@ msgstr[0] "1 par conectado" msgstr[1] "{0} pares conectados" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496 -#, fuzzy, java-format +#, java-format msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" -msgstr "Dirección no válida - tiene que comenzar con http://" +msgstr "URL Inválida: debe comenzar con \"http://\", \"{0}\", ó \"{1}\"" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571 -#, fuzzy, java-format +#, java-format msgid "Magnet deleted: {0}" -msgstr "Ha sido borrada la carpeta de datos: {0}" +msgstr "Magnet eliminado: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 @@ -552,9 +558,8 @@ msgid "Stopped" msgstr "detenido" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:886 -#, fuzzy msgid "Torrent details" -msgstr "Torrents" +msgstr "Detalles del torrent" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:898 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160 @@ -588,8 +593,8 @@ msgstr "Iniciar" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "" -"Quita el torrent de la lista de los torrents activos borrando el archivo ." -"torrent" +"Quita el torrent de la lista de los torrents activos borrando el archivo " +".torrent" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. @@ -668,6 +673,8 @@ msgstr "URL fuente" msgid "" "Enter the torrent file download URL (I2P only), magnet link, or maggot link" msgstr "" +"Introduzca la URL de descarga de torrent (I2P solamente), enlace magnet, o " +"un enlace maggot" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198 msgid "Add torrent" @@ -688,7 +695,8 @@ msgstr "" msgid "Create Torrent" msgstr "Crear un torrent" -#. out.write("From file:
          \n"); +#. out.write("From file:
          \n"); #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229 msgid "Data to seed" msgstr "Datos para sembrar" @@ -709,9 +717,8 @@ msgstr "Selecciona un rastreador" #. out.write(_("Open trackers and DHT only")); #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 -#, fuzzy msgid "Open trackers only" -msgstr "Usar también rastreadores abiertos" +msgstr "Sólo trackers abiertos" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257 msgid "or" @@ -784,11 +791,11 @@ msgstr "Usar también rastreadores abiertos" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 msgid "" -"If checked, announce torrents to open trackers as well as the tracker listed " -"in the torrent file" +"If checked, announce torrents to open trackers as well as the tracker listed" +" in the torrent file" msgstr "" -"Si está marcado, el torrent se anunciará a los rastreadores abiertos, además " -"de a los rastreadores especificados." +"Si está marcado, el torrent se anunciará a los rastreadores abiertos, además" +" de a los rastreadores especificados." #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362 msgid "Open tracker announce URLs" @@ -821,12 +828,12 @@ msgstr "Guardar ajustes" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436 #, java-format msgid "Invalid magnet URL {0}" -msgstr "" +msgstr "URL de magnet no válida {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470 #, java-format msgid "Invalid info hash in magnet URL {0}" -msgstr "" +msgstr "Información hash no válida en la URL magnet {0}" #. * dummies for translation #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1500 @@ -844,9 +851,8 @@ msgstr[0] "1 túnel" msgstr[1] "{0} túneles" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 -#, fuzzy msgid "Completion" -msgstr "completo" +msgstr "Completado" #. else unknown #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 @@ -855,21 +861,20 @@ msgid "Size" msgstr "Tamaño" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 -#, fuzzy msgid "Files" -msgstr "Archivo" +msgstr "Archivos" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674 msgid "Pieces" -msgstr "" +msgstr "Partes" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675 msgid "Piece size" -msgstr "" +msgstr "Tamaño de las partes" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697 msgid "Magnet link" -msgstr "" +msgstr "enlace de magnet" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753 @@ -944,85 +949,3 @@ msgstr "Torrent en {0} no era válido" #, java-format msgid "Torrent was not retrieved from {0}" msgstr "Torrent no se ha podido obtener de {0}" - -#~ msgid "Torrent file must originate from an I2P-based tracker" -#~ msgstr "El archivo torrent debe incluir un rastreador I2P." - -#~ msgid " theme locked and loaded." -#~ msgstr "tema cargado" - -#~ msgid "Hide All Attached Peers [connected/total in swarm]" -#~ msgstr "Ocultar todos los pares conectados [conectados/todos]" - -#~ msgid "Show All Attached Peers [connected/total in swarm]" -#~ msgstr "Mostrar todos los pares conectados [conectados/todos]" - -#~ msgid "Loaded Torrents" -#~ msgstr "Torrents" - -#~ msgid "Estimated Download Time" -#~ msgstr "tiempo restante de descarga" - -#~ msgid "1" -#~ msgid_plural "{0}" -#~ msgstr[0] "{0}" -#~ msgstr[1] "{0}" - -#~ msgid "Torrent file {0} does not exist" -#~ msgstr "Archivo del torrent {0} no existe" - -#~ msgid "Copying torrent to {0}" -#~ msgstr "Copiando torrent a {0}" - -#~ msgid "from {0}" -#~ msgstr "de {0}" - -#~ msgid "Downloading" -#~ msgstr "descargando" - -#~ msgid "FileSize" -#~ msgstr "Tamaño" - -#~ msgid "Download Status" -#~ msgstr "Estado" - -#~ msgid "size: {0}B" -#~ msgstr "Tamaño: {0}Bytes" - -#~ msgid "Directory to store torrents and data" -#~ msgstr "Carpeta para guardar los archivos torrent y los datos" - -#~ msgid "Do not download" -#~ msgstr "No descargues" - -#~ msgid "Details" -#~ msgstr "Detalles" - -#~ msgid "Cannot change the I2CP settings while torrents are active" -#~ msgstr "" -#~ "No se puede cammbiar los ajustes I2CP mientras estén activos los torrents" - -#~ msgid "Non-i2p tracker in \"{0}\", deleting it from our list of trackers!" -#~ msgstr "" -#~ "Rastreador fuera de I2P en \"{0}\", borrando de la lista de rastreadores" - -#~ msgid "{0} torrents" -#~ msgstr "{0} Torrents" - -#~ msgid "Uninteresting" -#~ msgstr "no interesante" - -#~ msgid "Choked" -#~ msgstr "frenado" - -#~ msgid "Uninterested" -#~ msgstr "desinteresado" - -#~ msgid "Choking" -#~ msgstr "frenando" - -#~ msgid "Custom tracker URL" -#~ msgstr "URL especial del rastreador" - -#~ msgid "Configure" -#~ msgstr "Ajustes" diff --git a/apps/i2ptunnel/locale/messages_es.po b/apps/i2ptunnel/locale/messages_es.po new file mode 100644 index 000000000..4e62fa293 --- /dev/null +++ b/apps/i2ptunnel/locale/messages_es.po @@ -0,0 +1,809 @@ +# 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\n" +"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" +"POT-Creation-Date: 2011-03-03 18:29+0000\n" +"PO-Revision-Date: 2011-03-22 15:06+0000\n" +"Last-Translator: punkibastardo \n" +"Language-Team: Spanish (Castilian) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474 +#, java-format +msgid "" +"To visit the destination in your host database, click here. To visit the conflicting addresshelper destination, " +"click here." +msgstr "" +"Para visitar el destino en la base de datos de hosts, haga clic aquí . Para visitar el destino del ayudante de direcciones " +"en conflicto, haga clic aquí ." + +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931 +msgid "" +"Click a link below to look for an address helper by using a \"jump\" " +"service:" +msgstr "" +"Haga clic en un enlace de debajo para buscar un ayudante de direcciones " +"mediante el uso de un servicio de \"salto\":" + +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336 +msgid "internal" +msgstr "interno" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:171 +msgid "" +"Invalid form submission, probably because you used the 'back' or 'reload' " +"button on your browser. Please resubmit." +msgstr "" +"El formulario presentado es inválido, probablemente porque ha utilizado el " +"botón 'atrás' o 'recargar' de su navegador. Por favor, vuelva a enviarlo." + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218 +msgid "Configuration reloaded for all tunnels" +msgstr "Configuración recargada para todos los túneles" + +#. and give them something to look at in any case +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:230 +msgid "Starting tunnel" +msgstr "Túnel Inicial" + +#. and give them something to look at in any case +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:243 +msgid "Stopping tunnel" +msgstr "Túnel final" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:311 +msgid "Configuration changes saved" +msgstr "Cambios en la configuración guardados" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314 +msgid "Failed to save configuration" +msgstr "No se pudo guardar la configuración" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398 +msgid "New Tunnel" +msgstr "Nuevo túnel" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418 +msgid "Standard client" +msgstr "Cliente estándar" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419 +msgid "HTTP client" +msgstr "Cliente HTTP" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420 +msgid "IRC client" +msgstr "Cliente IRC" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:421 +msgid "Standard server" +msgstr "Servidor estándar" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:422 +msgid "HTTP server" +msgstr "Servidor HTTP" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:423 +msgid "SOCKS 4/4a/5 proxy" +msgstr "Proxy SOCKS 4/4a/5" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:424 +msgid "SOCKS IRC proxy" +msgstr "Proxy IRC SOCKS" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:425 +msgid "CONNECT/SSL/HTTPS proxy" +msgstr "Proxy CONNECT/SSL/HTTPS" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:426 +msgid "IRC server" +msgstr "Servidor de IRC" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:427 +msgid "Streamr client" +msgstr "Cliente Streamr" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:428 +msgid "Streamr server" +msgstr "Servidor Streamr" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:429 +msgid "HTTP bidir" +msgstr "HTTP bidir" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290 +msgid "Host not set" +msgstr "Host no establecido" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:521 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:272 +msgid "Port not set" +msgstr "Puerto no establecido" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:73 +msgid "I2P Tunnel Manager - Edit Client Tunnel" +msgstr "Gestor del túneles I2P - Editar túnel de cliente" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:93 +msgid "Edit proxy settings" +msgstr "Editar configuración de proxy" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:101 +msgid "New proxy settings" +msgstr "Nueva configuración de proxy" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:112 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:112 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:107 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:121 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:242 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:257 +msgid "Name" +msgstr "Nombre" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:116 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:116 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:246 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:279 +msgid "Type" +msgstr "Tipo" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:120 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:120 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:386 +msgid "Description" +msgstr "Descripción" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:126 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:136 +msgid "Target" +msgstr "Objetivo" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:130 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:132 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:162 +msgid "Access Point" +msgstr "Punto de Acceso" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:150 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:192 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:153 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:167 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:213 +msgid "required" +msgstr "requerido" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:159 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:178 +msgid "Reachable by" +msgstr "Accesible por" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:180 +msgid "Outproxies" +msgstr "Outproxis" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:187 +msgid "Tunnel Destination" +msgstr "Túnel del Destino" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:199 +msgid "name or destination" +msgstr "nombre o destino" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202 +msgid "b32 not recommended" +msgstr "b32 no recomendado" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208 +msgid "Shared Client" +msgstr "Cliente Compartido" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:212 +msgid "" +"(Share tunnels with other clients and irc/httpclients? Change requires " +"restart of client proxy)" +msgstr "" +"(¿Compartir túneles con otros clientes y clientes de IRC/http? Cambiar esto " +"requiere reiniciar el proxy de cliente)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:124 +msgid "Auto Start" +msgstr "Auto Iniciar" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:128 +msgid "(Check the Box for 'YES')" +msgstr "(Marque la casilla para \"SI\")" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:243 +msgid "Advanced networking options" +msgstr "Opciones avanzadas de red" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224 +msgid "" +"(NOTE: when this client proxy is configured to share tunnels, then these " +"options are for all the shared proxy clients!)" +msgstr "" +"(NOTA: cuando este proxy de cliente está configurado para compartir túneles," +" entonces estas opciones son para todos los clientes de proxy compartidos!)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245 +msgid "Tunnel Options" +msgstr "Opciones de Túnel" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:247 +msgid "Length" +msgstr "Longitud" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:254 +msgid "0 hop tunnel (low anonymity, low latency)" +msgstr "Túnel de 0 saltos (anonimato bajo, latencia baja)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:258 +msgid "1 hop tunnel (medium anonymity, medium latency)" +msgstr "Túnel de 1 salto (anonimato medio, latencia media)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:262 +msgid "2 hop tunnel (high anonymity, high latency)" +msgstr "Túnel de 2 saltos (anonimato alto, latencia alta)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:266 +msgid "3 hop tunnel (very high anonymity, poor performance)" +msgstr "Túnel de 3 saltos (anonimato muy alto, rendimiento pobre)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:256 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:275 +msgid "hop tunnel (very poor performance)" +msgstr "saltos de túnel (rendimiento muy pobre)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:261 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:280 +msgid "Variance" +msgstr "Variación" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:268 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:287 +msgid "0 hop variance (no randomisation, consistant performance)" +msgstr "Variación de 0 saltos (sin aleatoriedad, rendimiento constante)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:272 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:291 +msgid "" +"+ 0-1 hop variance (medium additive randomisation, subtractive performance)" +msgstr "" +"Variación de + 0-1 saltos (aleatoriedad media aditiva, rendimiento " +"substractivo)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295 +msgid "" +"+ 0-2 hop variance (high additive randomisation, subtractive performance)" +msgstr "" +"Variación de + 0-2 saltos (aleatoriedad alta aditiva, rendimiento " +"substractivo)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:299 +msgid "+/- 0-1 hop variance (standard randomisation, standard performance)" +msgstr "" +"Variación de +/- 0-1 saltos (aleatoriedad estándar, rendimiento estándar)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:284 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:303 +msgid "+/- 0-2 hop variance (not recommended)" +msgstr "Variación de +/- 0-2 saltos (no recomendado)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:315 +msgid "hop variance" +msgstr "Variación de saltos" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:320 +msgid "Count" +msgstr "Número" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:327 +msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)" +msgstr "" +"1 entrante, 1 túnel de salida (bajo uso de ancho de banda, menos fiabilidad)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:331 +msgid "" +"2 inbound, 2 outbound tunnels (standard bandwidth usage, standard " +"reliability)" +msgstr "" +"2 entrantes, 2 túneles de salida (uso de ancho de banda estándar, fiabilidad" +" estándar)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335 +msgid "" +"3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)" +msgstr "" +"3 entrantes, 3 túneles de salida (mayor uso de ancho de banda, mayor " +"fiabilidad)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:344 +msgid "tunnels" +msgstr "túneles" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349 +msgid "Backup Count" +msgstr "Número de backups" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:356 +msgid "0 backup tunnels (0 redundancy, no added resource usage)" +msgstr "0 túneles de backup (redundancia 0, no aumenta el uso de recursos)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:360 +msgid "1 backup tunnel each direction (low redundancy, low resource usage)" +msgstr "" +"1 túnel de backup en cada dirección (redundancia baja, uso bajo de recursos)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364 +msgid "" +"2 backup tunnels each direction (medium redundancy, medium resource usage)" +msgstr "" +"2 túneles de backup en cada dirección (redundancia media, uso de recursos " +"medio)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:349 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:368 +msgid "3 backup tunnels each direction (high redundancy, high resource usage)" +msgstr "" +"3 túneles de backup en cada dirección (alta redundancia, uso de recursos " +"alto)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:358 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377 +msgid "backup tunnels" +msgstr "túneles de backup" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:384 +msgid "Profile" +msgstr "Perfil" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:372 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:391 +msgid "interactive connection" +msgstr "conexión interactiva" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:376 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:395 +msgid "bulk connection (downloads/websites/BT)" +msgstr "conexión en masa (descargas/web/BT)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:378 +msgid "Delay Connect" +msgstr "Retrasar Conexión" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:382 +msgid "for request/response connections" +msgstr "para las conexiones de solicitud/respuesta" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399 +msgid "Router I2CP Address" +msgstr "Dirección I2CP del router" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401 +msgid "Host" +msgstr "Host" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:396 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:148 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:244 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:266 +msgid "Port" +msgstr "Puerto" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:406 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479 +msgid "Reduce tunnel quantity when idle" +msgstr "Reducir la cantidad de túneles cuando se está inactivo" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:408 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:422 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:430 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:442 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:452 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:472 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:419 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481 +msgid "Enable" +msgstr "Habilitar" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:412 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:485 +msgid "Reduced tunnel count" +msgstr "Número de túneles reducido" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:416 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:489 +msgid "Idle minutes" +msgstr "Minutos de inactividad" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420 +msgid "Close tunnels when idle" +msgstr "Cerrar los túneles cuando se está inactivo" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:426 +msgid "New Keys on Reopen" +msgstr "Nuevas claves al reabrir" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435 +msgid "Disable" +msgstr "Desactivar" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440 +msgid "Delay tunnel open until required" +msgstr "Retrasar apertura del túnel hasta que sea necesario" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:450 +msgid "Persistent private key" +msgstr "Clave privada persistente" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:456 +msgid "File" +msgstr "Archivo" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:460 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:220 +msgid "Local destination" +msgstr "destino local" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464 +msgid "(if known)" +msgstr "(Si se conoce)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:470 +msgid "Local Authorization" +msgstr "Autorización Local" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490 +msgid "Username" +msgstr "Nombre de usuario" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:480 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:494 +msgid "Password" +msgstr "Contraseña" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484 +msgid "Outproxy Authorization" +msgstr "Autorización Outproxy" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502 +msgid "Jump URL List" +msgstr "Lista de URL de salto" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:508 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525 +msgid "Custom options" +msgstr "Opciones personalizadas" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:512 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:529 +msgid "" +"NOTE: If tunnel is currently running, most changes will not take effect " +"until tunnel is stopped and restarted." +msgstr "" +"NOTA: Si el túnel se está ejecutando actualmente, la mayoría de los cambios " +"no tendrán efecto hasta que se detenga y reinicie el túnel." + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:514 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531 +msgid "Cancel" +msgstr "Cancelar" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535 +msgid "Delete" +msgstr "Eliminar" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:520 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537 +msgid "Save" +msgstr "Guardar" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:73 +msgid "I2P Tunnel Manager - Edit Server Tunnel" +msgstr "Gestor del túneles I2P - Editar túnel servidor" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:93 +msgid "Edit server settings" +msgstr "Editar configuración del servidor" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:101 +msgid "New server settings" +msgstr "Nueva configuración del servidor" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:199 +msgid "Website name" +msgstr "Nombre de la página" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:203 +msgid "(leave blank for outproxies)" +msgstr "(Dejar en blanco para outproxies)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:208 +msgid "Private key file" +msgstr "archivo de clave privada" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:230 +msgid "Add to local addressbook" +msgstr "Agregar a la libreta de direcciones local" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:237 +msgid "Hostname Signature" +msgstr "Firma del Hostname" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417 +msgid "Encrypt Leaseset" +msgstr "Cifrar Leaseset" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423 +msgid "Encryption Key" +msgstr "Clave de cifrado" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427 +msgid "Generate New Key" +msgstr "Generar nueva clave" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429 +msgid "Generate" +msgstr "Generar" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:523 +msgid "(Tunnel must be stopped first)" +msgstr "(El túnel debe detenerse primero)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433 +msgid "Restricted Access List" +msgstr "Lista de acceso restringido" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439 +msgid "Whitelist" +msgstr "Lista blanca" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443 +msgid "Blacklist" +msgstr "Lista negra" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447 +msgid "Access List" +msgstr "Lista de acceso" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451 +msgid "Inbound connection limits (0=unlimited)" +msgstr "Límites de conexiones entrantes (0 = sin límite)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453 +msgid "Per client" +msgstr "Por cliente" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455 +msgid "Per minute" +msgstr "por minuto" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459 +msgid "Per hour" +msgstr "Por hora" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463 +msgid "Per day" +msgstr "Por día" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467 +msgid "Total" +msgstr "Total" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475 +msgid "Max concurrent connections (0=unlimited)" +msgstr "Número máximo de conexiones simultáneas (0 = sin límite)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493 +msgid "New Certificate type" +msgstr "Nuevo tipo de certificado" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495 +msgid "None" +msgstr "Ninguno" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499 +msgid "Hashcash (effort)" +msgstr "Hashcash (esfuerzo)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505 +msgid "Hashcash Calc Time" +msgstr "Tiempo de Calc Hashcash " + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507 +msgid "Estimate" +msgstr "Estimación" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509 +msgid "Hidden" +msgstr "Oculto" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513 +msgid "Signed (signed by)" +msgstr "Firmado (firmado por)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519 +msgid "Modify Certificate" +msgstr "Modificar Certificado" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521 +msgid "Modify" +msgstr "Modificar" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:71 +msgid "I2P Tunnel Manager - List" +msgstr "Gestor de túneles I2P - Lista" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:83 +msgid "Status Messages" +msgstr "Mensajes de estado" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:87 +msgid "Refresh" +msgstr "Actualizar" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:91 +msgid "Stop All" +msgstr "Detener todos" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:95 +msgid "Start All" +msgstr "Iniciar Todos" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:99 +msgid "Restart All" +msgstr "Reiniciar todos" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:103 +msgid "Reload Config" +msgstr "Actualizar configuración" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:105 +msgid "I2P Server Tunnels" +msgstr "Túneles de servidor I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:109 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:130 +msgid "Points at" +msgstr "Apunta a" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:111 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:153 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:157 +msgid "Preview" +msgstr "Preview" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:113 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:177 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:250 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:297 +msgid "Status" +msgstr "Estado" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:163 +msgid "Base32 Address" +msgstr "Dirección Base32" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:171 +msgid "No Preview" +msgstr "Sin vista previa" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:184 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:304 +msgid "Starting..." +msgstr "Iniciando..." + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:191 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:205 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:339 +msgid "Stop" +msgstr "Detener" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:198 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:332 +msgid "Running" +msgstr "Ejecutándose" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:212 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:346 +msgid "Stopped" +msgstr "Detenido" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:353 +msgid "Start" +msgstr "Iniciar" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:234 +msgid "New server tunnel" +msgstr "Nuevo servidor de túnel" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:396 +msgid "Standard" +msgstr "Estándar" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:238 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:398 +msgid "Create" +msgstr "Crear" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:240 +msgid "I2P Client Tunnels" +msgstr "Túneles de cliente I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:248 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:283 +msgid "Interface" +msgstr "Interfaz" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:318 +msgid "Standby" +msgstr "En espera" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:363 +msgid "Outproxy" +msgstr "Outproxy" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:367 +msgid "Destination" +msgstr "Destino" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:381 +msgid "none" +msgstr "ninguno" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394 +msgid "New client tunnel" +msgstr "Nuevo túnel de cliente" diff --git a/apps/routerconsole/locale/messages_es.po b/apps/routerconsole/locale/messages_es.po index 9adddbe30..ea5807818 100644 --- a/apps/routerconsole/locale/messages_es.po +++ b/apps/routerconsole/locale/messages_es.po @@ -3,28 +3,30 @@ # 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: 2011-03-03 18:27+0000\n" -"PO-Revision-Date: 2011-01-03 01:13+0100\n" -"Last-Translator: mixxy \n" -"Language-Team: foo \n" -"Language: \n" +"Project-Id-Version: I2P\n" +"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" +"POT-Creation-Date: 2011-03-21 18:01+0000\n" +"PO-Revision-Date: 2011-03-22 15:45+0000\n" +"Last-Translator: punkibastardo \n" +"Language-Team: Spanish (Castilian) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: French\n" +"Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -#. NOTE TO TRANSLATORS: Feel free to translate all these as you see fit, there are several options... -#. spaces or not, '.' or not, plural or not. Try not to make it too long, it is used in +#. NOTE TO TRANSLATORS: Feel free to translate all these as you see fit, there +#. are several options... +#. spaces or not, '.' or not, plural or not. Try not to make it too long, it +#. is used in #. a lot of tables. #. milliseconds #. Note to translators, may be negative or zero, 2999 maximum. -#. {0,number,####} prevents 1234 from being output as 1,234 in the English locale. +#. {0,number,####} prevents 1234 from being output as 1,234 in the English +#. locale. #. If you want the digit separator in your locale, translate as {0}. #. alternates: msec, msecs #: ../../../core/java/src/net/i2p/data/DataHelper.java:1141 @@ -51,7 +53,7 @@ msgstr[1] "{0} s" #, java-format msgid "1 min" msgid_plural "{0} min" -msgstr[0] "{0} min" +msgstr[0] "1 min" msgstr[1] "{0} min" #. hours @@ -65,9 +67,9 @@ msgstr[0] "1 hora" msgstr[1] "{0} horas" #: ../../../core/java/src/net/i2p/data/DataHelper.java:1158 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:314 msgid "n/a" -msgstr "" +msgstr "n/a" #. days #. Note to translators: quantity will always be greater than one. @@ -81,21 +83,21 @@ msgstr[1] "{0} días" #: ../../../router/java/src/net/i2p/router/Blocklist.java:122 #, java-format msgid "Banned by router hash: {0}" -msgstr "" +msgstr "Baneado por el hash del router: {0}" #: ../../../router/java/src/net/i2p/router/Blocklist.java:124 msgid "Banned by router hash" -msgstr "baneado por hash del enrutador" +msgstr "baneado por hash del router" #. Temporary reason, until the job finishes #: ../../../router/java/src/net/i2p/router/Blocklist.java:669 msgid "IP banned" -msgstr "IP baneado" +msgstr "IP baneada" #: ../../../router/java/src/net/i2p/router/Blocklist.java:739 #, java-format msgid "IP banned by blocklist.txt entry {0}" -msgstr "" +msgstr "IP baneada por la blocklist.txt {0}" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:92 msgid "Rejecting tunnels: Shutting down" @@ -103,13 +105,14 @@ msgstr "rechazando túneles: apagando" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:141 msgid "Rejecting tunnels: High message delay" -msgstr "rechazando túneles: alta tardanza de los mensajes" +msgstr "rechazando túneles: alta latencia de los mensajes" #. hard to do {0} from here -#. setTunnelStatus("Rejecting " + (100 - (int) probAccept*100) + "% of tunnels: High number of requests"); +#. 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 "rechazando la mayor parte de los túneles: alto número de peticiones" +msgstr "rechazando la mayoría de túneles: alto número de peticiones" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:233 msgid "Rejecting tunnels: Limit reached" @@ -120,109 +123,119 @@ msgstr "rechazando túneles: límite alcanzado" #. always leave at least 4KBps free when allowing #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:301 msgid "Rejecting tunnels: Bandwidth limit" -msgstr "rechazando túneles: límite del ancho de banda" +msgstr "rechazando túneles: límite de ancho de banda" #. hard to do {0} from here -#. setTunnelStatus("Rejecting " + ((int)(100.0*probReject)) + "% of tunnels: Bandwidth limit"); +#. 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 "rechazando la mayor parte de los túneles: límite del ancho de banda" +msgstr "rechazando la mayor parte de los túneles: límite de ancho de banda" #. hard to do {0} from here -#. setTunnelStatus("Accepting " + (100-(int)(100.0*probReject)) + "% of tunnels"); +#. setTunnelStatus("Accepting " + (100-(int)(100.0*probReject)) + "% of +#. tunnels"); #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:375 msgid "Accepting most tunnels" -msgstr "Acceptando la mayoría de los túneles" +msgstr "Aceptando la mayoría de los túneles" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:377 msgid "Accepting tunnels" -msgstr "acceptando túneles" +msgstr "aceptando túneles" #. NPE, too early #. if (_context.router().getRouterInfo().getBandwidthTier().equals("K")) -#. setTunnelStatus("Not expecting tunnel requests: Advertised bandwidth too low"); +#. setTunnelStatus("Not expecting tunnel requests: Advertised bandwidth too +#. low"); #. else #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:488 msgid "Rejecting tunnels" msgstr "Rechazando túneles" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:105 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:125 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 msgid "Reseeding" -msgstr "" +msgstr "Reiniciando semillas" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:128 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:141 #, java-format msgid "Reseed fetched only 1 router." msgid_plural "Reseed fetched only {0} routers." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Al reinicar semillas sólo se ha encontrado 1 router" +msgstr[1] "Al reiniciar semillas se han encontrado sólo {0} routers" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:135 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:148 msgid "Reseed failed." -msgstr "" +msgstr "El reinicio de semillas ha fallado" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:136 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:149 #, java-format msgid "See {0} for help." -msgstr "" +msgstr "Consulta {0} para obtener ayuda." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:137 -#, fuzzy +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:150 msgid "reseed configuration page" -msgstr "Guardados los ajustes de registros" +msgstr "Página de configuración del reinicio de semillas" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:239 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:293 msgid "Reseeding: fetching seed URL." -msgstr "" +msgstr "Reiniciando semillas: Buscando la URL semilla" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:335 #, java-format msgid "" "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." msgstr "" +"Reiniciando semillas: buscando información de router de la URL semilla ({0} " +"correctas, {1} errores)." #: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:512 msgid "NetDb entry" -msgstr "" +msgstr "Entrada de la NetDb" -#. This used to be "no common transports" but it is almost always no transports at all +#. 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 "" +msgstr "No hay transportes (oculto o iniciando?)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:450 msgid "Unreachable on any transport" -msgstr "" +msgstr "Inalcanzable en cualquier transporte" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:499 msgid "Router Transport Addresses" -msgstr "" +msgstr "Direcciones del transporte de router " #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:504 #, java-format msgid "{0} is used for outbound connections only" -msgstr "" +msgstr "{0} se utiliza solo para las conexiones salientes " #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:518 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129 msgid "Help" -msgstr "" +msgstr "Ayuda" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 msgid "" "Your transport connection limits are automatically set based on your " "configured bandwidth." msgstr "" +"Los límites de conexiones de transporte se ajustan automáticamente basándose" +" en el ancho de banda configurado." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 msgid "" "To override these limits, add the settings i2np.ntcp.maxConnections=nnn and " "i2np.udp.maxConnections=nnn on the advanced configuration page." msgstr "" +"Para sobreescribir estos límites, se deben agregar los comandos " +"i2np.ntcp.maxConnections = nnn y i2np.udp.maxConnections = nnn en la página " +"de configuración avanzada." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 msgid "Definitions" msgstr "Definiciones" @@ -233,20 +246,20 @@ msgstr "Definiciones" #: ../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/ProfileOrganizerRenderer.java:189 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:238 msgid "Peer" msgstr "Par" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 msgid "The remote peer, identified by router hash" -msgstr "" +msgstr "El par remoto, identificado por el hash del router" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:736 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 msgid "Dir" -msgstr "" +msgstr "Dir" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 msgid "Inbound connection" @@ -259,20 +272,25 @@ msgstr "Conexión saliente" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 msgid "They offered to introduce us (help other peers traverse our firewall)" msgstr "" +"Se han ofrecido a introducirnos (ayudar a otros pares a atravesar nuestro " +"firewall)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 -msgid "We offered to introduce them (help other peers traverse their firewall)" +msgid "" +"We offered to introduce them (help other peers traverse their firewall)" msgstr "" +"Nos hemos ofrecido a introducirlos (ayudar a otros compañeros atraviesan su " +"firewall)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "How long since a packet has been received / sent" -msgstr "" +msgstr "Cuánto tiempo hace que un paquete ha sido recibido / enviado" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895 msgid "Idle" -msgstr "" +msgstr "inactivo" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 @@ -283,155 +301,159 @@ msgstr "Entrante/Saliente" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 msgid "The smoothed inbound / outbound transfer rate (KBytes per second)" -msgstr "" +msgstr "Tasa de transferencia de entrada / salida (KBytes por segundo)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 msgid "How long ago this connection was established" -msgstr "" +msgstr "Cuanto tiempo hace que se estableció esta conexión" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905 msgid "Up" -msgstr "" +msgstr "Subida" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1907 msgid "Skew" -msgstr "" +msgstr "Desincronización" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 msgid "The difference between the peer's clock and your own" -msgstr "" +msgstr "La diferencia entre el reloj del par y el tuyo" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 msgid "" "The congestion window, which is how many bytes can be sent without an " "acknowledgement" msgstr "" +"El rango de congestión, que es la cantidad de bytes que se pueden enviar sin" +" recibir confirmación" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 msgid "The number of sent messages awaiting acknowledgement" -msgstr "" +msgstr "El número de mensajes enviados a la espera de confirmación" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 msgid "The maximum number of concurrent messages to send" -msgstr "" +msgstr "El número máximo de mensajes simultáneos para enviar" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 msgid "The number of pending sends which exceed congestion window" -msgstr "" +msgstr "El número de envíos pendientes que superen el rango de congestión" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 msgid "The slow start threshold" -msgstr "" +msgstr "El umbral de incicio lento" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 msgid "The round trip time in milliseconds" -msgstr "" +msgstr "El tiempo de ida y vuelta en milisegundos" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 msgid "Dev" -msgstr "" +msgstr "Dev" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 msgid "The standard deviation of the round trip time in milliseconds" -msgstr "" +msgstr "La desviación estándar del tiempo de ida y vuelta en milisegundos" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 msgid "The retransmit timeout in milliseconds" -msgstr "" +msgstr "El tiempo de vencimiento de la retransmisión en milisegundos" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 msgid "" "Current maximum send packet size / estimated maximum receive packet size " "(bytes)" msgstr "" +"Tamaño máximo actual de envío de paquetes / tamaño máximo estimado de " +"paquetes entrantes (bytes)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 msgid "TX" -msgstr "" +msgstr "TX" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 msgid "The total number of packets sent to the peer" -msgstr "" +msgstr "El número total de paquetes enviados al par" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:742 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926 msgid "RX" -msgstr "" +msgstr "RX" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 msgid "The total number of packets received from the peer" -msgstr "" +msgstr "El número total de paquetes recibidos del par" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1929 msgid "Dup TX" -msgstr "" +msgstr "TX dup" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 msgid "The total number of packets retransmitted to the peer" -msgstr "" +msgstr "El número total de paquetes retransmitidos al par" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1931 msgid "Dup RX" -msgstr "" +msgstr "RX dup" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 msgid "The total number of duplicate packets received from the peer" -msgstr "" +msgstr "El número total de paquetes duplicados recibidos de los pares" #: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:409 #: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:627 #, java-format msgid "Excessive clock skew: {0}" -msgstr "" +msgstr "Desincronización excesiva del reloj: {0}" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:730 msgid "NTCP connections" -msgstr "conexiones NTCP" +msgstr "Conexiones NTCP" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:731 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1886 msgid "Limit" -msgstr "" +msgstr "Límite" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 msgid "Timeout" -msgstr "" +msgstr "Tiempo de espera" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:743 msgid "Out Queue" -msgstr "" +msgstr "cola de salida" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:744 msgid "Backlogged?" -msgstr "" +msgstr "Atrasadas?" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:758 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1949 -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87 msgid "Inbound" msgstr "Entrante" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1951 -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87 msgid "Outbound" msgstr "Saliente" #. buf.append("
    \n"); #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:807 msgid "peers" -msgstr "Pares" +msgstr "pares" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1885 msgid "UDP connections" @@ -439,154 +461,155 @@ msgstr "conexiones UDP" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1892 msgid "Sort by peer hash" -msgstr "" +msgstr "Ordenar por hash" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 msgid "Direction/Introduction" -msgstr "" +msgstr "Dirección/Introducción" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1896 msgid "Sort by idle inbound" -msgstr "" +msgstr "Ordenar por inactividad de entrada" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1898 msgid "Sort by idle outbound" -msgstr "" +msgstr "Ordenar por inactividad de salida" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1901 msgid "Sort by inbound rate" -msgstr "" +msgstr "Ordenar por tasa de entrada" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1903 msgid "Sort by outbound rate" -msgstr "" +msgstr "Ordenar por tasa de salida" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1906 msgid "Sort by connection uptime" -msgstr "" +msgstr "Ordenar por el tiempo de actividad" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1908 msgid "Sort by clock skew" -msgstr "" +msgstr "Ordenar por desviación de reloj" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1911 msgid "Sort by congestion window" -msgstr "" +msgstr "Ordenar por ventana de congestión" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1913 msgid "Sort by slow start threshold" -msgstr "" +msgstr "Ordenar por umbral de inicio lento" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1916 msgid "Sort by round trip time" -msgstr "" +msgstr "Ordenar por el tiempo de ida y vuelta" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918 msgid "Sort by round trip time deviation" -msgstr "" +msgstr "Ordenar por desviación de tiempo de ida y vuelta" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1920 msgid "Sort by retransmission timeout" -msgstr "" +msgstr "Ordenar por tiempo de espera de retransmisión" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1923 msgid "Sort by outbound maximum transmit unit" -msgstr "" +msgstr "Ordenar por unidad de transmisión máxima de salida" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1925 msgid "Sort by packets sent" -msgstr "" +msgstr "Ordenar por paquetes enviados" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927 msgid "Sort by packets received" -msgstr "" +msgstr "Ordenar por paquetes recibidos" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1930 msgid "Sort by packets retransmitted" -msgstr "" +msgstr "Ordenar por paquetes retransmitidos" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1932 msgid "Sort by packets received more than once" -msgstr "" +msgstr "Ordenar por paquetes recibidos más de una vez" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1953 msgid "We offered to introduce them" -msgstr "" +msgstr "Nos hemos ofrecido a introducirlos" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1955 msgid "They offered to introduce us" -msgstr "" +msgstr "Se han ofrecido a introducirnos" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1959 msgid "Choked" -msgstr "" +msgstr "Atascado" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1967 msgid "1 fail" -msgstr "" +msgstr "1 fallo" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1969 #, java-format msgid "{0} fails" -msgstr "" +msgstr "{0} fallos" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1975 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:162 msgid "Banned" -msgstr "" +msgstr "Baneado" #. buf.append("\n"); #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2106 msgid "SUMMARY" -msgstr "" +msgstr "RESUMEN" #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:124 msgid "Dropping tunnel requests: Too slow" -msgstr "" +msgstr "Descartando túneles: Demasiado lento" #. don't even bother, since we are so overloaded locally #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:267 msgid "Dropping tunnel requests: Overloaded" -msgstr "" +msgstr "Descartando solicitudes de túnel: sobrecarga" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:460 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:470 msgid "Rejecting tunnels: Request overload" -msgstr "" +msgstr "Rechazando túneles: Sobrecarga de solicitudes" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:485 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:495 msgid "Rejecting tunnels: Connection limit" -msgstr "" +msgstr "Rechazando túneles: Límite de conexión" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:685 -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:706 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:695 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:716 msgid "Dropping tunnel requests: High load" -msgstr "" +msgstr "Descartando solicitudes de túnel: Carga alta" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:698 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:708 msgid "Dropping tunnel requests: Queue time" -msgstr "" +msgstr "Descartando solicitudes de túnel: Tiempo de cola" #. 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!! +#. 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 "Andorre" +msgstr "Andorra" #: ../java/build/Countries.java:4 msgid "United Arab Emirates" -msgstr "" +msgstr "Emiratos Árabes Unidos" #: ../java/build/Countries.java:5 msgid "Afghanistan" -msgstr "" +msgstr "Afganistán" #: ../java/build/Countries.java:6 msgid "Antigua and Barbuda" -msgstr "" +msgstr "Antigua y Barbuda" #: ../java/build/Countries.java:7 msgid "Anguilla" -msgstr "" +msgstr "Anguila" #: ../java/build/Countries.java:8 msgid "Albania" @@ -594,19 +617,19 @@ msgstr "Albania" #: ../java/build/Countries.java:9 msgid "Armenia" -msgstr "" +msgstr "Armenia" #: ../java/build/Countries.java:10 msgid "Netherlands Antilles" -msgstr "" +msgstr "Antillas Holandesas" #: ../java/build/Countries.java:11 msgid "Angola" -msgstr "" +msgstr "Angola" #: ../java/build/Countries.java:12 msgid "Antarctica" -msgstr "" +msgstr "La Antártida" #: ../java/build/Countries.java:13 msgid "Argentina" @@ -614,7 +637,7 @@ msgstr "Argentina" #: ../java/build/Countries.java:14 msgid "American Samoa" -msgstr "" +msgstr "Samoa Americana" #: ../java/build/Countries.java:15 msgid "Austria" @@ -622,227 +645,227 @@ msgstr "Austria" #: ../java/build/Countries.java:16 msgid "Australia" -msgstr "" +msgstr "Australia" #: ../java/build/Countries.java:17 msgid "Aruba" -msgstr "" +msgstr "Aruba" #: ../java/build/Countries.java:19 msgid "Azerbaijan" -msgstr "" +msgstr "Azerbaiyán" #: ../java/build/Countries.java:20 msgid "Bosnia and Herzegovina" -msgstr "" +msgstr "Bosnia y Herzegovina" #: ../java/build/Countries.java:21 msgid "Barbados" -msgstr "" +msgstr "Barbados" #: ../java/build/Countries.java:22 msgid "Bangladesh" -msgstr "" +msgstr "Bangladesh" #: ../java/build/Countries.java:23 msgid "Belgium" -msgstr "" +msgstr "Bélgica" #: ../java/build/Countries.java:24 msgid "Burkina Faso" -msgstr "" +msgstr "Burkina Fasso" #: ../java/build/Countries.java:25 msgid "Bulgaria" -msgstr "" +msgstr "Bulgaria" #: ../java/build/Countries.java:26 msgid "Bahrain" -msgstr "" +msgstr "Bahrein" #: ../java/build/Countries.java:27 msgid "Burundi" -msgstr "" +msgstr "Burundi" #: ../java/build/Countries.java:28 msgid "Benin" -msgstr "" +msgstr "Benin" #: ../java/build/Countries.java:29 msgid "Bermuda" -msgstr "" +msgstr "Bermudas" #: ../java/build/Countries.java:30 msgid "Brunei Darussalam" -msgstr "" +msgstr "Brunei Darussalam" #: ../java/build/Countries.java:31 msgid "Bolivia" -msgstr "" +msgstr "Bolivia" #: ../java/build/Countries.java:32 msgid "Brazil" -msgstr "" +msgstr "Brasil" #: ../java/build/Countries.java:33 msgid "Bahamas" -msgstr "" +msgstr "Bahamas" #: ../java/build/Countries.java:34 msgid "Bhutan" -msgstr "" +msgstr "Bhután" #: ../java/build/Countries.java:35 msgid "Bouvet Island" -msgstr "" +msgstr "Isla Bouvet" #: ../java/build/Countries.java:36 msgid "Botswana" -msgstr "" +msgstr "Botswana" #: ../java/build/Countries.java:37 msgid "Belarus" -msgstr "" +msgstr "Bielorrusia" #: ../java/build/Countries.java:38 msgid "Belize" -msgstr "" +msgstr "Belice" #: ../java/build/Countries.java:39 msgid "Canada" -msgstr "" +msgstr "Canadá" #: ../java/build/Countries.java:40 msgid "The Democratic Republic of the Congo" -msgstr "" +msgstr "República Democrática del Congo" #: ../java/build/Countries.java:41 msgid "Central African Republic" -msgstr "" +msgstr "República Centroafricana" #: ../java/build/Countries.java:42 msgid "Congo" -msgstr "" +msgstr "Congo" #: ../java/build/Countries.java:43 msgid "Switzerland" -msgstr "" +msgstr "Suiza" #: ../java/build/Countries.java:44 msgid "Cote D'Ivoire" -msgstr "" +msgstr "Costa de Marfil" #: ../java/build/Countries.java:45 msgid "Cook Islands" -msgstr "" +msgstr "Islas Cook" #: ../java/build/Countries.java:46 msgid "Chile" -msgstr "" +msgstr "Chile" #: ../java/build/Countries.java:47 msgid "Cameroon" -msgstr "" +msgstr "Camerún" #: ../java/build/Countries.java:48 msgid "China" -msgstr "" +msgstr "China" #: ../java/build/Countries.java:49 msgid "Colombia" -msgstr "" +msgstr "Colombia" #: ../java/build/Countries.java:50 msgid "Costa Rica" -msgstr "" +msgstr "Costa Rica" #: ../java/build/Countries.java:51 msgid "Serbia and Montenegro" -msgstr "" +msgstr "Serbia y Montenegro" #: ../java/build/Countries.java:52 msgid "Cuba" -msgstr "" +msgstr "Cuba" #: ../java/build/Countries.java:53 msgid "Cape Verde" -msgstr "" +msgstr "Cabo Verde" #: ../java/build/Countries.java:54 msgid "Cyprus" -msgstr "" +msgstr "Chipre" #: ../java/build/Countries.java:55 msgid "Czech Republic" -msgstr "" +msgstr "República Checa" #: ../java/build/Countries.java:56 msgid "Germany" -msgstr "Allemania" +msgstr "Alemania" #: ../java/build/Countries.java:57 msgid "Djibouti" -msgstr "" +msgstr "Djibouti" #: ../java/build/Countries.java:58 msgid "Denmark" -msgstr "" +msgstr "Dinamarca" #: ../java/build/Countries.java:59 msgid "Dominica" -msgstr "" +msgstr "Dominica" #: ../java/build/Countries.java:60 msgid "Dominican Republic" -msgstr "" +msgstr "República Dominicana" #: ../java/build/Countries.java:61 msgid "Algeria" -msgstr "" +msgstr "Argelia" #: ../java/build/Countries.java:62 msgid "Ecuador" -msgstr "" +msgstr "Ecuador" #: ../java/build/Countries.java:63 msgid "Estonia" -msgstr "" +msgstr "Estonia" #: ../java/build/Countries.java:64 msgid "Egypt" -msgstr "" +msgstr "Egipto" #: ../java/build/Countries.java:65 msgid "Eritrea" -msgstr "" +msgstr "Eritrea" #: ../java/build/Countries.java:66 msgid "Spain" -msgstr "" +msgstr "España" #: ../java/build/Countries.java:67 msgid "Ethiopia" -msgstr "" +msgstr "Etiopía" #: ../java/build/Countries.java:68 msgid "Finland" -msgstr "" +msgstr "Finlandia" #: ../java/build/Countries.java:69 msgid "Fiji" -msgstr "" +msgstr "Fiji" #: ../java/build/Countries.java:70 msgid "Falkland Islands (Malvinas)" -msgstr "" +msgstr "Islas Malvinas" #: ../java/build/Countries.java:71 msgid "Federated States of Micronesia" -msgstr "" +msgstr "Estados Federados de Micronesia" #: ../java/build/Countries.java:72 msgid "Faroe Islands" -msgstr "" +msgstr "Islas Feroe" #: ../java/build/Countries.java:73 msgid "France" @@ -850,660 +873,662 @@ msgstr "Francia" #: ../java/build/Countries.java:74 msgid "Gabon" -msgstr "" +msgstr "Gabón" #: ../java/build/Countries.java:75 msgid "United Kingdom" -msgstr "" +msgstr "Reino Unido" #: ../java/build/Countries.java:76 msgid "Grenada" -msgstr "" +msgstr "Granada" #: ../java/build/Countries.java:77 msgid "Georgia" -msgstr "" +msgstr "Georgia" #: ../java/build/Countries.java:78 msgid "French Guiana" -msgstr "" +msgstr "Guayana Francesa" #: ../java/build/Countries.java:79 msgid "Ghana" -msgstr "" +msgstr "Ghana" #: ../java/build/Countries.java:80 msgid "Gibraltar" -msgstr "" +msgstr "Gibraltar" #: ../java/build/Countries.java:81 msgid "Greenland" -msgstr "" +msgstr "Groenlandia" #: ../java/build/Countries.java:82 msgid "Gambia" -msgstr "" +msgstr "Gambia" #: ../java/build/Countries.java:83 msgid "Guinea" -msgstr "" +msgstr "Guinea" #: ../java/build/Countries.java:84 msgid "Guadeloupe" -msgstr "" +msgstr "Guadalupe" #: ../java/build/Countries.java:85 msgid "Equatorial Guinea" -msgstr "" +msgstr "Guinea Ecuatorial" #: ../java/build/Countries.java:86 msgid "Greece" -msgstr "" +msgstr "Grecia" #: ../java/build/Countries.java:87 msgid "South Georgia and the South Sandwich Islands" -msgstr "" +msgstr "Georgia del Sur e Islas Sandwich del Sur" #: ../java/build/Countries.java:88 msgid "Guatemala" -msgstr "" +msgstr "Guatemala" #: ../java/build/Countries.java:89 msgid "Guam" -msgstr "" +msgstr "Guam" #: ../java/build/Countries.java:90 msgid "Guinea-Bissau" -msgstr "" +msgstr "Guinea-Bissau" #: ../java/build/Countries.java:91 msgid "Guyana" -msgstr "" +msgstr "Guyana" #: ../java/build/Countries.java:92 msgid "Hong Kong" -msgstr "" +msgstr "Hong Kong" #: ../java/build/Countries.java:93 msgid "Honduras" -msgstr "" +msgstr "Honduras" #: ../java/build/Countries.java:94 msgid "Croatia" -msgstr "" +msgstr "Croacia" #: ../java/build/Countries.java:95 msgid "Haiti" -msgstr "" +msgstr "Haití" #: ../java/build/Countries.java:96 msgid "Hungary" -msgstr "" +msgstr "Hungría" #: ../java/build/Countries.java:97 msgid "Indonesia" -msgstr "" +msgstr "Indonesia" #: ../java/build/Countries.java:98 msgid "Ireland" -msgstr "" +msgstr "Irlanda" #: ../java/build/Countries.java:99 msgid "Israel" -msgstr "" +msgstr "Israel" #: ../java/build/Countries.java:101 msgid "India" -msgstr "" +msgstr "India" #: ../java/build/Countries.java:102 msgid "British Indian Ocean Territory" -msgstr "" +msgstr "Territorio Británico del Océano" #: ../java/build/Countries.java:103 msgid "Iraq" -msgstr "" +msgstr "Irak" #: ../java/build/Countries.java:104 msgid "Islamic Republic of Iran" -msgstr "" +msgstr "República Islámica de Irán" #: ../java/build/Countries.java:105 msgid "Iceland" -msgstr "" +msgstr "Islandia" #: ../java/build/Countries.java:106 msgid "Italy" -msgstr "" +msgstr "Italia" #: ../java/build/Countries.java:108 msgid "Jamaica" -msgstr "" +msgstr "Jamaica" #: ../java/build/Countries.java:109 msgid "Jordan" -msgstr "" +msgstr "Jordania" #: ../java/build/Countries.java:110 msgid "Japan" -msgstr "" +msgstr "Japón" #: ../java/build/Countries.java:111 msgid "Kenya" -msgstr "" +msgstr "Kenya" #: ../java/build/Countries.java:112 msgid "Kyrgyzstan" -msgstr "" +msgstr "Kirguistán" #: ../java/build/Countries.java:113 msgid "Cambodia" -msgstr "" +msgstr "Camboya" #: ../java/build/Countries.java:114 msgid "Kiribati" -msgstr "" +msgstr "Kiribati" #: ../java/build/Countries.java:115 msgid "Comoros" -msgstr "" +msgstr "Comoras" #: ../java/build/Countries.java:116 msgid "Saint Kitts and Nevis" -msgstr "" +msgstr "Saint Kitts y Nevis" #: ../java/build/Countries.java:117 msgid "Republic of Korea" -msgstr "" +msgstr "República de Corea" #: ../java/build/Countries.java:118 msgid "Kuwait" -msgstr "" +msgstr "Kuwait" #: ../java/build/Countries.java:119 msgid "Cayman Islands" -msgstr "" +msgstr "Islas Caimán" #: ../java/build/Countries.java:120 msgid "Kazakhstan" -msgstr "" +msgstr "Kazajstán" #: ../java/build/Countries.java:121 msgid "Lao People's Democratic Republic" -msgstr "" +msgstr "República Democrática Popular Lao" #: ../java/build/Countries.java:122 msgid "Lebanon" -msgstr "" +msgstr "Líbano" #: ../java/build/Countries.java:123 msgid "Saint Lucia" -msgstr "" +msgstr "Santa Lucía" #: ../java/build/Countries.java:124 msgid "Liechtenstein" -msgstr "" +msgstr "Liechtenstein" #: ../java/build/Countries.java:125 msgid "Sri Lanka" -msgstr "" +msgstr "Sri Lanka" #: ../java/build/Countries.java:126 msgid "Liberia" -msgstr "" +msgstr "Liberia" #: ../java/build/Countries.java:127 msgid "Lesotho" -msgstr "" +msgstr "Lesotho" #: ../java/build/Countries.java:128 msgid "Lithuania" -msgstr "" +msgstr "Lituania" #: ../java/build/Countries.java:129 msgid "Luxembourg" -msgstr "" +msgstr "Luxemburgo" #: ../java/build/Countries.java:130 msgid "Latvia" -msgstr "" +msgstr "Letonia" #: ../java/build/Countries.java:131 msgid "Libyan Arab Jamahiriya" -msgstr "" +msgstr "Jamahiriya Árabe Libia" #: ../java/build/Countries.java:132 msgid "Morocco" -msgstr "" +msgstr "Marruecos" #: ../java/build/Countries.java:133 msgid "Monaco" -msgstr "" +msgstr "Mónaco" #: ../java/build/Countries.java:134 msgid "Republic of Moldova" -msgstr "" +msgstr "República de Moldavia" #: ../java/build/Countries.java:137 msgid "Madagascar" -msgstr "" +msgstr "Madagascar" #: ../java/build/Countries.java:138 msgid "Marshall Islands" -msgstr "" +msgstr "Las Islas Marshall" #: ../java/build/Countries.java:139 msgid "The Former Yugoslav Republic of Macedonia" -msgstr "" +msgstr "La Antigua República Yugoslava de Macedonia" #: ../java/build/Countries.java:140 msgid "Mali" -msgstr "" +msgstr "Malí" #: ../java/build/Countries.java:141 msgid "Myanmar" -msgstr "" +msgstr "Myanmar" #: ../java/build/Countries.java:142 msgid "Mongolia" -msgstr "" +msgstr "Mongolia" #: ../java/build/Countries.java:143 msgid "Macao" -msgstr "" +msgstr "Macao" #: ../java/build/Countries.java:144 msgid "Northern Mariana Islands" -msgstr "" +msgstr "Islas Marianas del Norte" #: ../java/build/Countries.java:145 msgid "Martinique" -msgstr "" +msgstr "Martinica" #: ../java/build/Countries.java:146 msgid "Mauritania" -msgstr "" +msgstr "Mauritania" #: ../java/build/Countries.java:147 msgid "Montserrat" -msgstr "" +msgstr "Montserrat" #: ../java/build/Countries.java:148 msgid "Malta" -msgstr "" +msgstr "Malta" #: ../java/build/Countries.java:149 msgid "Mauritius" -msgstr "" +msgstr "Mauricio" #: ../java/build/Countries.java:150 msgid "Maldives" -msgstr "" +msgstr "Maldivas" #: ../java/build/Countries.java:151 msgid "Malawi" -msgstr "" +msgstr "Malawi" #: ../java/build/Countries.java:152 msgid "Mexico" -msgstr "" +msgstr "México" #: ../java/build/Countries.java:153 msgid "Malaysia" -msgstr "" +msgstr "Malasia" #: ../java/build/Countries.java:154 msgid "Mozambique" -msgstr "" +msgstr "Mozambique" #: ../java/build/Countries.java:155 msgid "Namibia" -msgstr "" +msgstr "Namibia" #: ../java/build/Countries.java:156 msgid "New Caledonia" -msgstr "" +msgstr "Nueva Caledonia" #: ../java/build/Countries.java:157 msgid "Niger" -msgstr "" +msgstr "Níger" #: ../java/build/Countries.java:158 msgid "Norfolk Island" -msgstr "" +msgstr "Isla Norfolk" #: ../java/build/Countries.java:159 msgid "Nigeria" -msgstr "" +msgstr "Nigeria" #: ../java/build/Countries.java:160 msgid "Nicaragua" -msgstr "" +msgstr "Nicaragua" #: ../java/build/Countries.java:161 msgid "Netherlands" -msgstr "" +msgstr "Países Bajos" #: ../java/build/Countries.java:162 msgid "Norway" -msgstr "" +msgstr "Noruega" #: ../java/build/Countries.java:163 msgid "Nepal" -msgstr "" +msgstr "Nepal" #: ../java/build/Countries.java:164 msgid "Nauru" -msgstr "" +msgstr "Nauru" #: ../java/build/Countries.java:165 msgid "Niue" -msgstr "" +msgstr "Niue" #: ../java/build/Countries.java:166 msgid "New Zealand" -msgstr "" +msgstr "Nueva Zelanda" #: ../java/build/Countries.java:167 msgid "Oman" -msgstr "" +msgstr "Omán" #: ../java/build/Countries.java:168 msgid "Panama" -msgstr "" +msgstr "Panamá" #: ../java/build/Countries.java:169 msgid "Peru" -msgstr "" +msgstr "Perú" #: ../java/build/Countries.java:170 msgid "French Polynesia" -msgstr "" +msgstr "Polinesia francésa" #: ../java/build/Countries.java:171 msgid "Papua New Guinea" -msgstr "" +msgstr "Papua Nueva Guinea" #: ../java/build/Countries.java:172 msgid "Philippines" -msgstr "" +msgstr "Filipinas" #: ../java/build/Countries.java:173 msgid "Pakistan" -msgstr "" +msgstr "Pakistán" #: ../java/build/Countries.java:174 msgid "Poland" -msgstr "" +msgstr "Polonia" #: ../java/build/Countries.java:175 msgid "Saint Pierre and Miquelon" -msgstr "" +msgstr "San Pedro y Miquelón" #: ../java/build/Countries.java:176 msgid "Puerto Rico" -msgstr "" +msgstr "Puerto Rico" #: ../java/build/Countries.java:177 msgid "Palestinian Territory" -msgstr "" +msgstr "Territorio Palestino" #: ../java/build/Countries.java:178 msgid "Portugal" -msgstr "" +msgstr "Portugal" #: ../java/build/Countries.java:179 msgid "Palau" -msgstr "" +msgstr "Palau" #: ../java/build/Countries.java:180 msgid "Paraguay" -msgstr "" +msgstr "Paraguay" #: ../java/build/Countries.java:181 msgid "Qatar" -msgstr "" +msgstr "Qatar" #: ../java/build/Countries.java:182 msgid "Reunion" -msgstr "" +msgstr "Reunión" #: ../java/build/Countries.java:183 msgid "Romania" -msgstr "" +msgstr "Rumania" #: ../java/build/Countries.java:184 msgid "Serbia" -msgstr "" +msgstr "Serbia" #: ../java/build/Countries.java:185 msgid "Russian Federation" -msgstr "" +msgstr "Federación de Rusia" #: ../java/build/Countries.java:186 msgid "Rwanda" -msgstr "" +msgstr "Ruanda" #: ../java/build/Countries.java:187 msgid "Saudi Arabia" -msgstr "" +msgstr "Arabia Saudí" #: ../java/build/Countries.java:188 msgid "Solomon Islands" -msgstr "" +msgstr "Islas Salomón" #: ../java/build/Countries.java:189 msgid "Seychelles" -msgstr "" +msgstr "Seychelles" #: ../java/build/Countries.java:190 msgid "Sudan" -msgstr "" +msgstr "Sudán" #: ../java/build/Countries.java:191 msgid "Sweden" -msgstr "" +msgstr "Suecia" #: ../java/build/Countries.java:192 msgid "Singapore" -msgstr "" +msgstr "Singapur" #: ../java/build/Countries.java:193 msgid "Slovenia" -msgstr "" +msgstr "Eslovenia" #: ../java/build/Countries.java:194 msgid "Slovakia" -msgstr "" +msgstr "Eslovaquia" #: ../java/build/Countries.java:195 msgid "Sierra Leone" -msgstr "" +msgstr "Sierra Leona" #: ../java/build/Countries.java:196 msgid "San Marino" -msgstr "" +msgstr "San Marino" #: ../java/build/Countries.java:197 msgid "Senegal" -msgstr "" +msgstr "Senegal" #: ../java/build/Countries.java:198 msgid "Somalia" -msgstr "" +msgstr "Somalia" #: ../java/build/Countries.java:199 msgid "Suriname" -msgstr "" +msgstr "Surinam" #: ../java/build/Countries.java:200 msgid "Sao Tome and Principe" -msgstr "" +msgstr "Santo Tomé y Príncipe" #: ../java/build/Countries.java:201 msgid "El Salvador" -msgstr "" +msgstr "El Salvador" #: ../java/build/Countries.java:202 msgid "Syrian Arab Republic" -msgstr "" +msgstr "República Árabe Siria" #: ../java/build/Countries.java:203 msgid "Swaziland" -msgstr "" +msgstr "Swazilandia" #: ../java/build/Countries.java:204 msgid "Turks and Caicos Islands" -msgstr "" +msgstr "Islas Turcas y Caicos" #: ../java/build/Countries.java:205 msgid "Chad" -msgstr "" +msgstr "Chad" #: ../java/build/Countries.java:206 msgid "French Southern Territories" -msgstr "" +msgstr "Sur de Francia" #: ../java/build/Countries.java:207 msgid "Togo" -msgstr "" +msgstr "Togo" #: ../java/build/Countries.java:208 msgid "Thailand" -msgstr "" +msgstr "Tailandia" #: ../java/build/Countries.java:209 msgid "Tajikistan" -msgstr "" +msgstr "Tayikistán" #: ../java/build/Countries.java:210 msgid "Tokelau" -msgstr "" +msgstr "Tokelau" #: ../java/build/Countries.java:211 msgid "Timor-Leste" -msgstr "" +msgstr "Timor-Leste" #: ../java/build/Countries.java:212 msgid "Turkmenistan" -msgstr "" +msgstr "Turkmenistán" #: ../java/build/Countries.java:213 msgid "Tunisia" -msgstr "" +msgstr "Túnez" #: ../java/build/Countries.java:214 msgid "Tonga" -msgstr "" +msgstr "Tonga" #: ../java/build/Countries.java:215 msgid "Turkey" -msgstr "" +msgstr "Turquía" #: ../java/build/Countries.java:216 msgid "Trinidad and Tobago" -msgstr "" +msgstr "Trinidad y Tobago" #: ../java/build/Countries.java:217 msgid "Tuvalu" -msgstr "" +msgstr "Tuvalu" #: ../java/build/Countries.java:218 msgid "Taiwan" -msgstr "" +msgstr "Taiwan" #: ../java/build/Countries.java:219 msgid "United Republic of Tanzania" -msgstr "" +msgstr "República Unida de Tanzanía" #: ../java/build/Countries.java:220 msgid "Ukraine" -msgstr "" +msgstr "Ucrania" #: ../java/build/Countries.java:221 msgid "Uganda" -msgstr "" +msgstr "Uganda" #: ../java/build/Countries.java:222 msgid "United States Minor Outlying Islands" -msgstr "" +msgstr "Islas Menores de Estados Unidos" #: ../java/build/Countries.java:223 msgid "United States" -msgstr "" +msgstr "Estados Unidos" #: ../java/build/Countries.java:224 msgid "Uruguay" -msgstr "" +msgstr "Uruguay" #: ../java/build/Countries.java:225 msgid "Uzbekistan" -msgstr "" +msgstr "Uzbekistán" #: ../java/build/Countries.java:226 msgid "Holy See (Vatican City State)" -msgstr "" +msgstr "Santa Sede (Ciudad del Vaticano)" #: ../java/build/Countries.java:227 msgid "Saint Vincent and the Grenadines" -msgstr "" +msgstr "San Vicente y las Granadinas" #: ../java/build/Countries.java:228 msgid "Venezuela" -msgstr "" +msgstr "Venezuela" #: ../java/build/Countries.java:229 ../java/build/Countries.java:230 msgid "Virgin Islands" -msgstr "" +msgstr "Islas Vírgenes" #: ../java/build/Countries.java:231 msgid "Viet Nam" -msgstr "" +msgstr "Viet Nam" #: ../java/build/Countries.java:232 msgid "Vanuatu" -msgstr "" +msgstr "Vanuatu" #: ../java/build/Countries.java:233 msgid "Wallis and Futuna" -msgstr "" +msgstr "Wallis y Futuna" #: ../java/build/Countries.java:234 msgid "Samoa" -msgstr "" +msgstr "Samoa" #: ../java/build/Countries.java:235 msgid "Yemen" -msgstr "" +msgstr "Yemen" #: ../java/build/Countries.java:236 msgid "Mayotte" -msgstr "" +msgstr "Mayotte" #: ../java/build/Countries.java:237 msgid "South Africa" -msgstr "" +msgstr "Sudáfrica" #: ../java/build/Countries.java:238 msgid "Zambia" -msgstr "" +msgstr "Zambia" #: ../java/build/Countries.java:239 msgid "Zimbabwe" -msgstr "" +msgstr "Zimbabwe" -#: ../java/src/net/i2p/router/web/CSSHelper.java:58 +#: ../java/src/net/i2p/router/web/CSSHelper.java:60 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:35 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:37 #: ../java/strings/Strings.java:29 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:119 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:233 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:125 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:257 msgid "I2P Router Console" -msgstr "Console del Enrutador I2P" +msgstr "Consola del Router I2P" #: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:57 msgid "Error updating the configuration - please see the error logs" msgstr "" +"Error al actualizar la configuración - por favor consulte los registros de " +"errores" #: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:69 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:266 @@ -1516,52 +1541,53 @@ msgid "" "Error saving the configuration (applied but not saved) - please see the " "error logs" msgstr "" +"Error al guardar la configuración (aplicada pero no guardada) - por favor " +"consulte los registros de errores" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:355 msgid "Save Client Configuration" msgstr "Guardar la configuración de clientes" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:39 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:405 -#, fuzzy +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427 msgid "Save Interface Configuration" -msgstr "Guardar la configuración de clientes" +msgstr "Guardar configuración de interfaz" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:441 msgid "Save WebApp Configuration" -msgstr "" +msgstr "Guardar configuración de aplicación Web" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:47 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:453 msgid "Save Plugin Configuration" -msgstr "" +msgstr "Guardar configuración del plugin" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:51 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:461 msgid "Install Plugin" -msgstr "" +msgstr "Instalar Plugin" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:87 #, java-format msgid "Deleted plugin {0}" -msgstr "" +msgstr "Eliminado el plugin {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:89 #, java-format msgid "Error deleting plugin {0}" -msgstr "" +msgstr "Error al eliminar el plugin {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:101 #, java-format msgid "Stopped plugin {0}" -msgstr "" +msgstr "Detenido plugin {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:103 #, java-format msgid "Error stopping plugin {0}" -msgstr "" +msgstr "Error al detener el plugin {0}" #. label (IE) #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:124 @@ -1574,26 +1600,28 @@ msgstr "Lanzar" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:61 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:33 msgid "Unsupported" -msgstr "" +msgstr "No soportado" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:189 msgid "New client added" -msgstr "" +msgstr "Nuevo cliente añadido" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:193 msgid "" "Client configuration saved successfully - restart required to take effect." msgstr "" +"configuración de cliente guardada correctamente - Es necesario reiniciar " +"para que los cambios surtan efecto." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 msgid "Bad client index." -msgstr "" +msgstr "índice de clientes en mal estado." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:392 #: ../java/src/net/i2p/router/web/SummaryHelper.java:384 msgid "Client" msgstr "Cliente" @@ -1605,24 +1633,24 @@ msgstr "lanzado" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223 msgid "deleted" -msgstr "" +msgstr "eliminado" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:240 msgid "WebApp configuration saved." -msgstr "" +msgstr "configuración de aplicación Web guardada." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:256 msgid "Plugin configuration saved." -msgstr "" +msgstr "configuración del plugin guardada." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:271 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 msgid "WebApp" -msgstr "" +msgstr "Aplicación Web" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:273 msgid "Failed to start" -msgstr "Fallido el lanzamiento" +msgstr "lanzamiento fallido" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:278 msgid "Failed to find server." @@ -1630,65 +1658,68 @@ msgstr "No se encontró el servidor" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:284 msgid "No plugin URL specified." -msgstr "" +msgstr "Ninguna URL de plugin especificada." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:294 #, java-format msgid "No update URL specified for {0}" -msgstr "" +msgstr "Ninguna URL de actualización especificado para {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:302 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:307 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:320 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:325 msgid "Plugin or update download already in progress." -msgstr "" +msgstr "Plugin o descarga de la actualización ya en curso." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:311 #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:118 #, java-format msgid "Downloading plugin from {0}" -msgstr "" +msgstr "Descargar plugin de {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:329 #, java-format msgid "Checking plugin {0} for updates" -msgstr "" +msgstr "Buscando actualizaciones para el plugin {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:339 #, java-format msgid "Started plugin {0}" -msgstr "" +msgstr "Plugin Iniciado {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:341 #, java-format msgid "Error starting plugin {0}" -msgstr "" +msgstr "Error al iniciar el plugin {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 msgid "" -"Interface configuration saved successfully - restart required to take effect." +"Interface configuration saved successfully - restart required to take " +"effect." msgstr "" +"configuración de interfaz guardada correctamente - Es necesario reiniciar " +"para que los cambios surtan efecto." #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:85 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258 msgid "Edit" -msgstr "" +msgstr "Editar" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:94 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351 msgid "Add Client" msgstr "Añadir cliente" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 msgid "Class and arguments" -msgstr "" +msgstr "Clase y argumentos" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 msgid "Control" -msgstr "" +msgstr "Control" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 @@ -1700,21 +1731,21 @@ msgstr "Lanzar al iniciarse?" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:197 msgid "Description" -msgstr "" +msgstr "Descripción" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 msgid "Plugin" -msgstr "" +msgstr "Plugin" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:161 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:273 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185 msgid "Version" msgstr "Versión" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:163 msgid "Signed by" -msgstr "" +msgstr "Firmado por" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:180 msgid "Date" @@ -1726,11 +1757,11 @@ msgstr "Autor" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:202 msgid "License" -msgstr "" +msgstr "Licencia" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:207 msgid "Website" -msgstr "" +msgstr "Sitio web" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:212 msgid "Update link" @@ -1738,47 +1769,45 @@ msgstr "Enlace para actualizaciones" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:260 msgid "Stop" -msgstr "" +msgstr "Detener" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:262 #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:78 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331 msgid "Check for updates" msgstr "Buscar actualizaciones" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:263 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:242 msgid "Update" -msgstr "Actualización" +msgstr "Actualizar" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:268 #, java-format msgid "Are you sure you want to delete {0}?" -msgstr "" +msgstr "¿Está seguro que desea eliminar {0}?" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:270 msgid "Delete" msgstr "Borrar" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:18 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:343 msgid "Add key" msgstr "Añadir clave" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:19 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:341 msgid "Delete key" msgstr "Borrar clave" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:21 msgid "You must enter a destination" -msgstr "¡Tienes que entrar un destino!" +msgstr "Tienes que introducir un destino" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:23 msgid "You must enter a key" -msgstr "Tienes que entrar una clave" +msgstr "Tienes que introducir una clave" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:34 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:41 @@ -1792,7 +1821,7 @@ msgstr "añadida al llavero" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:36 msgid "Invalid destination or key" -msgstr "" +msgstr "Clave de destino o llave no válida" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:41 msgid "removed from keyring" @@ -1808,46 +1837,50 @@ msgstr "Destino no válido" #: ../java/src/net/i2p/router/web/ConfigLoggingHandler.java:82 msgid "Log overrides updated" -msgstr "" +msgstr "Reemplazos del registro actualizados" #: ../java/src/net/i2p/router/web/ConfigLoggingHandler.java:160 msgid "Log configuration saved" -msgstr "Guardados los ajustes de registros" +msgstr "Guardados los ajustes de los registros" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 msgid "" "Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" msgstr "" +"Añadir nuevos argumentos para el registro arriba. Ejemplo: " +"net.i2p.router.tunnel=WARN" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:49 msgid "" -"Or put entries in the logger.config file. Example: logger.record.net.i2p." -"router.tunnel=WARN" +"Or put entries in the logger.config file. Example: " +"logger.record.net.i2p.router.tunnel=WARN" msgstr "" +"O añadir nuevos argumentos en el archivo logger.config Ejemplo: " +"logger.record.net.i2p.router.tunnel =WARN" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:50 msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT" -msgstr "" +msgstr "Los niveles válidos son DEBUG, INFO, WARN, ERROR, CRIT" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 msgid "CRIT" -msgstr "" +msgstr "CRIT" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 msgid "DEBUG" -msgstr "" +msgstr "DEBUG" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 msgid "ERROR" -msgstr "" +msgstr "ERROR" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 msgid "INFO" -msgstr "" +msgstr "INFO" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 msgid "WARN" -msgstr "" +msgstr "WARN" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:88 msgid "Remove" @@ -1855,7 +1888,7 @@ msgstr "Quitar" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:125 msgid "Select a class to add" -msgstr "" +msgstr "Seleccione una clase para agregar" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:204 @@ -1868,7 +1901,7 @@ msgstr "Servicio" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:101 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381 #: ../java/strings/Strings.java:72 msgid "Tunnels" msgstr "Túneles" @@ -1882,7 +1915,7 @@ msgid "Clients" msgstr "Clientes" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:293 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:315 msgid "Keyring" msgstr "Llavero" @@ -1892,13 +1925,13 @@ msgstr "Registros" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:107 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:255 #: ../java/strings/Strings.java:67 msgid "Peers" msgstr "Pares" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:387 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:389 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:143 msgid "Stats" msgstr "Estadísticas" @@ -1911,19 +1944,19 @@ msgstr "Avanzado" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:264 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:29 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:34 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:360 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:516 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:307 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:341 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:352 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:377 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:344 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:378 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:534 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:370 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:362 msgid "Save changes" -msgstr "Guardar" +msgstr "Guardar cambios" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:121 msgid "Rechecking router reachability..." -msgstr "" +msgstr "Segunda verificación de accesibilidad del router ..." #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:153 msgid "Updating IP address" @@ -1931,31 +1964,31 @@ msgstr "Actualizando dirección IP" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:171 msgid "Disabling TCP completely" -msgstr "" +msgstr "Desactivando TCP completamente" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:175 msgid "Updating inbound TCP address to" -msgstr "" +msgstr "Actualizando las direcciones de entrada TCP a " #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:179 msgid "Disabling inbound TCP" -msgstr "" +msgstr "Desactivando TCP entrante" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:181 msgid "Updating inbound TCP address to auto" -msgstr "" +msgstr "Actualizando la dirección TCP de entrada a automático" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:190 msgid "Updating inbound TCP port to" -msgstr "" +msgstr "Actualizando el puerto de entrada TCP a " #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:193 msgid "Updating inbound TCP port to auto" -msgstr "" +msgstr "Actualizando el puerto de entrada TCP a automático" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:205 msgid "Updating UDP port from" -msgstr "" +msgstr "Actualizando el puerto UDP desde" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:205 msgid "to" @@ -1963,37 +1996,43 @@ msgstr "a" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:221 msgid "Gracefully restarting into Hidden Router Mode" -msgstr "" +msgstr "Reiniciando de forma segura en modo router oculto" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:223 msgid "Gracefully restarting to exit Hidden Router Mode" -msgstr "" +msgstr "Reiniciando de forma segura para salir del modo router oculto" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:232 msgid "Enabling UPnP, restart required to take effect" msgstr "" +"Activando UPnP, Se requiere reiniciar para que los cambios surtan efecto" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:234 msgid "Disabling UPnP, restart required to take effect" msgstr "" +"Deshabilitando UPnP, se requiere un reinicio para que los cambios surtan " +"efectp" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:242 msgid "Enabling laptop mode" -msgstr "" +msgstr "Activando el modo ordenador portátil" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:244 msgid "Disabling laptop mode" -msgstr "" +msgstr "Desactivando el modo ordenador portátil" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:250 msgid "Requiring SSU introducers" -msgstr "" +msgstr "Exigir introductores SSU" -#. There's a few changes that don't really require restart (e.g. enabling inbound TCP) +#. 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 "" +"Reiniciando I2P de forma piadosa para cambiar la dirección publicada del " +"router" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:314 msgid "Updating bandwidth share percentage" @@ -2018,79 +2057,76 @@ msgstr "bits por segundo" #: ../java/src/net/i2p/router/web/ConfigNetHelper.java:173 #, java-format msgid "or {0} bytes per month maximum" -msgstr "" +msgstr "ó {0} bytes por mes como máximo" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:20 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:333 msgid "Ban peer until restart" -msgstr "" +msgstr "Banear par hasta el reinicio" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:23 #, java-format msgid "Manually banned via {0}" -msgstr "" +msgstr "Manualmente baneado a través de {0}" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24 msgid "banned until restart" -msgstr "" +msgstr "baneado hasta el reinicio" #: ../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 "" +msgstr "par no válido" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:28 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:335 msgid "Unban peer" -msgstr "" +msgstr "Desbanear par" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33 msgid "unbanned" -msgstr "" +msgstr "desbaneado" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35 msgid "is not currently banned" -msgstr "" +msgstr "no se encuentra baneado" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:39 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:361 msgid "Adjust peer bonuses" -msgstr "" +msgstr "Ajustar bonus de pares" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:47 msgid "Bad speed value" -msgstr "" +msgstr "valor de velocidad Malo" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:52 msgid "Bad capacity value" -msgstr "" +msgstr "valor de la capacidad Malo" #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:17 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 -#, fuzzy +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:368 msgid "Save changes and reseed now" -msgstr "Guardar" +msgstr "Guardar cambios y reiniciar semillas ahora" #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:21 -#, fuzzy msgid "Reseeding is already in progress" -msgstr "Creación de túnel en marcha" +msgstr "Reinicio de semillas ya está en proceso" #. skip the nonce checking in ReseedHandler #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:24 msgid "Starting reseed process" -msgstr "" +msgstr "Iniciando el proceso de reinicio de semillas" #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:66 -#, fuzzy msgid "Configuration saved successfully." -msgstr "Configuración guardada con éxito" +msgstr "Configuración guardada correctamente." #. 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:293 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:311 msgid "Shutdown immediately" msgstr "Apagar en seguida" @@ -2098,15 +2134,15 @@ msgstr "Apagar en seguida" #. give the UI time to respond #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:36 msgid "Cancel shutdown" -msgstr "Cancelar el apagarse" +msgstr "Cancelar apagado" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:37 msgid "Cancel restart" -msgstr "Cancelar el reiniciarse" +msgstr "Cancelar reinicio" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:39 msgid "Restart immediately" -msgstr "Reiniciar en seguida" +msgstr "Reiniciar inmediatamente" #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns #. give the UI time to respond @@ -2120,11 +2156,11 @@ msgstr "Apagar" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:59 msgid "Restart imminent" -msgstr "por reiniciarse" +msgstr "Reinicio inminente" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:61 msgid "Shutdown imminent" -msgstr "por apagarse" +msgstr "Apagado inminente" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:65 #, java-format @@ -2137,93 +2173,93 @@ msgid "Restart in {0}" msgstr "Reiniciando en {0}" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:53 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:291 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:309 msgid "Shutdown gracefully" -msgstr "" +msgstr "Apagar de forma piadosa" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:56 msgid "Graceful shutdown initiated" -msgstr "" +msgstr "Apagado de forma piadosa iniciado" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:60 msgid "Shutdown immediately! boom bye bye bad bwoy" -msgstr "" +msgstr "Apagar inmediatamente! Boom adiós chico malo" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:61 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:313 msgid "Cancel graceful shutdown" -msgstr "" +msgstr "Cancelar apagado piadoso" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:63 msgid "Graceful shutdown cancelled" -msgstr "" +msgstr "Apagado piadoso cancelado" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:64 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 msgid "Graceful restart" -msgstr "" +msgstr "Reinicio seguro" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:67 msgid "Graceful restart requested" -msgstr "" +msgstr "Reinicio seguro solicitado" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:68 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 msgid "Hard restart" -msgstr "" +msgstr "Reinicio rápido" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:71 msgid "Hard restart requested" -msgstr "" +msgstr "Reinicio rápido solicitado" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:72 msgid "Rekey and Restart" -msgstr "" +msgstr "limpiar claves y reiniciar" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:73 msgid "Rekeying after graceful restart" -msgstr "" +msgstr "Reinicio de claves después de reinicio de forma segura" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:76 msgid "Rekey and Shutdown" -msgstr "" +msgstr "limpiar claves y apagar" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:77 msgid "Rekeying after graceful shutdown" -msgstr "" +msgstr "Reinicio de claves después de apagado de forma segura" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:80 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 msgid "Run I2P on startup" -msgstr "" +msgstr "Ejecutar I2P al arrancar el sistema" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:82 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:355 msgid "Don't run I2P on startup" -msgstr "" +msgstr "No ejecutar I2P al arrancar el sistema" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:84 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:355 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:373 msgid "Dump threads" -msgstr "" +msgstr "deshechar threads" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:91 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:381 msgid "View console on startup" -msgstr "" +msgstr "Mostrar consola al iniciar" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:93 msgid "Console is to be shown on startup" -msgstr "" +msgstr "La consola se mostrará al iniciar" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:94 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:383 msgid "Do not view console on startup" -msgstr "" +msgstr "No mostrar consola al iniciar" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96 msgid "Console is not to be shown on startup" -msgstr "" +msgstr "La consola no se mostrará al iniciar" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:105 msgid "Service installed" @@ -2231,7 +2267,7 @@ msgstr "Servicio instalado" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:107 msgid "Warning: unable to install the service" -msgstr "" +msgstr "Advertencia: no se puede instalar el servicio" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:113 msgid "Service removed" @@ -2239,27 +2275,30 @@ msgstr "Servicio quitado" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:115 msgid "Warning: unable to remove the service" -msgstr "" +msgstr "Advertencia: no se puede quitar el servicio" #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:111 msgid "Stat filter and location updated successfully to" -msgstr "" +msgstr "Filtro de estadísticas y ubicación actualizados correctamente a " #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:113 msgid "Failed to update the stat filter and location" -msgstr "" +msgstr "No se pudo actualizar el filtro de estadísticas y ubicación" #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:114 msgid "" "Graph list updated, may take up to 60s to be reflected here and on the Graphs Page" msgstr "" +"Lista del gráfico actualizada, puede tardar hasta 60s en reflejarse aquí y " +"en la Página de Gráficos" -#. the count isn't really correct anyway, since we don't check for actual changes +#. 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:135 msgid "Updated settings for all pools." -msgstr "" +msgstr "Actualizada la configuración para todos los valores." #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:140 msgid "Exploratory tunnel configuration saved successfully." @@ -2271,6 +2310,8 @@ msgid "" "Error saving the configuration (applied but not saved) - please see the " "error logs." msgstr "" +"Error al guardar la configuración (aplicada pero no guardada) - por favor " +"consulte los registros de errores." #. * dummies for translation #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:14 @@ -2284,61 +2325,65 @@ msgstr[1] "{0} saltos" #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 túnel" +msgstr[1] "{0} túneles" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:26 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:35 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:41 msgid "Exploratory tunnels" msgstr "Túneles exploratorios" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:46 -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:61 -msgid "Client tunnels for" -msgstr "Túneles clientes para" - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:69 -msgid "ANONYMITY WARNING - Settings include 0-hop tunnels." -msgstr "" +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:51 +#, java-format +msgid "Client tunnels for {0}" +msgstr "Túneles de cliente para {0}" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74 +msgid "ANONYMITY WARNING - Settings include 0-hop tunnels." +msgstr "ADVERTENCIA DE ANONIMATO - Los ajustes incluyen túneles de 0 saltos." + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:79 msgid "ANONYMITY WARNING - Settings include 1-hop tunnels." msgstr "" +"ADVERTENCIA DE ANONIMATO - Los ajustes incluyen los túneles de 1 salto." -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:77 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 msgid "PERFORMANCE WARNING - Settings include very long tunnels." msgstr "" +"ADVERTENCIA DE RENDIMIENTO - Los ajustes incluyen túneles de gran longitud." -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:80 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:85 msgid "PERFORMANCE WARNING - Settings include high tunnel quantities." msgstr "" +"ADVERTENCIA DE RENDIMIENTO - Los ajustes incluyen grandes cantidades de " +"túneles." #. buf.append("\n"); #. tunnel depth -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:92 msgid "Length" -msgstr "" +msgstr "Longitud" #. tunnel depth variance -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:104 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:109 msgid "Randomization" -msgstr "" +msgstr "Randomización" #. tunnel quantity -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:128 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:133 msgid "Quantity" msgstr "Cantidad" #. tunnel backup quantity -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:145 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:150 msgid "Backup quantity" msgstr "Cantidad de reserva" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:167 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:172 msgid "Inbound options" msgstr "Opciones de Entrada" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:180 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:185 msgid "Outbound options" msgstr "Opciones de Salida" @@ -2348,11 +2393,11 @@ msgstr "Cambio del tema guardado." #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:33 msgid "Refresh the page to view." -msgstr "" +msgstr "Actualice la página para ver." #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 msgid "Arabic" -msgstr "" +msgstr "Árabe" #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52 msgid "English" @@ -2374,7 +2419,6 @@ msgstr "Español" msgid "Dutch" msgstr "Neerlandés" -# added manually #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53 msgid "Portuguese" msgstr "Portugués" @@ -2403,39 +2447,39 @@ msgstr "" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:93 msgid "No update available" -msgstr "No está disponible ninguna actualización" +msgstr "Ninguna actualización disponible" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:101 msgid "Updating news URL to" -msgstr "" +msgstr "Actualizando URL de noticias a " #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:109 msgid "Updating proxy host to" -msgstr "" +msgstr "Actualizando host de proxy a " #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:117 msgid "Updating proxy port to" -msgstr "" +msgstr "Actualizando puerto del servidor proxy a " #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:130 msgid "Updating refresh frequency to" -msgstr "" +msgstr "Actualizando frecuencia de refresco a " #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:137 msgid "Updating update policy to" -msgstr "" +msgstr "Actualizando política de actualización a " #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:146 msgid "Updating update URLs." -msgstr "" +msgstr "Actualizando URLs de actualización" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:155 msgid "Updating trusted keys." -msgstr "" +msgstr "Actualizando claves de confianza." #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:163 msgid "Updating unsigned update URL to" -msgstr "" +msgstr "Actualizando URL de actualización sin firma a " #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:88 #: ../java/src/net/i2p/router/web/GraphHelper.java:167 @@ -2458,29 +2502,31 @@ msgstr "Sólo descargar y verificar" msgid "Download, verify, and restart" msgstr "Descargar, verificar y reiniciar" -#: ../java/src/net/i2p/router/web/FormHandler.java:174 +#: ../java/src/net/i2p/router/web/FormHandler.java:176 msgid "" "Invalid form submission, probably because you used the 'back' or 'reload' " "button on your browser. Please resubmit." msgstr "" +"El formulario introducido es inválido, probablemente por haber utilizado el " +"botón 'atrás' ó 'refrescar' del navegador. Por favor, reinténtelo." #: ../java/src/net/i2p/router/web/GraphHelper.java:93 msgid "Combined bandwidth graph" -msgstr "" +msgstr "gráfico de ancho de banda combinado" #. e.g. "statname for 60m" #: ../java/src/net/i2p/router/web/GraphHelper.java:107 #, java-format msgid "{0} for {1}" -msgstr "" +msgstr "{0} para {1}" #: ../java/src/net/i2p/router/web/GraphHelper.java:146 msgid "Configure Graph Display" -msgstr "" +msgstr "Configuración de la gráfica" #: ../java/src/net/i2p/router/web/GraphHelper.java:146 msgid "Select Stats" -msgstr "" +msgstr "Seleccionar Estadísticas" #: ../java/src/net/i2p/router/web/GraphHelper.java:150 msgid "Periods" @@ -2488,17 +2534,17 @@ msgstr "Períodos" #: ../java/src/net/i2p/router/web/GraphHelper.java:151 msgid "Plot averages" -msgstr "" +msgstr "promedios de la trama" #: ../java/src/net/i2p/router/web/GraphHelper.java:152 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:333 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:351 msgid "or" msgstr "o" #: ../java/src/net/i2p/router/web/GraphHelper.java:152 msgid "plot events" -msgstr "" +msgstr "eventos de la trama" #: ../java/src/net/i2p/router/web/GraphHelper.java:153 msgid "Image sizes" @@ -2510,7 +2556,7 @@ msgstr "ancho" #: ../java/src/net/i2p/router/web/GraphHelper.java:154 msgid "height" -msgstr "altura" +msgstr "alto" #: ../java/src/net/i2p/router/web/GraphHelper.java:154 #: ../java/src/net/i2p/router/web/GraphHelper.java:155 @@ -2519,20 +2565,20 @@ msgstr "píxeles" #: ../java/src/net/i2p/router/web/GraphHelper.java:156 msgid "Refresh delay" -msgstr "" +msgstr "Retardo de actualización" #: ../java/src/net/i2p/router/web/GraphHelper.java:171 msgid "Redraw" -msgstr "" +msgstr "Redibujar" #: ../java/src/net/i2p/router/web/GraphHelper.java:203 msgid "Graph settings saved" -msgstr "" +msgstr "configuración de gráfico guardada" #: ../java/src/net/i2p/router/web/LogsHelper.java:13 #: ../java/src/net/i2p/router/web/LogsHelper.java:37 msgid "File location" -msgstr "" +msgstr "Ubicación del archivo" #: ../java/src/net/i2p/router/web/LogsHelper.java:34 msgid "File not found" @@ -2540,37 +2586,37 @@ msgstr "Archivo no encontrado" #: ../java/src/net/i2p/router/web/LogsHelper.java:52 msgid "No log messages" -msgstr "" +msgstr "No hay mensajes de registro" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:80 msgid "Network Database RouterInfo Lookup" -msgstr "" +msgstr "Busqueda de RouterInfo en la base de datos de red" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:95 #: ../java/strings/Strings.java:68 msgid "Router" -msgstr "Enrutador" +msgstr "Router" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:95 msgid "not found in network database" -msgstr "" +msgstr "no se encuentra en la base de datos de red" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:107 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:215 msgid "Network Database Contents" -msgstr "" +msgstr "Contenido de la base de datos de red" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:108 msgid "View RouterInfo" -msgstr "" +msgstr "Ver RouterInfo" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:109 msgid "LeaseSets" -msgstr "" +msgstr "LeaseSets" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:131 msgid "LeaseSet" -msgstr "" +msgstr "LeaseSet" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:133 msgid "Local" @@ -2583,7 +2629,7 @@ msgstr "No publicado" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:136 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:143 msgid "Destination" -msgstr "" +msgstr "Destino" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:153 #, java-format @@ -2598,19 +2644,19 @@ msgstr "Caducó hace {0}" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:167 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "Gateway" -msgstr "" +msgstr "Gateway" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:167 msgid "Lease" -msgstr "" +msgstr "Lease" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:169 msgid "Tunnel" -msgstr "" +msgstr "Túnel" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:215 msgid "View LeaseSets" -msgstr "" +msgstr "Ver LeaseSets" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:217 msgid "Not initialized" @@ -2618,7 +2664,7 @@ msgstr "No inicializado" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:226 msgid "Routers" -msgstr "Enrutadores" +msgstr "Routers" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:228 msgid "Show all routers" @@ -2626,98 +2672,98 @@ msgstr "Mostrar todos los enrutadores" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:230 msgid "Show all routers with full stats" -msgstr "" +msgstr "Mostrar las estadísticas completas de todos los routers" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:265 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:266 msgid "Network Database Router Statistics" -msgstr "" +msgstr "Estadísticas de la base de datos de red del router" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:273 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:287 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:305 msgid "Count" -msgstr "" +msgstr "Cuenta" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:287 msgid "Transports" -msgstr "" +msgstr "Transportes" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:305 msgid "Country" msgstr "País" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:342 -msgid "Our info" -msgstr "" - #: ../java/src/net/i2p/router/web/NetDbRenderer.java:344 +msgid "Our info" +msgstr "Nuestra información" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:346 msgid "Peer info for" -msgstr "" +msgstr "Información de interlocutor para" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:348 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:350 msgid "Full entry" -msgstr "" +msgstr "Campo completo" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:356 #: ../java/src/net/i2p/router/web/SummaryHelper.java:115 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 msgid "Hidden" msgstr "Oculto" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:356 msgid "Updated" msgstr "Actualizado" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:355 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:358 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:357 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:360 #, java-format msgid "{0} ago" msgstr "hace {0}" #. shouldnt happen -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:357 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:361 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:359 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:363 msgid "Published" msgstr "Publicado" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:363 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:365 msgid "Address(es)" msgstr "Dirección(es)" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:376 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:378 msgid "cost" -msgstr "" +msgstr "coste" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 msgid "Hidden or starting up" -msgstr "" +msgstr "Oculto o iniciando" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 msgid "SSU" -msgstr "" +msgstr "SSU" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 msgid "SSU with introducers" -msgstr "" +msgstr "SSU con introductores" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:404 msgid "NTCP" -msgstr "" +msgstr "NTCP" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:404 msgid "NTCP and SSU" -msgstr "" +msgstr "NTCP y SSU" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:404 msgid "NTCP and SSU with introducers" -msgstr "" +msgstr "NTCP y SSU con introductores" -#: ../java/src/net/i2p/router/web/NewsFetcher.java:93 +#: ../java/src/net/i2p/router/web/NewsFetcher.java:92 #, java-format msgid "News last updated {0} ago." msgstr "Noticias actualizadas hace {0}." -#: ../java/src/net/i2p/router/web/NewsFetcher.java:99 +#: ../java/src/net/i2p/router/web/NewsFetcher.java:98 #, java-format msgid "News last checked {0} ago." msgstr "Noticias chequeadas hace {0}." @@ -2725,164 +2771,175 @@ msgstr "Noticias chequeadas hace {0}." #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:77 #, java-format msgid "Cannot check, plugin {0} is not installed" -msgstr "" +msgstr "No se puede comprobar, el plugin {0} no está instalado" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:129 #, java-format msgid "Checking for update of plugin {0}" -msgstr "" +msgstr "Buscando actualizaciones para el plugin {0}" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:154 #, java-format msgid "New plugin version {0} is available" -msgstr "" +msgstr "Hay una nueva versión del plugin {0} disponible" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:156 #, java-format msgid "No new version is available for plugin {0}" -msgstr "" +msgstr "No hay nuevas versiones disponibles para el plugin {0}" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:165 #, java-format msgid "Update check failed for plugin {0}" -msgstr "" +msgstr "Fallo al buscar actualizaciones para el plugin {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:139 msgid "Downloading plugin" -msgstr "" +msgstr "Descargando plugin" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:146 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:244 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:245 #, java-format msgid "{0}B transferred" -msgstr "" +msgstr "{0}B transferidos" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:153 msgid "Plugin downloaded" -msgstr "" +msgstr "Plugin descargado" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:158 #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:356 #, java-format msgid "Cannot create plugin directory {0}" -msgstr "" +msgstr "No se puede crear directorio de plugins {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:167 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:298 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:299 #, java-format msgid "from {0}" -msgstr "" +msgstr "de {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:177 #, java-format msgid "Plugin from {0} is corrupt" -msgstr "" +msgstr "Plugin de {0} está dañado" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:188 #, java-format msgid "Plugin from {0} does not contain the required configuration file" -msgstr "" +msgstr "El plugin de {0} no contiene el archivo de configuración necesario" -#. updateStatus("" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + ""); +#. updateStatus("" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' +#. + signer + ""); #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:201 #, java-format msgid "Plugin from {0} contains an invalid key" -msgstr "" +msgstr "Plugin de {0} contiene una clave no válida" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:225 #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:235 #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:249 #, java-format msgid "Plugin signature verification of {0} failed" -msgstr "" +msgstr "Verificación de la firma de plugin de {0} ha fallado" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:264 #, java-format msgid "Plugin from {0} has invalid name or version" -msgstr "" +msgstr "Plugin de {0} tiene nombre o versión no válido" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:269 #, java-format msgid "Plugin {0} has mismatched versions" -msgstr "" +msgstr "El plugin {0} tiene versiones no coincidentes" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:277 #, java-format msgid "This plugin requires I2P version {0} or higher" -msgstr "" +msgstr "Este pluginrequiere la versión I2P {0} o superior" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:285 #, java-format msgid "This plugin requires Java version {0} or higher" -msgstr "" +msgstr "Este plugin requiere la versión de Java {0} o superior" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 msgid "" "Downloaded plugin is for new installs only, but the plugin is already " "installed" msgstr "" +"El plugin descargado es sólo para instalaciones nuevas, pero el plugin ya " +"está instalado" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:305 msgid "Installed plugin does not contain the required configuration file" -msgstr "" +msgstr "El plugin instalado no contiene el archivo de configuración necesario" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:313 msgid "Signature of downloaded plugin does not match installed plugin" msgstr "" +"La firma del plugin descargado no coincide con la del plugin instalado" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:320 #, java-format msgid "Downloaded plugin version {0} is not newer than installed plugin" msgstr "" +"El plugin descargado con versión {0} no es más reciente que el plugin " +"instalado" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:327 #, java-format msgid "Plugin update requires installed plugin version {0} or higher" msgstr "" +"La actualización del plugin requiere tener instalada la versión del plugin " +"{0} o superior" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:334 #, java-format msgid "Plugin update requires installed plugin version {0} or lower" msgstr "" +"La actualización del plugin requiere tener instalada la versión del plugin " +"{0} o inferior" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351 msgid "Plugin is for upgrades only, but the plugin is not installed" msgstr "" +"El plugin es sólo para actualizaciones, pero el plugin no está instalado" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:364 #, java-format msgid "Failed to install plugin in {0}" -msgstr "" +msgstr "No se pudo instalar el plugin en {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:371 #, java-format msgid "Plugin {0} installed, router restart required" -msgstr "" +msgstr "Plugin {0} instalado, se requiere un reinicio del router" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:373 #, java-format msgid "Plugin {0} installed" -msgstr "" +msgstr "Plugin {0} instalado" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:391 #, java-format msgid "Plugin {0} installed and started" -msgstr "" +msgstr "Plugin {0} instalado e iniciado" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:394 #, java-format msgid "Plugin {0} installed but failed to start, check logs" -msgstr "" +msgstr "Plugin {0} instalado pero no funciona, revise los registros" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:396 #, java-format msgid "Plugin {0} installed but failed to start" -msgstr "" +msgstr "Plugin {0} instalado pero no se pudo iniciar" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:406 #, java-format msgid "Failed to download plugin from {0}" -msgstr "" +msgstr "No se pudo descargar el plugin de {0}" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:72 msgid "Peer Profiles" @@ -2890,37 +2947,43 @@ msgstr "Perfiles de los pares" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:73 #, java-format -msgid "Showing {0} recent profiles." -msgstr "Mostrando {0} perfiles recientes" +msgid "Showing 1 recent profile." +msgid_plural "Showing {0} recent profiles." +msgstr[0] "Mostrando 1 perfil reciente." +msgstr[1] "Mostrando {0} Perfiles recientes." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:75 #, java-format -msgid "Hiding {0} older profiles." -msgstr "Ocultando {0} perfiles antiguos" +msgid "Hiding 1 older profile." +msgid_plural "Hiding {0} older profiles." +msgstr[0] "Ocultando 1 perfil más antiguo." +msgstr[1] "Ocultando {0} perfiles más antiguos." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:77 #, java-format -msgid "Hiding {0} standard profiles." -msgstr "Ocultando {0} perfiles estándar" +msgid "Hiding 1 standard profile." +msgid_plural "Hiding {0} standard profiles." +msgstr[0] "Ocultando 1 perfil estándar." +msgstr[1] "Ocultando {0} perfiles estándar." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:82 msgid "Groups (Caps)" -msgstr "" +msgstr "Grupos (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:335 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:252 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:353 msgid "Speed" msgstr "Velocidad" #: ../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:339 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:254 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:357 msgid "Capacity" msgstr "Capacidad" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:85 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:255 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:256 msgid "Integration" msgstr "Integración" @@ -2938,7 +3001,7 @@ msgstr "Alta Capacidad" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:128 msgid "Standard" -msgstr "" +msgstr "Estándar" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:129 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:163 @@ -2946,9 +3009,9 @@ msgid "Failing" msgstr "Fallando" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:287 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:282 msgid "Integrated" -msgstr "Integrados" +msgstr "Integrado" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:164 msgid "Unreachable" @@ -2959,265 +3022,287 @@ msgstr "Inaccesible" msgid "Test Fails" msgstr "Test fallido" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:175 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:177 msgid "profile" msgstr "perfil" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:184 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:186 msgid "Floodfill and Integrated Peers" -msgstr "" +msgstr "Floodfill e pares Integrados" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:188 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190 msgid "Caps" msgstr "Categorías" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:189 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:191 msgid "Integ. Value" msgstr "Valor de Integración" -#: ../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 "" +msgid "Last Heard About" +msgstr "sabido por última vez sobre" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:193 -msgid "Last Bad Send" -msgstr "" +msgid "Last Heard From" +msgstr "sabido por última vez de" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:194 -msgid "10m Resp. Time" -msgstr "" +msgid "Last Good Send" +msgstr "Último Enviado Correctamente" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195 -msgid "1h Resp. Time" -msgstr "" +msgid "Last Bad Send" +msgstr "Último Enviado con Errores" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196 -msgid "1d Resp. Time" -msgstr "" +msgid "10m Resp. Time" +msgstr "Tiempo resp. 10m" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:197 -msgid "Last Good Lookup" -msgstr "" +msgid "1h Resp. Time" +msgstr "Tiempo resp. 1h" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:198 -msgid "Last Bad Lookup" -msgstr "" +msgid "1d Resp. Time" +msgstr "Tiempo resp. 1d" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:199 -msgid "Last Good Store" -msgstr "" +msgid "Last Good Lookup" +msgstr "Última Buena Búsqueda" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:200 -msgid "Last Bad Store" -msgstr "" +msgid "Last Bad Lookup" +msgstr "Última Mala Búsqueda" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201 -msgid "1h Fail Rate" -msgstr "" +msgid "Last Good Store" +msgstr "Última Buena Guardada" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 +msgid "Last Bad Store" +msgstr "Última Mala Guardada" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:203 +msgid "1h Fail Rate" +msgstr "Tasa de error de 1h" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:204 msgid "1d Fail Rate" -msgstr "" +msgstr "Tasa de error de 1d" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:250 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:251 msgid "Thresholds" -msgstr "" +msgstr "Umbrales" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:252 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:253 msgid "fast peers" msgstr "pares rápidos" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:254 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:255 msgid "high capacity peers" msgstr "pares de alta capacidad" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:256 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 msgid " well integrated peers" -msgstr "" +msgstr "Pares bien integrados" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 msgid "as determined by the profile organizer" -msgstr "" +msgstr "según lo determinado por el organizador del perfil" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 msgid "groups" msgstr "grupos" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 msgid "capabilities in the netDb, not used to determine profiles" -msgstr "" +msgstr "capacidades en el netDb, no se utilizan para determinar los perfiles" #. capabilities -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 #: ../java/strings/Strings.java:81 msgid "caps" -msgstr "" +msgstr "límites" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 msgid "" "peak throughput (bytes per second) over a 1 minute period that the peer has " "sustained in a single tunnel" msgstr "" +"rendimiento máximo (bytes por segundo) durante un período de 1 minuto que el" +" par ha sostenido en un solo túnel" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 msgid "speed" msgstr "velocidad" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 msgid "capacity" msgstr "capacidad" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 msgid "how many tunnels can we ask them to join in an hour?" -msgstr "" +msgstr "a cuántos túneles podemos pedirlos que se unan en una hora?" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 msgid "how many new peers have they told us about lately?" -msgstr "" +msgstr "de cuántos nuevos pares nos han hablado últimamente?" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 msgid "integration" msgstr "integración" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264 msgid "is the peer banned, or unreachable, or failing tunnel tests?" -msgstr "" +msgstr "está el par baneado, o inalcanzable, o fallando las pruebas de túnel?" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264 msgid "status" msgstr "estado" -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:57 +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:47 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:410 +msgid "none" +msgstr "ninguno" + +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:62 #, java-format msgid "Temporary ban expiring in {0}" -msgstr "" +msgstr "El baneado temporal expirará en {0}" -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:59 +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:64 #, java-format msgid "Banned until restart or in {0}" -msgstr "" +msgstr "Baneado hasta reinicio o en {0}" -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:71 +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:76 msgid "unban now" -msgstr "" +msgstr "Desbanear ahora" -#. Note to translators: all runtime zh translation disabled in this file, no font available in RRD +#. Note to translators: all runtime zh translation disabled in this file, no +#. font available in RRD #: ../java/src/net/i2p/router/web/StatSummarizer.java:223 msgid "Bandwidth usage" -msgstr "" +msgstr "Uso de ancho de banda" #: ../java/src/net/i2p/router/web/StatSummarizer.java:230 msgid "Outbound bytes/sec" -msgstr "" +msgstr "bytes/seg de salida" #. def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3); #: ../java/src/net/i2p/router/web/StatSummarizer.java:232 msgid "Inbound bytes/sec" -msgstr "" +msgstr "bytes/seg entrantes" #: ../java/src/net/i2p/router/web/StatSummarizer.java:235 #: ../java/src/net/i2p/router/web/StatSummarizer.java:236 #: ../java/src/net/i2p/router/web/StatSummarizer.java:237 #: ../java/src/net/i2p/router/web/StatSummarizer.java:238 msgid "bytes/sec" -msgstr "" +msgstr "bytes/seg" #: ../java/src/net/i2p/router/web/StatSummarizer.java:235 msgid "out average" -msgstr "" +msgstr "media de salida" #: ../java/src/net/i2p/router/web/StatSummarizer.java:236 #: ../java/src/net/i2p/router/web/StatSummarizer.java:238 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:115 msgid "max" -msgstr "" +msgstr "max" #: ../java/src/net/i2p/router/web/StatSummarizer.java:237 msgid "in average" -msgstr "" +msgstr "en promedio" #: ../java/src/net/i2p/router/web/StatsGenerator.java:57 msgid "GO" -msgstr "" +msgstr "GO" #: ../java/src/net/i2p/router/web/StatsGenerator.java:60 msgid "Statistics gathered during this router's uptime" -msgstr "" +msgstr "Estadísticas recopiladas durante el funcionamiento de este router" #: ../java/src/net/i2p/router/web/StatsGenerator.java:63 msgid "" "The data gathered is quantized over a 1 minute period, so should just be " "used as an estimate." msgstr "" +"Los datos recogidos se cuantifican en un período de 1 minuto, por lo que " +"sólo deben utilizarse como estimación." #: ../java/src/net/i2p/router/web/StatsGenerator.java:64 msgid "These statistics are primarily used for development and debugging." msgstr "" +"Estas estadísticas se utilizan principalmente para el desarrollo y " +"depuración." -#: ../java/src/net/i2p/router/web/StatsGenerator.java:105 -#: ../java/src/net/i2p/router/web/StatsGenerator.java:156 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:106 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:157 msgid "No lifetime events" -msgstr "" +msgstr "No hay eventos de duración ilimitada" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:116 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:117 msgid "frequency" msgstr "frecuencia" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:120 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:121 msgid "Rolling average events per period" -msgstr "" +msgstr "Promedio de eventos móviles por período" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:124 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:125 msgid "Highest events per period" -msgstr "" +msgstr "Más eventos por período" -#. if (showAll && (curFreq.getMaxAverageEventsPerPeriod() > 0) && (curFreq.getAverageEventsPerPeriod() > 0) ) { +#. if (showAll && (curFreq.getMaxAverageEventsPerPeriod() > 0) && +#. (curFreq.getAverageEventsPerPeriod() > 0) ) { #. buf.append("(current is "); #. buf.append(pct(curFreq.getAverageEventsPerPeriod()/curFreq.getMaxAverageEventsPerPeriod())); #. buf.append(" of max)"); #. } -#. buf.append(" avg interval between updates: (").append(num(curFreq.getAverageInterval())).append("ms, min "); +#. buf.append(" avg interval between updates: +#. (").append(num(curFreq.getAverageInterval())).append("ms, min "); #. buf.append(num(curFreq.getMinAverageInterval())).append("ms)"); -#: ../java/src/net/i2p/router/web/StatsGenerator.java:135 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:136 msgid "Lifetime average events per period" -msgstr "" +msgstr "Media de eventos por período en la vida" #. Display the strict average -#: ../java/src/net/i2p/router/web/StatsGenerator.java:140 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:141 msgid "Lifetime average frequency" -msgstr "" +msgstr "Frecuencia media en la vida" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:168 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:144 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:234 +#, java-format +msgid "1 event" +msgid_plural "{0} events" +msgstr[0] "1 evento" +msgstr[1] "{0} eventos" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:169 msgid "rate" msgstr "Tasa" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:170 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:171 msgid "Average" msgstr "Promedio" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:173 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:174 msgid "Highest average" msgstr "Promedio máximo" -#. breaking the sentence like before makes translation in my language impossible. #: ../java/src/net/i2p/router/web/StatsGenerator.java:201 #, java-format -msgid "There were {0} event(s) in this period" -msgstr "" +msgid "There was 1 event in this period." +msgid_plural "There were {0} events in this period." +msgstr[0] "Hubo 1 evento en este período." +msgstr[1] "Hubo {0} eventos en este período." -#. buf.append(' '); #: ../java/src/net/i2p/router/web/StatsGenerator.java:203 -#, fuzzy, java-format -msgid " which ended {0} ago." -msgstr "Noticias chequeadas hace {0}." +#, java-format +msgid "The period ended {0} ago." +msgstr "El período terminó hace {0}." #: ../java/src/net/i2p/router/web/StatsGenerator.java:205 msgid "No events" @@ -3225,43 +3310,44 @@ msgstr "sin acontecimientos" #: ../java/src/net/i2p/router/web/StatsGenerator.java:211 msgid "Average event count" -msgstr "" +msgstr "número medio de eventos" #: ../java/src/net/i2p/router/web/StatsGenerator.java:213 msgid "Events in peak period" -msgstr "" +msgstr "Eventos en temporada alta" #: ../java/src/net/i2p/router/web/StatsGenerator.java:221 msgid "Graph Data" -msgstr "" +msgstr "Datos de gráfica" #: ../java/src/net/i2p/router/web/StatsGenerator.java:223 msgid "Graph Event Count" -msgstr "" +msgstr "Número de eventos en el Gráfico" #: ../java/src/net/i2p/router/web/StatsGenerator.java:226 msgid "Export Data as XML" -msgstr "" +msgstr "Exportar datos como XML" #. Display the strict average #: ../java/src/net/i2p/router/web/StatsGenerator.java:231 msgid "Lifetime average value" -msgstr "" +msgstr "Valor medio total" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:41 msgid "I2P Router Help & FAQ" -msgstr "Ayuda acerca del enrutador I2P & FAQ" +msgstr "Ayuda del router I2P & preguntas frecuentes" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:43 msgid "Help & FAQ" -msgstr "Ayuda" +msgstr "Ayuda & Preguntas frecuentes" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:55 msgid "" "Configure startup of clients and webapps (services); manually start dormant " "services" msgstr "" -"Configura el arranque de clientes y servicios o lanza servicios no activados" +"Configura el arranque de clientes y servicios (webapps) o lanza servicios no" +" activados" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:57 msgid "I2P Services" @@ -3270,6 +3356,8 @@ msgstr "Servicios I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:63 msgid "Manage your I2P hosts file here (I2P domain name resolution)" msgstr "" +"Administrar el archivo hosts de I2P aquí (resolución de nombres de dominio " +"I2P)" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:65 msgid "Addressbook" @@ -3277,23 +3365,23 @@ msgstr "Libreta de direcciones" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:69 msgid "Built-in anonymous BitTorrent Client" -msgstr "" +msgstr "Cliente BitTorrent anónimo integrado" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:71 msgid "Torrents" -msgstr "Torrents" +msgstr "Torrentes" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:75 msgid "Anonymous webmail client" -msgstr "" +msgstr "Cliente webmail anónimo" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:77 msgid "Webmail" -msgstr "Mensagería web" +msgstr "Webmail" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:81 msgid "Anonymous resident webserver" -msgstr "" +msgstr "Servidor web residente anónimo " #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:83 msgid "Webserver" @@ -3301,19 +3389,19 @@ msgstr "Servidor web" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:91 msgid "Configure I2P Router" -msgstr "Configura enrutador I2P" +msgstr "Configurar router I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:93 msgid "I2P Internals" msgstr "Configuración" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:99 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:384 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:379 msgid "View existing tunnels and tunnel build status" -msgstr "" +msgstr "Ver los túneles existentes y el estado de construcción de túneles" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:105 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253 msgid "Show all current peer connections" msgstr "Mostrar todas las conexiones actuales con pares" @@ -3327,23 +3415,23 @@ msgstr "Perfiles" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:117 msgid "Show list of all known I2P routers" -msgstr "Mostrar lista de todos los enrutadores I2P conocidos" +msgstr "Mostrar lista de todos los routers I2P conocidos" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:119 msgid "NetDB" -msgstr "" +msgstr "NetDB" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123 msgid "Health Report" -msgstr "" +msgstr "Informe de salud" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:125 msgid "Logs" -msgstr "" +msgstr "Registros" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:135 msgid "Graph router performance" -msgstr "Mostrar el rendimiento del enrutador" +msgstr "Mostrar el rendimiento del router" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:137 msgid "Graphs" @@ -3351,7 +3439,7 @@ msgstr "Gráficos" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141 msgid "Textual router performance statistics" -msgstr "Estadísticas textuales del rendimiento del enrutador" +msgstr "Estadísticas textuales del rendimiento del router" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147 #: ../java/src/net/i2p/router/web/SummaryHelper.java:370 @@ -3361,11 +3449,11 @@ msgstr "Destinos locales" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:149 #: ../java/strings/Strings.java:62 msgid "I2PTunnel" -msgstr "I2PTunnel" +msgstr "Túnel I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164 msgid "I2P Router Help" -msgstr "" +msgstr "Ayuda de Router I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166 msgid "General" @@ -3389,7 +3477,7 @@ msgstr "mostrar" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192 msgid "How long we've been running for this session" -msgstr "" +msgstr "Cuanto tiempo hemos estado en funcionamiento durante esta sesión" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195 msgid "Uptime" @@ -3399,160 +3487,173 @@ msgstr "Tiempo de servicio" msgid "" "Help with configuring your firewall and router for optimal I2P performance" msgstr "" +"Ayuda con la configuración del firewall y router para un rendimiento óptimo " +"de I2P" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 -msgid "Download" -msgstr "Descargar" +#. Note to translators: parameter is a version, e.g. "0.8.4" +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:232 +#, java-format +msgid "Download {0} Update" +msgstr "Descargar {0} actualización" +#. Note to translators: parameter is a date and time, e.g. "02-Mar 20:34 UTC" +#.
    is optional, to help the browser make the lines even in the button +#. If the translation is shorter than the English, you should probably not +#. include
    #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:240 -msgid "Download Unsigned" -msgstr "Descargar de forma no authentificada" +#, java-format +msgid "Download Unsigned
    Update {0}" +msgstr "Descargar actualización
    sin firmar {0}" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261 msgid "Active" msgstr "Activos" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270 msgid "Fast" msgstr "Rápidos" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:281 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:276 msgid "High capacity" msgstr "Alta capacidad" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:293 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288 msgid "Known" msgstr "Conocidos" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:308 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:303 msgid "Help with firewall configuration" -msgstr "" +msgstr "Ayuda con la configuración del firewall" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:310 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:305 msgid "Check NAT/firewall" -msgstr "" +msgstr "Comprobar NAT/firewall" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:330 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:325 msgid "Reseed" -msgstr "" +msgstr "Reiniciar Semillas" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:347 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:342 msgid "Configure router bandwidth allocation" msgstr "Configurar ancho de banda del enrutador I2P" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:349 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:344 msgid "Bandwidth in/out" msgstr "Ancho de Banda entrante/saliente" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:369 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:364 msgid "Total" msgstr "Total" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:371 msgid "Used" msgstr "Usado" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:391 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 msgid "Exploratory" msgstr "Exploratorios" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:398 msgid "Participating" -msgstr "Participando en" +msgstr "Participando en" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:409 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:404 msgid "Share ratio" -msgstr "Compartición" +msgstr "Tasa de compartición" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:410 msgid "What's in the router's job queue?" -msgstr "¿Qué está en la cola de tareas del enrutador?" +msgstr "¿Qué está en la cola de tareas del router?" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412 +msgid "Congestion" +msgstr "Congestión" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 -msgid "Congestion" -msgstr "Tareas" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:422 msgid "Job lag" -msgstr "Demora - tareas" +msgstr "lag - tareas" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:428 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:423 msgid "Message delay" -msgstr "Demora - mensajes" +msgstr "lag - mensajes" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:434 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:429 msgid "Tunnel lag" -msgstr "Demora - túnel" +msgstr "lag - túnel" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435 msgid "Backlog" msgstr "Peticiones pendientes" #: ../java/src/net/i2p/router/web/SummaryHelper.java:106 msgid "ERR-Client Manager I2CP Error - check logs" -msgstr "" +msgstr "ERR- Error Administrador de Clientes I2CP - comprobar registros" #: ../java/src/net/i2p/router/web/SummaryHelper.java:113 #, java-format msgid "ERR-Clock Skew of {0}" -msgstr "" +msgstr "ERR-Desviación del Reloj de {0}" #: ../java/src/net/i2p/router/web/SummaryHelper.java:122 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:595 msgid "OK" -msgstr "BIEN" +msgstr "OK" #: ../java/src/net/i2p/router/web/SummaryHelper.java:123 msgid "ERR-Private TCP Address" -msgstr "" +msgstr "ERR-Dirección TCP Privada" #: ../java/src/net/i2p/router/web/SummaryHelper.java:125 msgid "ERR-SymmetricNAT" -msgstr "" +msgstr "ERR-NAT Simétrico" #: ../java/src/net/i2p/router/web/SummaryHelper.java:128 msgid "WARN-Firewalled with Inbound TCP Enabled" -msgstr "" +msgstr "AVISO-Tras Firewall con TCP Entrante Activado" #: ../java/src/net/i2p/router/web/SummaryHelper.java:130 msgid "WARN-Firewalled and Floodfill" -msgstr "" +msgstr "AVISO-Tras Firewall y Floodfill" #: ../java/src/net/i2p/router/web/SummaryHelper.java:132 msgid "WARN-Firewalled and Fast" -msgstr "" +msgstr "AVISO-Tras firewall y rápido" #: ../java/src/net/i2p/router/web/SummaryHelper.java:133 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 msgid "Firewalled" -msgstr "Bloqueado por un corta-fuegos" +msgstr "Bloqueado por un firewall" #: ../java/src/net/i2p/router/web/SummaryHelper.java:135 msgid "" "ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and " "restart" msgstr "" +"ERR-puerto UDP en uso - establezca i2np.udp.internalPort=xxxx = en " +"configuración avanzada y reinicie" #: ../java/src/net/i2p/router/web/SummaryHelper.java:141 msgid "ERR-No Active Peers, Check Network Connection and Firewall" -msgstr "" +msgstr "ERR-No hay pares activos, Compruebe la conexión de red y firewall" #: ../java/src/net/i2p/router/web/SummaryHelper.java:144 msgid "ERR-UDP Disabled and Inbound TCP host/port not set" msgstr "" +"ERR-UDP deshabilitado y el puerto/host de entrada TCP no ha sido establecido" #: ../java/src/net/i2p/router/web/SummaryHelper.java:146 msgid "WARN-Firewalled with UDP Disabled" -msgstr "" +msgstr "AVISO-Tras firewall con UDP deshabilitado" #: ../java/src/net/i2p/router/web/SummaryHelper.java:148 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 msgid "Testing" msgstr "Comprobando" #: ../java/src/net/i2p/router/web/SummaryHelper.java:370 msgid "Add/remove/edit & control your client and server tunnels" msgstr "" +"Agregar/quitar/editar & controlar sus túneles de cliente y servidor" #: ../java/src/net/i2p/router/web/SummaryHelper.java:382 msgid "Server" @@ -3560,17 +3661,17 @@ msgstr "Servidor" #: ../java/src/net/i2p/router/web/SummaryHelper.java:386 msgid "Show tunnels" -msgstr "Mostrar los túneles" +msgstr "Mostrar túneles" #: ../java/src/net/i2p/router/web/SummaryHelper.java:397 msgid "Leases expired" -msgstr "" +msgstr "Leases expirados" #. red or yellow light #: ../java/src/net/i2p/router/web/SummaryHelper.java:397 #: ../java/src/net/i2p/router/web/SummaryHelper.java:398 msgid "Rebuilding" -msgstr "" +msgstr "Reconstruyendo" #: ../java/src/net/i2p/router/web/SummaryHelper.java:398 msgid "ago" @@ -3584,16 +3685,12 @@ msgstr "Listo" #. yellow light #: ../java/src/net/i2p/router/web/SummaryHelper.java:405 msgid "Building" -msgstr "" +msgstr "Construyendo" #: ../java/src/net/i2p/router/web/SummaryHelper.java:405 msgid "Building tunnels" msgstr "Creando túneles" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:410 -msgid "none" -msgstr "ninguno" - #. 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 @@ -3603,20 +3700,21 @@ msgstr "ninguno" msgid "shared clients" msgstr "clientes diferentes" -#. Note to translators: all runtime zh translation disabled in this file, no font available in RRD +#. Note to translators: all runtime zh translation disabled in this file, no +#. font available in RRD #: ../java/src/net/i2p/router/web/SummaryRenderer.java:89 #, java-format msgid "events in {0}" -msgstr "" +msgstr "eventos en {0}" #: ../java/src/net/i2p/router/web/SummaryRenderer.java:91 #, java-format msgid "averaged for {0}" -msgstr "" +msgstr "promedio por {0}" #: ../java/src/net/i2p/router/web/SummaryRenderer.java:101 msgid "Events per period" -msgstr "" +msgstr "Eventos por período" #: ../java/src/net/i2p/router/web/SummaryRenderer.java:114 msgid "avg" @@ -3628,10 +3726,14 @@ msgstr "ahora" #: ../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:287 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:309 msgid "configure" msgstr "configurar" +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:61 +msgid "Client tunnels for" +msgstr "Túneles de clientes para" + #: ../java/src/net/i2p/router/web/TunnelRenderer.java:65 msgid "dead" msgstr "muerto" @@ -3671,37 +3773,37 @@ msgstr "Papel" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:74 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "Usage" -msgstr "" +msgstr "Uso" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:107 msgid "grace period" -msgstr "" +msgstr "período de gracia" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:117 msgid "Outbound Endpoint" -msgstr "" +msgstr "Salida de punto final" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:119 msgid "Inbound Gateway" -msgstr "" +msgstr "Gateway de entrada" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:121 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162 msgid "Participant" -msgstr "" +msgstr "Participante" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:126 msgid "Inactive participating tunnels" -msgstr "" +msgstr "Túneles Inactivos participantes" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:127 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:218 msgid "Lifetime bandwidth usage" -msgstr "" +msgstr "Uso de ancho de banda total" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "Expiry" -msgstr "" +msgstr "Expiración" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:159 msgid "Participants" @@ -3709,7 +3811,7 @@ msgstr "Participantes" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:165 msgid "Endpoint" -msgstr "" +msgstr "Punto final" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:205 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:212 @@ -3726,7 +3828,7 @@ msgstr "saliente" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:217 msgid "No tunnels; waiting for the grace period to end." -msgstr "" +msgstr "No hay túneles, esperando que termine el período de gracia." #: ../java/src/net/i2p/router/web/TunnelRenderer.java:219 msgid "in" @@ -3754,72 +3856,72 @@ msgstr "participando en" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:256 msgid "Totals" -msgstr "Total" +msgstr "Totales" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:66 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:142 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:237 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:67 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:143 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:238 msgid "Updating" msgstr "Actualizando" #. Process the .sud/.su2 file -#: ../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:261 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:286 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:89 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:112 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:117 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:262 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:287 msgid "Update downloaded" msgstr "actualización descargada" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:91 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:92 #, java-format msgid "Unsigned update file from {0} is corrupt" -msgstr "" +msgstr "Archivo de actualización sin firmar de {0} está dañado" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:111 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:281 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:112 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:282 msgid "Restarting" msgstr "Reiniciando" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:118 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:288 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:119 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:289 msgid "Click Restart to install" msgstr "¡Pincha en \"Reiniciar\" para instalar!" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:120 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:290 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:121 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:291 msgid "Click Shutdown and restart to install" msgstr "¡Pincha en \"Apagar\" y reinicia para instalar!" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:121 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:292 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:122 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:293 #, java-format msgid "Version {0}" msgstr "Versión {0}" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:126 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:127 #, java-format msgid "Failed copy to {0}" -msgstr "Fallido copiar a {0}" +msgstr "Fallada copia a {0}" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:184 -#, fuzzy, java-format +#: ../java/src/net/i2p/router/web/UpdateHandler.java:185 +#, java-format msgid "Updating from {0}" -msgstr "Actualizando" +msgstr "Actualizando de {0}" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:253 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:254 #, java-format msgid "No new version found at {0}" -msgstr "" +msgstr "Ninguna versión nueva encontrada en {0}" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:281 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:282 msgid "Update verified" -msgstr "Actualización actualizada" +msgstr "Actualización verificada" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:307 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:308 #, java-format msgid "Transfer failed from {0}" -msgstr "" +msgstr "Transferencia fallida de {0}" #. wars for ConfigClientsHelper #: ../java/strings/Strings.java:12 @@ -3844,18 +3946,18 @@ msgstr "Susidns" #: ../java/strings/Strings.java:17 msgid "routerconsole" -msgstr "" +msgstr "Consola del router" #. 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 "" +msgstr "Consola Web" #: ../java/strings/Strings.java:23 msgid "SAM application bridge" -msgstr "" +msgstr "Puente de aplicación SAM" #: ../java/strings/Strings.java:24 msgid "Application tunnels" @@ -3863,23 +3965,23 @@ msgstr "Túneles de aplicaciónes" #: ../java/strings/Strings.java:25 msgid "My eepsite web server" -msgstr "" +msgstr "Mi servidor web eepsite" #: ../java/strings/Strings.java:26 msgid "I2P webserver (eepsite)" -msgstr "" +msgstr "servidor web I2P (eepsite)" #: ../java/strings/Strings.java:27 msgid "Browser launch at startup" -msgstr "" +msgstr "Lanzar el navegador al iniciar" #: ../java/strings/Strings.java:28 msgid "BOB application bridge" -msgstr "" +msgstr "Puente de aplicación BOB" #: ../java/strings/Strings.java:30 msgid "Open Router Console in web browser at startup" -msgstr "" +msgstr "Abra la consola del router en el navegador web al iniciar" #: ../java/strings/Strings.java:37 msgid "IRC proxy" @@ -3887,24 +3989,24 @@ msgstr "proxy IRC" #: ../java/strings/Strings.java:38 msgid "eepsite" -msgstr "" +msgstr "eepsite" #: ../java/strings/Strings.java:39 msgid "I2P webserver" -msgstr "" +msgstr "Servidor web I2P" #: ../java/strings/Strings.java:40 msgid "HTTP Proxy" -msgstr "" +msgstr "Proxy HTTP" #. older names for pre-0.7.4 installs #: ../java/strings/Strings.java:42 msgid "eepProxy" -msgstr "" +msgstr "eepProxy" #: ../java/strings/Strings.java:43 msgid "ircProxy" -msgstr "" +msgstr "Proxy irc" #. hardcoded in i2psnark #: ../java/strings/Strings.java:45 @@ -3914,7 +4016,7 @@ msgstr "I2PSnark" #. hardcoded in iMule? #: ../java/strings/Strings.java:47 msgid "iMule" -msgstr "" +msgstr "iMule" #. standard themes for ConfigUIHelper #: ../java/strings/Strings.java:51 @@ -3948,15 +4050,15 @@ msgstr "Mensajes de Clientes" #: ../java/strings/Strings.java:60 msgid "Encryption" -msgstr "Clave del Cifrado" +msgstr "Cifrado" #: ../java/strings/Strings.java:61 msgid "i2cp" -msgstr "" +msgstr "i2cp" #: ../java/strings/Strings.java:63 msgid "InNetPool" -msgstr "" +msgstr "InNetPool" #: ../java/strings/Strings.java:64 msgid "JobQueue" @@ -3968,29 +4070,29 @@ msgstr "BaseDeDatosRed" #: ../java/strings/Strings.java:66 msgid "ntcp" -msgstr "" +msgstr "ntcp" #: ../java/strings/Strings.java:69 msgid "Stream" -msgstr "" +msgstr "Corriente" #: ../java/strings/Strings.java:70 msgid "Throttle" -msgstr "" +msgstr "Regular" #: ../java/strings/Strings.java:71 msgid "Transport" -msgstr "" +msgstr "Transporte" #: ../java/strings/Strings.java:73 msgid "udp" -msgstr "" +msgstr "udp" #. parameters in transport addresses (netdb.jsp) #. may or may not be worth translating #: ../java/strings/Strings.java:77 msgid "host" -msgstr "" +msgstr "host" #: ../java/strings/Strings.java:78 msgid "key" @@ -4003,1611 +4105,1829 @@ msgstr "puerto" #. introducer host #: ../java/strings/Strings.java:83 msgid "ihost0" -msgstr "" +msgstr "ihost0" #: ../java/strings/Strings.java:84 msgid "ihost1" -msgstr "" +msgstr "ihost1" #: ../java/strings/Strings.java:85 msgid "ihost2" -msgstr "" +msgstr "ihost2" #. introducer port #: ../java/strings/Strings.java:87 msgid "iport0" -msgstr "" +msgstr "iport0" #: ../java/strings/Strings.java:88 msgid "iport1" -msgstr "" +msgstr "iport1" #: ../java/strings/Strings.java:89 msgid "iport2" -msgstr "" +msgstr "iport2" #. introducer key #: ../java/strings/Strings.java:91 msgid "ikey0" -msgstr "" +msgstr "ikey0" #: ../java/strings/Strings.java:92 msgid "ikey1" -msgstr "" +msgstr "ikey1" #: ../java/strings/Strings.java:93 msgid "ikey2" -msgstr "" +msgstr "ikey2" #. introducer tag #: ../java/strings/Strings.java:95 msgid "itag0" -msgstr "" +msgstr "itag0" #: ../java/strings/Strings.java:96 msgid "itag1" -msgstr "" +msgstr "itag1" #: ../java/strings/Strings.java:97 msgid "itag2" -msgstr "" +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 "" +msgstr "tasa de recepción de ancho de banda de bajo nivel" #. bw.recvRate #: ../java/strings/Strings.java:102 msgid "Low-level bandwidth send rate" -msgstr "" +msgstr "tasa de envío de ancho de banda de bajo nivel" #. bw.sendRate #: ../java/strings/Strings.java:103 msgid "How many peers we are actively talking with" -msgstr "" +msgstr "Con cuántos pares estamos hablando activamente" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:112 msgid "config networking" -msgstr "" +msgstr "configuración de red" -#. 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:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:217 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:230 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:217 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:227 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:222 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:234 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:224 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:224 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:231 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:222 +msgid "Summary Bar" +msgstr "Barra resumen" + +#. 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:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:250 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:244 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:242 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:235 msgid "Refresh (s)" msgstr "Actualizar (s)" #. ditto -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:221 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:234 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:221 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:231 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:226 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:237 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:254 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:251 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:248 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:245 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:239 msgid "Enable" msgstr "Activar" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:262 msgid "I2P Network Configuration" -msgstr "" +msgstr "Configuración de red I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:298 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:316 msgid "Bandwidth limiter" -msgstr "Limitador del ancho de banda" +msgstr "Limitador de ancho de banda" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:300 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:318 msgid "" "I2P will work best if you configure your rates to match the speed of your " "internet connection." msgstr "" +"I2P funcionará mejor si configura sus tasas para que coincida con la " +"velocidad de conexión a Internet." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:322 msgid "KBps In" msgstr "KB/s entrantes" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:336 msgid "KBps Out" msgstr "KB/s salientes" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:334 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:352 msgid "Share" msgstr "Compartir" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:341 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:326 msgid "NOTE" -msgstr "AVISO" +msgstr "NOTA" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:361 #, java-format msgid "You have configured I2P to share only {0} KBps." -msgstr "" +msgstr "Ha configurado I2P para compartir sólo {0} KBps." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:346 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:364 msgid "I2P requires at least 12KBps to enable sharing. " -msgstr "" +msgstr "I2P requiere al menos 12KBps para permitir el intercambio." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:365 msgid "" "Please enable sharing (participating in tunnels) by configuring more " "bandwidth. " msgstr "" +"Por favor, active el intercambio (participación en túneles) configurando un " +"mayor ancho de banda." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:348 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:366 msgid "" "It improves your anonymity by creating cover traffic, and helps the network." msgstr "" +"Esto mejora su anonimato creando tráfico de cobertura, y ayuda a la red." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:369 #, java-format msgid "You have configured I2P to share {0} KBps." -msgstr "" +msgstr "Ha configurado I2P para compartir {0} KBps." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:354 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:372 msgid "" "The higher the share bandwidth the more you improve your anonymity and help " "the network." msgstr "" +"Cuanto mayor sea el ancho de banda compartido, mayor es el anonimato y más " +"se ayuda a la red." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:358 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:305 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:327 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:403 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:348 -#: ../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:342 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:322 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:376 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:532 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:425 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:366 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:360 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:383 msgid "Cancel" msgstr "Cancelar" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:375 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:393 msgid "IP and Transport Configuration" -msgstr "" +msgstr "IP y configuración de transporte" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:377 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:395 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:324 msgid "The default settings will work for most people." -msgstr "" +msgstr "La configuración por defecto funcionará para la mayoría de gente." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:379 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:397 msgid "There is help below." -msgstr "Hay una ayuda abjo." +msgstr "Hay ayuda debajo." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:381 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399 msgid "UPnP Configuration" msgstr "Configuración UPnP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:385 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 msgid "Enable UPnP to open firewall ports" -msgstr "" +msgstr "Activar UPnP para abrir puertos del firewall" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:387 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:405 msgid "UPnP status" msgstr "Estado UPnP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:389 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:407 msgid "IP Configuration" msgstr "Configuración IP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:391 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:461 -msgid "Externally reachable hostname or IP address" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395 -msgid "Use all auto-detect methods" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399 -msgid "Disable UPnP IP address detection" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 -msgid "Ignore local interface IP address" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:407 -msgid "Use SSU IP address detection only" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:411 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:409 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 -msgid "Specify hostname or IP" -msgstr "" +msgid "Externally reachable hostname or IP address" +msgstr "Nombre de host o dirección IP accesible externamente" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:413 +msgid "Use all auto-detect methods" +msgstr "Utilizar todos los métodos de detección automática" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 -msgid "Select Interface" -msgstr "Elige interfaz" +msgid "Disable UPnP IP address detection" +msgstr "Desactivar detección de direcciones IP por UPnP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:431 -msgid "Hidden mode - do not publish IP" -msgstr "Modo oculto - no se publica el IP" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:421 +msgid "Ignore local interface IP address" +msgstr "Ingonrar la dirección IP de la interfaz local" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:433 -msgid "(prevents participating traffic)" -msgstr "" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:425 +msgid "Use SSU IP address detection only" +msgstr "Utilizar detección de direcciones IP sólo por SSU" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:429 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 +msgid "Specify hostname or IP" +msgstr "Especificar nombre de host o IP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 -msgid "Action when IP changes" -msgstr "" +msgid "Select Interface" +msgstr "Elegir interfaz" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:439 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:449 +msgid "Hidden mode - do not publish IP" +msgstr "Modo oculto - no publicar IP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:451 +msgid "(prevents participating traffic)" +msgstr "(Evita el tráfico de participantes)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:453 +msgid "Action when IP changes" +msgstr "Acción al cambiar de IP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:457 msgid "" "Laptop mode - Change router identity and UDP port when IP changes for " "enhanced anonymity" msgstr "" +"Modo Portátil - Cambiar identidad del router y puerto UDP cuando cambie la " +"IP para aumentar el anonimato" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:441 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 msgid "Experimental" -msgstr "" +msgstr "Experimental" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:443 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:461 msgid "UDP Configuration:" msgstr "Ajustes de UDP:" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:445 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:463 msgid "UDP port:" msgstr "Puerto UDP :" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:477 msgid "TCP Configuration" msgstr "Ajustes de TCP:" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:465 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:483 msgid "Use auto-detected IP address" -msgstr "" +msgstr "Utilizar dirección IP detectada automáticamente" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:467 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:517 msgid "currently" msgstr "actualmente" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:471 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:489 msgid "if we are not firewalled" msgstr "si no estamos bloqueados por el corta-fuegos" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:475 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 msgid "Always use auto-detected IP address (Not firewalled)" msgstr "" +"Siempre utilizar la dirección IP detectada automáticamente (no bloqueada por" +" firewall)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:503 msgid "Disable inbound (Firewalled)" -msgstr "" +msgstr "Deshabilitar entrada (bloqueado por firewall)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:489 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:507 msgid "Completely disable" msgstr "Desactivar por completo" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:491 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 msgid "" "(select only if behind a firewall that throttles or blocks outbound TCP)" msgstr "" +"(Seleccione sólo si está detrás de un firewall que regula o bloquea la " +"salida por TCP)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:511 msgid "Externally reachable TCP port" -msgstr "" +msgstr "Puerto TCP externamente accesible" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:515 msgid "Use the same port configured for UDP" -msgstr "" +msgstr "Usar el mismo puerto configurado para UDP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:505 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:523 msgid "Specify Port" msgstr "Elegir un puerto" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:527 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:348 msgid "Note" -msgstr "" +msgstr "Nota" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:512 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:530 msgid "Changing these settings will restart your router." -msgstr "" +msgstr "Cambiar estos ajustes reiniciará el router." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:536 msgid "Configuration Help" -msgstr "" +msgstr "Ayuda de Configuración" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:520 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:538 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587 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." +"integration will generally improve if the I2P port is forwarded for both UDP" +" and TCP." msgstr "" +"Aunque I2P funcionrá bien aún bloqueado por la mayoría de firewalls, las " +"velocidades y la integración de la red en general mejorará si el puerto I2P " +"está abierto tanto por UDP como por TCP." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:522 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:540 msgid "" -"If you can, please poke a hole in your firewall to allow unsolicited UDP and " -"TCP packets to reach you." +"If you can, please poke a hole in your firewall to allow unsolicited UDP and" +" TCP packets to reach you." msgstr "" +"Si es posiible, por favor permite el paso de los paquetes TCP y UDP no " +"solicitados por el firewall." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:524 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:542 msgid "" "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole " "punching with \"SSU introductions\" to relay traffic." msgstr "" +"Si no puede ser, I2P soporta UPnP (Universal Plug and Play) y UDP hole " +"punching con \"introducciones SSU\" para transmitir tráfico." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:526 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:544 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." +"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 "" +"La mayoría de las opciones anteriores son para situaciones especiales, por " +"ejemplo, cuando UPnP no funciona correctamente, o un firewall que no está " +"bajo su control está haciendo daño." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:528 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:546 msgid "Certain firewalls such as symmetric NATs may not work well with I2P." msgstr "" +"Algunos firewall como NATs simétricos pueden no funcionar bien con I2P." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:537 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 msgid "" "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect " "the external IP address and forward ports." msgstr "" +"UPnP se utiliza para comunicarse con dispositivos de puerta de enlace a " +"Internet (IGDs) para detectar la dirección IP externa y los puertos que se " +"deben abrir." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:539 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 msgid "UPnP support is beta, and may not work for any number of reasons" msgstr "" +"El soporte de UPnP está en fase beta, y puede no funcionar correctamente por" +" varias razones" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:541 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 msgid "No UPnP-compatible device present" -msgstr "" +msgstr "No se encuentra ningún dispositivo compatible con UPnP presente" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:543 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 msgid "UPnP disabled on the device" -msgstr "" +msgstr "UPnP desactivado en el dispositivo" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:545 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 msgid "Software firewall interference with UPnP" -msgstr "" +msgstr "Un firewall de software interfiere con UPnP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:547 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 msgid "Bugs in the device's UPnP implementation" -msgstr "" +msgstr "Errores en la implementación de UPnP del dispositivo" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:549 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 msgid "Multiple firewall/routers in the internet connection path" -msgstr "" +msgstr "Múltiples firewalls/routers en la ruta de conexión a Internet" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:551 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 msgid "UPnP device change, reset, or address change" msgstr "" +"El dispositivo UPnP ha cambiado, reiniciado, o ha cambiado de dirección" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:553 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:571 msgid "Review the UPnP status here." -msgstr "" +msgstr "Revisar el estado de UPnP aquí." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:573 msgid "" "UPnP may be enabled or disabled above, but a change requires a router " "restart to take effect." msgstr "" +"Encima de esto UPnP puede ser activado o desactivado, pero un cambio " +"requiere reiniciar el router para que surta efecto." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575 msgid "Hostnames entered above will be published in the network database." msgstr "" +"Los nombres de host introducidos arriba se publicarán en la base de datos de" +" red." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 msgid "They are not private." -msgstr "" +msgstr "No son privados." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 msgid "" -"Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1." +"Also, do not enter a private IP address like 127.0.0.1 or " +"192.168.1.1." msgstr "" +"Además, no se debe introducir una dirección IP privada como 127.0.0.1" +" o 192.168.1.1." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 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 "" +"Si se especifica una dirección IP o nombre de host incorrectos, o no se " +"configura correctamente el NAT o firewall, el rendimiento de la red se " +"degradará considerablemente." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 msgid "When in doubt, leave the settings at the defaults." -msgstr "" +msgstr "En caso de duda, deje los ajustes con los valores predeterminados." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 msgid "Reachability Help" -msgstr "" +msgstr "Ayuda de Accesibilidad" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:572 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:590 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 "" +"Si cree que ha abierto el firewall y I2P todavía piensa que sigue bloqueado " +"por uno, recuerde que podría tener múltiples firewalls, por ejemplo, en " +"paquetes de software o en routers externos." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593 msgid "" "If there is an error, the logs may also help " "diagnose the problem." msgstr "" +"Si hay un error, el registro también puede ayudar a" +" diagnosticar el problema." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 msgid "Your UDP port does not appear to be firewalled." -msgstr "" +msgstr "El puerto UDP no parece estar bloqueado por un firewall." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 msgid "Your UDP port appears to be firewalled." -msgstr "" +msgstr "El puerto UDP parece estar bloqueado por un firewall." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603 msgid "" "As the firewall detection methods are not 100% reliable, this may " "occasionally be displayed in error." msgstr "" +"Como los métodos de detección de firewall no son 100% fiables, esto puede " +"aparecer por error." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 msgid "" "However, if it appears consistently, you should check whether both your " "external and internal firewalls are open for your port." msgstr "" +"Sin embargo, si aparece constantemente, debería comprobar si tanto el " +"firewall interno como externo tienen los puertos abiertos." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:589 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 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 funcionará bien aún bloqueado por un firewall, no hay motivo de " +"preocupación. Si se está detrás de un firewall, el router utiliza " +"\"introductores\" para transmitir las conexiones entrantes." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:591 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 msgid "" "However, you will get more participating traffic and help the network more " "if you can open your firewall(s)." msgstr "" +"No obstante, obtendrá más tráfico participante y ayudará más a la red si " +"puede abrir el firewall." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 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 "" +"Si cree que ya lo ha hecho, recuerde que podría tener tanto un firewall de " +"hardware como un firewall por software, o podría estar detrás de otro " +"firewall institucional fuera de su control." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:595 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 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 "" +"Además, algunos routers no pueden encaminar correctamente TCP y UDP por el " +"mismo puerto, o pueden tener otras limitaciones o bugs que les impidan pasar" +" tráfico a través de I2P." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 msgid "The router is currently testing whether your UDP port is firewalled." msgstr "" +"El router está probando si su puerto UDP esté bloqueado por un firewall." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 msgid "" "The router is not configured to publish its address, therefore it does not " "expect incoming connections." msgstr "" +"El router no está configurado para publicar su dirección, por lo tanto, no " +"espera conexiones entrantes." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 msgid "WARN - Firewalled and Fast" -msgstr "" +msgstr "AVISO - Bloqueado por firewall y rápido" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 msgid "" -"You have configured I2P to share more than 128KBps of bandwidth, but you are " -"firewalled." +"You have configured I2P to share more than 128KBps of bandwidth, but you are" +" firewalled." msgstr "" +"Ha configurado I2P para compartir más de 128 kbps de ancho de banda, pero se" +" encuentra bloqueado por un firewall" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 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 "" +"Aunque I2P funcionará bien con esta configuración, si realmente tiene más de" +" 128 kbps de ancho de banda para compartir, será mucho más útil a la red si " +"abre los puertos de su router." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 msgid "WARN - Firewalled and Floodfill" -msgstr "" +msgstr "AVISO - Bloqueado por firewall y Floodfill" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:631 msgid "" "You have configured I2P to be a floodfill router, but you are firewalled." msgstr "" +"Ha configurado I2P ser un router floodfill, pero usted etá bloqueado por un " +"firewall." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 msgid "" "For best participation as a floodfill router, you should open your firewall." msgstr "" +"Para mejorar la participación como router floodfill, debería abrir su " +"firewall." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 msgid "WARN - Firewalled with Inbound TCP Enabled" -msgstr "" +msgstr "AVISO - Bloqueado por firewall con TCP entrante Activado" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:637 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 "" +"Ha configurado TCP entrante, sin embargo el puerto UDP está bloqueado por un" +" firewall, y por lo tanto es probable que el puerto TCP esté bloqueado " +"también." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 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." +"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 "" +"Si el puerto TCP está bloqueado por un firewall con TCP entrante habilitado," +" los routers no podrán ponerse en contacto con usted a través de TCP, lo que" +" perjudicará a la red." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 msgid "Please open your firewall or disable inbound TCP above." msgstr "" +"Por favor, abra los puertos del firewall o desactive TCP entrante arriba." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 msgid "WARN - Firewalled with UDP Disabled" -msgstr "" +msgstr "AVISO - Bloqueado por firewall con UDP deshabilitado" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 msgid "You have configured inbound TCP, however you have disabled UDP." -msgstr "" +msgstr "Ha configurado TCP entrante, sin embargo ha deshabilitado UDP." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 msgid "" "You appear to be firewalled on TCP, therefore your router cannot accept " "inbound connections." msgstr "" +"Usted parece estar siendo bloqueado por un firewall en TCP, por lo tanto el " +"router no puede aceptar conexiones entrantes." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:631 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 msgid "Please open your firewall or enable UDP." -msgstr "" +msgstr "Por favor, abra el firewall o habilite UDP." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:651 msgid "ERR - Clock Skew" -msgstr "" +msgstr "ERR - desviación de reloj" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 msgid "" "Your system's clock is skewed, which will make it difficult to participate " "in the network." msgstr "" +"El reloj del sistema está desviado, lo que hará difícil participar en la " +"red." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:637 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:655 msgid "Correct your clock setting if this error persists." -msgstr "" +msgstr "Corrija su ajuste del reloj, si este error persiste." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:657 msgid "ERR - Private TCP Address" -msgstr "" +msgstr "ERR - Dirección TCP privada" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:659 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 "" +"Nunca debe anunciar una dirección IP no enrutable, como 127.0.0.1 o " +"192.168.1.1 como su dirección externa." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 msgid "Correct the address or disable inbound TCP above." -msgstr "" +msgstr "Corrija la dirección o desactive TCP entrante arriba." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:663 msgid "ERR - SymmetricNAT" -msgstr "" +msgstr "ERR - NAT Simétrico" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:665 msgid "I2P detected that you are firewalled by a Symmetric NAT." -msgstr "" +msgstr "I2P ha detectado que está siendo bloqueado por un NAT simétrico." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:667 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 no funciona bien detrás de este tipo de firewalls. Probablemente no será" +" capaz de aceptar conexiones entrantes, lo que limitará su participación en " +"la red." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:651 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:669 msgid "" "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config " "and restart" msgstr "" +"ERR - el puerto UDP está en uso - Establezca i2np.udp.internalPort=xxxx en " +"configuración avanzada reinicie" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 msgid "I2P was unable to bind to port 8887 or other configured port." -msgstr "" +msgstr "I2P no pudo enlazar con el puerto 8887 o el otro puerto configurado." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:655 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:673 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 "" +"Compruebe si otro programa está utilizando el puerto configurado. Si es así," +" cierre el programa o configure I2P para utilizar un puerto diferente." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:657 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:675 msgid "" "This may be a transient error, if the other program is no longer using the " "port." msgstr "" +"Esto puede ser un error transitorio, si el otro programa ya no utiliza el " +"puerto." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:659 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:677 msgid "However, a restart is always required after this error." msgstr "" +"Sin embargo, siempre es necesario reiniciar después de que aparezca este " +"error." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:679 msgid "ERR - UDP Disabled and Inbound TCP host/port not set" msgstr "" +"ERR - UDP deshabilitado y el host/puerto de entrada TCP no ha sido " +"establecido" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:663 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:681 msgid "" "You have not configured inbound TCP with a hostname and port above, however " "you have disabled UDP." msgstr "" +"Arriba no ha configurado TCP entrante con un nombre de host y puerto, sin " +"embargo ha deshabilitado UDP." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:665 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:683 msgid "Therefore your router cannot accept inbound connections." -msgstr "" +msgstr "Por lo tanto el router no puede aceptar conexiones entrantes." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:667 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:685 msgid "Please configure a TCP host and port above or enable UDP." -msgstr "" +msgstr "Por favor, configure un host y puerto TCP arriba o permita UDP." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:669 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:687 msgid "ERR - Client Manager I2CP Error - check logs" -msgstr "" +msgstr "ERR - Error Client Manager I2CP - verificar los registros" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:689 msgid "This is usually due to a port 7654 conflict. Check the logs to verify." msgstr "" +"Esto se debe generalmente a un conflicto en el puerto 7654. Compruebe los " +"registros para verificarlo." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:673 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:691 msgid "" "Do you have another I2P instance running? Stop the conflicting program and " "restart I2P." msgstr "" +"¿Tiene otra instancia I2P funcionando? Detenga el programa en conflicto y " +"reinicie I2P." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:107 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:113 msgid "config advanced" msgstr "configuración avanzada" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:263 msgid "I2P Advanced Configuration" msgstr "Ajustes Avanzados de I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:319 msgid "Advanced I2P Configuration" -msgstr "" +msgstr "Configuración I2P avanzada" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:329 msgid "Some changes may require a restart to take effect." -msgstr "" +msgstr "Algunos cambios pueden requerir unreiniciar para que surtan efecto." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:112 msgid "config clients" msgstr "configuración de clientes" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:265 msgid "I2P Client Configuration" msgstr "Configuración de Clientes I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:330 msgid "Client Configuration" msgstr "Configuración Clientes" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:314 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:332 msgid "" "The Java clients listed below are started by the router and run in the same " "JVM." msgstr "" +"Los clientes de Java que se enumeran a continuación son iniciados por el " +"router y se ejecutan en la misma JVM." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:338 msgid "To change other client options, edit the file" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:325 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:401 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:415 -msgid "All changes require restart to take effect." -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:337 -#, fuzzy -msgid "Advanced Client Interface Configuration" -msgstr "Guardar la configuración de clientes" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:339 -msgid "External I2CP (I2P Client Protocol) Interface Configuration" -msgstr "" +msgstr "Para cambiar otras opciones clientes, edite el archivo" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 -msgid "Enabled without SSL" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351 -msgid "Enabled with SSL required" -msgstr "" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:439 +msgid "All changes require restart to take effect." +msgstr "Todos los cambios requieren reiniciar para que surtan efecto." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 -msgid "Disabled - Clients outside this Java process may not connect" -msgstr "" +msgid "Advanced Client Interface Configuration" +msgstr "Configuración avanzada de la interfaz del cliente" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:359 -msgid "I2CP Port" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:361 +msgid "External I2CP (I2P Client Protocol) Interface Configuration" msgstr "" +"Configuración de la interfaz I2CP Exterior (I2P Protocolo de clientes)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:363 -#, fuzzy -msgid "I2CP Interface" -msgstr "Configuración" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:367 +msgid "Enabled without SSL" +msgstr "Habilitado sin SSL" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:373 +msgid "Enabled with SSL required" +msgstr "Habilitado con SSL obligatorio" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:379 -#, fuzzy -msgid "Authorization" -msgstr "Autor" +msgid "Disabled - Clients outside this Java process may not connect" +msgstr "" +"Deshabilitado - Los clientes fuera de este proceso Java podrían no conectar" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:381 +msgid "I2CP Port" +msgstr "Puerto I2CP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:385 -msgid "Require username and password" -msgstr "" +msgid "I2CP Interface" +msgstr "Interfaz I2CP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:387 -msgid "Username" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:391 -msgid "Password" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:397 -msgid "Any changes made here must also be configured in the external client." -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:399 -msgid "Many clients do not support SSL or authorization." -msgstr "" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:401 +msgid "Authorization" +msgstr "Autorización" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:407 +msgid "Require username and password" +msgstr "Requerir nombre de usuario y contraseña" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 +msgid "Username" +msgstr "Nombre de usuario" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:413 +msgid "Password" +msgstr "Contraseña" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:419 +msgid "Any changes made here must also be configured in the external client." +msgstr "" +"Cualquier cambio realizado aquí también debe configurarse en el cliente " +"externo." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:421 +msgid "Many clients do not support SSL or authorization." +msgstr "Muchos clientes no soportan SSL o autorización." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:429 msgid "WebApp Configuration" msgstr "Configuración de las Applicaciones Web" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 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 " +"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 "" +"Las aplicaciones web Java que se enumeran a continuación son iniciadas por " +"el cliente de consola web y se ejecutan en la misma JVM que el router. Por " +"lo general son aplicaciones web, accesibles a través de la consola del " +"router. Pueden ser aplicaciones completas (i2psnark por ejemplo), interfaces" +" de otro cliente o aplicaciónes que deben ser habilitadas por separado (por " +"ejemplo, susidns, i2ptunnel), o que no tienen interfaz web en absoluto (por " +"ejemplo, la libreta de direcciones)." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:411 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433 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 "" +"Una aplicación web también se puede desactivar quitando el archivo .war del " +"directorio de aplicaciones web; Sin embargo, el archivo .war y la aplicación" +" web volverán a aparecer al actualizar el router a una nueva versión, así " +"que el método preferido es deshabilitar la aplicación web aquí." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:421 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:445 msgid "Plugin Configuration" -msgstr "Configuración de Complementos" +msgstr "Configuración de Plugins" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:447 msgid "The plugins listed below are started by the webConsole client." msgstr "" +"Los plugins enumerados a continuación son iniciados por el cliente de " +"consola web." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:429 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:455 msgid "Plugin Installation" -msgstr "" +msgstr "Instalación de Plugin" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:457 msgid "To install a plugin, enter the download URL:" -msgstr "" +msgstr "Para instalar un plugin, introduzca la URL de descarga:" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:112 msgid "config keyring" -msgstr "" +msgstr "configuración de llavero" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:249 msgid "I2P Keyring Configuration" msgstr "Configuración del Llavero" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:317 msgid "The router keyring is used to decrypt encrypted leaseSets." msgstr "" +"El llavero del router se utiliza para descifrar leaseSets encriptados." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:298 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:320 msgid "" "The keyring may contain keys for local or remote encrypted destinations." msgstr "" +"El anillo puede contener claves de cifrado para los destinos locales o " +"remotos." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:326 msgid "Manual Keyring Addition" -msgstr "" +msgstr "Adición manual al Llavero" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:328 msgid "Enter keys for encrypted remote destinations here." -msgstr "" +msgstr "Introduzca las claves de cifrado para destinos remotos aquí." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:331 msgid "Keys for local destinations must be entered on the" -msgstr "" +msgstr "Las claves para los destinos locales deben introducirse en la" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:333 msgid "I2PTunnel page" -msgstr "" +msgstr "Página de túnelesI2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:335 msgid "Dest. name, hash, or full key" msgstr "Nombre del destino, hash o clave completa" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:337 msgid "Encryption Key" msgstr "Clave de cifrado" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:107 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:113 msgid "config logging" -msgstr "" +msgstr "configuración de registro" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:263 msgid "I2P Logging Configuration" -msgstr "" +msgstr "Configuración del registro I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 msgid "Configure I2P Logging Options" -msgstr "" +msgstr "Configurar las opciones de registro I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:321 msgid "Logging filename" -msgstr "" +msgstr "Nombre de archivo del registro" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:325 msgid "(the symbol '@' will be replaced during log rotation)" -msgstr "" +msgstr "(El símbolo '@' será reemplazado durante la rotación de registro)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:327 msgid "Log record format" -msgstr "" +msgstr "Formato de escritura del registro" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:331 msgid "" "(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" msgstr "" "(use 'd' = fecha, 'c' = clase, 't' = hilo, 'p' = prioridad, 'm' = mensaje)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:333 msgid "Log date format" -msgstr "" +msgstr "Formato de fecha del registro" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:337 msgid "" "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' " "= millisecond)" msgstr "" -"('MM' = mes, 'dd' = día, 'HH' = hora, 'mm' = minuto, 'ss' = segundo, 'SSS' = " -"milisegundo)" +"('MM' = mes, 'dd' = día, 'HH' = hora, 'mm' = minuto, 'ss' = segundo, 'SSS' =" +" milisegundo)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 msgid "Max log file size" -msgstr "" +msgstr "Tamaño máximo del archivo de registro" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:343 msgid "Default log level" -msgstr "" +msgstr "Nivel predeterminado de registro" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:347 msgid "" "(DEBUG and INFO are not recommended defaults, as they will drastically slow " "down your router)" msgstr "" +"(DEBUG e INFO no se recomiendan por defecto, ya que ralentizaran " +"drásticamente el router)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:349 msgid "Log level overrides" -msgstr "" +msgstr "Reemplazos a nivel de registros" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:353 msgid "New override" -msgstr "" +msgstr "Nueva reemplazo" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:112 msgid "config peers" -msgstr "configuración de los pares" +msgstr "configuración de pares" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:249 msgid "I2P Peer Configuration" -msgstr "Configuración de los Pares I2P" +msgstr "Configuración de los pares I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:323 msgid "Manual Peer Controls" -msgstr "" +msgstr "Controles Manuales de pares" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 msgid "Router Hash" -msgstr "Hash del Enrutador" +msgstr "Hash del Router" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:329 msgid "Manually Ban / Unban a Peer" -msgstr "" +msgstr "Banear / Desbanear manualmente a un par" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:331 msgid "" "Banning will prevent the participation of this peer in tunnels you create." msgstr "" +"Banear evitará que ese par participe en cualquiera de los túneles que usted " +"cree." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:341 msgid "Adjust Profile Bonuses" -msgstr "" +msgstr "Ajustar Perfil de Bonus" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:343 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 " +"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 "" +"Los bonus pueden ser positivos o negativos, y afectan a la inclusión de un " +"par en los niveles 'Rápido' y 'de alta capacidad'. Los pares rápidos se " +"utilizan para los túneles de clientes, los par de alta capacidad se utilizan" +" para algunos túneles exploratorios. Los bonus actuales se muestran en la" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:345 msgid "profiles page" msgstr "página de perfiles" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:345 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:251 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:273 msgid "Banned Peers" -msgstr "Pares Relegados" +msgstr "pares baneados" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:366 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:384 msgid "Banned IPs" -msgstr "" +msgstr "IPs Baneadas" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:106 -#, fuzzy +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:112 msgid "config reseeding" -msgstr "configuración de servicios" +msgstr "config de reinicio de semillas" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:240 -#, fuzzy +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:262 msgid "I2P Reseeding Configuration" -msgstr "Configuración del Llavero" +msgstr "configuración de reinicio de semillas I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:300 -#, fuzzy +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 msgid "Reseeding Configuration" -msgstr "Configuración del Llavero" +msgstr "Configuración de reinicio de semillas" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:320 msgid "" "Reseeding is the bootstrapping process used to find other routers when you " "first install I2P, or when your router has too few router references " "remaining." msgstr "" +"El reinicio de semillas es el proceso de bootstrapping para encontrar otros " +"routers cuando I2P se instala por primera vez , o cuando al router le quedan" +" muy pocas referencias de otros routers." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:322 msgid "" "If reseeding has failed, you should first check your network connection." msgstr "" +"Si el reinicio de semillas ha fallado, primero debe comprobar la conexión de" +" red." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:326 msgid "" "Change these only if HTTP is blocked by a restrictive firewall, reseed has " "failed, and you have access to an HTTP proxy." msgstr "" +"Cambie estos parámetros sólo si HTTP está bloqueado por un firewall " +"restrictivo, reiniciar semillas ha fracasado, y usted tiene acceso a un " +"proxy HTTP." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:328 #, java-format msgid "See {0} for instructions on reseeding manually." msgstr "" +"Ver {0} para obtener instrucciones sobre el reinicio de semillas manual." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:328 msgid "the FAQ" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:312 -msgid "Reseed URL Selection" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 -msgid "Try SSL first then non-SSL" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:324 -msgid "Use SSL only" -msgstr "" +msgstr "las preguntas más frecuentes" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:330 -msgid "Use non-SSL only" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:332 -#, fuzzy -msgid "Reseed URLs" -msgstr "URL de noticias" +msgid "Reseed URL Selection" +msgstr "Reinicializar URL Seleccionada" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:336 +msgid "Try SSL first then non-SSL" +msgstr "Probar SSL primero y luego no-SSL" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:342 +msgid "Use SSL only" +msgstr "Usar SSL exclusivamente" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:348 +msgid "Use non-SSL only" +msgstr "Usar no-SSL exclusivamente" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 +msgid "Reseed URLs" +msgstr "Reinicializar URLs" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:354 msgid "Enable HTTP proxy (not used for SSL)" -msgstr "" +msgstr "Habilitar proxy HTTP (no utilizado para SSL)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:340 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:358 msgid "HTTP Proxy Host" -msgstr "" +msgstr "Host HTTP Proxy" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:344 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:362 msgid "HTTP Proxy Port" -msgstr "" +msgstr "Puerto HTTP Proxy" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:112 msgid "config service" msgstr "configuración de servicios" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:249 msgid "I2P Service Configuration" msgstr "Configuración de Servicios I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:285 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:303 msgid "Shutdown the router" -msgstr "Apagar el enrutador" +msgstr "Apagar el router" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:287 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 msgid "" -"Graceful shutdown lets the router satisfy the agreements it has already made " -"before shutting down, but may take a few minutes." +"Graceful shutdown lets the router satisfy the agreements it has already made" +" before shutting down, but may take a few minutes." msgstr "" +"El apagado seguro permite al router cumplir los acuerdos que ya ha hecho " +"antes de apagar, pero puede tardar unos minutos." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:289 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:307 msgid "" -"If you need to kill the router immediately, that option is available as well." +"If you need to kill the router immediately, that option is available as " +"well." msgstr "" +"Si tiene que apagar el router inmediatamente, también tiene esa opción" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:299 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 msgid "" -"If you want the router to restart itself after shutting down, you can choose " -"one of the following." +"If you want the router to restart itself after shutting down, you can choose" +" one of the following." msgstr "" +"Si desea que el router se reinicie después del apagado, puede elegir una de " +"las siguientes opciones." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 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 "" +"Esto es útil en algunas situaciones - por ejemplo, si ha cambiado algunas " +"opciones de aplicaciones cliente que sólo se leen al iniciar, como la " +"contraseña de la consola del router o su interfaz de escucha." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 msgid "" "A graceful restart will take a few minutes (but your peers will appreciate " "your patience), while a hard restart does so immediately." msgstr "" +"Un reinicio seguro tardará unos minutos (pero sus pares le agradecerán su " +"paciencia), mientras que un reinicio duro lo hace inmediatamente." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 msgid "" -"After tearing down the router, it will wait 1 minute before starting back up " -"again." +"After tearing down the router, it will wait 1 minute before starting back up" +" again." msgstr "" +"Después de apagar completamente el router, esperará 1 minuto antes de " +"volverse a iniciar." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:333 msgid "Systray integration" -msgstr "" +msgstr "integración con la bandeja del sistema" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 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 "" +"En la plataforma Windows, hay una pequeña aplicación que se queda en la " +"bandeja del sistema, lo que le permite ver el estado del router" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 msgid "" "(later on, I2P client applications will be able to integrate their own " "functionality into the system tray as well)." msgstr "" +"(Más adelante, las aplicaciones I2P de clientes serán capaces de integrar su" +" propia funcionalidad en la bandeja de sistema también)." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 -msgid "If you are on windows, you can either enable or disable that icon here." -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 -msgid "Show systray icon" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 -msgid "Hide systray icon" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 -msgid "Run on startup" -msgstr "Lanzar al iniciar el enrutador" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:329 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339 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 "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:331 -msgid "If you prefer the command line, you can also run the " +"If you are on windows, you can either enable or disable that icon here." msgstr "" +"Si usted está en Windows, puede activar o desactivar ese icono que aquí." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 -msgid "" -"If you are running I2P as service right now, removing it will shut down your " -"router immediately." -msgstr "" +msgid "Show systray icon" +msgstr "Mostrar icono de la bandeja del sistema" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:343 +msgid "Hide systray icon" +msgstr "Ocultar icono de la bandeja del sistema" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:345 +msgid "Run on startup" +msgstr "Lanzar al iniciar" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 +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 "" +"Puede controlar si I2P se ejecuta en el arranque o no seleccionando una de " +"las siguientes opciones - I2P instalará (o eliminará) un servicio en " +"consecuencia." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 +msgid "If you prefer the command line, you can also run the " +msgstr "Si usted prefiere la línea de comandos, también puede ejecutar" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 +msgid "" +"If you are running I2P as service right now, removing it will shut down your" +" router immediately." +msgstr "" +"Si está ejecutando I2p como servicio en este momento, quitarlo hará que se " +"apague el router de inmediato." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:361 msgid "" "You may want to consider shutting down gracefully, as above, then running " "uninstall_i2p_service_winnt.bat." msgstr "" +"Es posible que desee considerar el apagado seguro como se indica arriba, " +"para ello, ejecute uninstall_i2p_service_winnt.bat." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:365 msgid "Debugging" -msgstr "" +msgstr "Debugging" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:367 msgid "View the job queue" msgstr "Ver cola de tareas" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:371 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." +"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 "" +"A veces, puede ser útil depurar I2P consiguiendo un volcado de hilo. Para " +"ello, seleccione la opción siguiente y revise el dump en wrapper.log ." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:377 msgid "Launch browser on router startup?" -msgstr "" +msgstr "Iniciar el navegador al arrancar el router?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:361 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:379 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 "" +"La interfaz de configuración principal de I2P es esta consola Web, para su " +"comodidad I2P puede lanzar el navegador web en al iniciar apuntando a" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:107 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:113 msgid "config stats" -msgstr "" +msgstr "config de estadísticas" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:250 msgid "I2P Stats Configuration" msgstr "Ajustes de Estadísticas I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:320 msgid "Configure I2P Stat Collection" -msgstr "" +msgstr "Configurar colección de estadísticas I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:322 msgid "Enable full stats?" -msgstr "" +msgstr "Habilitar estadísticas completas?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:329 msgid "change requires restart to take effect" -msgstr "" +msgstr "cambiar esto requiere reiniciar para que los cambios surtan efecto" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:331 msgid "Stat file" -msgstr "" +msgstr "Archivo de estadísticas" -#: ../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:335 msgid "Filter" msgstr "Filtro" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:319 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:328 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:348 msgid "toggle all" -msgstr "" +msgstr "cambiar todos" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:350 msgid "Log" -msgstr "" +msgstr "Registro" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:332 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:352 msgid "Graph" msgstr "Gráficas" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:371 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:391 msgid "Advanced filter" -msgstr "" +msgstr "Filtro avanzado" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:112 msgid "config tunnels" msgstr "Configuración de túneles" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:262 msgid "I2P Tunnel Configuration" -msgstr "Configuración de los túneles I2P" +msgstr "Configuración de túneles I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:328 msgid "The default settings work for most people." -msgstr "" +msgstr "La configuración por defecto funciona para la mayoría de gente." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:332 msgid "There is a fundamental tradeoff between anonymity and performance." -msgstr "" +msgstr "Hay un equilibrio fundamental entre el anonimato y el rendimiento." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:335 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." +"hops, 3 hops + 0-2 hops), or a high quantity + backup quantity, may severely" +" reduce performance or reliability." msgstr "" +"Los túneles de más de tres saltos (por ejemplo, 2 + 0-2 saltos, 3 saltos+ " +"0-1 saltos, 3 saltos + 0-2 saltos), o una alta cantidad + la cantidad de " +"respaldo, pueden reducir severamente el rendimiento o la fiabilidad." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:338 msgid "High CPU and/or high outbound bandwidth usage may result." msgstr "" +"puede resultar en un uso alto de CPU y/o uso de gran ancho de banda de " +"salida " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:341 msgid "Change these settings with care, and adjust them if you have problems." msgstr "" +"Cambie esta configuración con cuidado, y ajustelo en caso de tener " +"problemas." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:333 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:351 msgid "" "Exploratory tunnel setting changes are stored in the router.config file." msgstr "" +"Los cambios en los túneles exploratorios se almacenan en el archivo " +"router.config." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:336 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:354 msgid "Client tunnel changes are temporary and are not saved." msgstr "" +"Los cambios en túnel de cliente son de carácter temporal y no se guardan." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:338 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:356 msgid "To make permanent client tunnel changes see the" -msgstr "" +msgstr "Para hacer cambios permanentes al túnel de cliente a ver la" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:340 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:358 msgid "i2ptunnel page" -msgstr "" +msgstr "Página túnel I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:112 msgid "config UI" msgstr "configuración IU" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:262 msgid "I2P UI Configuration" msgstr "Interfaz de Usuario" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:314 msgid "Router Console Theme" -msgstr "" +msgstr "Tema de la Consola del Router" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:339 msgid "Theme selection disabled for Internet Explorer, sorry." msgstr "" +"Lo sentimos, pero la selección de temas está deshabilitada para Internet " +"Explorer." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:341 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 "" +"Si no está utilizando Internet Explorer, es probable que su navegador se " +"esté haciendo pasar por el IE, por favor, configure su navegador (o proxy) " +"para utilizar un agente de usuario diferente si desea acceder a los temas de" +" la consola." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:345 msgid "Router Console Language" -msgstr "" +msgstr "Idioma de la Consola del Router" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:320 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:349 msgid "" "Please contribute to the router console translation project! Contact the " "developers on IRC #i2p to help." msgstr "" +"Por favor, contribuya al proyecto de traducción de la consola del router. " +"Póngase en contacto con los desarrolladores en el IRC #I2P o #I2P-ES para " +"ayudar." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:324 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:353 msgid "Apply" msgstr "Aplicar" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:112 msgid "config update" msgstr "Actualización de la configuración" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:249 msgid "I2P Update Configuration" msgstr "Configuración de actualizaciones I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:321 msgid "Check for I2P and news updates" -msgstr "" +msgstr "Comprobar si hay actualizaciones de I2P o noticias" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:323 msgid "News & I2P Updates" msgstr "Noticias & actualizaciones de I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:327 msgid "Update In Progress" msgstr "Actualizando" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:335 msgid "News URL" msgstr "URL de noticias" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:339 msgid "Refresh frequency" msgstr "Frecuencia de actualización" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:345 msgid "Update policy" -msgstr "" +msgstr "Política de actualizaciones" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:349 msgid "Update through the eepProxy?" msgstr "¿Actualizar ustilizando el eeProxy?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:353 msgid "eepProxy host" -msgstr "" +msgstr "host eepProxy" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:357 msgid "eepProxy port" -msgstr "" +msgstr "puerto eepProxy" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 msgid "Update URLs" -msgstr "" +msgstr "Actualizar URLs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:365 msgid "Trusted keys" msgstr "Claves confiadas" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:369 msgid "Update with unsigned development builds?" -msgstr "" +msgstr "Actualizar con las versiones en desarrollo no firmadas?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:355 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:373 msgid "Unsigned Build URL" -msgstr "" +msgstr "URL de versión no firmada" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:379 msgid "" "I2P updates are disabled because you do not have write permission for the " "install directory." msgstr "" +"las actualizaciones de I2P están desactivadas porque no tiene permiso de " +"escritura en el directorio de la instalación." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:367 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:385 msgid "Save" msgstr "Guardar" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:115 -msgid "Internal Error" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:117 -#, fuzzy -msgid "Router Console" -msgstr "Console del Enrutador I2P" - #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:121 -#, fuzzy -msgid "Configuration" -msgstr "Configuración IP" +msgid "Internal Error" +msgstr "Error interno" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123 +msgid "Router Console" +msgstr "Consola del Router" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:127 +msgid "Configuration" +msgstr "Configuración" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:135 msgid "Sorry! There has been an internal error." -msgstr "" +msgstr "Lo sentimos! Se ha producido un error interno." #. note to translators - both parameters are URLs -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:133 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:232 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:254 #, java-format msgid "Please report bugs on {0} or {1}." -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:137 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 -msgid "" -"You may use the username \"guest\" and password \"guest\" if you do not wish " -"to register." -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 -msgid "Please include this information in bug reports" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:141 -msgid "Error Details" -msgstr "" +msgstr "Por favor, informar sobre errores en {0} o {1}." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:143 -#, fuzzy, java-format -msgid "Error {0}" -msgstr "Error 404" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:163 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:228 -msgid "I2P Version and Running Environment" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:258 +msgid "" +"You may use the username \"guest\" and password \"guest\" if you do not wish" +" to register." msgstr "" +"Se puede utilizar el nombre de usuario \"guest\" y contraseña \"guest\" si " +"no desea registrarse." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:145 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:260 +msgid "Please include this information in bug reports" +msgstr "Por favor, incluya esta información en los informes de error" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:147 +msgid "Error Details" +msgstr "Detalles del error" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:149 +#, java-format +msgid "Error {0}" +msgstr "Error {0}" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:169 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:250 +msgid "I2P Version and Running Environment" +msgstr "Versión I2P y medio de ejecución" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:197 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:288 msgid "" "Note that system information, log timestamps, and log messages may provide " -"clues to your location; please review everything you include in a bug report." +"clues to your location; please review everything you include in a bug " +"report." msgstr "" +"Tenga en cuenta que la información del sistema, las marcas de tiempo del " +"registro y los mensajes del registro pueden proporcionar pistas sobre su " +"ubicación, por favor, revise todos los datos que se incluyen en un informe " +"de error." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:117 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:123 msgid "Page Not Found" msgstr "Página no encontrada" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:242 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:264 msgid "" "Sorry! You appear to be requesting a non-existent Router Console page or " "resource." msgstr "" +"Lo sentimos! Parece estar intentando entrar en una página de Consola de " +"Router inexistente u otro recurso." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:244 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:266 msgid "Error 404" msgstr "Error 404" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:249 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:271 msgid "not found" msgstr "no encontrado" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:112 msgid "graphs" msgstr "gráficas" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:249 msgid "I2P Performance Graphs" -msgstr "" +msgstr "Gráficos de rendimiento I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:111 msgid "home" msgstr "página de inicio" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:331 +msgid "Welcome to I2P" +msgstr "Bienvenido a I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:111 msgid "job queue" msgstr "cola de tareas" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:248 msgid "I2P Router Job Queue" -msgstr "" +msgstr "Cola de trabajos del router I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:111 msgid "logs" -msgstr "" +msgstr "registros" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:248 msgid "I2P Router Logs" -msgstr "" +msgstr "Registros del Router I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:281 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:303 msgid "Critical Logs" -msgstr "" +msgstr "Registros críticos" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:285 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:307 msgid "Router Logs" -msgstr "" +msgstr "Registros del Router" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:291 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:313 msgid "Service (Wrapper) Logs" -msgstr "" +msgstr "Registros de Servicio (Wrapper)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:111 msgid "network database summary" -msgstr "" +msgstr "Resumen de la base de datos de red" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:248 msgid "I2P Network Database Summary" -msgstr "" +msgstr "Resumen de la base de datos de red I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:109 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:115 msgid "WebApp Not Found" -msgstr "" +msgstr "Aplicación web no encontrada" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:230 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:252 msgid "Web Application Not Running" -msgstr "" +msgstr "La Aplicación Web no se está ejecutando" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:232 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:254 msgid "The requested web application is not running." -msgstr "" +msgstr "La aplicación Web solicitada no se está ejecutando" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:256 msgid "" -"Please visit the config clients page to start it." +"Please visit the config clients " +"page to start it." msgstr "" +"Por favor visite la página de " +"configuración de clientes para iniciarla." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:111 msgid "peer connections" msgstr "conexiones con pares" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:248 msgid "I2P Network Peers" -msgstr "" +msgstr "pares de la red I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:111 msgid "peer profiles" msgstr "perfiles de los pares" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:248 msgid "I2P Network Peer Profiles" -msgstr "" +msgstr "Perfiles de los pares de la red I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:111 msgid "statistics" msgstr "estadísticas" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:265 msgid "I2P Router Statistics" -msgstr "Estadísticas del enrutador I2P" +msgstr "Estadísticas del router I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:255 #, java-format msgid "Disable {0} Refresh" msgstr "Deshabilitar el recargar cada {0}" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:111 msgid "tunnel summary" -msgstr "" +msgstr "Sumario de tuneles" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:248 msgid "I2P Tunnel Summary" -msgstr "" +msgstr "Sumario de tuneles I2P" -#~ msgid "hour" -#~ msgstr "hora" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:111 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:248 +msgid "Peer Profile" +msgstr "Perfil de pares" -#~ msgid "minutes" -#~ msgstr "minutos" - -#~ msgid "This is useful in some situations" -#~ msgstr "C'est utile dans certains cas" - -#~ msgid "Start Now" -#~ msgstr "Démarrer tout de suite" - -#~ msgid "Depth" -#~ msgstr "Profondeur" - -#~ msgid "view without" -#~ msgstr "montrer sans" - -#~ msgid "view with" -#~ msgstr "montrer avec" - -#~ msgid "Show the router's workload, and how it's performing" -#~ msgstr "Montrer les tâches en cours" - -#~ msgid "Jobs" -#~ msgstr "Tâches" - -#~ msgid "Tunnels in/out" -#~ msgstr "Tunnels entrants/sortants" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:275 +#, java-format +msgid "Profile for peer {0}" +msgstr "Perfil para par {0}" diff --git a/apps/susidns/locale/messages_es.po b/apps/susidns/locale/messages_es.po new file mode 100644 index 000000000..8e1ee29c1 --- /dev/null +++ b/apps/susidns/locale/messages_es.po @@ -0,0 +1,544 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the susidns package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P\n" +"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" +"POT-Creation-Date: 2011-03-03 18:29+0000\n" +"PO-Revision-Date: 2011-03-22 15:48+0000\n" +"Last-Translator: punkibastardo \n" +"Language-Team: Spanish (Castilian) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:200 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:193 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:197 +msgid "Search" +msgstr "Buscar" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:204 +msgid "Search within filtered list" +msgstr "Buscar con la lista filtrada" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206 +msgid "Filtered list" +msgstr "Lista filtrada" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:210 +msgid "no matches" +msgstr "No hay coincidencias" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:213 +msgid "Addressbook" +msgstr "Libreta de direcciones" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:215 +msgid "contains no entries" +msgstr "no contiene entradas" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:217 +msgid "contains 1 entry" +msgstr "contiene 1 entrada" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:219 +#, java-format +msgid "contains {0} entries" +msgstr "contiene {0} entradas" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:229 +#, java-format +msgid "Showing {0} of {1}" +msgstr "Mostrando {0} de {1}" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:368 +msgid "Add" +msgstr "Agregar" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:265 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:366 +msgid "Replace" +msgstr "Reemplazar" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264 +#, java-format +msgid "Host name {0} is already in addressbook, unchanged." +msgstr "" +"El nombre del host {0} ya está en la libreta de direcciones, sin cambios." + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266 +#, java-format +msgid "" +"Host name {0} is already in addressbook with a different destination. Click " +"\"Replace\" to overwrite." +msgstr "" +"El nombre del host {0} ya está en la libreta de direcciones con un destino " +"diferente. Haga clic en \"reemplazar\" para sobrescribir." + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278 +#, java-format +msgid "Destination added for {0}." +msgstr "Destino añadido para {0}." + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:280 +#, java-format +msgid "Destination changed for {0}." +msgstr "Destino cambiado para {0}." + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:285 +msgid "Invalid Base 64 destination." +msgstr "Destino en Base 64 no válido" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:289 +msgid "Please enter a host name and destination" +msgstr "Por favor, introduzca un nombre de host y destino" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:293 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314 +msgid "Delete Selected" +msgstr "Eliminar seleccionados" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:303 +#, java-format +msgid "Destination {0} deleted." +msgstr "Destino {0} eliminado." + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305 +#, java-format +msgid "{0} destinations deleted." +msgstr "{0} destinos eliminados." + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:311 +msgid "Addressbook saved." +msgstr "Libreta de direcciones guardada." + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:314 +msgid "ERROR: Could not write addressbook file." +msgstr "ERROR: No se pudo escribir el archivo de la libreta direcciones." + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319 +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151 +msgid "" +"Invalid form submission, probably because you used the \"back\" or " +"\"reload\" button on your browser. Please resubmit." +msgstr "" +"presentación de formulario no válido, probablemente debido a que ha " +"utilizado el botón \"atrás\" o \"recargar\" de su navegador. Por favor, " +"vuelva a enviarlo." + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:130 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:130 +msgid "Save" +msgstr "Guardar" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:141 +msgid "Configuration saved." +msgstr "Configuración guardada." + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:128 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:128 +msgid "Reload" +msgstr "Recargar" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:144 +msgid "Configuration reloaded." +msgstr "Configuración recargada." + +#. Yes this is a hack. +#. No it doesn't work on a text-mode browser. +#. Fetching from the addressbook servlet +#. with the correct parameters will kick off a +#. config reload and fetch. +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:139 +msgid "" +"Subscriptions saved, updating addressbook from subscription sources now." +msgstr "" +"Suscripciones guardadas, actualizando la libreta de direcciones a partir de " +"las fuentes de suscripción ahora." + +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143 +msgid "Subscriptions saved." +msgstr "Suscripciones guardadas." + +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147 +msgid "Subscriptions reloaded." +msgstr "Suscripciones recargadas." + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145 +msgid "addressbook" +msgstr "libreta de direcciones" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:127 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:104 +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:93 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:104 +msgid "addressbooks" +msgstr "libretas de direcciones" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:129 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:106 +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:95 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:106 +msgid "private" +msgstr "privado" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:131 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:108 +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:97 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:108 +msgid "master" +msgstr "maestro" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:133 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:110 +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:99 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:110 +msgid "router" +msgstr "router" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:135 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:112 +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:101 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:112 +msgid "published" +msgstr "publicado" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:137 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:114 +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:103 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:102 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:114 +msgid "subscriptions" +msgstr "suscripciones" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:139 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:102 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:116 +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:105 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:116 +msgid "configuration" +msgstr "configuración" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:141 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:118 +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:107 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:118 +msgid "overview" +msgstr "resumen" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:163 +msgid "Filter" +msgstr "Filtro" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:166 +msgid "all" +msgstr "todos" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:177 +msgid "Current filter" +msgstr "Filtro actual" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:182 +msgid "clear filter" +msgstr "filtro actual" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:224 +msgid "Name" +msgstr "Nombre" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:226 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:362 +msgid "Destination" +msgstr "Destino" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:257 +msgid "Mark for deletion" +msgstr "Marcar para eliminar" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:279 +msgid "address helper link" +msgstr "ayudante de dirección del enlace" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:312 +msgid "Cancel" +msgstr "Cancelar" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345 +msgid "This addressbook is empty." +msgstr "Esta libreta de direcciones está vacía." + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:356 +msgid "Add new destination" +msgstr "Añadir nuevo destino" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:358 +msgid "Hostname" +msgstr "Nombre de Host" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:132 +msgid "Hints" +msgstr "Consejos" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134 +msgid "" +"File and directory paths here are relative to the addressbook's working " +"directory, which is normally ~/.i2p/addressbook/ (Linux) or " +"%APPDATA%\\I2P\\addressbook\\ (Windows)." +msgstr "" +"Las rutas de archivos y de directorios mostradas aquí son relativas al " +"directorio de trabajo de la libreta de direcciones, que es normalmente " +"~/.i2p/addressbook/ (Linux) o %APPDATA%\\I2P\\addressbook\\ (Windows)." + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:136 +msgid "" +"If you want to manually add lines to an addressbook, add them to the private" +" or master addressbooks." +msgstr "" +"Si desea agregar manualmente líneas a una libreta de direcciones, añadalos a" +" la libreta de direcciones privada o maestra." + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:138 +msgid "" +"The router addressbook and the published addressbook are updated by the " +"addressbook application." +msgstr "" +"La libreta de direcciones del router y la libreta de direcciones publicada " +"son actualizadas por la aplicación libreta de direcciones." + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:140 +msgid "" +"When you publish your addressbook, ALL destinations from the master and " +"router addressbooks appear there." +msgstr "" +"Al publicar su libro de direcciones, TODOS los destinos de la libreta " +"maestra y la libreta de direcciones del router aparecen ahí." + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142 +msgid "" +"Use the private addressbook for private destinations, these are not " +"published." +msgstr "" +"Utilice la libreta de direcciones privada para destinos privados, éstos no " +"serán publicados." + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144 +msgid "Options" +msgstr "Opciones" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146 +msgid "File containing the list of subscriptions URLs (no need to change)" +msgstr "" +"El archivo que contiene la lista de suscripciones URL (no es necesario " +"cambiarlo)" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148 +msgid "Update interval in hours" +msgstr "Intervalo de actualización en horas" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150 +msgid "" +"Your public hosts.txt file (choose a path within your webserver document " +"root)" +msgstr "" +"Su archivo hosts.txt público (elija una ruta dentro de la raíz de la " +"documentación de su servidor web)" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152 +msgid "Your hosts.txt (don't change)" +msgstr "Su hosts.txt (no cambiar)" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:154 +msgid "Your personal addressbook, these hosts will be published" +msgstr "Su libreta de direcciones personal, estos hosts serán publicados" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:156 +msgid "Your private addressbook, it is never published" +msgstr "Su libreta de direcciones privada, nunca se publica" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158 +msgid "Port for your eepProxy (no need to change)" +msgstr "Puerto para su eepProxy (no es necesario cambiarlo)" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160 +msgid "Hostname for your eepProxy (no need to change)" +msgstr "Nombre de la host para su eepProxy (no es necesario cambiarlo)" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162 +msgid "Whether to update the published addressbook" +msgstr "Sea para actualizar la libreta de direcciones publicadas" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164 +msgid "" +"File containing the etags header from the fetched subscription URLs (no need" +" to change)" +msgstr "" +"Archivo que contiene la cabecera de los etags desde la URL de subscripciones" +" capturada (no es necesario cambiarlo)" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:166 +msgid "" +"File containing the modification timestamp for each fetched subscription URL" +" (no need to change)" +msgstr "" +"Archivo que contiene la fecha y hora de modificación para cada URL de " +"suscripción capturada (no es necesario cambiarlo)" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168 +msgid "File to log activity to (change to /dev/null if you like)" +msgstr "" +"El archivo en el que se guarda el registro de actividad (cambielo a " +"/dev/null si quiere)" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:91 +msgid "Introduction" +msgstr "Introducción" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:109 +msgid "What is the addressbook?" +msgstr "¿Qué es la libreta de direcciones?" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:111 +msgid "The addressbook application is part of your i2p installation." +msgstr "" +"La aplicación de libreta de direcciones es parte de la instalación I2P." + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113 +msgid "" +"It regularly updates your hosts.txt file from distributed sources or " +"\"subscriptions\"." +msgstr "" +"Actualiza constantemente su archivo hosts.txt desde fuentes distribuidas o " +"\"suscripciones\"." + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115 +msgid "" +"In the default configuration, the addressbook is only subscribed to " +"www.i2p2.i2p." +msgstr "" +"Con la configuración predeterminada, la libreta de direcciones sólo está " +"suscrita a www.i2p2.i2p." + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117 +msgid "" +"Subscribing to additional sites is easy, just add them to your subscriptions file." +msgstr "" +"Suscribirse a otros sitios es fácil, sólo tiene que añadirlos a su archivo " +"de suscripciones." + +#: ../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 "" +"Para obtener más información sobre los nombres en I2P, consulte la información general en " +"www.i2p2.i2p ." + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121 +msgid "How does the addressbook work?" +msgstr "¿Cómo funciona la libreta de direcciones?" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123 +msgid "" +"The addressbook application regularly polls your subscriptions and merges " +"their content into your \"router\" addressbook, stored in the hosts.txt " +"file." +msgstr "" +"La aplicación de libreta de direcciones comprueba periódicamente sus " +"suscripciones y funde su contenido con la libreta de direcciones de su " +"\"router\" almacenada en el archivo hosts.txt." + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125 +msgid "" +"Then it merges your \"master\" addressbook (userhosts.txt) into the router " +"addressbook as well." +msgstr "" +"Luego también une su libreta de direcciones \"maestra\" (userhosts.txt) con " +"la libreta de direcciones del router." + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:127 +msgid "" +"If configured, the router addressbook is now written to the \"published\" " +"addressbook, which will be publicly available if you are running an eepsite." +msgstr "" +"Si está configurada, la libreta de direcciones del router ahora se escribirá" +" a la libreta \"publicada\", que estará disponible al público si está " +"ejecutando un eepsite." + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:129 +msgid "" +"The router also uses a private addressbook (privatehosts.txt, not shown in " +"the picture), which is not merged or published." +msgstr "" +"El router también utiliza una libreta de direcciones privadas " +"(privatehosts.txt, no se muestra en la imagen), que ni se fusiona ni es " +"publicada." + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:131 +msgid "" +"Hosts in the private addressbook can be accessed by you but their addresses " +"are never distributed to others." +msgstr "" +"Puede visitar a los hosts que aparecen en su libreta de direcciones privada," +" pero su dirección no se distribuye a terceros." + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:133 +msgid "" +"The private addressbook can also be used for aliases of hosts in your other " +"addressbooks." +msgstr "" +"La libreta de direcciones privada también se pueden utilizar para alias de " +"los hosts en sus otras libretas de direcciones." + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132 +msgid "The subscription file contains a list of i2p URLs." +msgstr "El archivo de suscripción contiene una lista de URLs I2P." + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134 +msgid "" +"The addressbook application regularly checks this list for new eepsites." +msgstr "" +"La aplicación de libreta de direcciones comprueba regularmente esta lista en" +" busca de nuevos eepsites." + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136 +msgid "Those URLs refer to published hosts.txt files." +msgstr "Esas URLs referencian a los archivos hosts.txt publicados." + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138 +msgid "" +"The default subscription is the hosts.txt from www.i2p2.i2p, which is " +"updated infrequently." +msgstr "" +"La suscripción por defecto es el hosts.txt de www.i2p2.i2p, que se actualiza" +" con poca frecuencia." + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:140 +msgid "" +"So it is a good idea to add additional subscriptions to sites that have the " +"latest addresses." +msgstr "" +"Por lo tanto, es una buena idea agregar suscripciones adicionales a sitios " +"que ttengan las direcciones más recientes" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142 +msgid "See the FAQ for a list of subscription URLs." +msgstr "" +"Ver las preguntas frecuentes para obtener una lista de direcciones URL de " +"suscripciónes." diff --git a/apps/susimail/locale/messages_es.po b/apps/susimail/locale/messages_es.po new file mode 100644 index 000000000..30b55e0e4 --- /dev/null +++ b/apps/susimail/locale/messages_es.po @@ -0,0 +1,444 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the susimail package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P\n" +"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" +"POT-Creation-Date: 2011-03-12 20:49+0000\n" +"PO-Revision-Date: 2011-03-22 15:51+0000\n" +"Last-Translator: punkibastardo \n" +"Language-Team: Spanish (Castilian) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: src/src/i2p/susi/webmail/WebMail.java:454 +msgid "unknown" +msgstr "desconocido" + +#: src/src/i2p/susi/webmail/WebMail.java:473 +msgid "Warning: no transfer encoding found, fallback to 7bit." +msgstr "" +"Aviso: no se encuentra codificación de transferencia, volviendo a 7 bits." + +#: src/src/i2p/susi/webmail/WebMail.java:478 +#, java-format +msgid "No encoder found for encoding \\''{0}\\''." +msgstr "No se ha encontrado codificador para la codificación \\''{0}''\\." + +#: src/src/i2p/susi/webmail/WebMail.java:484 +msgid "Warning: no charset found, fallback to US-ASCII." +msgstr "" +"Aviso: no se ha encontrado el juego de caracteres, volviendo a US-ASCII." + +#: src/src/i2p/susi/webmail/WebMail.java:498 +#, java-format +msgid "Charset \\''{0}\\'' not supported." +msgstr "juego de caracteres \\''{0}\\''no soportado." + +#: src/src/i2p/susi/webmail/WebMail.java:502 +#, java-format +msgid "Part ({0}) not shown, because of {1}" +msgstr "La parte ({0}) no se muestra, debido a {1}" + +#: src/src/i2p/susi/webmail/WebMail.java:525 +msgid "Download" +msgstr "Descarga" + +#: src/src/i2p/susi/webmail/WebMail.java:525 +msgid "File is packed into a zipfile for security reasons." +msgstr "" +"El archivo está empaquetado en un archivo zip por razones de seguridad." + +#: src/src/i2p/susi/webmail/WebMail.java:525 +#, java-format +msgid "attachment ({0})." +msgstr "adjunto ({0})." + +#: src/src/i2p/susi/webmail/WebMail.java:529 +#, java-format +msgid "Attachment ({0})." +msgstr "Adjunto ({0})." + +#: src/src/i2p/susi/webmail/WebMail.java:579 +msgid "Need username for authentication." +msgstr "Es necesario un nombre de usuario para la autenticación." + +#: src/src/i2p/susi/webmail/WebMail.java:583 +msgid "Need password for authentication." +msgstr "Es necesaria una contraseña para la autenticación." + +#: src/src/i2p/susi/webmail/WebMail.java:587 +msgid "Need hostname for connect." +msgstr "Es necesario un nombre de host para la conexión." + +#: src/src/i2p/susi/webmail/WebMail.java:592 +msgid "Need port number for pop3 connect." +msgstr "Es necesario el número de puerto para conectar pop3." + +#: src/src/i2p/susi/webmail/WebMail.java:599 +msgid "POP3 port number is not in range 0..65535." +msgstr "El puerto POP3 no está en el rango 0..65535." + +#: src/src/i2p/susi/webmail/WebMail.java:605 +msgid "POP3 port number is invalid." +msgstr "El puerto POP3 no es válido." + +#: src/src/i2p/susi/webmail/WebMail.java:611 +msgid "Need port number for smtp connect." +msgstr "Es necesario el número de puerto para conectar smtp." + +#: src/src/i2p/susi/webmail/WebMail.java:618 +msgid "SMTP port number is not in range 0..65535." +msgstr "El puerto SMTP no está en el rango 0..65535." + +#: src/src/i2p/susi/webmail/WebMail.java:624 +msgid "SMTP port number is invalid." +msgstr "El puerto SMTP no es válido." + +#: src/src/i2p/susi/webmail/WebMail.java:671 +msgid "User logged out." +msgstr "Usuario desconectado." + +#: src/src/i2p/susi/webmail/WebMail.java:675 +msgid "Internal error, lost connection." +msgstr "Error interno, pérdida de conexión." + +#: src/src/i2p/susi/webmail/WebMail.java:771 +#, java-format +msgid "On {0} {1} wrote:" +msgstr "En {0} {1} escribió:" + +#: src/src/i2p/susi/webmail/WebMail.java:818 +msgid "begin forwarded mail" +msgstr "comenzar correo reenviado" + +#: src/src/i2p/susi/webmail/WebMail.java:840 +msgid "end forwarded mail" +msgstr "terminar correo reenviado" + +#: src/src/i2p/susi/webmail/WebMail.java:847 +#: src/src/i2p/susi/webmail/WebMail.java:1701 +msgid "Could not fetch mail body." +msgstr "No se pudo obtener el cuerpo del correo." + +#: src/src/i2p/susi/webmail/WebMail.java:875 +msgid "Message id not valid." +msgstr "ID del mensaje no válida." + +#: src/src/i2p/susi/webmail/WebMail.java:958 +#, java-format +msgid "No Encoding found for {0}" +msgstr "No se ha encontrado codificación para {0}" + +#: src/src/i2p/susi/webmail/WebMail.java:962 +#, java-format +msgid "Could not encode data: {0}" +msgstr "No se pudo codificar los datos: {0}" + +#: src/src/i2p/susi/webmail/WebMail.java:967 +#, java-format +msgid "Error reading uploaded file: {0}" +msgstr "Error al leer el archivo subido: {0}" + +#: src/src/i2p/susi/webmail/WebMail.java:1045 +msgid "Error parsing download parameter." +msgstr "Error al analizar parámetros de descarga." + +#: src/src/i2p/susi/webmail/WebMail.java:1089 +msgid "Invalid pagesize number, resetting to default value." +msgstr "" +"Tamaño de página no válida, restableciendo a los valores predeterminados." + +#: src/src/i2p/susi/webmail/WebMail.java:1113 +msgid "No messages marked for deletion." +msgstr "No hay mensajes marcados para su eliminación." + +#: src/src/i2p/susi/webmail/WebMail.java:1133 +#, java-format +msgid "Error deleting message: {0}" +msgstr "Error al eliminar el mensaje: {0}" + +#: src/src/i2p/susi/webmail/WebMail.java:1144 +#, java-format +msgid "1 message deleted." +msgid_plural "{0} messages deleted." +msgstr[0] "1 mensaje eliminado." +msgstr[1] "{0} mensajes eliminados." + +#: src/src/i2p/susi/webmail/WebMail.java:1264 +#: src/src/i2p/susi/webmail/WebMail.java:1587 +msgid "Login" +msgstr "Iniciar sesión" + +#: src/src/i2p/susi/webmail/WebMail.java:1266 +#, java-format +msgid "1 Message" +msgid_plural "{0} Messages" +msgstr[0] "1 Mensaje" +msgstr[1] "{0} Mensajes" + +#: src/src/i2p/susi/webmail/WebMail.java:1268 +msgid "Show Message" +msgstr "Mostrar mensaje" + +#: src/src/i2p/susi/webmail/WebMail.java:1325 +#, java-format +msgid "Error decoding content: {0}" +msgstr "Error al descifrar el contenido: {0}" + +#: src/src/i2p/susi/webmail/WebMail.java:1330 +msgid "Error decoding content: No encoder found." +msgstr "Error al descifrar el contenido: No se ha encontrado codificador." + +#: src/src/i2p/susi/webmail/WebMail.java:1377 +msgid "no subject" +msgstr "sin asunto" + +#: src/src/i2p/susi/webmail/WebMail.java:1394 +msgid "Found no valid sender address." +msgstr "No se ha encontrado una dirección de remitente válida." + +#: src/src/i2p/susi/webmail/WebMail.java:1400 +#, java-format +msgid "Found no valid address in \\''{0}\\''." +msgstr "No se ha encontrado ninguna dirección válida en \\''{0}\\''." + +#: src/src/i2p/susi/webmail/WebMail.java:1419 +msgid "No recipients found." +msgstr "No se han encontrado receptores." + +#: src/src/i2p/susi/webmail/WebMail.java:1426 +msgid "Quoted printable encoder not available." +msgstr "El codificador imprimible citado no se encuentra disponible." + +#: src/src/i2p/susi/webmail/WebMail.java:1431 +msgid "Header line encoder not available." +msgstr "El codificador de línea de encabezado no está disponible." + +#: src/src/i2p/susi/webmail/WebMail.java:1482 +msgid "Mail sent." +msgstr "Correo enviado." + +#: src/src/i2p/susi/webmail/WebMail.java:1519 +msgid "Send" +msgstr "Enviar" + +#: src/src/i2p/susi/webmail/WebMail.java:1520 +msgid "Cancel" +msgstr "Cancelar" + +#: src/src/i2p/susi/webmail/WebMail.java:1521 +msgid "Delete Attachment" +msgstr "Eliminar datos adjuntos" + +#: src/src/i2p/susi/webmail/WebMail.java:1522 +#: src/src/i2p/susi/webmail/WebMail.java:1607 +#: src/src/i2p/susi/webmail/WebMail.java:1688 +msgid "Reload Config" +msgstr "Actualizar configuración" + +#: src/src/i2p/susi/webmail/WebMail.java:1523 +#: src/src/i2p/susi/webmail/WebMail.java:1608 +#: src/src/i2p/susi/webmail/WebMail.java:1689 +msgid "Logout" +msgstr "Desconectarse" + +#: src/src/i2p/susi/webmail/WebMail.java:1546 +#: src/src/i2p/susi/webmail/WebMail.java:1693 +msgid "From:" +msgstr "De:" + +#: src/src/i2p/susi/webmail/WebMail.java:1547 +msgid "To:" +msgstr "Para:" + +#: src/src/i2p/susi/webmail/WebMail.java:1548 +msgid "Cc:" +msgstr "Cc:" + +#: src/src/i2p/susi/webmail/WebMail.java:1549 +msgid "Bcc:" +msgstr "CCO:" + +#: src/src/i2p/susi/webmail/WebMail.java:1550 +#: src/src/i2p/susi/webmail/WebMail.java:1695 +msgid "Subject:" +msgstr "Asunto:" + +#: src/src/i2p/susi/webmail/WebMail.java:1551 +msgid "Bcc to self" +msgstr "CCO a mi mismo" + +#: src/src/i2p/susi/webmail/WebMail.java:1554 +msgid "New Attachment:" +msgstr "Nuevo Archivo adjunto:" + +#: src/src/i2p/susi/webmail/WebMail.java:1554 +msgid "Upload File" +msgstr "Subir Archivo" + +#: src/src/i2p/susi/webmail/WebMail.java:1560 +msgid "Attachments:" +msgstr "Archivos adjuntos:" + +#: src/src/i2p/susi/webmail/WebMail.java:1582 +msgid "User" +msgstr "Usuario" + +#: src/src/i2p/susi/webmail/WebMail.java:1583 +msgid "Pass" +msgstr "Pass" + +#: src/src/i2p/susi/webmail/WebMail.java:1584 +msgid "Host" +msgstr "Host" + +#: src/src/i2p/susi/webmail/WebMail.java:1585 +msgid "POP3-Port" +msgstr "Puerto-POP3" + +#: src/src/i2p/susi/webmail/WebMail.java:1586 +msgid "SMTP-Port" +msgstr "Puerto-SMTP" + +#: src/src/i2p/susi/webmail/WebMail.java:1587 +msgid "Create Account" +msgstr "Crear una cuenta" + +#: src/src/i2p/susi/webmail/WebMail.java:1587 +msgid "Reset" +msgstr "Resetear" + +#: src/src/i2p/susi/webmail/WebMail.java:1599 +msgid "Really delete the marked messages?" +msgstr "¿Realmente desea borrar los mensajes marcados?" + +#: src/src/i2p/susi/webmail/WebMail.java:1599 +msgid "Yes, really delete them!" +msgstr "Sí, realmente eliminarlos!" + +#: src/src/i2p/susi/webmail/WebMail.java:1601 +#: src/src/i2p/susi/webmail/WebMail.java:1680 +msgid "New" +msgstr "Nuevo" + +#: src/src/i2p/susi/webmail/WebMail.java:1602 +#: src/src/i2p/susi/webmail/WebMail.java:1681 +msgid "Reply" +msgstr "Responder" + +#: src/src/i2p/susi/webmail/WebMail.java:1603 +#: src/src/i2p/susi/webmail/WebMail.java:1682 +msgid "Reply All" +msgstr "Responder a todos" + +#: src/src/i2p/susi/webmail/WebMail.java:1604 +#: src/src/i2p/susi/webmail/WebMail.java:1683 +msgid "Forward" +msgstr "Reenviar" + +#: src/src/i2p/susi/webmail/WebMail.java:1605 +#: src/src/i2p/susi/webmail/WebMail.java:1684 +msgid "Delete" +msgstr "Eliminar" + +#: src/src/i2p/susi/webmail/WebMail.java:1606 +msgid "Check Mail" +msgstr "Comprobar correo" + +#: src/src/i2p/susi/webmail/WebMail.java:1610 +msgid "Sender" +msgstr "Remitente" + +#: src/src/i2p/susi/webmail/WebMail.java:1611 +msgid "Subject" +msgstr "Asunto" + +#: src/src/i2p/susi/webmail/WebMail.java:1612 +msgid "Date" +msgstr "Fecha" + +#: src/src/i2p/susi/webmail/WebMail.java:1613 +msgid "Size" +msgstr "Tamaño" + +#: src/src/i2p/susi/webmail/WebMail.java:1639 +#, java-format +msgid "1 Byte" +msgid_plural "{0} Bytes" +msgstr[0] "1 Byte" +msgstr[1] "{0} Bytes" + +#: src/src/i2p/susi/webmail/WebMail.java:1644 +msgid "Mark All" +msgstr "Marcar todos" + +#: src/src/i2p/susi/webmail/WebMail.java:1645 +msgid "Invert Selection" +msgstr "Invertir selección" + +#: src/src/i2p/susi/webmail/WebMail.java:1646 +msgid "Clear" +msgstr "Despejar" + +#: src/src/i2p/susi/webmail/WebMail.java:1649 +#: src/src/i2p/susi/webmail/WebMail.java:1650 +msgid "First" +msgstr "Primero" + +#: src/src/i2p/susi/webmail/WebMail.java:1649 +#: src/src/i2p/susi/webmail/WebMail.java:1650 +#: src/src/i2p/susi/webmail/WebMail.java:1685 +msgid "Previous" +msgstr "Anterior" + +#: src/src/i2p/susi/webmail/WebMail.java:1651 +#, java-format +msgid "Page {0} of {1}" +msgstr "Página {0} de {1}" + +#: src/src/i2p/susi/webmail/WebMail.java:1653 +#: src/src/i2p/susi/webmail/WebMail.java:1654 +msgid "Last" +msgstr "Última" + +#: src/src/i2p/susi/webmail/WebMail.java:1653 +#: src/src/i2p/susi/webmail/WebMail.java:1654 +#: src/src/i2p/susi/webmail/WebMail.java:1686 +msgid "Next" +msgstr "Siguiente" + +#: src/src/i2p/susi/webmail/WebMail.java:1657 +msgid "Pagesize:" +msgstr "Tamaño de página:" + +#: src/src/i2p/susi/webmail/WebMail.java:1658 +msgid "Set" +msgstr "Set" + +#: src/src/i2p/susi/webmail/WebMail.java:1668 +msgid "Really delete this message?" +msgstr "¿Realmente desea borrar este mensaje?" + +#: src/src/i2p/susi/webmail/WebMail.java:1668 +msgid "Yes, really delete it!" +msgstr "Sí, realmente eliminarlo!" + +#: src/src/i2p/susi/webmail/WebMail.java:1687 +msgid "Back to Folder" +msgstr "Volver a carpeta" + +#: src/src/i2p/susi/webmail/WebMail.java:1694 +msgid "Date:" +msgstr "Fecha:" + +#: src/src/i2p/susi/webmail/WebMail.java:1705 +msgid "Could not fetch mail." +msgstr "No se pudo descargar el correo." From 5b2cf8b67622c7917003e2a5ed9df4a90cbc40e9 Mon Sep 17 00:00:00 2001 From: duck Date: Fri, 1 Apr 2011 21:41:13 +0000 Subject: [PATCH 387/463] German translation for DesktopGUI, thanks blabla --- .tx/config | 1 + apps/desktopgui/locale/messages_de.po | 55 +++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 apps/desktopgui/locale/messages_de.po diff --git a/.tx/config b/.tx/config index f57cf5be1..d3c8fa175 100644 --- a/.tx/config +++ b/.tx/config @@ -42,6 +42,7 @@ trans.zh_CN = apps/susidns/locale/messages_zh.po [I2P.desktopgui] source_file = apps/desktopgui/locale/messages_en.po source_lang = en +trans.de = apps/desktopgui/locale/messages_de.po trans.es = apps/desktopgui/locale/messages_es.po trans.fr = apps/desktopgui/locale/messages_fr.po trans.nl = apps/desktopgui/locale/messages_nl.po diff --git a/apps/desktopgui/locale/messages_de.po b/apps/desktopgui/locale/messages_de.po new file mode 100644 index 000000000..1b327282c --- /dev/null +++ b/apps/desktopgui/locale/messages_de.po @@ -0,0 +1,55 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the desktopgui package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P\n" +"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" +"POT-Creation-Date: 2011-03-03 18:29+0000\n" +"PO-Revision-Date: 2011-03-22 15:49+0000\n" +"Last-Translator: blabla \n" +"Language-Team: German <>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:23 +msgid "Start I2P" +msgstr "I2P starten" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 +msgid "I2P is starting!" +msgstr "I2P startet gerade!" + +#: src/net/i2p/desktopgui/ExternalTrayManager.java:38 +msgid "Starting" +msgstr "Startend" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:26 +msgid "Launch I2P Browser" +msgstr "I2P-Browser öffnen" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:50 +msgid "Configure desktopgui" +msgstr "Desktopgui konfigurieren" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:67 +msgid "Restart I2P" +msgstr "I2P neustarten" + +#: src/net/i2p/desktopgui/InternalTrayManager.java:85 +msgid "Stop I2P" +msgstr "I2P beenden" + +#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:44 +msgid "Tray icon configuration" +msgstr "Tray Icon konfigurieren" + +#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47 +msgid "Should tray icon be enabled?" +msgstr " Tray Icon aktivieren?" From b41ed69b0f0115c3b05573812fa8846cef826c6a Mon Sep 17 00:00:00 2001 From: duck Date: Sat, 2 Apr 2011 12:18:45 +0000 Subject: [PATCH 388/463] Adding Arabic to Transifex --- .tx/config | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.tx/config b/.tx/config index d3c8fa175..060c32625 100644 --- a/.tx/config +++ b/.tx/config @@ -1,6 +1,7 @@ [I2P.i2ptunnel] source_file = apps/i2ptunnel/locale/messages_en.po source_lang = en +trans.ar = apps/i2ptunnel/locale/messages_ar.po trans.de = apps/i2ptunnel/locale/messages_de.po trans.es = apps/i2ptunnel/locale/messages_es.po trans.fr = apps/i2ptunnel/locale/messages_fr.po @@ -11,6 +12,7 @@ trans.zh_CN = apps/i2ptunnel/locale/messages_zh.po [I2P.routerconsole] source_file = apps/routerconsole/locale/messages_en.po source_lang = en +trans.ar = apps/routerconsole/locale/messages_ar.po trans.de = apps/routerconsole/locale/messages_de.po trans.es = apps/routerconsole/locale/messages_es.po trans.fr = apps/routerconsole/locale/messages_fr.po @@ -21,6 +23,7 @@ trans.zh_CN = apps/routerconsole/locale/messages_zh.po [I2P.i2psnark] source_file = apps/i2psnark/locale/messages_en.po source_lang = en +trans.ar = apps/i2psnark/locale/messages_ar.po trans.de = apps/i2psnark/locale/messages_de.po trans.es = apps/i2psnark/locale/messages_es.po trans.fr = apps/i2psnark/locale/messages_fr.po @@ -32,6 +35,7 @@ trans.zh_CN = apps/i2psnark/locale/messages_zh.po [I2P.susidns] source_file = apps/susidns/locale/messages_en.po source_lang = en +trans.ar = apps/susidns/locale/messages_ar.po trans.de = apps/susidns/locale/messages_de.po trans.es = apps/susidns/locale/messages_es.po trans.fr = apps/susidns/locale/messages_fr.po @@ -42,6 +46,7 @@ trans.zh_CN = apps/susidns/locale/messages_zh.po [I2P.desktopgui] source_file = apps/desktopgui/locale/messages_en.po source_lang = en +trans.ar = apps/desktopgui/locale/messages_ar.po trans.de = apps/desktopgui/locale/messages_de.po trans.es = apps/desktopgui/locale/messages_es.po trans.fr = apps/desktopgui/locale/messages_fr.po @@ -52,6 +57,7 @@ trans.zh_CN = apps/desktopgui/locale/messages_zh.po [I2P.susimail] source_file = apps/susimail/locale/messages_en.po source_lang = en +trans.de = apps/susimail/locale/messages_de.po trans.es = apps/susimail/locale/messages_es.po trans.fr = apps/susimail/locale/messages_fr.po trans.nl = apps/susimail/locale/messages_nl.po From 8198e61accc85d458609b237fedc6885106bf480 Mon Sep 17 00:00:00 2001 From: m1xxy Date: Sat, 2 Apr 2011 20:38:25 +0000 Subject: [PATCH 389/463] tweaks transl8ion desktopgui --- apps/desktopgui/locale/messages_de.po | 4 ++-- apps/desktopgui/locale/messages_fr.po | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/desktopgui/locale/messages_de.po b/apps/desktopgui/locale/messages_de.po index 1b327282c..7963075df 100644 --- a/apps/desktopgui/locale/messages_de.po +++ b/apps/desktopgui/locale/messages_de.po @@ -48,8 +48,8 @@ msgstr "I2P beenden" #: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:44 msgid "Tray icon configuration" -msgstr "Tray Icon konfigurieren" +msgstr "Systemleistensymbol konfigurieren" #: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47 msgid "Should tray icon be enabled?" -msgstr " Tray Icon aktivieren?" +msgstr "Systemleistensymbol aktivieren?" diff --git a/apps/desktopgui/locale/messages_fr.po b/apps/desktopgui/locale/messages_fr.po index 1e540d68b..f816891d0 100644 --- a/apps/desktopgui/locale/messages_fr.po +++ b/apps/desktopgui/locale/messages_fr.po @@ -48,7 +48,7 @@ msgstr "Arrêter I2P" #: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:44 msgid "Tray icon configuration" -msgstr "configuration de l'icône de notification" +msgstr "Configuration de l'icône de notification" #: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47 msgid "Should tray icon be enabled?" From 131e8f6d686648658550e10d32c38bd58bfb37ad Mon Sep 17 00:00:00 2001 From: m1xxy Date: Sat, 2 Apr 2011 22:00:39 +0000 Subject: [PATCH 390/463] translation es update --- apps/desktopgui/locale/messages_es.po | 11 ++- apps/i2psnark/locale/messages_es.po | 134 ++++++++------------------ history.txt | 7 ++ 3 files changed, 54 insertions(+), 98 deletions(-) diff --git a/apps/desktopgui/locale/messages_es.po b/apps/desktopgui/locale/messages_es.po index f4f5ab5a3..a458f3ad7 100644 --- a/apps/desktopgui/locale/messages_es.po +++ b/apps/desktopgui/locale/messages_es.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the desktopgui package. # To contribute translations, see http://www.i2p2.de/newdevelopers # foo , 2009. -# +# msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2011-03-03 18:29+0000\n" -"PO-Revision-Date: 2011-03-22 15:49+0000\n" -"Last-Translator: punkibastardo \n" +"PO-Revision-Date: 2011-04-02 23:57+0100\n" +"Last-Translator: mixxy \n" "Language-Team: Spanish (Castilian) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -48,8 +48,9 @@ msgstr "Detener I2P" #: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:44 msgid "Tray icon configuration" -msgstr "Configuración del icono de la barra de tareas" +msgstr "Configuración del ícono de la barra de tareas" #: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47 msgid "Should tray icon be enabled?" -msgstr "Debería estar activado el icono de la barra de tareas?" +msgstr "¿Debería estar activado el ícono de la barra de tareas?" + diff --git a/apps/i2psnark/locale/messages_es.po b/apps/i2psnark/locale/messages_es.po index f9522e4e2..8dc4d826a 100644 --- a/apps/i2psnark/locale/messages_es.po +++ b/apps/i2psnark/locale/messages_es.po @@ -3,14 +3,14 @@ # 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\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2011-03-03 18:28+0000\n" -"PO-Revision-Date: 2011-03-22 15:46+0000\n" -"Last-Translator: punkibastardo \n" +"PO-Revision-Date: 2011-04-02 22:36+0100\n" +"Last-Translator: mixxy \n" "Language-Team: Spanish (Castilian) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -36,19 +36,16 @@ msgstr "Ancho de banda para la subida ha sido cambiado a {0} kbyte/s." #: ../java/src/org/klomp/snark/SnarkManager.java:323 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" -msgstr "" -"El límite mínimo de ancho de banda para la subida está en {0} kbyte/s." +msgstr "El límite mínimo de ancho de banda para la subida está en {0} kbyte/s." #: ../java/src/org/klomp/snark/SnarkManager.java:335 #, java-format msgid "Startup delay changed to {0}" -msgstr "retardo de inicio cambiado a {0}" +msgstr "La Espera del inicio fue cambiada a {0}." #: ../java/src/org/klomp/snark/SnarkManager.java:386 msgid "I2CP and tunnel changes will take effect after stopping all torrents" -msgstr "" -"Cambios de I2CP y del túnel tomarán efecto despues de detener todos los " -"torrents." +msgstr "Cambios de I2CP y del túnel tomarán efecto despues de detener todos los torrents." #: ../java/src/org/klomp/snark/SnarkManager.java:393 msgid "Disconnecting old I2CP destination" @@ -60,11 +57,8 @@ msgid "I2CP settings changed to {0}" msgstr "Preferencias de I2CP cambiadas a {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:402 -msgid "" -"Unable to connect with the new settings, reverting to the old I2CP settings" -msgstr "" -"Conectarse no fue posíble con las nuevas preferencias I2CP, utilizaré las " -"anteriores." +msgid "Unable to connect with the new settings, reverting to the old I2CP settings" +msgstr "Conectarse no fue posíble con las nuevas preferencias I2CP, utilizaré las anteriores." #: ../java/src/org/klomp/snark/SnarkManager.java:406 msgid "Unable to reconnect with the old settings!" @@ -89,27 +83,20 @@ msgstr "Arranque automático desactivado" #: ../java/src/org/klomp/snark/SnarkManager.java:437 msgid "Enabled open trackers - torrent restart required to take effect." -msgstr "" -"Rastreadores abiertos activados - Para aplicar ello es necesario que " -"reinicies los torrents." +msgstr "Rastreadores abiertos activados - Para aplicar ello es necesario que reinicies los torrents." #: ../java/src/org/klomp/snark/SnarkManager.java:439 msgid "Disabled open trackers - torrent restart required to take effect." -msgstr "" -"Rastreadores abiertos desactivados - Para aplicar ello es necesario que " -"reinicies los torrents." +msgstr "Rastreadores abiertos desactivados - Para aplicar ello es necesario que reinicies los torrents." #: ../java/src/org/klomp/snark/SnarkManager.java:447 msgid "Open Tracker list changed - torrent restart required to take effect." -msgstr "" -"Lista de rastreadores abiertos cambiada - Para aplicar ello es necesario que" -" reinicies los torrents." +msgstr "Lista de rastreadores abiertos cambiada - Para aplicar ello es necesario que reinicies los torrents." #: ../java/src/org/klomp/snark/SnarkManager.java:454 #, java-format msgid "{0} theme loaded, return to main i2psnark page to view." -msgstr "" -"Tema {0} cargado. ¡Vuelve a la página principal de i2psnark para verlo!" +msgstr "Tema {0} cargado. ¡Vuelve a la página principal de i2psnark para verlo!" #: ../java/src/org/klomp/snark/SnarkManager.java:461 msgid "Configuration unchanged." @@ -153,24 +140,16 @@ msgstr "Ya hay un Torrent con este hash ejecutándose: {0}" #. open trackers and DHT only.", info.getName())); #: ../java/src/org/klomp/snark/SnarkManager.java:593 #, java-format -msgid "" -"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers " -"only." -msgstr "" -"Advertencia - No hay trackers de I2P en \"{0}\", se anunciará solamente a " -"los trackers I2P abiertos." +msgid "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers only." +msgstr "Advertencia - No hay rastreadores de I2P en \"{0}\", se anunciará solamente a los rastreadores I2P abiertos." #. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open #. trackers are disabled, you should enable open trackers or DHT before #. starting the torrent.", info.getName())); #: ../java/src/org/klomp/snark/SnarkManager.java:598 #, java-format -msgid "" -"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is " -"enabled before starting this torrent." -msgstr "" -"Advertencia - No se encuentran Trackers I2P en \"{0}\". Asegúrese de que " -"Open Tracker está activado antes de iniciar este torrent." +msgid "Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is enabled before starting this torrent." +msgstr "Advertencia - No se encuentran rastreadores de I2P en \"{0}\". Asegúrate de que OpenTracker esté activado antes de iniciar este torrent." #: ../java/src/org/klomp/snark/SnarkManager.java:619 #, java-format @@ -181,7 +160,7 @@ msgstr "El archivo .torrent en \"{0}\" no es válido." #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" -msgstr "ERROR - falta de memoria, no se puede crear un torrent de {0}" +msgstr "ERROR - Falta de memoria, no se puede crear un torrent de {0}." #: ../java/src/org/klomp/snark/SnarkManager.java:635 #, java-format @@ -201,13 +180,8 @@ msgstr "Recogiendo {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:675 #, java-format -msgid "" -"We have no saved peers and no other torrents are running. Fetch of {0} will " -"not succeed until you start another torrent." -msgstr "" -"No tenemos guardado ningún interlocutor y no se está ejecutando ningún otro " -"torrent. La obtención de {0} no tendrá éxito hasta que comience otro " -"torrent." +msgid "We have no saved peers and no other torrents are running. Fetch of {0} will not succeed until you start another torrent." +msgstr "No tenemos guardado ningún par y no se está activo ningún otro torrent. La obtención de {0} no tendrá éxito hasta que inicies otro torrent." #: ../java/src/org/klomp/snark/SnarkManager.java:679 #, java-format @@ -229,9 +203,7 @@ msgstr "Hay demasiados archivos en \"{0}\", se borrará ({1}). " #: ../java/src/org/klomp/snark/SnarkManager.java:974 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" -msgstr "" -"Archivo de datos del torrent \"{0}\" no puede terminar en \".torrent' y será" -" borrado." +msgstr "Archivo de datos del torrent \"{0}\" no puede terminar en \".torrent' y será borrado." #: ../java/src/org/klomp/snark/SnarkManager.java:976 #, java-format @@ -431,7 +403,7 @@ msgstr[1] "{0} pares conectados" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496 #, java-format msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" -msgstr "URL Inválida: debe comenzar con \"http://\", \"{0}\", ó \"{1}\"" +msgstr "URL no válida: debe comenzar con \"http://\", \"{0}\", o \"{1}\"." #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571 @@ -473,12 +445,8 @@ msgstr "Torrent creado para \"{0}\"" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655 #, java-format -msgid "" -"Many I2P trackers require you to register new torrents before seeding - " -"please do so before starting \"{0}\"" -msgstr "" -"Muchos rastreadores en I2P requieren que te registres, antes de que puedas " -"subir el torrent. Por favor, ¡hazlo antes de iniciar \"{0}\"!" +msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\"" +msgstr "Muchos rastreadores en I2P requieren que te registres, antes de que puedas subir el torrent. Por favor, ¡hazlo antes de iniciar \"{0}\"!" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657 #, java-format @@ -492,8 +460,7 @@ msgstr "No se puede crear un torrent para datos inexistentes: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663 msgid "Error creating torrent - you must enter a file or directory" -msgstr "" -"Error al crear el torrent - Tienes que especificar un archivo o una carpeta." +msgstr "Error al crear el torrent - Tienes que especificar un archivo o una carpeta." #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 msgid "Stopping all torrents and closing the I2P tunnel." @@ -592,21 +559,15 @@ msgstr "Iniciar" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982 msgid "Remove the torrent from the active list, deleting the .torrent file" -msgstr "" -"Quita el torrent de la lista de los torrents activos borrando el archivo " -".torrent" +msgstr "Quita el torrent de la lista de los torrents activos borrando el archivo .torrent" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quite must be escaped #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 #, java-format -msgid "" -"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded " -"data will not be deleted) ?" -msgstr "" -"¿Estás seguro de que quieres borrar el archivo \\''{0}.torrent\\''? (Datos " -"bajados no se borrarán.)" +msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?" +msgstr "¿Estás seguro de que quieres borrar el archivo \\''{0}.torrent\\''? (Datos bajados no se borrarán.)" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990 msgid "Remove" @@ -621,12 +582,8 @@ msgstr "Borrar el archivo torrent y el/los archivo(s) de datos pertenecientes" #. Then the remaining single quite must be escaped #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006 #, java-format -msgid "" -"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " -"data?" -msgstr "" -"¿Estás seguro de que quieres borrar el archivo torrent \\''{0}\\'' y todos " -"los datos descargados de este torrent?" +msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?" +msgstr "¿Estás seguro de que quieres borrar el archivo torrent \\''{0}\\'' y todos los datos descargados de este torrent?" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009 msgid "Delete" @@ -654,7 +611,7 @@ msgstr "desinteresado (No tenemos las partes que el par quiere.)" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101 msgid "Choking (We are not allowing the peer to request pieces)" -msgstr "Moderando (De momento no se le permite al par solicitar más partes)" +msgstr "moderando (De momento no se le permite al par solicitar más partes)" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159 #, java-format @@ -670,11 +627,8 @@ msgid "From URL" msgstr "URL fuente" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193 -msgid "" -"Enter the torrent file download URL (I2P only), magnet link, or maggot link" -msgstr "" -"Introduzca la URL de descarga de torrent (I2P solamente), enlace magnet, o " -"un enlace maggot" +msgid "Enter the torrent file download URL (I2P only), magnet link, or maggot link" +msgstr "Introduce la URL de descarga de torrent (I2P solamente), enlace magnet o un enlace maggot" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198 msgid "Add torrent" @@ -687,9 +641,7 @@ msgstr "También puedes copiar archivos torrent a {0}." #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Removing a .torrent will cause it to stop." -msgstr "" -"Quitar un archivo torrent resultará en que se detenga el torrent " -"perteneciente." +msgstr "Quitar un archivo torrent resultará en que se detenga el torrent perteneciente." #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 msgid "Create Torrent" @@ -703,8 +655,7 @@ msgstr "Datos para sembrar" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233 msgid "File or directory to seed (must be within the specified path)" -msgstr "" -"Archivo o carpeta para sembrar (tiene que estár en la carpeta especificada)" +msgstr "Archivo o carpeta para sembrar (tiene que estár en la carpeta especificada)" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1235 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 @@ -718,7 +669,7 @@ msgstr "Selecciona un rastreador" #. out.write(_("Open trackers and DHT only")); #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 msgid "Open trackers only" -msgstr "Sólo trackers abiertos" +msgstr "Sólo rastreadores abiertos" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257 msgid "or" @@ -790,12 +741,8 @@ msgid "Use open trackers also" msgstr "Usar también rastreadores abiertos" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 -msgid "" -"If checked, announce torrents to open trackers as well as the tracker listed" -" in the torrent file" -msgstr "" -"Si está marcado, el torrent se anunciará a los rastreadores abiertos, además" -" de a los rastreadores especificados." +msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file" +msgstr "Si está marcado, el torrent se anunciará a los rastreadores abiertos, además de a los rastreadores especificados." #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362 msgid "Open tracker announce URLs" @@ -828,12 +775,12 @@ msgstr "Guardar ajustes" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436 #, java-format msgid "Invalid magnet URL {0}" -msgstr "URL de magnet no válida {0}" +msgstr "URL de magnet no válida: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470 #, java-format msgid "Invalid info hash in magnet URL {0}" -msgstr "Información hash no válida en la URL magnet {0}" +msgstr "Hash de información no válido en la URL magnet {0}" #. * dummies for translation #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1500 @@ -874,7 +821,7 @@ msgstr "Tamaño de las partes" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697 msgid "Magnet link" -msgstr "enlace de magnet" +msgstr "Enlace de magnet" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753 @@ -949,3 +896,4 @@ msgstr "Torrent en {0} no era válido" #, java-format msgid "Torrent was not retrieved from {0}" msgstr "Torrent no se ha podido obtener de {0}" + diff --git a/history.txt b/history.txt index 7c3f8e253..57822a197 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,10 @@ +2011-04-02 m1xxy + * routerconsole, i2psnark, ... I2P ahora también en español: ¡Bienvenidos los hispanohablantes! + - routerconsole, i2ptunnel, i2psnark, SusiDNS, Susimail fully translated into Spanish + (thx to PunkiBastardo and user) + * routerconsole, i2psnark, ... + - French translations completed by magma + 2011-03-22 zzz * Handle GNU JRE returning Long.MAX_VALUE for max memory * i2ptunnel: HTML fixes From aee08287eb0b56f04a5103611a17886104148623 Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 4 Apr 2011 12:31:40 +0000 Subject: [PATCH 391/463] tweak --- apps/routerconsole/locale/messages_fr.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index b7b6d9457..70dcb7351 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-26 08:34+0000\n" -"PO-Revision-Date: 2011-03-31 00:51+0100\n" +"PO-Revision-Date: 2011-04-04 14:28+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -2617,7 +2617,7 @@ msgstr "Pays" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:344 msgid "Our info" -msgstr "Moi" +msgstr "Ce routeur" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:346 msgid "Peer info for" From a9b1603f9f397ba966865b7abeeac57a1ceffef3 Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 4 Apr 2011 20:08:50 +0000 Subject: [PATCH 392/463] ttweak --- apps/routerconsole/locale/messages_fr.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 70dcb7351..76ab58dca 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-26 08:34+0000\n" -"PO-Revision-Date: 2011-04-04 14:28+0100\n" +"PO-Revision-Date: 2011-04-04 22:06+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -1856,7 +1856,7 @@ msgstr "Tunnels" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 msgid "UI" -msgstr "IHM" +msgstr "Apparence" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 msgid "Clients" @@ -3771,7 +3771,7 @@ msgstr "cliquez sur Redémarrer pour installer" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:121 #: ../java/src/net/i2p/router/web/UpdateHandler.java:291 msgid "Click Shutdown and restart to install" -msgstr "Cliquez sur \"Arrêter\" et redémarrez pour installer" +msgstr "Cliquez sur \"Arrêter\" puis \"Démarrer\" pour installer" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:122 #: ../java/src/net/i2p/router/web/UpdateHandler.java:293 From 1cffcdb6708aee534f02f9832d2ddb01f9d51072 Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 4 Apr 2011 20:13:19 +0000 Subject: [PATCH 393/463] ttweak --- apps/routerconsole/locale/messages_fr.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 76ab58dca..c85ea8a7a 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-26 08:34+0000\n" -"PO-Revision-Date: 2011-04-04 22:06+0100\n" +"PO-Revision-Date: 2011-04-04 22:12+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -1735,7 +1735,7 @@ msgstr "Vérifier les mises à jour" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:263 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 msgid "Update" -msgstr "Mettre à jour" +msgstr "Mise à jour" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:268 #, java-format From 853e5ac60747a093d3cdea9c352dbf24bdc2dd6f Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 4 Apr 2011 20:21:21 +0000 Subject: [PATCH 394/463] tweak --- apps/i2psnark/locale/messages_fr.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/i2psnark/locale/messages_fr.po b/apps/i2psnark/locale/messages_fr.po index 2a27c043c..7b7661cdb 100644 --- a/apps/i2psnark/locale/messages_fr.po +++ b/apps/i2psnark/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-25 12:48+0000\n" -"PO-Revision-Date: 2011-03-30 22:08+0100\n" +"PO-Revision-Date: 2011-04-04 22:20+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -215,17 +215,17 @@ msgstr "Trop de tronçons dans \"{0}\" , la limite est {1}, suppression!" #: ../java/src/org/klomp/snark/SnarkManager.java:984 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B), deleting it." -msgstr "Les tronçons sont trop larges dans \"{0}\" ({1}B), suppresion." +msgstr "Les tronçons sont trop larges dans \"{0}\" ({1}B), suppression." #: ../java/src/org/klomp/snark/SnarkManager.java:985 #, java-format msgid "Limit is {0}B" -msgstr "La limite est de \"{0}\"Octets" +msgstr "La limite est de \"{0}\"octets" #: ../java/src/org/klomp/snark/SnarkManager.java:993 #, java-format msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" -msgstr "Les torrents dont la taille est supérieure à \"{0}\"Octets ne sont pas encore supportés, suppression \"{1}\"." +msgstr "Les torrents dont la taille est supérieure à \"{0}\"octets ne sont pas encore supportés, suppression \"{1}\"." #: ../java/src/org/klomp/snark/SnarkManager.java:1009 #, java-format From ed131f47de62e72d4c072573d27d46e1e36111e2 Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 4 Apr 2011 20:27:28 +0000 Subject: [PATCH 395/463] tweak --- apps/i2ptunnel/locale/messages_fr.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/i2ptunnel/locale/messages_fr.po b/apps/i2ptunnel/locale/messages_fr.po index 68ca3345c..73efeddf4 100644 --- a/apps/i2ptunnel/locale/messages_fr.po +++ b/apps/i2ptunnel/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P i2ptunnel\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-25 15:21+0000\n" -"PO-Revision-Date: 2011-03-25 18:18+0100\n" +"PO-Revision-Date: 2011-04-04 22:26+0100\n" "Last-Translator: magma \n" "Language-Team: duck \n" "Language: \n" @@ -21,11 +21,11 @@ msgstr "" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474 #, java-format msgid "To visit the destination in your host database, click here. To visit the conflicting addresshelper destination, click here." -msgstr "Pour aller à la destination de votre base de données d\\''hôtes, cliquez here. Pour aller à la destination de l\\''aide d\\''adresse en conflit, cliquez ." +msgstr "Pour aller à la destination de votre base de données d'hôtes, cliquez here. Pour aller à la destination de l'aide d'adresse en conflit, cliquez ." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931 msgid "Click a link below to look for an address helper by using a \"jump\" service:" -msgstr "Cliquez sur un des liens ci-dessous pour chercher une aide d'adresse en utilisant un service de \"saut\":" +msgstr "Cliquez sur un des liens ci-dessous pour chercher une aide d'adresse en utilisant un \"service de saut\":" #: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326 #: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336 @@ -34,7 +34,7 @@ msgstr "interne" #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:171 msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit." -msgstr "Échec de soumission du formulaire: vous avez peut-être utilisé le bouton 'Page précédente' ou 'Recherger' de votre navigateur. Merci de soumettre à nouveau." +msgstr "Échec de soumission du formulaire: vous avez peut-être utilisé le bouton \"Page précédente\" ou \"Recharger\" de votre navigateur. Merci de soumettre à nouveau." #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218 msgid "Configuration reloaded for all tunnels" From 2e9e2e20efdd4d9130d4fb3c3262041872d75c0f Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 4 Apr 2011 20:37:47 +0000 Subject: [PATCH 396/463] tweak --- apps/susidns/locale/messages_fr.po | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/susidns/locale/messages_fr.po b/apps/susidns/locale/messages_fr.po index d2b100d5a..020aee791 100644 --- a/apps/susidns/locale/messages_fr.po +++ b/apps/susidns/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P susidns\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-24 16:49+0000\n" -"PO-Revision-Date: 2011-03-30 22:19+0100\n" +"PO-Revision-Date: 2011-04-04 22:37+0100\n" "Last-Translator: magma \n" "Language-Team: duck \n" "Language: \n" @@ -72,12 +72,12 @@ msgstr "Remplacer" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264 #, java-format msgid "Host name {0} is already in addressbook, unchanged." -msgstr "L\\''hôte {0} est déjà présent: inchangé." +msgstr "L'hôte {0} est déjà présent: inchangé." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266 #, java-format msgid "Host name {0} is already in addressbook with a different destination. Click \"Replace\" to overwrite." -msgstr "L\\''hôte {0} est déjà présent avec une destination différente. Cliquez sur \"Remplacer\"...pour le remplacer." +msgstr "L'hôte {0} est déjà présent avec une destination différente. Cliquez sur \"Remplacer\"...pour le remplacer." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278 #, java-format @@ -419,11 +419,11 @@ msgstr "L'application vérifie régulièrement cette liste pour trouver de nouve #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136 msgid "Those URLs refer to published hosts.txt files." -msgstr "Ces URLs s'abreuvent aux fichiers hosts.txt des autres utilisateurs." +msgstr "Ces URLs font référence aux fichiers hosts.txt des autres utilisateurs." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138 msgid "The default subscription is the hosts.txt from www.i2p2.i2p, which is updated infrequently." -msgstr "L'abonnement par défaut est le fichier hosts.txt de www.i2p2.i2p, qui est très peu actualisé." +msgstr "L'abonnement par défaut est le fichier hosts.txt de www.i2p2.i2p, mais il est très peu actualisé." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:140 msgid "So it is a good idea to add additional subscriptions to sites that have the latest addresses." From 281c2f5b51ba757a84143aa2003a10c7e1f779fc Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 4 Apr 2011 20:44:18 +0000 Subject: [PATCH 397/463] tweak --- apps/susimail/locale/messages_fr.po | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/susimail/locale/messages_fr.po b/apps/susimail/locale/messages_fr.po index d93234c78..346f3c32d 100644 --- a/apps/susimail/locale/messages_fr.po +++ b/apps/susimail/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P susimail\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-24 16:49+0000\n" -"PO-Revision-Date: 2011-03-30 22:16+0100\n" +"PO-Revision-Date: 2011-04-04 22:43+0100\n" "Last-Translator: magma \n" "Language-Team: duck \n" "Language: \n" @@ -29,7 +29,7 @@ msgstr "Avertissement: pas d'encodage de transfert trouvé: retour en 7bits." #: src/src/i2p/susi/webmail/WebMail.java:478 #, java-format msgid "No encoder found for encoding \\''{0}\\''." -msgstr "Pas d\\''encodeur trouvé pour encoder \\''{0}\\''." +msgstr "Pas d'encodeur trouvé pour encoder \\''{0}\\''." #: src/src/i2p/susi/webmail/WebMail.java:484 msgid "Warning: no charset found, fallback to US-ASCII." @@ -132,12 +132,12 @@ msgstr "ID de message incorrecte." #: src/src/i2p/susi/webmail/WebMail.java:958 #, java-format msgid "No Encoding found for {0}" -msgstr "Pas d\\''encodage trouvé pour {0}" +msgstr "Pas d'encodage trouvé pour {0}" #: src/src/i2p/susi/webmail/WebMail.java:962 #, java-format msgid "Could not encode data: {0}" -msgstr "Impossible d\\''encoder les données: {0}" +msgstr "Impossible d'encoder les données: {0}" #: src/src/i2p/susi/webmail/WebMail.java:967 #, java-format @@ -204,7 +204,7 @@ msgstr "Adresse d'expéditeur correcte non trouvée" #: src/src/i2p/susi/webmail/WebMail.java:1400 #, java-format msgid "Found no valid address in \\''{0}\\''." -msgstr "Pas d\\''adresse correcte dans \\''{0}\\''." +msgstr "Pas d'adresse correcte dans \\''{0}\\''." #: src/src/i2p/susi/webmail/WebMail.java:1419 msgid "No recipients found." @@ -216,7 +216,7 @@ msgstr "Encodeur \"Quoted printable\" non disponible." #: src/src/i2p/susi/webmail/WebMail.java:1431 msgid "Header line encoder not available." -msgstr "Ligne d'en-tête \"encodeur\" non disponible." +msgstr "Ligne d'en-tête \"Encodeur\" non disponible." #: src/src/i2p/susi/webmail/WebMail.java:1482 msgid "Mail sent." From ac3c2bd87266afad5bc31fe7a84f1bde08c1638b Mon Sep 17 00:00:00 2001 From: magma Date: Wed, 6 Apr 2011 15:02:50 +0000 Subject: [PATCH 398/463] remake duck's change --- apps/i2ptunnel/locale/messages_fr.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/i2ptunnel/locale/messages_fr.po b/apps/i2ptunnel/locale/messages_fr.po index 73efeddf4..9e63b9b37 100644 --- a/apps/i2ptunnel/locale/messages_fr.po +++ b/apps/i2ptunnel/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P i2ptunnel\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-25 15:21+0000\n" -"PO-Revision-Date: 2011-04-04 22:26+0100\n" +"PO-Revision-Date: 2011-04-06 17:00+0100\n" "Last-Translator: magma \n" "Language-Team: duck \n" "Language: \n" @@ -21,7 +21,7 @@ msgstr "" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474 #, java-format msgid "To visit the destination in your host database, click here. To visit the conflicting addresshelper destination, click here." -msgstr "Pour aller à la destination de votre base de données d'hôtes, cliquez here. Pour aller à la destination de l'aide d'adresse en conflit, cliquez ." +msgstr "Pour aller à la destination de votre base de données d\\''hôtes, cliquez here. Pour aller à la destination de l'aide d'adresse en conflit, cliquez ." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931 msgid "Click a link below to look for an address helper by using a \"jump\" service:" From 3e00866bdf2beceac67465725d4c09806f9e766f Mon Sep 17 00:00:00 2001 From: magma Date: Wed, 6 Apr 2011 15:21:15 +0000 Subject: [PATCH 399/463] remake duck's change --- apps/susimail/locale/messages_fr.po | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/susimail/locale/messages_fr.po b/apps/susimail/locale/messages_fr.po index 346f3c32d..e805b26b8 100644 --- a/apps/susimail/locale/messages_fr.po +++ b/apps/susimail/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P susimail\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-24 16:49+0000\n" -"PO-Revision-Date: 2011-04-04 22:43+0100\n" +"PO-Revision-Date: 2011-04-06 17:20+0100\n" "Last-Translator: magma \n" "Language-Team: duck \n" "Language: \n" @@ -29,7 +29,7 @@ msgstr "Avertissement: pas d'encodage de transfert trouvé: retour en 7bits." #: src/src/i2p/susi/webmail/WebMail.java:478 #, java-format msgid "No encoder found for encoding \\''{0}\\''." -msgstr "Pas d'encodeur trouvé pour encoder \\''{0}\\''." +msgstr "Pas d\\''encodeur trouvé pour encoder \\''{0}\\''." #: src/src/i2p/susi/webmail/WebMail.java:484 msgid "Warning: no charset found, fallback to US-ASCII." @@ -132,12 +132,12 @@ msgstr "ID de message incorrecte." #: src/src/i2p/susi/webmail/WebMail.java:958 #, java-format msgid "No Encoding found for {0}" -msgstr "Pas d'encodage trouvé pour {0}" +msgstr "Pas d\\''encodage trouvé pour {0}" #: src/src/i2p/susi/webmail/WebMail.java:962 #, java-format msgid "Could not encode data: {0}" -msgstr "Impossible d'encoder les données: {0}" +msgstr "Impossible d\\''encoder les données: {0}" #: src/src/i2p/susi/webmail/WebMail.java:967 #, java-format @@ -204,7 +204,7 @@ msgstr "Adresse d'expéditeur correcte non trouvée" #: src/src/i2p/susi/webmail/WebMail.java:1400 #, java-format msgid "Found no valid address in \\''{0}\\''." -msgstr "Pas d'adresse correcte dans \\''{0}\\''." +msgstr "Pas d\\''adresse correcte dans \\''{0}\\''." #: src/src/i2p/susi/webmail/WebMail.java:1419 msgid "No recipients found." From 398984009b837d595a0e0e35ea83b55e078a34ee Mon Sep 17 00:00:00 2001 From: magma Date: Wed, 6 Apr 2011 15:21:36 +0000 Subject: [PATCH 400/463] remake duck's change --- apps/susidns/locale/messages_fr.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/susidns/locale/messages_fr.po b/apps/susidns/locale/messages_fr.po index 020aee791..df7372188 100644 --- a/apps/susidns/locale/messages_fr.po +++ b/apps/susidns/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P susidns\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-24 16:49+0000\n" -"PO-Revision-Date: 2011-04-04 22:37+0100\n" +"PO-Revision-Date: 2011-04-06 17:16+0100\n" "Last-Translator: magma \n" "Language-Team: duck \n" "Language: \n" @@ -72,12 +72,12 @@ msgstr "Remplacer" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264 #, java-format msgid "Host name {0} is already in addressbook, unchanged." -msgstr "L'hôte {0} est déjà présent: inchangé." +msgstr "L\\''hôte {0} est déjà présent: inchangé." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266 #, java-format msgid "Host name {0} is already in addressbook with a different destination. Click \"Replace\" to overwrite." -msgstr "L'hôte {0} est déjà présent avec une destination différente. Cliquez sur \"Remplacer\"...pour le remplacer." +msgstr "L\\''hôte {0} est déjà présent avec une destination différente. Cliquez sur \"Remplacer\"...pour le remplacer." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278 #, java-format From 0da9c606f2cbb0bee897e8610a29596f5b6f02fc Mon Sep 17 00:00:00 2001 From: magma Date: Wed, 6 Apr 2011 15:33:06 +0000 Subject: [PATCH 401/463] remake duck's change --- apps/routerconsole/locale/messages_fr.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index c85ea8a7a..7199eca58 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-26 08:34+0000\n" -"PO-Revision-Date: 2011-04-04 22:12+0100\n" +"PO-Revision-Date: 2011-04-06 17:32+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -155,7 +155,7 @@ msgstr "Réamorçage en cours" #, java-format msgid "Reseed fetched only 1 router." msgid_plural "Reseed fetched only {0} routers." -msgstr[0] "Le réamorçage n\\''a trouvé qu\\''un seul routeur." +msgstr[0] "Le réamorçage n'a trouvé qu'un seul routeur." msgstr[1] "Le réamorçage n\\''a trouvé que {0} routeurs." #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:148 @@ -5431,7 +5431,7 @@ msgstr "Statistiques du routeur I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:255 #, java-format msgid "Disable {0} Refresh" -msgstr "Désactiver l\\''actualisation automatique {0}" +msgstr "Désactiver l'actualisation automatique {0}" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:111 msgid "tunnel summary" From e766202a2ea5e5a910f3ac3886bc04cc56510dc2 Mon Sep 17 00:00:00 2001 From: magma Date: Wed, 6 Apr 2011 17:34:15 +0000 Subject: [PATCH 402/463] fix in panel: congestion->tasks list --- apps/routerconsole/locale/messages_fr.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 7199eca58..387cd452d 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-26 08:34+0000\n" -"PO-Revision-Date: 2011-04-06 17:32+0100\n" +"PO-Revision-Date: 2011-04-06 19:32+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -3454,7 +3454,7 @@ msgstr "Montrer les tâches du routeur qui sont à traiter " #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412 msgid "Congestion" -msgstr "Encombrement" +msgstr "Liste des tâches" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 msgid "Job lag" From a4ff83c0d4611059b42d9dae397870f50ddd218f Mon Sep 17 00:00:00 2001 From: magma Date: Wed, 6 Apr 2011 19:43:49 +0000 Subject: [PATCH 403/463] fix the damned apostrophe --- apps/routerconsole/locale/messages_fr.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 387cd452d..f79625a96 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-26 08:34+0000\n" -"PO-Revision-Date: 2011-04-06 19:32+0100\n" +"PO-Revision-Date: 2011-04-06 21:42+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -5431,7 +5431,7 @@ msgstr "Statistiques du routeur I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:255 #, java-format msgid "Disable {0} Refresh" -msgstr "Désactiver l'actualisation automatique {0}" +msgstr "Désactiver l''actualisation automatique {0}" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:111 msgid "tunnel summary" From 2061640cb6ae84f597b845cb728f9411d280607e Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 7 Apr 2011 09:00:15 +0000 Subject: [PATCH 404/463] fix the damned apostrophe and other typos --- apps/i2psnark/locale/messages_fr.po | 30 ++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/apps/i2psnark/locale/messages_fr.po b/apps/i2psnark/locale/messages_fr.po index 7b7661cdb..f9f6d3c67 100644 --- a/apps/i2psnark/locale/messages_fr.po +++ b/apps/i2psnark/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-25 12:48+0000\n" -"PO-Revision-Date: 2011-04-04 22:20+0100\n" +"PO-Revision-Date: 2011-04-07 10:58+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -97,11 +97,11 @@ msgstr "Liste des Open trackers modifiée - redémarrage des torrents requis pou #: ../java/src/org/klomp/snark/SnarkManager.java:454 #, java-format msgid "{0} theme loaded, return to main i2psnark page to view." -msgstr "Thème {0} chargé, revenez à la page d'accueil d'i2psnark pour voir comme c'est beau!" +msgstr "Thème {0} chargé, revenez à la page d''accueil d''i2psnark pour voir comme il est beau !" #: ../java/src/org/klomp/snark/SnarkManager.java:461 msgid "Configuration unchanged." -msgstr "La configuration n'a pas été modifiée" +msgstr "Aucun changement de configuration." #: ../java/src/org/klomp/snark/SnarkManager.java:471 #, java-format @@ -566,7 +566,7 @@ msgstr "Enlever le torrent de la liste active, suprression du fichier .torrent" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 #, java-format msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?" -msgstr "Etes-vous certain de vouloir supprimer le fichier \\''{0}.torrent\\'' (les données déjà téléchargées ne seront pas supprimées) ?" +msgstr "Êtes-vous certain de vouloir supprimer le fichier \\''{0}.torrent\\'' (les données déjà téléchargées ne seront pas supprimées) ?" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990 msgid "Remove" @@ -582,7 +582,7 @@ msgstr "Supprimer le fichier .torrent et le(s) fichier(s) de données associé(s #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006 #, java-format msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?" -msgstr "Etes-vous certain de vouloir supprimer le torrent \\''{0}\\'' ainsi que toutes les données téléchargées ?" +msgstr "Êtes-vous certain de vouloir supprimer le torrent \\''{0}\\'' ainsi que toutes les données téléchargées ?" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009 msgid "Delete" @@ -598,7 +598,7 @@ msgstr "Seed" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Uninteresting (The peer has no pieces we need)" -msgstr "aucun intérêt (le pair n'a aucun tronçon utile)" +msgstr "Aucun intérêt (le pair n'a aucun tronçon utile)" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079 msgid "Choked (The peer is not allowing us to request pieces)" @@ -606,7 +606,7 @@ msgstr "bridé (le pair ne nous permet pas de demander des tronçons)" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1099 msgid "Uninterested (We have no pieces the peer needs)" -msgstr "aucun intérêt (nous n'avons aucun tronçon utile au pair)" +msgstr "Pas intéressé (aucun tronçon utile au pair)" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101 msgid "Choking (We are not allowing the peer to request pieces)" @@ -623,11 +623,11 @@ msgstr "Ajouter torrent" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190 msgid "From URL" -msgstr "Depuis l'url" +msgstr "Depuis l'URL" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193 msgid "Enter the torrent file download URL (I2P only), magnet link, or maggot link" -msgstr "Entrez l'URL (i2p uniquement) de téléchargement du fichier torrent, du lien magnet ou maggot." +msgstr "Entrez l'URL (I2P uniquement) de téléchargement du fichier torrent, du lien magnet ou maggot." #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198 msgid "Add torrent" @@ -640,7 +640,7 @@ msgstr "Vous pouvez aussi copier les fichiers .torrent vers {0}." #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Removing a .torrent will cause it to stop." -msgstr "La suppression d'un fichier .torrent entraine l'arrêt du torrent" +msgstr "La suppression d'un fichier .torrent entraîne l'arrêt du torrent." #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 msgid "Create Torrent" @@ -675,7 +675,7 @@ msgstr "ou" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260 msgid "Specify custom tracker announce URL" -msgstr "Spécifier une URL personnalisée d'annonce de tracker" +msgstr "Spécifier une URL d'annonce de tracker personnalisé" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263 msgid "Create torrent" @@ -700,7 +700,7 @@ msgstr "Démarrage automatique" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295 msgid "If checked, automatically start torrents that are added" -msgstr "Si coché, les torrents démarrerons automatiquement lors de l'ajout" +msgstr "Si coché, les torrents démarreront automatiquement lors de l'ajout" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1299 msgid "Theme" @@ -744,7 +744,7 @@ msgstr "Si coché, les torrents seront annoncés vers les open trackers ainsi qu #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362 msgid "Open tracker announce URLs" -msgstr "URL d'annonce open tracker" +msgstr "URLs d'annonce open tracker" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1374 msgid "Inbound Settings" @@ -883,12 +883,12 @@ msgstr "Torrent déjà actif: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1990 #, java-format msgid "Torrent already in the queue: {0}" -msgstr "Torrent déjà dans la file d\\''attente: {0}" +msgstr "Torrent déjà dans la file d''attente: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1996 #, java-format msgid "Torrent at {0} was not valid" -msgstr "Le torrent {0} n'est pas valide" +msgstr "Le torrent {0} n''est pas valide" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2003 #, java-format From 2a982a4c47ea65e0b9781d400da48ca66af9388a Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 7 Apr 2011 09:12:17 +0000 Subject: [PATCH 405/463] fix the damned apostrophe --- apps/i2ptunnel/locale/messages_fr.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/i2ptunnel/locale/messages_fr.po b/apps/i2ptunnel/locale/messages_fr.po index 9e63b9b37..ea5cdafa0 100644 --- a/apps/i2ptunnel/locale/messages_fr.po +++ b/apps/i2ptunnel/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P i2ptunnel\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-25 15:21+0000\n" -"PO-Revision-Date: 2011-04-06 17:00+0100\n" +"PO-Revision-Date: 2011-04-07 11:11+0100\n" "Last-Translator: magma \n" "Language-Team: duck \n" "Language: \n" @@ -21,7 +21,7 @@ msgstr "" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474 #, java-format msgid "To visit the destination in your host database, click here. To visit the conflicting addresshelper destination, click here." -msgstr "Pour aller à la destination de votre base de données d\\''hôtes, cliquez here. Pour aller à la destination de l'aide d'adresse en conflit, cliquez ." +msgstr "Pour aller à la destination de votre base de données d''hôtes, cliquez here. Pour aller à la destination de l''aide d''adresse en conflit, cliquez ici." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931 msgid "Click a link below to look for an address helper by using a \"jump\" service:" From bcbd5bbda6d5c3d0c4ce806d43f29ae7ee15f1ca Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 7 Apr 2011 10:19:53 +0000 Subject: [PATCH 406/463] fix the damned apostrophe and some typos --- apps/susidns/locale/messages_fr.po | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/apps/susidns/locale/messages_fr.po b/apps/susidns/locale/messages_fr.po index df7372188..48301ad1a 100644 --- a/apps/susidns/locale/messages_fr.po +++ b/apps/susidns/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P susidns\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-24 16:49+0000\n" -"PO-Revision-Date: 2011-04-06 17:16+0100\n" +"PO-Revision-Date: 2011-04-07 12:19+0100\n" "Last-Translator: magma \n" "Language-Team: duck \n" "Language: \n" @@ -72,12 +72,12 @@ msgstr "Remplacer" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264 #, java-format msgid "Host name {0} is already in addressbook, unchanged." -msgstr "L\\''hôte {0} est déjà présent: inchangé." +msgstr "L''hôte {0} est déjà présent: inchangé." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266 #, java-format msgid "Host name {0} is already in addressbook with a different destination. Click \"Replace\" to overwrite." -msgstr "L\\''hôte {0} est déjà présent avec une destination différente. Cliquez sur \"Remplacer\"...pour le remplacer." +msgstr "L''hôte {0} est déjà présent avec une destination différente. Cliquez sur \"Remplacer\"...pour le remplacer." #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278 #, java-format @@ -379,11 +379,11 @@ msgstr "La souscription à des sites supplémentaires est aisée: ajoutez-les s #: ../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 "Plus d'infos sur le nommage dans I2P." +msgstr "Plus d'infos sur le nommage dans I2P." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121 msgid "How does the addressbook work?" -msgstr "Comment le carnet d'adresses fonctionne-t-il?" +msgstr "Fonctionnement du carnet d'adresses." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123 msgid "The addressbook application regularly polls your subscriptions and merges their content into your \"router\" addressbook, stored in the hosts.txt file." @@ -403,7 +403,7 @@ msgstr "Le routeur utilise également un carnet privé (privatehosts.txt, non il #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:131 msgid "Hosts in the private addressbook can be accessed by you but their addresses are never distributed to others." -msgstr "Les hôtes du carnet privé ne sont accessibles qu'à vous et leurs adresses ne sont jamais distribuées à personne." +msgstr "Les hôtes du carnet privé ne sont accessibles qu'à vous, et leurs adresses ne sont jamais distribuées à personne." #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:133 msgid "The private addressbook can also be used for aliases of hosts in your other addressbooks." @@ -411,7 +411,7 @@ msgstr "Le carnet privé peut aussi servir à stocker des alias/pseudos pour des #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132 msgid "The subscription file contains a list of i2p URLs." -msgstr "Le fichier de souscriptions contient une liste d'URLs i2p." +msgstr "Le fichier de souscriptions contient une liste d'URLs I2P." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134 msgid "The addressbook application regularly checks this list for new eepsites." @@ -427,7 +427,7 @@ msgstr "L'abonnement par défaut est le fichier hosts.txt de www.i2p2.i2p, mais #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:140 msgid "So it is a good idea to add additional subscriptions to sites that have the latest addresses." -msgstr "C'est donc une bonne idée d'ajouter des souscriptions supplémentaires à des sites qui ont les dernières adresses." +msgstr "C'est donc une bonne idée d'ajouter des souscriptions supplémentaires à des sites qui disposent des dernières adresses." #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142 msgid "See the FAQ for a list of subscription URLs." From 1ada55f0123168ecf8111222a3b26af291a7b44f Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 7 Apr 2011 10:25:06 +0000 Subject: [PATCH 407/463] add how_fr.png --- apps/susidns/src/images/how_fr.png | Bin 0 -> 11524 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/susidns/src/images/how_fr.png diff --git a/apps/susidns/src/images/how_fr.png b/apps/susidns/src/images/how_fr.png new file mode 100644 index 0000000000000000000000000000000000000000..43da5d091e98e8a034b523799d89976080c4a981 GIT binary patch literal 11524 zcmaKSbyOVRvNa*NLvVMO!QI{6-Q9w_J3)iHySuvt8-lyLI|O~?ckg}cy|upY{n0ah zPF2@bpQ^q0Sv?)0ASVtFgAD@$0s=27A)*8V@}=(cpoRkb{1o#`ru{TPI!nrmLau^A z!ay*|8&vFnPC+|JXgYy_(3AWLKc{M~rws84 zJX}E@CzM~2&T*eurcs;Fai>oBwTU{}Hy@2@*%%u#I>EG}@3y?o-HKrgk ztbui8E*P3U0d9_ve>T$XQQH!aNZaYf7bj?HB91QdHrbtcZn>TJwJ}!IHev7Q)5td% z8GBUI-9>B4P-PWzY(UC~?EYCTp;h0|?p)5xC;joRD_Ma@65#QpGbm|6etS4=Mc=Oo+YiK_)U7hN z@t=30ngUxbhVO<|qYh!OHF;`=v2fcv8W|60)i`0BEXgVrI+B#n=h*lH=}O&=VJ8vM z7J%BYg;`?g*7GTD1tJjYI4Xg~#7>o8lzC%vClRlR>NjkJ(vM0*N8q0%!}!mhJe?x! z%Hr72{!oJJAEY=(31x$GS~L7uu71}2A%kJyb@`D@a$2aLQM}^bRAFg(?6Mz=yEnNc zXbnDhb6V~?AAbKK=Cs6YZhe#((_7qrdL4*7CX3ec%X!VP-0b~oFts5Sl43_>f+Wx} zfHT=);mPT=Qq_?@6%p{>bsAHzQ@;khEH^ofILUt|!^Mx4tQ2y6FRFKggEpn}EEHR4 z*B>tXrS(XJ#uRl`|DY9o_Ja3rS(!ATBI?!p3M<0#gI^sHvNoFGcb0A6QjQY64Sz_^ zmcO~s6O}HIdU5swj$wM_4JabUfl(nLoaSkg@wYourG>eKta#HjCtLBU0_${=SVhIU+SM$m)yylQK z0DjQ`H*#(}rx@Wq+6hnmNYd?Y9T?cf{dP@~pW^4WUV7o${k*-u=@qvjflj2k`UCg< zQsd;tZ(y?-N4^6-pEt|A*SUdyx8<5xvx4`8o{7&bKWNEqv3GC~!?Lm&M@4Vd6eN9TgewJ=0d1aVWcJh^c zt|2~bZ?s+)$|R#Y*Fr~@UU;>_ybpIg(>z`A988{ejF#U<<`6FDZWXe^lUm=lW%q>P zU!NBXNaOItK0kE#;*x#4Sce6kQ=9skM!(@Q6#lXU&(K)ai5(VitJq%yuSSzWGG)E= zQ+fN969^hTpzAp`tDJ-iEZWQCdo&_=Z{WTwQAcn#KdLdOF#$e^k{W9YQ!_Q6KtG43 zOKiiwQ|k><-A%qs?nN|caKrh9`0QXgwaiaTVmqm2swS~!-DT8n(e`P2rVFuQ%=08f zQN!{`i(mv~+&gl2DEhTuR;k6M!`*claCfw;H6%|O^)}_ccT~+CMc<#DcGLI_KOpI* zk>CDC{f6S_VKLg7T}-6PsO8+_9rBrn6cf2>on>LLalGjnAv%f4`sUW9YY4uFYF(H> zfwE#)kG7`jHA5#nWX`aD9G?l_ANUakJvOfpesglODWx6GGGjC02uW)Q>Np&CC#74F9+8Xm zgk#s}wkRy=x@ca=p4cn8`^{?;=YU23Al@|rc1-N)Squ5z5eHnhJkU-^VDgOuS;ndr zi*I^%b8c#XS+iHP#~#(!TwiMcG0<$h8#h`QYVs8QX5WYb9H&&f4$NAS)bxT_t|ThsRE1 zFup;oaj+{{Yvy$7Zli4co$&zOCN2SU5?CG!<5;n_a+5Pe4Lko!?Qbl)N^E%7JP3=J zw^s6!suS2;sR)i}n*rSMoV+-u34)mN$Dh(~EexpFV2u;m=ob z)uUk+4PY0pXqHqO#A}G;Gw_0i;BL+K_TyOxI~R&Zn3BQ%opZQtT4q%1MqFJ@(+}%y z)d?K$k(O-Q1)sZJ9rDEnpCN>fK=n!bJ~;YL@JDaUP{K-RSGgK&{FHIZ`dh}vy-Iw z(~oJOd6>-`D=kW6QcJKpU$!F_O^90ppT}Trbjs(8t=)LXGTa+*P*5IkqFKt&G6zKWTo^mc&G0?o zCz(!cfy=t5uvTC1&`kNooyUgf18dD;}QoEr>I)xL(rq=v19{Xy8rgJa0GUZ-^Xh)sP z5GoC};=FX&*eO-Ut!KY!wXTme$S2#G%yv-f?8MVjsJgf02>R=>t?Gh)VN1KbRy*5* zhMT21^D}*Qvyj(F=Dc%>Wz0ZI21mNJ+_WubJVu4m3YO43Af$yA(2EX)B2+>bKrfW} zbS&&qf)*;}47#ST9^m2$^g^z|JjE3^L_$dPEq_ZgPZO3HtKMm0%DV5GCAc)%r&K7R z^YWM9F5u1Bp-JvAet3mNmw$m?J#SI7s2Yhg4Lx34Fx157bAiB{+6XhNYwyNS4LL=e z_ZcoKHt$vky+iDr#MbqM^gBBiQ$J=s2_)X4zAs4qs(dy+e?Kr;f4qD*&Q^UNo|r{wXFLYnoU{gNR%Xdn0_$zc zFA6u`sjy7+X{?Y33|-2t-gkaph(9Y92tMJV_nz;S5ZFR(SKeUwP0*6l^r>y|T`US)dHcbnvrFB9|HbtPi@P)DxF8tS^ zzkWjSvx%U_nZkl&0Ezvj6D*m(=H;rahk;3rzV*Yr+`BSASRX38!#rnXr~s^`f#Q{AfU}cy z);B=%*Y{Lk0=d#(0+o>Gfq4RiCcz{`Ufl@p+a2m=~mfFP{y=}!Y|BxV$>0Pca;OE!YP`2^ze88XSoyY6a`ollQ7d(K) z>IY=H>w1}$divav)%w$`mZw-tTe6kjk3qi}aibrM4FmmTw2RBJGuhd_4sIQl=jptp zce)FlV+z4cb^{!1Ar!}Bf@lbRP^hEl96tAW6gb&A{ojIPjFTwKd$nUhGo`qW@rY*& z2sjnIhEZ@{ruh7=*XK%?}02(OviQ}k>e$i*`kM9o0VrKf$Z&5PRnn;s$ z_G5gW;ihk(hJSH9{-2s01;{03glIV(;k22e@%A!h{qU5Ly!;;S`kRD7%uM?HvR=W`Et zej-Tr4-KT*S^`@i8+39wkvO zn?HBQx~pGfq!Ar3@v(Vr4tGo4<{Yjtx-Lm{B^qDi&mN?!d`wEr%{2OXhcT`x93oHJ z)GP<^3aST~ub7|GYh|YKm1dHm)5WPZ)P`jDz7DQ?K}%bOP1~-iG?UTprq?eI(wPph zX!8ha|0#obwfpUab+5SleDQqXHPmWxQh$R7msJQ>sjjKHtNLK5@9eWJtsSYEdo7|6xs^X*>ug}(G9j>|HWVqBNP zRmCvF+se%!M!txd7LRz<#U-ZgG#$OLo^IFYC_zrxGhQkg`h*0nMpWS8E?~L(S?OPuxZzX0p#6>wwy09J^0_RI!!sU;+MqsGFJ$#gTPr7VBe_ z#)~Ou(H(rzW+fIVLBG>C_Blmv`YEgzco%>?pmChFABv#IxWwcUfzoFZkc=M|>7t4T z$nkcLiF8L>57Yu}&T^w~pi3(mwdJonEarL(r%L^jIF*`6(GFXv(N6y3EtMJCW2+&d za+-1&wiIZ*B7kto6H+O!e3Ry-*!Eopr(+501)ty-^->en#Kmml+HKTbJXd0J#>4O- zE}fP+`E`SzSpwd0p&RxLO#8)yrc@M11o$l&2LXq)C2btK{(W1pL7Q#|Ev$vsl?Iv(-9Z545g2rAo(7lzeH@(WhGRcRlR^rV z_-h`=Wa^N2Ky~OWYC8`3JChX?El5gh{I~A?wIDN_LQn&=qthzGgu=>!)x!U_u!a`D z`-5wQc{xDh_rDd+E+PdvV8)aS`%-MlD{VYD!v?U~K>I;3^!5BQS*Y1T-2PI@68~Ux zF>qeY)mwXaroVt+pZz|3G#*i?d4bBV!;~=>u=3-T&3bXSR$c7rkh!CRhp+DoPnnt+ zZ^hkL_q2=6VV|cYO`4$-)Nbnu`Zo-B%)Z-_VB9^HzznsaBR zg=Agu@zO^^`zknZh4*QZn6w%4W~Y{G;rYQYab!-h=HJpk501-n(ZQI4FpyUbmk8}u zTTbtsUTkg%2XvmlE)d=Ft-p+2ya_1w#2PT32^<-CPSz^<8$!Z$bc_J1I;_c9=R36; z_UolG?xkeA#NbMMVM8bR3eJ+!+EFY%8iv_34m-;MIHP@$hO4;G+h=MnE44tPF!^m^ zZw!P52OoU=0=Af*AQrhk$l<-24}zyz-MgG^w{WFT8pMG7rC-&^V@Nl(z%p>Ph|G@W zu{A$#v%{Kt7(Z!Tol(E30L1C=PA)xn<7c=T?ulY_n(X7eG$|hEuxlE0s$JnQteT&u zL}NkrGESc&mFc;1e`AWX+!zhf^WZUGpp{QgNk*WOXK2Ec??>mw0-LLDI6*rdo5}Z( zouc_Qj`Lw0Db*39hcTAyHO#7bz+6bRQf%TmFEm@w4&9KQHz$}{#@(;| z{rRnFmXcfrGBDMvUnVPDAKvkVyZ>m`(;nfG zX=+3%nOMDLJ4C6WbeG^7{jz(UFs5_WeHyMwhQT)&<~mt%f{(bje?TpTbMw0x^_bn*PQH zns0F5mL&erC?bXaJD&)fpm%QCUh`T6#9yya>6)ZJ$#Geq!OAFhFY^aGO7EF7d);c& zuZ!Bcskhv&9V*)*H2ZzO_DFfOw6V%?B|6Y7#56Y=VhQKN{cCHl9;sv5TA<3ElQ8)w zRdS!gDjzN*)EZE#7Af;>)i)0!G+V7W$iz2X_=$-@iwWEtkwE=1QuIUiHKN|wkN%B4 zuEplJ=kyf9(1ze@pPyv0Iv`BdSr@lch~DW7H=cX~8HA%7S2Y;6g&#kh*CnMJN#WNG zU)A*C^&V=8OZ)h}*^klLAXit)KDtyX@=B6qX?OLib!{?Bw95ih7s_^vPZjs~fE14T8xn}P^U_>Hh(C^5g^#yl(}f9Kw|eQTCRm6XElcPjLe zKYxD!4P^)4&DwNlPjj1u@X_A_JkJy#%Wtn@7W+X!UO`y#T9}93@ZpQ<_iKDquOP)0 zeV1*6o4M!t^D*r%4x+S8t=YUCR-Y?WQ}AaSNMaL0lEBTv@=2Z*i#{lVt=kU7<^vwn7-Nd4Dk- z;{ge^X-eB-r$ zUF;hW{MeZtNz2QX&GMcs84=v(zOov8`nAZfwE5=y6|Xm4ZOQ8R$#LlJ3~*apjGXW4 zD5sbE2$R?1F!Tn&7t%Ju6Y>yL2|b#XEZprh-!tRARU7mTB&Vqv>V};O6wdBoKi$@I zm4Ier&SL3Eu)~1zp5cm(y&dKBLF9*u6s9W}{}B5X7Ed(071J3+HXPtAkV-1$9o(CF zEB3hLio|pJ6B_XQy53*jrc<+kyB8X>L$xBS^X_hzFa=4)pkc;_m}iC+39p|qubCtQeh}zQw<228 z5Pq-jelz^)Rs-FUo3d@|;YQOX@z42gW!!#OLb3Di^SXxMMasein40JnRyv73i??>_ zVkTeki!K?Nm0_mnUZjqJ;1%oc$i;b06y_^Zoe@FN`?{N^A8XJAfvXw;D2g@PV5kP5 z%M_dUa`(bq-Y|x^mr9t60P$`F#nzQKV-CT}F>ZtA!e&?O?3Y59xC#V{G`((W1k z_^OV~3liD#R9Fkuk|_yMsJ5=QQL!mU7YC~j1{$5FJ-~&t^B2)p z7JAm)wbE~L#`^RoB6YEXs$fz8M5ifgy?G@y=?PH=Hye9Ya<*QO@wX;D&3fxD!{Rp<7Qx`fCyv|_q9QynIL&{f^LXH*GY~=ywOPHOr@=eTq>450JW1+oGz#SHs{%8g@zTyIS`gdi znZkL=m{WUN0+f7!(o!#)nrF7FrWimETXo(tB#hTv!k)WJ2Vm;_yy9u2&0rfZS!mFG zYXn!k(Gs+(2?!&V8a=;|rPSJ z@>p`34_~RQ{rPLF_zAl+Z(yPWHu)B6=Ftg9wzu<0P%=V(Rv+vY(4>`(==F=X0Y3|+Z$td}hi(w(5m5}E%_M~`$? z`w9QJW}Y^fbN{{m&~>tH`wW3!W`6_&?gP4gv+uN!|3`Bha#jvH!o8_?*xlvaXp*(@ z;RP#GR}lEO7+KS>Z&R|K4&SCAvfoH_vWmfqgOxWtj1DI(P41`91Y6)9OV!WK(H<8$ zpXYykfa=&W?M1ma3sRrp6|XL-W=H!^^_@)MqGzDn>Ok?6lFR|K-T z3J8v^-2E7+!OJ0dU*)Kj8F*q_IS_NcpPk`Q?@-nSHu+kzs=sI9_RVTs3yM39ibH<6 znD&v$0yGDE6EAjhS<5KX(qy1HaqU;SBrMi5GVBC0(N!?FKZ#U>JCUa%{N@GP2xct~ zna6$34hanPAG$6d!((Yfkdyx+{`6Q#AiTO3PESe9u-#GEGhG*v2wd3<#p0Wth_Tkg%fM)yKfc>V z#9uj_Z3Ft#Dul#k*mrdBXw;5$8b4#>@vfpFpJIS7{rc^;4nv`dtbLW8@--=kCX-L_ zd!KcUPTh_Zz^(H(?@-2+V89@0o-rEBaQcuuOw{HVkM#>48K|$7?g{A4@zl85I0h;s z-&>o%Z@PNtLlPA^FVUkdXE0gf2A)$OOH1Z>F`f=wQ~l&m??KwBV$d^ok^z^_7v3D+qcH2wuRQBFFzXM#F5r%R#fw763;%@mq?NL<@Eyt4 zJ1)oqJTNsrAjSxsT~bxc6XWMYVYPf+i+(_^#~{aApQ_tuv`4)m+xxEgpiWDTmbjeT zI46x-e8rt|1@bPavjUN7$X^7?$#r{*Oy?(S4b=v7?x!nHX}|Ex<- zfCU~9l0@3(s&77YrPr9m2Ox_E5RUOB0GkwLIPiBIDH6bWR;079kk@c*WK;=gk7 zsU@<6IuetU_7=dDy^2Lb;ssK!G>)GKlH#8M?*zCaWdmuHxi1SE8BQ+ey^A1;jp%ac zPg0YtmOgI{Qe;p|q+y=XdcIcuHi<`MaHUsop0VPe5$)$lr0XR0{vS^SVk1049Xzih z><6pvgn)33Foz1`8r1>4N%hxH5&WBp+P}76|E*#F&BE4=9AvNW3$&jtR?0sFnxT%69!TjZMhox63RVd4}|X4mgz zSvc0KyI|>d(pf$?rETt(cmeA1N_3(iNPdgvi7??{O>kY-;qpgWz9>%}RR7Wb;t0Mw zd=Daj2z$p2@3J+*pruQKW{rTEcVi%*-B7puqEkTR4a<8pHIUA8mH(oNmtf0hu2}SS z+Q}nc#(vwYut%-IG*$V6!OLzj6KCq;YCy%;yYDI|_XV$0?s?WC1Lya=ymVLceC(SG z(_8A#pc-Qmf^8+J**`=NthFWcXgoppYccT;qP_Q!g}hM&WsnPN9rpE?)i6p6#rC+q z=TEO!o5O~t*uyQq+1T?da+14dI$L79r1JFO?&q;OXGl#SRCb`l)mTyL7_Oo42juGl z?WcE{Mch&^*ym>Th#z*tSE z$4~TKv89FPf^w#QU#K%#D-Jkb!rubJy%{u{1OO0s=ZFpfq2VZ{w=NhuJ(IAFxi4|s zF(QET=)`W>MLLvB9_T)>G<#v_im@zkD)GhOL`a2;m6#eL_X!xuC?JR8K_(W3xMAhD zA(lP7)fz(1@NlwdVdo@+jCN;Q9*;2FVM!5?=F*{AmRO0qF@Vs{cNj6r3A-;Xq1LSj zE`nnUQ3@|2EA&7w1t;2%ItBrm0|~@2OBV z^4jcy->e~|`qv6_MgGNx;0tPgTXhI+M)5 zCS|VRXGWuk?u0~W(F_7C)n)c5^PPo7Xjv`9Cqz1D5RvOt^3WK+U61|!-7vF3nL!$E zBxGqa?1;2*^=3liWUVHgx6K~}!Kc3tc>91m=XA&gxAVxgyV^yUs%<$$(IvAu*P#B@v5 zk`GE%OA(VZyuMpE!Uw3_?x`dNsY~2nmiweKO?Q9482Rm*Yvk?_gzWQDL?3W-t7kWb z$H_2=VH6MW(Z`h^MC}+r95{Y5RUohK@;Qp(oy3{177Qu13p0fAUQ|# zK6Au?yN}1ni3e1A0E zt7hKAGn*39VZr&=Mp5-#nu53^=B5}wnA-Lyi}AStUgfW`VEp_`?foG=v8m}ZPzl!cR23IuwuqHkqNOAVnx*X{y{O5-r4SwMR?%{}T zv^t+!gb#dRFY0TAN-O;q;*&M?Z-Vj&RZtwCRYm7MRpUoo(LOy6m_E)(ihWg8NFRnz zt!RuB^!ndg=EI%8B>U6h^NIH;cSb9C5J2&EpvQlN$XsWk4(tz?^Lc+vM|fLa_u+#s8z0n1GEBo1raF!ub+ML2F~{DGDzkNGeu z1Kc8x>Qra-d7KC&nZ??G)&vmK#!?IU@){g{F4f8^2=kAs|1(O^`vLQ8Mp zes?MCrZEbjS!7-i%&LB=_UDPcWTg2CO@XKbZZ2`u`g}0TBQXDrp2l9*o}e+!DtF;Q zv*CzVO~An4z_q8kh-JRAtOPpzAW$s3Hn`P5z^;(wHzPgUD0R!G+d@fp#+NsvC`31g zmL$i0e*e8>$UKwM3Dr8LU!&wEt+;vhfd)!gM8;6$SYF8#CvU;{k+}eDwOs2kH}IuQ zD2q_FsJW=qI?xvSb_&S>mQiSK4kZpqG%v{mMvJtn7sZ&LElsV%M!*CF*BLk^*I7^D zFLg$zdqeeo*sWHwXyS4TtK^wJ6)rN%6cLFkz2wjAkd+!wPZ_BnyZnbHw^IW5*)92s zk!KX|6vTY(4>PrZ&#T9zs Date: Thu, 7 Apr 2011 10:32:34 +0000 Subject: [PATCH 408/463] fix the damned apostrophe --- apps/susimail/locale/messages_fr.po | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/susimail/locale/messages_fr.po b/apps/susimail/locale/messages_fr.po index e805b26b8..a77b034d8 100644 --- a/apps/susimail/locale/messages_fr.po +++ b/apps/susimail/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P susimail\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-24 16:49+0000\n" -"PO-Revision-Date: 2011-04-06 17:20+0100\n" +"PO-Revision-Date: 2011-04-07 12:31+0100\n" "Last-Translator: magma \n" "Language-Team: duck \n" "Language: \n" @@ -29,7 +29,7 @@ msgstr "Avertissement: pas d'encodage de transfert trouvé: retour en 7bits." #: src/src/i2p/susi/webmail/WebMail.java:478 #, java-format msgid "No encoder found for encoding \\''{0}\\''." -msgstr "Pas d\\''encodeur trouvé pour encoder \\''{0}\\''." +msgstr "Pas d''encodeur trouvé pour encoder \\''{0}\\''." #: src/src/i2p/susi/webmail/WebMail.java:484 msgid "Warning: no charset found, fallback to US-ASCII." @@ -132,12 +132,12 @@ msgstr "ID de message incorrecte." #: src/src/i2p/susi/webmail/WebMail.java:958 #, java-format msgid "No Encoding found for {0}" -msgstr "Pas d\\''encodage trouvé pour {0}" +msgstr "Pas d''encodage trouvé pour {0}" #: src/src/i2p/susi/webmail/WebMail.java:962 #, java-format msgid "Could not encode data: {0}" -msgstr "Impossible d\\''encoder les données: {0}" +msgstr "Impossible d''encoder les données: {0}" #: src/src/i2p/susi/webmail/WebMail.java:967 #, java-format @@ -204,7 +204,7 @@ msgstr "Adresse d'expéditeur correcte non trouvée" #: src/src/i2p/susi/webmail/WebMail.java:1400 #, java-format msgid "Found no valid address in \\''{0}\\''." -msgstr "Pas d\\''adresse correcte dans \\''{0}\\''." +msgstr "Pas d''adresse correcte dans \\''{0}\\''." #: src/src/i2p/susi/webmail/WebMail.java:1419 msgid "No recipients found." From eaee55e3a9fb531c64ba467fdcf23931fb3aa1e6 Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 7 Apr 2011 11:45:30 +0000 Subject: [PATCH 409/463] fix the damned apostrophe and some better translations for other strings --- apps/routerconsole/locale/messages_fr.po | 110 +++++++++++------------ 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index f79625a96..fd7840248 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-26 08:34+0000\n" -"PO-Revision-Date: 2011-04-06 21:42+0100\n" +"PO-Revision-Date: 2011-04-07 13:44+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -156,7 +156,7 @@ msgstr "Réamorçage en cours" msgid "Reseed fetched only 1 router." msgid_plural "Reseed fetched only {0} routers." msgstr[0] "Le réamorçage n'a trouvé qu'un seul routeur." -msgstr[1] "Le réamorçage n\\''a trouvé que {0} routeurs." +msgstr[1] "Le réamorçage n''a trouvé que {0} routeurs." #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:148 msgid "Reseed failed." @@ -165,7 +165,7 @@ msgstr "Échec de réamorçage" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:149 #, java-format msgid "See {0} for help." -msgstr "Voir {0} pour l'aide." +msgstr "Voir {0} pour l''aide." #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:150 msgid "reseed configuration page" @@ -178,7 +178,7 @@ msgstr "Réamorçage: collecte des URL sources." #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:335 #, java-format msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." -msgstr "Réamorçage: collecte routerInfo depuis l\\''URL source ({0} réussie, {1} erreurs)." +msgstr "Réamorçage: collecte routerInfo depuis l''URL source ({0} réussie, {1} erreurs)." #: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:512 msgid "NetDb entry" @@ -260,7 +260,7 @@ msgstr "Nous avons proposé de les présenter (aide d'autres pairs à passer leu #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "How long since a packet has been received / sent" -msgstr "Combien de temps écoulé depuis la dernière réception/émission d'un paquet " +msgstr "Temps écoulé depuis la dernière réception/émission d'un paquet " #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739 @@ -277,7 +277,7 @@ msgstr "Entrant/Sortant" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 msgid "The smoothed inbound / outbound transfer rate (KBytes per second)" -msgstr "Le taux de transfert entrant/sortant lissé (ko/s)" +msgstr "Taux de transfert entrant/sortant lissé (ko/s)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 msgid "How long ago this connection was established" @@ -297,7 +297,7 @@ msgstr "Dérive" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 msgid "The difference between the peer's clock and your own" -msgstr "L'écart de temps entre l'horloge du pair et la votre" +msgstr "Écart de temps entre l'horloge du pair et la votre" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 msgid "The congestion window, which is how many bytes can be sent without an acknowledgement" @@ -309,15 +309,15 @@ msgstr "Nombre de messages en attente d'acquittement" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 msgid "The maximum number of concurrent messages to send" -msgstr "Le nombre maximum de messages simultanés à envoyer" +msgstr "Nombre maximum de messages simultanés à envoyer" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 msgid "The number of pending sends which exceed congestion window" -msgstr "Le nombre d'envois en attente qui débordent de la fenêtre de congestion" +msgstr "Nombre d'envois en attente qui débordent de la fenêtre de congestion" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 msgid "The slow start threshold" -msgstr "Le seuil de démarrage lent" +msgstr "Seuil de démarrage lent" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 msgid "The round trip time in milliseconds" @@ -330,7 +330,7 @@ msgstr "Deviat." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 msgid "The standard deviation of the round trip time in milliseconds" -msgstr "La dérive standard d'aller-retour en ms" +msgstr "Dérive standard d'aller-retour en ms" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 msgid "The retransmit timeout in milliseconds" @@ -382,7 +382,7 @@ msgstr "Le nombre de paquets en double reçus du pair" #: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:627 #, java-format msgid "Excessive clock skew: {0}" -msgstr "Décalage excessif de l\\''horloge: {0}" +msgstr "Décalage excessif de l''horloge: {0}" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732 msgid "NTCP connections" @@ -554,7 +554,7 @@ msgstr "Perte de tunnels: Forte charge" #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:708 msgid "Dropping tunnel requests: Queue time" -msgstr "Perte de tunnels: Temps en file d'attente" +msgstr "Demandes de fermeture de tunnel: temps en file d'attente" #. 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!! @@ -1549,7 +1549,7 @@ msgstr "Greffon {0} arrêté" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:103 #, java-format msgid "Error stopping plugin {0}" -msgstr "Erreur d\\''arrêt du greffon {0}" +msgstr "Erreur d''arrêt du greffon {0}" #. label (IE) #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:124 @@ -2013,7 +2013,7 @@ msgstr "Banni manuellement via {0}" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24 msgid "banned until restart" -msgstr "interdit jusqu'au rédémarrage" +msgstr "banni jusqu'au redémarrage" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:27 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:38 @@ -2431,7 +2431,7 @@ msgstr "Télécharger, vérifier et redémarrer" #: ../java/src/net/i2p/router/web/FormHandler.java:176 msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit." -msgstr "Soumission de formulaire incorrecte: vous avez peut-être utilisé le bouton 'Page précédente' ou 'Rechargement' de votre navigateur. Merci de renvoyer." +msgstr "Soumission de formulaire incorrecte: vous avez peut-être utilisé le bouton \"Page précédente\" ou \"Rechargement\" de votre navigateur. Merci de renvoyer." #: ../java/src/net/i2p/router/web/GraphHelper.java:93 msgid "Combined bandwidth graph" @@ -2694,7 +2694,7 @@ msgstr "Actualités vérifiés il y a {0}" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:77 #, java-format msgid "Cannot check, plugin {0} is not installed" -msgstr "Non contrôlable, le greffon {0} n'est pas installé" +msgstr "Non vérifiable, le greffon {0} n''est pas installé" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:129 #, java-format @@ -2800,7 +2800,7 @@ msgstr "La signature du greffon téléchargé ne correspond pas à celle de celu #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:320 #, java-format msgid "Downloaded plugin version {0} is not newer than installed plugin" -msgstr "La version {0} du greffon téléchargé n'est pas plus récente que celle installée" +msgstr "La version {0} du greffon téléchargé n''est pas plus récente que celle installée" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:327 #, java-format @@ -2819,7 +2819,7 @@ msgstr "Ce greffon est seulement une mise à jour, mais le greffon prérequis n' #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:364 #, java-format msgid "Failed to install plugin in {0}" -msgstr "Échec d\\''installation du greffon {0}" +msgstr "Échec d''installation du greffon {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:371 #, java-format @@ -3079,7 +3079,7 @@ msgstr "Le bannissement temporaire expire dans {0}" #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:64 #, java-format msgid "Banned until restart or in {0}" -msgstr "Banni jusqu\\''au redémarrage ou dans {0}" +msgstr "Banni jusqu''au redémarrage ou dans {0}" #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:76 msgid "unban now" @@ -3139,7 +3139,7 @@ msgstr "Ces statistiques sont initialement destinées au développement et au d #: ../java/src/net/i2p/router/web/StatsGenerator.java:106 #: ../java/src/net/i2p/router/web/StatsGenerator.java:157 msgid "No lifetime events" -msgstr "Aucun d'événement de durée de vie" +msgstr "Aucun évènement de durée de vie" #: ../java/src/net/i2p/router/web/StatsGenerator.java:117 msgid "frequency" @@ -3151,7 +3151,7 @@ msgstr "Moyenne glissante d'évènements par période" #: ../java/src/net/i2p/router/web/StatsGenerator.java:125 msgid "Highest events per period" -msgstr "maximum d'évènements par période" +msgstr "Maximum d'évènements par période" #. if (showAll && (curFreq.getMaxAverageEventsPerPeriod() > 0) && (curFreq.getAverageEventsPerPeriod() > 0) ) { #. buf.append("(current is "); @@ -3199,15 +3199,15 @@ msgstr[1] "Il y a eu {0} évènements sur cette période." #: ../java/src/net/i2p/router/web/StatsGenerator.java:203 #, java-format msgid "The period ended {0} ago." -msgstr "La période s\\''est terminée il y a {0}." +msgstr "La période s''est terminée il y a {0}." #: ../java/src/net/i2p/router/web/StatsGenerator.java:205 msgid "No events" -msgstr "pas d'événement" +msgstr "Aucun évènement" #: ../java/src/net/i2p/router/web/StatsGenerator.java:211 msgid "Average event count" -msgstr "nombre moyen d'évènements" +msgstr "Nombre moyen d'évènements" #: ../java/src/net/i2p/router/web/StatsGenerator.java:213 msgid "Events in peak period" @@ -3219,7 +3219,7 @@ msgstr "Graphique de données" #: ../java/src/net/i2p/router/web/StatsGenerator.java:223 msgid "Graph Event Count" -msgstr "nombre d'évènements de graphiques" +msgstr "Nombre d'évènements de graphiques" #: ../java/src/net/i2p/router/web/StatsGenerator.java:226 msgid "Export Data as XML" @@ -3360,7 +3360,7 @@ msgstr "L'identité unique de votre routeur commence par" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179 msgid "never reveal it to anyone" -msgstr "NE la révélez JAMAIS à PERSONNE !" +msgstr "NE la révélez JAMAIS à PERSONNE ! (Cliquez pour l'afficher)" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:181 msgid "show" @@ -3450,7 +3450,7 @@ msgstr "Rapport de partage" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:410 msgid "What's in the router's job queue?" -msgstr "Montrer les tâches du routeur qui sont à traiter " +msgstr "Afficher la file d'attente de travaux du routeur. " #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412 msgid "Congestion" @@ -4043,7 +4043,7 @@ msgstr "Taux de bande passante de réception faible" #. bw.recvRate #: ../java/strings/Strings.java:102 msgid "Low-level bandwidth send rate" -msgstr "Taux de bande passante d'émission faible" +msgstr "Taux de bande passante d'émission de bas niveau" #. bw.sendRate #: ../java/strings/Strings.java:103 @@ -4193,7 +4193,7 @@ msgstr "NOTE" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:361 #, java-format msgid "You have configured I2P to share only {0} KBps." -msgstr "Vous avez configuré I2P pour qu\\''il ne partage que {0} ko/s." +msgstr "Vous avez configuré I2P pour qu''il ne partage que {0} ko/s." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:364 msgid "I2P requires at least 12KBps to enable sharing. " @@ -4264,7 +4264,7 @@ msgstr "Configuration IP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:409 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 msgid "Externally reachable hostname or IP address" -msgstr "Adresse IP ou nom d'hôte qui est joignable depuis l'extérieur" +msgstr "Adresse IP ou nom d'hôte joignable de l'extérieur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:413 msgid "Use all auto-detect methods" @@ -4272,7 +4272,7 @@ msgstr "Utiliser toutes les méthodes d'auto-détection" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 msgid "Disable UPnP IP address detection" -msgstr "Desactiver la détection de l'adresse IP par UPnP" +msgstr "Désactiver la détection de l'adresse IP par UPnP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:421 msgid "Ignore local interface IP address" @@ -4280,12 +4280,12 @@ msgstr "Ignorer l'adresse IP de l'interface locale" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:425 msgid "Use SSU IP address detection only" -msgstr "Utiliser seulement SSU pour détecter l'adresse IP" +msgstr "N'utiliser que la détection d'adresse IP par SSU" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:429 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 msgid "Specify hostname or IP" -msgstr "Saisir l'adresse IP ou le nom de l'hôte" +msgstr "Saisir l'adresse IP ou le nom d'hôte" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 msgid "Select Interface" @@ -4305,7 +4305,7 @@ msgstr "Action quand l'IP change" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:457 msgid "Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity" -msgstr "Mode IP publique dynamique/PC portable: modifie l'identité du router et le port UDP quand l'IP change pour améliorer l'anonymat" +msgstr "Mode IP publique dynamique/PC portable: modifie l'identité du router et le port UDP quand l'IP publique change, pour améliorer l'anonymat" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 msgid "Experimental" @@ -4325,7 +4325,7 @@ msgstr "Configuration TCP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:483 msgid "Use auto-detected IP address" -msgstr "Utiliser l'adresse IP qui a été auto-détectée" +msgstr "Utiliser l'adresse IP auto-détectée" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:517 @@ -4338,7 +4338,7 @@ msgstr "si vous n'êtes pas bloqué par un pare-feu" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 msgid "Always use auto-detected IP address (Not firewalled)" -msgstr "Toujours utiliser l'adresse IP qui a été auto-détectée (non bloquée)" +msgstr "Toujours utiliser l'adresse IP auto-détectée (non bloqué par pare-feu)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:503 msgid "Disable inbound (Firewalled)" @@ -4389,7 +4389,7 @@ msgstr "If vous pouvez, ouvrez un port dans votre pare-feu pour recevoir les paq #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:542 msgid "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic." -msgstr "Sinon, I2P est compatible UPnP (Universal Plug and Play) et perçage de trou UDP par \"introductions SSU\" pour relayer le trafic." +msgstr "Sinon, I2P est compatible UPnP (Universal Plug and Play) et perçage de trou UDP par \"représentations SSU\" pour relayer le trafic." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:544 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." @@ -4429,11 +4429,11 @@ msgstr "Il y a plusieurs routeurs/pare-feux entre le routeur I2P et l'Internet" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 msgid "UPnP device change, reset, or address change" -msgstr "Un changement d'appareil UPnP, un redémarrage, ou un changement d'adresse IP" +msgstr "Changement d'appareil UPnP, redémarrage, ou changement d'adresse IP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:571 msgid "Review the UPnP status here." -msgstr "Vérifier l'état de UPnP ici." +msgstr "Vérifier l'état d'UPnP ici." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:573 msgid "UPnP may be enabled or disabled above, but a change requires a router restart to take effect." @@ -4441,7 +4441,7 @@ msgstr "UPnP peut être activé ou desactivé au-dessus, mais afin de prendre en #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575 msgid "Hostnames entered above will be published in the network database." -msgstr "Les noms d'hôtes qui ont été saisis au-dessus seront publié dans la base de données du réseau I2P." +msgstr "Les noms d'hôtes saisis ci-dessus seront publié dans la base de données du réseau I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 msgid "They are not private." @@ -4489,7 +4489,7 @@ msgstr "Cependant, si ça se reproduit systématiquement, vous devez vérifier q #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 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 fonctionne très bien derrière un pare-feu, ça n'est pas un problème. Derrière un pare-feu, le routeur utilise des \"présentateurs\" pour relayer les connexions entrantes." +msgstr "I2P fonctionne très bien derrière un pare-feu, ça n'est pas un problème. Derrière un pare-feu, le routeur utilise des \"représentants\" pour relayer les connexions entrantes." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 msgid "However, you will get more participating traffic and help the network more if you can open your firewall(s)." @@ -4497,11 +4497,11 @@ msgstr "Cependant, vous obtiendrez plus de trafic participants et aiderez plus l #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 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 "S vous pensez que vous l'avez déjà fait, n'oubliez pas que vous avez peut-être un pare-feu matériel et logiciel, ou que vous êtes derrière un pare-feu supplémentaire sur lequel vous n'avez aucun contrôle (p.e. en entreprise)." +msgstr "Si vous pensez que vous l'avez déjà fait, n'oubliez pas que vous avez peut-être un pare-feu matériel et logiciel, ou que vous êtes derrière un pare-feu supplémentaire sur lequel vous n'avez aucun contrôle (p.e. en entreprise)." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 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 "De plus, certains pare-feux ne peuvent pas transférer correctement TCP et UDP sur le même port, ou il pourrait y avoir d'autres limitations ou des bogues qui les empêcheraient de passer le trafic à I2P." +msgstr "De plus, certains pare-feux ne peuvent pas transférer correctement TCP et UDP sur le même port, ou pourraient avoir d'autres limitations ou des bogues qui les empêcheraient de passer le trafic à I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 msgid "The router is currently testing whether your UDP port is firewalled." @@ -4509,7 +4509,7 @@ msgstr "Le routeur teste actuellement si votre port UDP est bloqué." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 msgid "The router is not configured to publish its address, therefore it does not expect incoming connections." -msgstr "Le routeur n'est pas configuré pour publier son adresse, donc il n'attend pas de connexions entrantes." +msgstr "Le routeur n'est pas configuré pour publier son adresse : il n'attend donc pas de connexions entrantes." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 msgid "WARN - Firewalled and Fast" @@ -4831,7 +4831,7 @@ msgstr "Nom du fichier des historiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:325 msgid "(the symbol '@' will be replaced during log rotation)" -msgstr "(le caractère '@' sera remplacé lors des rotations d'historiques)" +msgstr "(le caractère \"@\" sera remplacé lors des rotations d'historiques)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:327 msgid "Log record format" @@ -4839,7 +4839,7 @@ msgstr "Format des enregistrements d'historiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:331 msgid "(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" -msgstr "(utilisez 'd' = date, 'c' = classe, 't' = tâche, 'p' = priorité, 'm' = message)" +msgstr "(utilisez \"d\" = date, \"c\" = classe, \"t\" = tâche, \"p\" = priorité, \"m\" = message)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:333 msgid "Log date format" @@ -4847,7 +4847,7 @@ msgstr "Format de date des historiques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:337 msgid "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)" -msgstr "('MM' = mois, 'dd' = jour, 'HH' = heure, 'mm' = minute, 'ss' = seconde, 'SSS' = milliseconde)" +msgstr "(\"MM\" = mois, \"dd\" = jour, \"HH\" = heure, \"mm\" = minute, \"ss\" = seconde, \"SSS\" = milliseconde)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 msgid "Max log file size" @@ -5065,11 +5065,11 @@ msgstr "Débogage" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:367 msgid "View the job queue" -msgstr "Voir la file d'attente " +msgstr "Afficher la file d'attente de travaux" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:371 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 "À l'occasion, il peut être utile de déboguer I2P à l'aide d'un cliché de tâche. Pour ce faire, merci de sélectionner l'option suivante de passer en revue le résultat dans l'historique du service Wrapper." +msgstr "À l'occasion, il peut être utile de déboguer I2P à l'aide d'un cliché de tâches. Pour ce faire, cliquer sur le bouton ci-dessous et examiner le résultat dans l'historique du service Wrapper." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:377 msgid "Launch browser on router startup?" @@ -5174,7 +5174,7 @@ msgstr "configuration de la console" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:262 msgid "I2P UI Configuration" -msgstr "Réglages de l'interface" +msgstr "Préférences de la console" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:314 msgid "Router Console Theme" @@ -5358,7 +5358,7 @@ msgstr "file d'attente" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:248 msgid "I2P Router Job Queue" -msgstr "File d'attente de travail du routeur" +msgstr "File d'attente de travaux du routeur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:111 msgid "logs" @@ -5394,11 +5394,11 @@ msgstr "Application web introuvable" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:252 msgid "Web Application Not Running" -msgstr "Application web inactive" +msgstr "Application web non lancée" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:254 msgid "The requested web application is not running." -msgstr "L'application web demandée est inactive." +msgstr "L'application web demandée n'est pas lancée." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:256 msgid "Please visit the config clients page to start it." @@ -5414,7 +5414,7 @@ msgstr "Pairs I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:111 msgid "peer profiles" -msgstr "profile de pairs" +msgstr "profils de pairs" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:248 msgid "I2P Network Peer Profiles" From 1ca63be423993f252c41ba96026ba47f8b69303a Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 7 Apr 2011 14:31:41 +0000 Subject: [PATCH 410/463] final tweaks after tests --- apps/routerconsole/locale/messages_fr.po | 38 ++++++++++++------------ 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index fd7840248..02ac04bbe 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-26 08:34+0000\n" -"PO-Revision-Date: 2011-04-07 13:44+0100\n" +"PO-Revision-Date: 2011-04-07 16:29+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -149,7 +149,7 @@ msgstr "Refus des tunnels" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:125 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 msgid "Reseeding" -msgstr "Réamorçage en cours" +msgstr "Réamorçage" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:141 #, java-format @@ -1509,12 +1509,12 @@ msgstr "Erreur pendant l'enregistrement de la configuration (appliquée mais non #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:355 msgid "Save Client Configuration" -msgstr "Sauvegarder Configuration Client " +msgstr "Enregistrer la configuration du client " #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:39 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427 msgid "Save Interface Configuration" -msgstr "Sauvegarder la configuration de l'interface" +msgstr "Enregistrer la configuration de l'interface" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:441 @@ -1869,7 +1869,7 @@ msgstr "Porte-clés" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 msgid "Logging" -msgstr "Enregistrements" +msgstr "Historiques" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:107 @@ -2239,7 +2239,7 @@ msgstr "Mise à jour des réglages pour tous les groupes." #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:140 msgid "Exploratory tunnel configuration saved successfully." -msgstr "Configuration du tunnel exploratoire a été sauvegardé avec succès." +msgstr "Configuration des tunnels exploratoires sauvegardée avec succès." #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:36 @@ -2285,7 +2285,7 @@ msgstr "AVERTISSEMENT de PERFORMANES: les réglages incluent des tunnels très l #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:85 msgid "PERFORMANCE WARNING - Settings include high tunnel quantities." -msgstr "AVERTISSEMENT de PERFORMANES: les réglages incluent de grandes quantités de tunnels!" +msgstr "AVERTISSEMENT de PERFORMANES: les réglages incluent un grand nombre de tunnels!" #. buf.append("
    \n"); #. tunnel depth @@ -2296,17 +2296,17 @@ msgstr "Longueur" #. tunnel depth variance #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:109 msgid "Randomization" -msgstr "Randomisation" +msgstr "Aléas" #. tunnel quantity #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:133 msgid "Quantity" -msgstr "Quantité" +msgstr "Nombre" #. tunnel backup quantity #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:150 msgid "Backup quantity" -msgstr "Quantité de secours" +msgstr "Secours" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:172 msgid "Inbound options" @@ -3438,11 +3438,11 @@ msgstr "Utilisée" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 msgid "Exploratory" -msgstr "Exploratoire" +msgstr "Exploratoires" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:398 msgid "Participating" -msgstr "Participant" +msgstr "Participants" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:404 msgid "Share ratio" @@ -3454,7 +3454,7 @@ msgstr "Afficher la file d'attente de travaux du routeur. " #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412 msgid "Congestion" -msgstr "Liste des tâches" +msgstr "Charge" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 msgid "Job lag" @@ -3500,7 +3500,7 @@ msgstr "WARN - pare-feu avec TCP entrant activé" #: ../java/src/net/i2p/router/web/SummaryHelper.java:130 msgid "WARN-Firewalled and Floodfill" -msgstr "WARN - Pare-feu et Floodfill" +msgstr "WARN - Pare-feu et Diffuseur" #: ../java/src/net/i2p/router/web/SummaryHelper.java:132 msgid "WARN-Firewalled and Fast" @@ -4449,11 +4449,11 @@ msgstr "Ils ne sont pas privés." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 msgid "Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1." -msgstr "En plus, ne saisissez pas une adresse IP privée tel que 127.0.0.1 ou 192.168.1.1." +msgstr "De plus, ne saisissez pas une adresse IP privée tel que 127.0.0.1 ou 192.168.1.1." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 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 "Si vous saisissez une mauvaise adresse IP ou nom d'hôte, ou configurer votre NAT ou pare-feu incorrectement, votre intégration avec le réseau I2P dégradera substantiellement." +msgstr "Si vous saisissez une mauvaise adresse IP ou nom d'hôte, ou configurez votre NAT ou pare-feu incorrectement, votre intégration avec le réseau I2P sera substantiellement dégradée." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 msgid "When in doubt, leave the settings at the defaults." @@ -5154,15 +5154,15 @@ msgstr "Modifiez ces réglages avec prudence, et fignolez-les en cas de problèm #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:351 msgid "Exploratory tunnel setting changes are stored in the router.config file." -msgstr "Les modifications de réglages des tunnels exploratoires sont enregistrés dans le fichier router.config." +msgstr "Les modifications des réglages de tunnels exploratoires sont enregistrés dans le fichier router.config." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:354 msgid "Client tunnel changes are temporary and are not saved." -msgstr "Les modifications de tunnel client sont temporaires et ne sont pas enregistrées." +msgstr "Les modifications des tunnels de client partagé sont temporaires et ne sont pas enregistrées." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:356 msgid "To make permanent client tunnel changes see the" -msgstr "Pour faire de modifications permanentes à un tunnel client, voyez la" +msgstr "Pour faire de modifications permanentes à un tunnel client particulier, voyez la" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:358 msgid "i2ptunnel page" From e0c0f2a3504d703c9960645dfabd9cdbfc601b73 Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 7 Apr 2011 14:32:14 +0000 Subject: [PATCH 411/463] final tweaks after tests --- apps/i2ptunnel/locale/messages_fr.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/i2ptunnel/locale/messages_fr.po b/apps/i2ptunnel/locale/messages_fr.po index ea5cdafa0..91235b784 100644 --- a/apps/i2ptunnel/locale/messages_fr.po +++ b/apps/i2ptunnel/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P i2ptunnel\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-25 15:21+0000\n" -"PO-Revision-Date: 2011-04-07 11:11+0100\n" +"PO-Revision-Date: 2011-04-07 16:30+0100\n" "Last-Translator: magma \n" "Language-Team: duck \n" "Language: \n" @@ -221,7 +221,7 @@ msgstr "Options de réseau avancées" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224 msgid "(NOTE: when this client proxy is configured to share tunnels, then these options are for all the shared proxy clients!)" -msgstr "(NOTE: quand ce mandataire client est configuré pour partager les tunnels, ces options sont appliquées à tous les mandataires clients partagés)" +msgstr "(ATTENTION : quand ce mandataire client est configuré pour partager les tunnels, ces options sont appliquées à tous les mandataires clients partagés)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:226 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245 @@ -410,7 +410,7 @@ msgstr "Activer" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:412 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:485 msgid "Reduced tunnel count" -msgstr "Tunnels réduits" +msgstr "Réduire à" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:416 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:436 From a5f576d912f84f0bf01f01134c94bd3ba3fd8375 Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 7 Apr 2011 14:45:25 +0000 Subject: [PATCH 412/463] final tweaks after tests --- apps/routerconsole/locale/messages_fr.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 02ac04bbe..dfbcbad71 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-26 08:34+0000\n" -"PO-Revision-Date: 2011-04-07 16:29+0100\n" +"PO-Revision-Date: 2011-04-07 16:44+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -2415,7 +2415,7 @@ msgstr "Jamais" #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:90 msgid "Every" -msgstr "Chaque" +msgstr "Tou(te)s les" #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:108 msgid "Notify only" From 8a74eceac3e5d2decd0ba2ed55011c27b290f0fd Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 7 Apr 2011 15:04:56 +0000 Subject: [PATCH 413/463] final tweaks after tests --- apps/routerconsole/locale/messages_fr.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index dfbcbad71..42a48239c 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-26 08:34+0000\n" -"PO-Revision-Date: 2011-04-07 16:44+0100\n" +"PO-Revision-Date: 2011-04-07 17:04+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" From 5b7896d16ed537edad2867b31c4f5f03b9b45a13 Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 7 Apr 2011 19:04:43 +0000 Subject: [PATCH 414/463] final tweaks after tests --- apps/routerconsole/locale/messages_fr.po | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 42a48239c..dea5d580a 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-26 08:34+0000\n" -"PO-Revision-Date: 2011-04-07 17:04+0100\n" +"PO-Revision-Date: 2011-04-07 21:04+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -3628,7 +3628,7 @@ msgstr "De" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:72 msgid "Receive on" -msgstr "Réception active" +msgstr "Reçus" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 msgid "Expiration" @@ -3636,11 +3636,11 @@ msgstr "Expiration" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 msgid "Send on" -msgstr "Envoyer activé" +msgstr "Envoyés" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 msgid "To" -msgstr "à" +msgstr "À" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:74 msgid "Rate" @@ -3661,11 +3661,11 @@ msgstr "délai de grâce" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:117 msgid "Outbound Endpoint" -msgstr "Endpoint Sortant" +msgstr "Point terminal sortant" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:119 msgid "Inbound Gateway" -msgstr "Gateway Entrant" +msgstr "Passerelle entrante" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:121 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162 @@ -3696,7 +3696,7 @@ msgstr "Point terminal" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:205 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:212 msgid "Build in progress" -msgstr "Création d'un tunnel en cours" +msgstr "Création en cours" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:205 msgid "inbound" @@ -3708,15 +3708,15 @@ msgstr "sortant" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:217 msgid "No tunnels; waiting for the grace period to end." -msgstr "Pas de tunnel; attendant la fin du délai de grâce" +msgstr "Pas de tunnel; attente de la fin du délai de grâce" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:219 msgid "in" -msgstr "entrer" +msgstr "entrés" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:220 msgid "out" -msgstr "sortir" +msgstr "sortis" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:237 msgid "Tunnel Counts By Peer" From 6acef90087e4f5e4320a9c401b0166467826683e Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 7 Apr 2011 21:26:17 +0000 Subject: [PATCH 415/463] final tweak --- apps/routerconsole/locale/messages_fr.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index dea5d580a..70aaf3125 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-26 08:34+0000\n" -"PO-Revision-Date: 2011-04-07 21:04+0100\n" +"PO-Revision-Date: 2011-04-07 23:11+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -3628,7 +3628,7 @@ msgstr "De" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:72 msgid "Receive on" -msgstr "Reçus" +msgstr "Reçoit sur" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 msgid "Expiration" @@ -3636,7 +3636,7 @@ msgstr "Expiration" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 msgid "Send on" -msgstr "Envoyés" +msgstr "Envoie sur" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 msgid "To" From b19006690c602ad59ffaf5dd02f16987ca3f7019 Mon Sep 17 00:00:00 2001 From: m1xxy Date: Fri, 8 Apr 2011 19:12:05 +0000 Subject: [PATCH 416/463] tweaks es --- apps/i2psnark/locale/messages_es.po | 6 +- apps/routerconsole/locale/messages_es.po | 994 ++++++----------------- 2 files changed, 267 insertions(+), 733 deletions(-) diff --git a/apps/i2psnark/locale/messages_es.po b/apps/i2psnark/locale/messages_es.po index 8dc4d826a..d92024557 100644 --- a/apps/i2psnark/locale/messages_es.po +++ b/apps/i2psnark/locale/messages_es.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2011-03-03 18:28+0000\n" -"PO-Revision-Date: 2011-04-02 22:36+0100\n" +"PO-Revision-Date: 2011-04-03 01:46+0100\n" "Last-Translator: mixxy \n" "Language-Team: Spanish (Castilian) \n" "MIME-Version: 1.0\n" @@ -41,7 +41,7 @@ msgstr "El límite mínimo de ancho de banda para la subida está en {0} kbyte/s #: ../java/src/org/klomp/snark/SnarkManager.java:335 #, java-format msgid "Startup delay changed to {0}" -msgstr "La Espera del inicio fue cambiada a {0}." +msgstr "Tiempo de espera al inicio fue cambiada a {0}." #: ../java/src/org/klomp/snark/SnarkManager.java:386 msgid "I2CP and tunnel changes will take effect after stopping all torrents" @@ -710,7 +710,7 @@ msgstr "Tema" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312 msgid "Startup delay" -msgstr "Demora del arranque" +msgstr "Tiempo de espera al arrancar" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314 msgid "minutes" diff --git a/apps/routerconsole/locale/messages_es.po b/apps/routerconsole/locale/messages_es.po index ea5807818..61eb65b84 100644 --- a/apps/routerconsole/locale/messages_es.po +++ b/apps/routerconsole/locale/messages_es.po @@ -3,14 +3,14 @@ # 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\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2011-03-21 18:01+0000\n" -"PO-Revision-Date: 2011-03-22 15:45+0000\n" -"Last-Translator: punkibastardo \n" +"PO-Revision-Date: 2011-04-08 03:22+0100\n" +"Last-Translator: mixxy \n" "Language-Team: Spanish (Castilian) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -69,7 +69,7 @@ msgstr[1] "{0} horas" #: ../../../core/java/src/net/i2p/data/DataHelper.java:1158 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:314 msgid "n/a" -msgstr "n/a" +msgstr "n/d" #. days #. Note to translators: quantity will always be greater than one. @@ -97,7 +97,7 @@ msgstr "IP baneada" #: ../../../router/java/src/net/i2p/router/Blocklist.java:739 #, java-format msgid "IP banned by blocklist.txt entry {0}" -msgstr "IP baneada por la blocklist.txt {0}" +msgstr "IP baneada por la blocklist.txt: {0}" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:92 msgid "Rejecting tunnels: Shutting down" @@ -105,7 +105,7 @@ msgstr "rechazando túneles: apagando" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:141 msgid "Rejecting tunnels: High message delay" -msgstr "rechazando túneles: alta latencia de los mensajes" +msgstr "rechazando túneles: mucha tardanza de los mensajes" #. hard to do {0} from here #. setTunnelStatus("Rejecting " + (100 - (int) probAccept*100) + "% of @@ -161,8 +161,8 @@ msgstr "Reiniciando semillas" #, java-format msgid "Reseed fetched only 1 router." msgid_plural "Reseed fetched only {0} routers." -msgstr[0] "Al reinicar semillas sólo se ha encontrado 1 router" -msgstr[1] "Al reiniciar semillas se han encontrado sólo {0} routers" +msgstr[0] "Al reinicar semillas se ha encontrado un solo router." +msgstr[1] "Al reiniciar semillas se han encontrado sólo {0} routers." #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:148 msgid "Reseed failed." @@ -183,11 +183,8 @@ msgstr "Reiniciando semillas: Buscando la URL semilla" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:335 #, java-format -msgid "" -"Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." -msgstr "" -"Reiniciando semillas: buscando información de router de la URL semilla ({0} " -"correctas, {1} errores)." +msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." +msgstr "Reiniciando semillas: buscando información de routers de la URL semilla ({0} exitosas, {1} errores)." #: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:512 msgid "NetDb entry" @@ -205,12 +202,12 @@ msgstr "Inalcanzable en cualquier transporte" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:499 msgid "Router Transport Addresses" -msgstr "Direcciones del transporte de router " +msgstr "Direcciones de transporte del router " #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:504 #, java-format msgid "{0} is used for outbound connections only" -msgstr "{0} se utiliza solo para las conexiones salientes " +msgstr "{0} se utiliza sólo para conexiones salientes" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:518 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129 @@ -218,21 +215,12 @@ msgid "Help" msgstr "Ayuda" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 -msgid "" -"Your transport connection limits are automatically set based on your " -"configured bandwidth." -msgstr "" -"Los límites de conexiones de transporte se ajustan automáticamente basándose" -" en el ancho de banda configurado." +msgid "Your transport connection limits are automatically set based on your configured bandwidth." +msgstr "Los límites de conexiones de transporte se ajustan automáticamente basándose en el ancho de banda configurado." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 -msgid "" -"To override these limits, add the settings i2np.ntcp.maxConnections=nnn and " -"i2np.udp.maxConnections=nnn on the advanced configuration page." -msgstr "" -"Para sobreescribir estos límites, se deben agregar los comandos " -"i2np.ntcp.maxConnections = nnn y i2np.udp.maxConnections = nnn en la página " -"de configuración avanzada." +msgid "To override these limits, add the settings i2np.ntcp.maxConnections=nnn and i2np.udp.maxConnections=nnn on the advanced configuration page." +msgstr "Para sobreescribir estos límites, se deben agregar los comandos i2np.ntcp.maxConnections = nnn y i2np.udp.maxConnections = nnn en la página de configuración avanzada." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 @@ -271,16 +259,11 @@ msgstr "Conexión saliente" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 msgid "They offered to introduce us (help other peers traverse our firewall)" -msgstr "" -"Se han ofrecido a introducirnos (ayudar a otros pares a atravesar nuestro " -"firewall)" +msgstr "Se han ofrecido a introducirnos (a ayudar a otros pares a atravesar nuestro cortafuegos)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 -msgid "" -"We offered to introduce them (help other peers traverse their firewall)" -msgstr "" -"Nos hemos ofrecido a introducirlos (ayudar a otros compañeros atraviesan su " -"firewall)" +msgid "We offered to introduce them (help other peers traverse their firewall)" +msgstr "Nos hemos ofrecido a introducirlos (a ayudar a otros compañeros a atravesar su cortafuegos)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "How long since a packet has been received / sent" @@ -305,7 +288,7 @@ msgstr "Tasa de transferencia de entrada / salida (KBytes por segundo)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 msgid "How long ago this connection was established" -msgstr "Cuanto tiempo hace que se estableció esta conexión" +msgstr "Cuánto tiempo hace que se estableció esta conexión" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739 @@ -324,12 +307,8 @@ msgid "The difference between the peer's clock and your own" msgstr "La diferencia entre el reloj del par y el tuyo" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 -msgid "" -"The congestion window, which is how many bytes can be sent without an " -"acknowledgement" -msgstr "" -"El rango de congestión, que es la cantidad de bytes que se pueden enviar sin" -" recibir confirmación" +msgid "The congestion window, which is how many bytes can be sent without an acknowledgement" +msgstr "El rango de congestión, que es la cantidad de bytes que se pueden enviar sin recibir confirmación" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 msgid "The number of sent messages awaiting acknowledgement" @@ -365,12 +344,8 @@ msgid "The retransmit timeout in milliseconds" msgstr "El tiempo de vencimiento de la retransmisión en milisegundos" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 -msgid "" -"Current maximum send packet size / estimated maximum receive packet size " -"(bytes)" -msgstr "" -"Tamaño máximo actual de envío de paquetes / tamaño máximo estimado de " -"paquetes entrantes (bytes)" +msgid "Current maximum send packet size / estimated maximum receive packet size (bytes)" +msgstr "Tamaño máximo actual de envío de paquetes / tamaño máximo estimado de paquetes entrantes (bytes)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 @@ -1475,7 +1450,8 @@ msgstr "San Vicente y las Granadinas" 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 "Islas Vírgenes" @@ -1526,9 +1502,7 @@ msgstr "Consola del Router I2P" #: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:57 msgid "Error updating the configuration - please see the error logs" -msgstr "" -"Error al actualizar la configuración - por favor consulte los registros de " -"errores" +msgstr "Error al actualizar la configuración - por favor consulte los registros de errores" #: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:69 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:266 @@ -1537,12 +1511,8 @@ msgstr "Configuración guardada con éxito" #: ../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 "" -"Error al guardar la configuración (aplicada pero no guardada) - por favor " -"consulte los registros de errores" +msgid "Error saving the configuration (applied but not saved) - please see the error logs" +msgstr "Error al guardar la configuración (aplicada pero no guardada) - por favor consulte los registros de errores" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:355 @@ -1607,11 +1577,8 @@ msgid "New client added" msgstr "Nuevo cliente añadido" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:193 -msgid "" -"Client configuration saved successfully - restart required to take effect." -msgstr "" -"configuración de cliente guardada correctamente - Es necesario reiniciar " -"para que los cambios surtan efecto." +msgid "Client configuration saved successfully - restart required to take effect." +msgstr "configuración de cliente guardada correctamente - Es necesario reiniciar para que los cambios surtan efecto." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 @@ -1694,12 +1661,8 @@ msgid "Error starting plugin {0}" msgstr "Error al iniciar el plugin {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 -msgid "" -"Interface configuration saved successfully - restart required to take " -"effect." -msgstr "" -"configuración de interfaz guardada correctamente - Es necesario reiniciar " -"para que los cambios surtan efecto." +msgid "Interface configuration saved successfully - restart required to take effect." +msgstr "configuración de interfaz guardada correctamente - Es necesario reiniciar para que los cambios surtan efecto." #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:85 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258 @@ -1844,19 +1807,12 @@ msgid "Log configuration saved" msgstr "Guardados los ajustes de los registros" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 -msgid "" -"Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" -msgstr "" -"Añadir nuevos argumentos para el registro arriba. Ejemplo: " -"net.i2p.router.tunnel=WARN" +msgid "Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" +msgstr "Añadir nuevos argumentos para el registro arriba. Ejemplo: net.i2p.router.tunnel=WARN" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:49 -msgid "" -"Or put entries in the logger.config file. Example: " -"logger.record.net.i2p.router.tunnel=WARN" -msgstr "" -"O añadir nuevos argumentos en el archivo logger.config Ejemplo: " -"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 "O añadir nuevos argumentos en el archivo logger.config Ejemplo: logger.record.net.i2p.router.tunnel =WARN" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:50 msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT" @@ -2004,14 +1960,11 @@ msgstr "Reiniciando de forma segura para salir del modo router oculto" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:232 msgid "Enabling UPnP, restart required to take effect" -msgstr "" -"Activando UPnP, Se requiere reiniciar para que los cambios surtan efecto" +msgstr "Activando UPnP, Se requiere reiniciar para que los cambios surtan efecto" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:234 msgid "Disabling UPnP, restart required to take effect" -msgstr "" -"Deshabilitando UPnP, se requiere un reinicio para que los cambios surtan " -"efectp" +msgstr "Deshabilitando UPnP, se requiere un reinicio para que los cambios surtan efectp" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:242 msgid "Enabling laptop mode" @@ -2030,9 +1983,7 @@ msgstr "Exigir introductores SSU" #. 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 "" -"Reiniciando I2P de forma piadosa para cambiar la dirección publicada del " -"router" +msgstr "Reiniciando I2P de forma piadosa para cambiar la dirección publicada del router" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:314 msgid "Updating bandwidth share percentage" @@ -2286,12 +2237,8 @@ msgid "Failed to update the stat filter and location" msgstr "No se pudo actualizar el filtro de estadísticas y ubicación" #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:114 -msgid "" -"Graph list updated, may take up to 60s to be reflected here and on the Graphs Page" -msgstr "" -"Lista del gráfico actualizada, puede tardar hasta 60s en reflejarse aquí y " -"en la Página de Gráficos" +msgid "Graph list updated, may take up to 60s to be reflected here and on the Graphs Page" +msgstr "Lista del gráfico actualizada, puede tardar hasta 60s en reflejarse aquí y en la Página de Gráficos" #. the count isn't really correct anyway, since we don't check for actual #. changes @@ -2306,12 +2253,8 @@ msgstr "Ajustes de los túneles exploratorios guardados con éxito" #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:36 -msgid "" -"Error saving the configuration (applied but not saved) - please see the " -"error logs." -msgstr "" -"Error al guardar la configuración (aplicada pero no guardada) - por favor " -"consulte los registros de errores." +msgid "Error saving the configuration (applied but not saved) - please see the error logs." +msgstr "Error al guardar la configuración (aplicada pero no guardada) - por favor consulte los registros de errores." #. * dummies for translation #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:14 @@ -2344,19 +2287,15 @@ msgstr "ADVERTENCIA DE ANONIMATO - Los ajustes incluyen túneles de 0 saltos." #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:79 msgid "ANONYMITY WARNING - Settings include 1-hop tunnels." -msgstr "" -"ADVERTENCIA DE ANONIMATO - Los ajustes incluyen los túneles de 1 salto." +msgstr "ADVERTENCIA DE ANONIMATO - Los ajustes incluyen los túneles de 1 salto." #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 msgid "PERFORMANCE WARNING - Settings include very long tunnels." -msgstr "" -"ADVERTENCIA DE RENDIMIENTO - Los ajustes incluyen túneles de gran longitud." +msgstr "ADVERTENCIA DE RENDIMIENTO - Los ajustes incluyen túneles de gran longitud." #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:85 msgid "PERFORMANCE WARNING - Settings include high tunnel quantities." -msgstr "" -"ADVERTENCIA DE RENDIMIENTO - Los ajustes incluyen grandes cantidades de " -"túneles." +msgstr "ADVERTENCIA DE RENDIMIENTO - Los ajustes incluyen grandes cantidades de túneles." #. buf.append("\n"); #. tunnel depth @@ -2441,9 +2380,7 @@ msgstr "Actualización disponible; tratando de descargarla" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:87 msgid "Update available, click button on left to download" -msgstr "" -"Actualización disponible; ¡presiona el botón al lado izquierdo para " -"descargarla!" +msgstr "Actualización disponible; ¡presiona el botón al lado izquierdo para descargarla!" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:93 msgid "No update available" @@ -2503,12 +2440,8 @@ msgid "Download, verify, and restart" msgstr "Descargar, verificar y reiniciar" #: ../java/src/net/i2p/router/web/FormHandler.java:176 -msgid "" -"Invalid form submission, probably because you used the 'back' or 'reload' " -"button on your browser. Please resubmit." -msgstr "" -"El formulario introducido es inválido, probablemente por haber utilizado el " -"botón 'atrás' ó 'refrescar' del navegador. Por favor, reinténtelo." +msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit." +msgstr "El formulario introducido es inválido, probablemente por haber utilizado el botón 'atrás' ó 'refrescar' del navegador. Por favor, reinténtelo." #: ../java/src/net/i2p/router/web/GraphHelper.java:93 msgid "Combined bandwidth graph" @@ -2864,12 +2797,8 @@ msgid "This plugin requires Java version {0} or higher" msgstr "Este plugin requiere la versión de Java {0} o superior" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 -msgid "" -"Downloaded plugin is for new installs only, but the plugin is already " -"installed" -msgstr "" -"El plugin descargado es sólo para instalaciones nuevas, pero el plugin ya " -"está instalado" +msgid "Downloaded plugin is for new installs only, but the plugin is already installed" +msgstr "El plugin descargado es sólo para instalaciones nuevas, pero el plugin ya está instalado" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:305 msgid "Installed plugin does not contain the required configuration file" @@ -2877,34 +2806,26 @@ msgstr "El plugin instalado no contiene el archivo de configuración necesario" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:313 msgid "Signature of downloaded plugin does not match installed plugin" -msgstr "" -"La firma del plugin descargado no coincide con la del plugin instalado" +msgstr "La firma del plugin descargado no coincide con la del plugin instalado" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:320 #, java-format msgid "Downloaded plugin version {0} is not newer than installed plugin" -msgstr "" -"El plugin descargado con versión {0} no es más reciente que el plugin " -"instalado" +msgstr "El plugin descargado con versión {0} no es más reciente que el plugin instalado" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:327 #, java-format msgid "Plugin update requires installed plugin version {0} or higher" -msgstr "" -"La actualización del plugin requiere tener instalada la versión del plugin " -"{0} o superior" +msgstr "La actualización del plugin requiere tener instalada la versión del plugin {0} o superior" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:334 #, java-format msgid "Plugin update requires installed plugin version {0} or lower" -msgstr "" -"La actualización del plugin requiere tener instalada la versión del plugin " -"{0} o inferior" +msgstr "La actualización del plugin requiere tener instalada la versión del plugin {0} o inferior" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351 msgid "Plugin is for upgrades only, but the plugin is not installed" -msgstr "" -"El plugin es sólo para actualizaciones, pero el plugin no está instalado" +msgstr "El plugin es sólo para actualizaciones, pero el plugin no está instalado" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:364 #, java-format @@ -3125,12 +3046,8 @@ msgid "caps" msgstr "límites" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 -msgid "" -"peak throughput (bytes per second) over a 1 minute period that the peer has " -"sustained in a single tunnel" -msgstr "" -"rendimiento máximo (bytes por segundo) durante un período de 1 minuto que el" -" par ha sostenido en un solo túnel" +msgid "peak throughput (bytes per second) over a 1 minute period that the peer has sustained in a single tunnel" +msgstr "rendimiento máximo (bytes por segundo) durante un período de 1 minuto que el par ha sostenido en un solo túnel" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 msgid "speed" @@ -3224,18 +3141,12 @@ msgid "Statistics gathered during this router's uptime" msgstr "Estadísticas recopiladas durante el funcionamiento de este router" #: ../java/src/net/i2p/router/web/StatsGenerator.java:63 -msgid "" -"The data gathered is quantized over a 1 minute period, so should just be " -"used as an estimate." -msgstr "" -"Los datos recogidos se cuantifican en un período de 1 minuto, por lo que " -"sólo deben utilizarse como estimación." +msgid "The data gathered is quantized over a 1 minute period, so should just be used as an estimate." +msgstr "Los datos recogidos se cuantifican en un período de 1 minuto, por lo que sólo deben utilizarse como estimación." #: ../java/src/net/i2p/router/web/StatsGenerator.java:64 msgid "These statistics are primarily used for development and debugging." -msgstr "" -"Estas estadísticas se utilizan principalmente para el desarrollo y " -"depuración." +msgstr "Estas estadísticas se utilizan principalmente para el desarrollo y depuración." #: ../java/src/net/i2p/router/web/StatsGenerator.java:106 #: ../java/src/net/i2p/router/web/StatsGenerator.java:157 @@ -3342,12 +3253,8 @@ msgid "Help & FAQ" msgstr "Ayuda & Preguntas frecuentes" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:55 -msgid "" -"Configure startup of clients and webapps (services); manually start dormant " -"services" -msgstr "" -"Configura el arranque de clientes y servicios (webapps) o lanza servicios no" -" activados" +msgid "Configure startup of clients and webapps (services); manually start dormant services" +msgstr "Configura el arranque de clientes y servicios (webapps) o lanza servicios no activados" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:57 msgid "I2P Services" @@ -3355,9 +3262,7 @@ msgstr "Servicios I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:63 msgid "Manage your I2P hosts file here (I2P domain name resolution)" -msgstr "" -"Administrar el archivo hosts de I2P aquí (resolución de nombres de dominio " -"I2P)" +msgstr "Administrar el archivo hosts de I2P aquí (resolución de nombres de dominio I2P)" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:65 msgid "Addressbook" @@ -3484,17 +3389,14 @@ msgid "Uptime" msgstr "Tiempo de servicio" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 -msgid "" -"Help with configuring your firewall and router for optimal I2P performance" -msgstr "" -"Ayuda con la configuración del firewall y router para un rendimiento óptimo " -"de I2P" +msgid "Help with configuring your firewall and router for optimal I2P performance" +msgstr "Ayuda con la configuración de cortafuegos y router para un rendimiento óptimo de I2P" #. Note to translators: parameter is a version, e.g. "0.8.4" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:232 #, java-format msgid "Download {0} Update" -msgstr "Descargar {0} actualización" +msgstr "Descargar actualización ( {0} )" #. Note to translators: parameter is a date and time, e.g. "02-Mar 20:34 UTC" #.
    is optional, to help the browser make the lines even in the button @@ -3503,7 +3405,7 @@ msgstr "Descargar {0} actualización" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:240 #, java-format msgid "Download Unsigned
    Update {0}" -msgstr "Descargar actualización
    sin firmar {0}" +msgstr "Descargar actualización
    no firmada del {0}" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261 msgid "Active" @@ -3523,11 +3425,11 @@ msgstr "Conocidos" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:303 msgid "Help with firewall configuration" -msgstr "Ayuda con la configuración del firewall" +msgstr "Ayuda con la configuración del cortafuegos" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:305 msgid "Check NAT/firewall" -msgstr "Comprobar NAT/firewall" +msgstr "Comprobar NAT/cortafuegos" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:325 msgid "Reseed" @@ -3597,7 +3499,7 @@ msgstr "ERR-Desviación del Reloj de {0}" #: ../java/src/net/i2p/router/web/SummaryHelper.java:122 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:595 msgid "OK" -msgstr "OK" +msgstr "Bien" #: ../java/src/net/i2p/router/web/SummaryHelper.java:123 msgid "ERR-Private TCP Address" @@ -3609,41 +3511,36 @@ msgstr "ERR-NAT Simétrico" #: ../java/src/net/i2p/router/web/SummaryHelper.java:128 msgid "WARN-Firewalled with Inbound TCP Enabled" -msgstr "AVISO-Tras Firewall con TCP Entrante Activado" +msgstr "AVISO-Tras cortafuegos con TCP entrante Activado" #: ../java/src/net/i2p/router/web/SummaryHelper.java:130 msgid "WARN-Firewalled and Floodfill" -msgstr "AVISO-Tras Firewall y Floodfill" +msgstr "AVISO-Tras cortafuegos y Floodfill" #: ../java/src/net/i2p/router/web/SummaryHelper.java:132 msgid "WARN-Firewalled and Fast" -msgstr "AVISO-Tras firewall y rápido" +msgstr "AVISO-Tras cortafuegos y rápido" #: ../java/src/net/i2p/router/web/SummaryHelper.java:133 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 msgid "Firewalled" -msgstr "Bloqueado por un firewall" +msgstr "Bloqueado por un cortafuegos" #: ../java/src/net/i2p/router/web/SummaryHelper.java:135 -msgid "" -"ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and " -"restart" -msgstr "" -"ERR-puerto UDP en uso - establezca i2np.udp.internalPort=xxxx = en " -"configuración avanzada y reinicie" +msgid "ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" +msgstr "ERR-puerto UDP en uso - establezca i2np.udp.internalPort=xxxx = en configuración avanzada y reinicie" #: ../java/src/net/i2p/router/web/SummaryHelper.java:141 msgid "ERR-No Active Peers, Check Network Connection and Firewall" -msgstr "ERR-No hay pares activos, Compruebe la conexión de red y firewall" +msgstr "ERR-No hay pares activos, Compruebe la conexión de red y cortafuegos" #: ../java/src/net/i2p/router/web/SummaryHelper.java:144 msgid "ERR-UDP Disabled and Inbound TCP host/port not set" -msgstr "" -"ERR-UDP deshabilitado y el puerto/host de entrada TCP no ha sido establecido" +msgstr "ERR-UDP deshabilitado y el puerto/host de entrada TCP no ha sido establecido" #: ../java/src/net/i2p/router/web/SummaryHelper.java:146 msgid "WARN-Firewalled with UDP Disabled" -msgstr "AVISO-Tras firewall con UDP deshabilitado" +msgstr "AVISO-Tras cortafuegos con UDP deshabilitado" #: ../java/src/net/i2p/router/web/SummaryHelper.java:148 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 @@ -3652,8 +3549,7 @@ msgstr "Comprobando" #: ../java/src/net/i2p/router/web/SummaryHelper.java:370 msgid "Add/remove/edit & control your client and server tunnels" -msgstr "" -"Agregar/quitar/editar & controlar sus túneles de cliente y servidor" +msgstr "Agregar/quitar/editar & controlar sus túneles de cliente y servidor" #: ../java/src/net/i2p/router/web/SummaryHelper.java:382 msgid "Server" @@ -3871,7 +3767,7 @@ msgstr "Actualizando" #: ../java/src/net/i2p/router/web/UpdateHandler.java:262 #: ../java/src/net/i2p/router/web/UpdateHandler.java:287 msgid "Update downloaded" -msgstr "actualización descargada" +msgstr "Actualización descargada" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:92 #, java-format @@ -4287,12 +4183,8 @@ msgid "Bandwidth limiter" msgstr "Limitador de ancho de banda" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:318 -msgid "" -"I2P will work best if you configure your rates to match the speed of your " -"internet connection." -msgstr "" -"I2P funcionará mejor si configura sus tasas para que coincida con la " -"velocidad de conexión a Internet." +msgid "I2P will work best if you configure your rates to match the speed of your internet connection." +msgstr "I2P funcionará mejor si configura sus tasas para que coincida con la velocidad de conexión a Internet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:322 msgid "KBps In" @@ -4322,18 +4214,12 @@ msgid "I2P requires at least 12KBps to enable sharing. " msgstr "I2P requiere al menos 12KBps para permitir el intercambio." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:365 -msgid "" -"Please enable sharing (participating in tunnels) by configuring more " -"bandwidth. " -msgstr "" -"Por favor, active el intercambio (participación en túneles) configurando un " -"mayor ancho de banda." +msgid "Please enable sharing (participating in tunnels) by configuring more bandwidth. " +msgstr "Por favor, active el intercambio (participación en túneles) configurando un mayor ancho de banda." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:366 -msgid "" -"It improves your anonymity by creating cover traffic, and helps the network." -msgstr "" -"Esto mejora su anonimato creando tráfico de cobertura, y ayuda a la red." +msgid "It improves your anonymity by creating cover traffic, and helps the network." +msgstr "Esto mejora su anonimato creando tráfico de cobertura, y ayuda a la red." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:369 #, java-format @@ -4341,12 +4227,8 @@ msgid "You have configured I2P to share {0} KBps." msgstr "Ha configurado I2P para compartir {0} KBps." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:372 -msgid "" -"The higher the share bandwidth the more you improve your anonymity and help " -"the network." -msgstr "" -"Cuanto mayor sea el ancho de banda compartido, mayor es el anonimato y más " -"se ayuda a la red." +msgid "The higher the share bandwidth the more you improve your anonymity and help the network." +msgstr "Cuanto mayor sea el ancho de banda compartido, mayor es el anonimato y más se ayuda a la red." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:376 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:532 @@ -4383,7 +4265,7 @@ msgstr "Configuración UPnP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 msgid "Enable UPnP to open firewall ports" -msgstr "Activar UPnP para abrir puertos del firewall" +msgstr "Activar UPnP para abrir puertos del cortafuegos" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:405 msgid "UPnP status" @@ -4436,12 +4318,8 @@ msgid "Action when IP changes" msgstr "Acción al cambiar de IP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:457 -msgid "" -"Laptop mode - Change router identity and UDP port when IP changes for " -"enhanced anonymity" -msgstr "" -"Modo Portátil - Cambiar identidad del router y puerto UDP cuando cambie la " -"IP para aumentar el anonimato" +msgid "Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity" +msgstr "Modo Portátil - Cambiar identidad del router y puerto UDP cuando cambie la IP para aumentar el anonimato" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 msgid "Experimental" @@ -4474,24 +4352,19 @@ msgstr "si no estamos bloqueados por el corta-fuegos" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 msgid "Always use auto-detected IP address (Not firewalled)" -msgstr "" -"Siempre utilizar la dirección IP detectada automáticamente (no bloqueada por" -" firewall)" +msgstr "Siempre utilizar la dirección IP detectada automáticamente (no bloqueada por cortafuegos)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:503 msgid "Disable inbound (Firewalled)" -msgstr "Deshabilitar entrada (bloqueado por firewall)" +msgstr "Deshabilitar entrada (bloqueado por cortafuegos)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:507 msgid "Completely disable" msgstr "Desactivar por completo" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 -msgid "" -"(select only if behind a firewall that throttles or blocks outbound TCP)" -msgstr "" -"(Seleccione sólo si está detrás de un firewall que regula o bloquea la " -"salida por TCP)" +msgid "(select only if behind a firewall that throttles or blocks outbound TCP)" +msgstr "(Seleccione sólo si está detrás de un cortafuegos que regula o bloquea la salida por TCP)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:511 msgid "Externally reachable TCP port" @@ -4521,60 +4394,32 @@ msgstr "Ayuda de Configuración" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:538 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587 -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 "" -"Aunque I2P funcionrá bien aún bloqueado por la mayoría de firewalls, las " -"velocidades y la integración de la red en general mejorará si el puerto I2P " -"está abierto tanto por UDP como por 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 "Aunque I2P funcionrá bien aún bloqueado por la mayoría de firewalls, las velocidades y la integración de la red en general mejorará si el puerto I2P está abierto tanto por UDP como por TCP." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:540 -msgid "" -"If you can, please poke a hole in your firewall to allow unsolicited UDP and" -" TCP packets to reach you." -msgstr "" -"Si es posiible, por favor permite el paso de los paquetes TCP y UDP no " -"solicitados por el firewall." +msgid "If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you." +msgstr "Si es posiible, por favor permite el paso de los paquetes TCP y UDP no solicitados por el cortafuegos." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:542 -msgid "" -"If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole " -"punching with \"SSU introductions\" to relay traffic." -msgstr "" -"Si no puede ser, I2P soporta UPnP (Universal Plug and Play) y UDP hole " -"punching con \"introducciones SSU\" para transmitir tráfico." +msgid "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic." +msgstr "Si no puede ser, I2P soporta UPnP (Universal Plug and Play) y UDP hole punching con \"introducciones SSU\" para transmitir tráfico." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:544 -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 "" -"La mayoría de las opciones anteriores son para situaciones especiales, por " -"ejemplo, cuando UPnP no funciona correctamente, o un firewall que no está " -"bajo su control está haciendo daño." +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 "La mayoría de las opciones anteriores son para situaciones especiales, por ejemplo, cuando UPnP no funciona correctamente, o un cortafuegos que no está bajo tu control está haciendo daño." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:546 msgid "Certain firewalls such as symmetric NATs may not work well with I2P." -msgstr "" -"Algunos firewall como NATs simétricos pueden no funcionar bien con I2P." +msgstr "Algunos cortafuegos como NATs simétricos pueden no funcionar bien con I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 -msgid "" -"UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect " -"the external IP address and forward ports." -msgstr "" -"UPnP se utiliza para comunicarse con dispositivos de puerta de enlace a " -"Internet (IGDs) para detectar la dirección IP externa y los puertos que se " -"deben abrir." +msgid "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports." +msgstr "UPnP se utiliza para comunicarse con dispositivos de puerta de enlace a Internet (IGDs) para detectar la dirección IP externa y los puertos que se deben abrir." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 msgid "UPnP support is beta, and may not work for any number of reasons" -msgstr "" -"El soporte de UPnP está en fase beta, y puede no funcionar correctamente por" -" varias razones" +msgstr "El soporte de UPnP está en fase beta, y puede no funcionar correctamente por varias razones" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 msgid "No UPnP-compatible device present" @@ -4586,7 +4431,7 @@ msgstr "UPnP desactivado en el dispositivo" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 msgid "Software firewall interference with UPnP" -msgstr "Un firewall de software interfiere con UPnP" +msgstr "Un cortafuegos de software interfiere con UPnP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 msgid "Bugs in the device's UPnP implementation" @@ -4598,48 +4443,31 @@ msgstr "Múltiples firewalls/routers en la ruta de conexión a Internet" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 msgid "UPnP device change, reset, or address change" -msgstr "" -"El dispositivo UPnP ha cambiado, reiniciado, o ha cambiado de dirección" +msgstr "El dispositivo UPnP ha cambiado, reiniciado, o ha cambiado de dirección" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:571 msgid "Review the UPnP status here." msgstr "Revisar el estado de UPnP aquí." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:573 -msgid "" -"UPnP may be enabled or disabled above, but a change requires a router " -"restart to take effect." -msgstr "" -"Encima de esto UPnP puede ser activado o desactivado, pero un cambio " -"requiere reiniciar el router para que surta efecto." +msgid "UPnP may be enabled or disabled above, but a change requires a router restart to take effect." +msgstr "Encima de esto UPnP puede ser activado o desactivado, pero un cambio requiere reiniciar el router para que surta efecto." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575 msgid "Hostnames entered above will be published in the network database." -msgstr "" -"Los nombres de host introducidos arriba se publicarán en la base de datos de" -" red." +msgstr "Los nombres de host introducidos arriba se publicarán en la base de datos de red." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 msgid "They are not private." msgstr "No son privados." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 -msgid "" -"Also, do not enter a private IP address like 127.0.0.1 or " -"192.168.1.1." -msgstr "" -"Además, no se debe introducir una dirección IP privada como 127.0.0.1" -" o 192.168.1.1." +msgid "Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1." +msgstr "Además, no se debe introducir una dirección IP privada como 127.0.0.1 o 192.168.1.1." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 -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 "" -"Si se especifica una dirección IP o nombre de host incorrectos, o no se " -"configura correctamente el NAT o firewall, el rendimiento de la red se " -"degradará considerablemente." +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 "Si se especifica una dirección IP o nombre de host incorrectos, o no se configura correctamente el NAT o cortafuegos, el rendimiento de la red se degradará considerablemente." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 msgid "When in doubt, leave the settings at the defaults." @@ -4650,195 +4478,116 @@ msgid "Reachability Help" msgstr "Ayuda de Accesibilidad" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:590 -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 "" -"Si cree que ha abierto el firewall y I2P todavía piensa que sigue bloqueado " -"por uno, recuerde que podría tener múltiples firewalls, por ejemplo, en " -"paquetes de software o en routers externos." +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 "Si crees que has abierto el cortafuegos y I2P todavía piensa que sigue bloqueado por uno, recuerda que podrías tener múltiples cortafuegos, por ejemplo, en paquetes de software o en routers externos." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593 -msgid "" -"If there is an error, the logs may also help " -"diagnose the problem." -msgstr "" -"Si hay un error, el registro también puede ayudar a" -" diagnosticar el problema." +msgid "If there is an error, the logs may also help diagnose the problem." +msgstr "Si hay un error, el registro también puede ayudar a diagnosticar el problema." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 msgid "Your UDP port does not appear to be firewalled." -msgstr "El puerto UDP no parece estar bloqueado por un firewall." +msgstr "El puerto UDP no parece estar bloqueado por un cortafuegos." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 msgid "Your UDP port appears to be firewalled." -msgstr "El puerto UDP parece estar bloqueado por un firewall." +msgstr "El puerto UDP parece estar bloqueado por un cortafuegos." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603 -msgid "" -"As the firewall detection methods are not 100% reliable, this may " -"occasionally be displayed in error." -msgstr "" -"Como los métodos de detección de firewall no son 100% fiables, esto puede " -"aparecer por error." +msgid "As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error." +msgstr "Como los métodos de detección de cortafuegos no son 100% fiables, esto puede aparecer por error." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 -msgid "" -"However, if it appears consistently, you should check whether both your " -"external and internal firewalls are open for your port." -msgstr "" -"Sin embargo, si aparece constantemente, debería comprobar si tanto el " -"firewall interno como externo tienen los puertos abiertos." +msgid "However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port." +msgstr "Sin embargo, si aparece constantemente, deberías comprobar si tanto el cortafuegos interno como externo tienen los puertos abiertos." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 -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 funcionará bien aún bloqueado por un firewall, no hay motivo de " -"preocupación. Si se está detrás de un firewall, el router utiliza " -"\"introductores\" para transmitir las conexiones entrantes." +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 funcionará bien aún bloqueado por un cortafuegos, no hay motivo de preocupación. Si se está detrás de un cortafuegos, el router utiliza \"introductores\" para transmitir las conexiones entrantes." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 -msgid "" -"However, you will get more participating traffic and help the network more " -"if you can open your firewall(s)." -msgstr "" -"No obstante, obtendrá más tráfico participante y ayudará más a la red si " -"puede abrir el firewall." +msgid "However, you will get more participating traffic and help the network more if you can open your firewall(s)." +msgstr "No obstante, obtendrás más tráfico participante y ayudará más a la red si puedes abrir el/los cortafuegos." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 -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 "" -"Si cree que ya lo ha hecho, recuerde que podría tener tanto un firewall de " -"hardware como un firewall por software, o podría estar detrás de otro " -"firewall institucional fuera de su control." +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 "Si crees que ya lo has hecho, recuerda que podrías tener tanto un cortafuegos de hardware como un cortafuegos por software, o podrías estar detrás de otro cortafuegos institucional fuera de tu control." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 -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 "" -"Además, algunos routers no pueden encaminar correctamente TCP y UDP por el " -"mismo puerto, o pueden tener otras limitaciones o bugs que les impidan pasar" -" tráfico a través de I2P." +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 "Además, algunos routers no pueden encaminar correctamente TCP y UDP por el mismo puerto, o pueden tener otras limitaciones o bugs que les impidan pasar tráfico a través de I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 msgid "The router is currently testing whether your UDP port is firewalled." -msgstr "" -"El router está probando si su puerto UDP esté bloqueado por un firewall." +msgstr "El router está probando si tu puerto UDP está bloqueado por un cortafuegos." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 -msgid "" -"The router is not configured to publish its address, therefore it does not " -"expect incoming connections." -msgstr "" -"El router no está configurado para publicar su dirección, por lo tanto, no " -"espera conexiones entrantes." +msgid "The router is not configured to publish its address, therefore it does not expect incoming connections." +msgstr "El router no está configurado para publicar su dirección, por lo tanto, no espera conexiones entrantes." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 msgid "WARN - Firewalled and Fast" -msgstr "AVISO - Bloqueado por firewall y rápido" +msgstr "AVISO - Bloqueado por cortafuegos y rápido" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 -msgid "" -"You have configured I2P to share more than 128KBps of bandwidth, but you are" -" firewalled." -msgstr "" -"Ha configurado I2P para compartir más de 128 kbps de ancho de banda, pero se" -" encuentra bloqueado por un firewall" +msgid "You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled." +msgstr "Has configurado I2P para compartir más de 128 kbps de ancho de banda, pero te encuentras bloqueado por un cortafuegos" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 -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 "" -"Aunque I2P funcionará bien con esta configuración, si realmente tiene más de" -" 128 kbps de ancho de banda para compartir, será mucho más útil a la red si " -"abre los puertos de su router." +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 "Aunque I2P funcionará bien con esta configuración, si realmente tiene más de 128 kbps de ancho de banda para compartir, será mucho más útil a la red si abre los puertos de su router." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 msgid "WARN - Firewalled and Floodfill" -msgstr "AVISO - Bloqueado por firewall y Floodfill" +msgstr "AVISO - Bloqueado por cortafuegos y Floodfill" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:631 -msgid "" -"You have configured I2P to be a floodfill router, but you are firewalled." -msgstr "" -"Ha configurado I2P ser un router floodfill, pero usted etá bloqueado por un " -"firewall." +msgid "You have configured I2P to be a floodfill router, but you are firewalled." +msgstr "Has configurado I2P ser un router floodfill, pero estás bloqueado por un cortafuegos." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 -msgid "" -"For best participation as a floodfill router, you should open your firewall." -msgstr "" -"Para mejorar la participación como router floodfill, debería abrir su " -"firewall." +msgid "For best participation as a floodfill router, you should open your firewall." +msgstr "Para mejorar la participación como router floodfill, deberías abrir tu cortafuegos." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 msgid "WARN - Firewalled with Inbound TCP Enabled" -msgstr "AVISO - Bloqueado por firewall con TCP entrante Activado" +msgstr "AVISO - Bloqueado por cortafuegos con TCP entrante activado" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:637 -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 "" -"Ha configurado TCP entrante, sin embargo el puerto UDP está bloqueado por un" -" firewall, y por lo tanto es probable que el puerto TCP esté bloqueado " -"también." +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 "Has configurado TCP entrante, sin embargo el puerto UDP está bloqueado por un cortafuegos, y por lo tanto es probable que el puerto TCP esté bloqueado también." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 -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 "" -"Si el puerto TCP está bloqueado por un firewall con TCP entrante habilitado," -" los routers no podrán ponerse en contacto con usted a través de TCP, lo que" -" perjudicará a la red." +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 "Si el puerto TCP está bloqueado por un cortafuegos con TCP entrante habilitado, los routers no podrán ponerse en contacto con el tuyo a través de TCP, lo que perjudicará a la red." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 msgid "Please open your firewall or disable inbound TCP above." -msgstr "" -"Por favor, abra los puertos del firewall o desactive TCP entrante arriba." +msgstr "Por favor, ¡abre los puertos del cortafuegos o desactiva TCP entrante arriba!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 msgid "WARN - Firewalled with UDP Disabled" -msgstr "AVISO - Bloqueado por firewall con UDP deshabilitado" +msgstr "AVISO - Bloqueado por cortafuegos con UDP deshabilitado" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 msgid "You have configured inbound TCP, however you have disabled UDP." -msgstr "Ha configurado TCP entrante, sin embargo ha deshabilitado UDP." +msgstr "Has configurado TCP entrante, sin embargo has deshabilitado UDP." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 -msgid "" -"You appear to be firewalled on TCP, therefore your router cannot accept " -"inbound connections." -msgstr "" -"Usted parece estar siendo bloqueado por un firewall en TCP, por lo tanto el " -"router no puede aceptar conexiones entrantes." +msgid "You appear to be firewalled on TCP, therefore your router cannot accept inbound connections." +msgstr "Parece que estás siendo bloqueado por un cortafuegos en TCP, por lo tanto el router no puede aceptar conexiones entrantes." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 msgid "Please open your firewall or enable UDP." -msgstr "Por favor, abra el firewall o habilite UDP." +msgstr "Por favor, ¡abre el cortafuegos o habilita UDP!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:651 msgid "ERR - Clock Skew" msgstr "ERR - desviación de reloj" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 -msgid "" -"Your system's clock is skewed, which will make it difficult to participate " -"in the network." -msgstr "" -"El reloj del sistema está desviado, lo que hará difícil participar en la " -"red." +msgid "Your system's clock is skewed, which will make it difficult to participate in the network." +msgstr "El reloj del sistema está desviado, lo que hará difícil participar en la red." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:655 msgid "Correct your clock setting if this error persists." @@ -4849,12 +4598,8 @@ msgid "ERR - Private TCP Address" msgstr "ERR - Dirección TCP privada" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:659 -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 "" -"Nunca debe anunciar una dirección IP no enrutable, como 127.0.0.1 o " -"192.168.1.1 como su dirección externa." +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 "Nunca debe anunciar una dirección IP no enrutable, como 127.0.0.1 o 192.168.1.1 como su dirección externa." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 msgid "Correct the address or disable inbound TCP above." @@ -4869,62 +4614,36 @@ msgid "I2P detected that you are firewalled by a Symmetric NAT." msgstr "I2P ha detectado que está siendo bloqueado por un NAT simétrico." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:667 -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 no funciona bien detrás de este tipo de firewalls. Probablemente no será" -" capaz de aceptar conexiones entrantes, lo que limitará su participación en " -"la red." +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 no funciona bien detrás de este tipo de firewalls. Probablemente no será capaz de aceptar conexiones entrantes, lo que limitará su participación en la red." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:669 -msgid "" -"ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config " -"and restart" -msgstr "" -"ERR - el puerto UDP está en uso - Establezca i2np.udp.internalPort=xxxx en " -"configuración avanzada reinicie" +msgid "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" +msgstr "ERR - el puerto UDP está en uso - Establezca i2np.udp.internalPort=xxxx en configuración avanzada reinicie" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 msgid "I2P was unable to bind to port 8887 or other configured port." msgstr "I2P no pudo enlazar con el puerto 8887 o el otro puerto configurado." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:673 -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 "" -"Compruebe si otro programa está utilizando el puerto configurado. Si es así," -" cierre el programa o configure I2P para utilizar un puerto diferente." +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 "Compruebe si otro programa está utilizando el puerto configurado. Si es así, cierre el programa o configure I2P para utilizar un puerto diferente." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:675 -msgid "" -"This may be a transient error, if the other program is no longer using the " -"port." -msgstr "" -"Esto puede ser un error transitorio, si el otro programa ya no utiliza el " -"puerto." +msgid "This may be a transient error, if the other program is no longer using the port." +msgstr "Esto puede ser un error transitorio, si el otro programa ya no utiliza el puerto." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:677 msgid "However, a restart is always required after this error." -msgstr "" -"Sin embargo, siempre es necesario reiniciar después de que aparezca este " -"error." +msgstr "Sin embargo, siempre es necesario reiniciar después de que aparezca este error." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:679 msgid "ERR - UDP Disabled and Inbound TCP host/port not set" -msgstr "" -"ERR - UDP deshabilitado y el host/puerto de entrada TCP no ha sido " -"establecido" +msgstr "ERR - UDP deshabilitado y el host/puerto de entrada TCP no ha sido establecido" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:681 -msgid "" -"You have not configured inbound TCP with a hostname and port above, however " -"you have disabled UDP." -msgstr "" -"Arriba no ha configurado TCP entrante con un nombre de host y puerto, sin " -"embargo ha deshabilitado UDP." +msgid "You have not configured inbound TCP with a hostname and port above, however you have disabled UDP." +msgstr "Arriba no ha configurado TCP entrante con un nombre de host y puerto, sin embargo ha deshabilitado UDP." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:683 msgid "Therefore your router cannot accept inbound connections." @@ -4940,17 +4659,11 @@ msgstr "ERR - Error Client Manager I2CP - verificar los registros" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:689 msgid "This is usually due to a port 7654 conflict. Check the logs to verify." -msgstr "" -"Esto se debe generalmente a un conflicto en el puerto 7654. Compruebe los " -"registros para verificarlo." +msgstr "Esto se debe generalmente a un conflicto en el puerto 7654. Compruebe los registros para verificarlo." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:691 -msgid "" -"Do you have another I2P instance running? Stop the conflicting program and " -"restart I2P." -msgstr "" -"¿Tiene otra instancia I2P funcionando? Detenga el programa en conflicto y " -"reinicie I2P." +msgid "Do you have another I2P instance running? Stop the conflicting program and restart I2P." +msgstr "¿Tiene otra instancia I2P funcionando? Detenga el programa en conflicto y reinicie I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:113 msgid "config advanced" @@ -4981,12 +4694,8 @@ msgid "Client Configuration" msgstr "Configuración Clientes" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:332 -msgid "" -"The Java clients listed below are started by the router and run in the same " -"JVM." -msgstr "" -"Los clientes de Java que se enumeran a continuación son iniciados por el " -"router y se ejecutan en la misma JVM." +msgid "The Java clients listed below are started by the router and run in the same JVM." +msgstr "Los clientes de Java que se enumeran a continuación son iniciados por el router y se ejecutan en la misma JVM." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:338 msgid "To change other client options, edit the file" @@ -5004,8 +4713,7 @@ msgstr "Configuración avanzada de la interfaz del cliente" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:361 msgid "External I2CP (I2P Client Protocol) Interface Configuration" -msgstr "" -"Configuración de la interfaz I2CP Exterior (I2P Protocolo de clientes)" +msgstr "Configuración de la interfaz I2CP Exterior (I2P Protocolo de clientes)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:367 msgid "Enabled without SSL" @@ -5017,8 +4725,7 @@ msgstr "Habilitado con SSL obligatorio" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:379 msgid "Disabled - Clients outside this Java process may not connect" -msgstr "" -"Deshabilitado - Los clientes fuera de este proceso Java podrían no conectar" +msgstr "Deshabilitado - Los clientes fuera de este proceso Java podrían no conectar" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:381 msgid "I2CP Port" @@ -5046,9 +4753,7 @@ msgstr "Contraseña" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:419 msgid "Any changes made here must also be configured in the external client." -msgstr "" -"Cualquier cambio realizado aquí también debe configurarse en el cliente " -"externo." +msgstr "Cualquier cambio realizado aquí también debe configurarse en el cliente externo." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:421 msgid "Many clients do not support SSL or authorization." @@ -5059,33 +4764,12 @@ msgid "WebApp Configuration" msgstr "Configuración de las Applicaciones Web" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 -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 "" -"Las aplicaciones web Java que se enumeran a continuación son iniciadas por " -"el cliente de consola web y se ejecutan en la misma JVM que el router. Por " -"lo general son aplicaciones web, accesibles a través de la consola del " -"router. Pueden ser aplicaciones completas (i2psnark por ejemplo), interfaces" -" de otro cliente o aplicaciónes que deben ser habilitadas por separado (por " -"ejemplo, susidns, i2ptunnel), o que no tienen interfaz web en absoluto (por " -"ejemplo, la libreta de direcciones)." +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 "Las aplicaciones web Java que se enumeran a continuación son iniciadas por el cliente de consola web y se ejecutan en la misma JVM que el router. Por lo general son aplicaciones web, accesibles a través de la consola del router. Pueden ser aplicaciones completas (i2psnark por ejemplo), interfaces de otro cliente o aplicaciónes que deben ser habilitadas por separado (por ejemplo, susidns, i2ptunnel), o que no tienen interfaz web en absoluto (por ejemplo, la libreta de direcciones)." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433 -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 "" -"Una aplicación web también se puede desactivar quitando el archivo .war del " -"directorio de aplicaciones web; Sin embargo, el archivo .war y la aplicación" -" web volverán a aparecer al actualizar el router a una nueva versión, así " -"que el método preferido es deshabilitar la aplicación web aquí." +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 "Una aplicación web también se puede desactivar quitando el archivo .war del directorio de aplicaciones web; Sin embargo, el archivo .war y la aplicación web volverán a aparecer al actualizar el router a una nueva versión, así que el método preferido es deshabilitar la aplicación web aquí." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:445 msgid "Plugin Configuration" @@ -5093,9 +4777,7 @@ msgstr "Configuración de Plugins" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:447 msgid "The plugins listed below are started by the webConsole client." -msgstr "" -"Los plugins enumerados a continuación son iniciados por el cliente de " -"consola web." +msgstr "Los plugins enumerados a continuación son iniciados por el cliente de consola web." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:455 msgid "Plugin Installation" @@ -5103,7 +4785,7 @@ msgstr "Instalación de Plugin" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:457 msgid "To install a plugin, enter the download URL:" -msgstr "Para instalar un plugin, introduzca la URL de descarga:" +msgstr "Para instalar un plugin, ¡introduce la URL de descarga!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:112 msgid "config keyring" @@ -5115,15 +4797,11 @@ msgstr "Configuración del Llavero" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:317 msgid "The router keyring is used to decrypt encrypted leaseSets." -msgstr "" -"El llavero del router se utiliza para descifrar leaseSets encriptados." +msgstr "El llavero del router se utiliza para descifrar leaseSets encriptados." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:320 -msgid "" -"The keyring may contain keys for local or remote encrypted destinations." -msgstr "" -"El anillo puede contener claves de cifrado para los destinos locales o " -"remotos." +msgid "The keyring may contain keys for local or remote encrypted destinations." +msgstr "El anillo puede contener claves de cifrado para los destinos locales o remotos." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:326 msgid "Manual Keyring Addition" @@ -5174,22 +4852,16 @@ msgid "Log record format" msgstr "Formato de escritura del registro" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:331 -msgid "" -"(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" -msgstr "" -"(use 'd' = fecha, 'c' = clase, 't' = hilo, 'p' = prioridad, 'm' = mensaje)" +msgid "(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" +msgstr "(use 'd' = fecha, 'c' = clase, 't' = hilo, 'p' = prioridad, 'm' = mensaje)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:333 msgid "Log date format" msgstr "Formato de fecha del registro" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:337 -msgid "" -"('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' " -"= millisecond)" -msgstr "" -"('MM' = mes, 'dd' = día, 'HH' = hora, 'mm' = minuto, 'ss' = segundo, 'SSS' =" -" milisegundo)" +msgid "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)" +msgstr "('MM' = mes, 'dd' = día, 'HH' = hora, 'mm' = minuto, 'ss' = segundo, 'SSS' = milisegundo)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 msgid "Max log file size" @@ -5200,12 +4872,8 @@ msgid "Default log level" msgstr "Nivel predeterminado de registro" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:347 -msgid "" -"(DEBUG and INFO are not recommended defaults, as they will drastically slow " -"down your router)" -msgstr "" -"(DEBUG e INFO no se recomiendan por defecto, ya que ralentizaran " -"drásticamente el router)" +msgid "(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)" +msgstr "(DEBUG e INFO no se recomiendan por defecto, ya que ralentizaran drásticamente el router)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:349 msgid "Log level overrides" @@ -5236,27 +4904,16 @@ msgid "Manually Ban / Unban a Peer" msgstr "Banear / Desbanear manualmente a un par" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:331 -msgid "" -"Banning will prevent the participation of this peer in tunnels you create." -msgstr "" -"Banear evitará que ese par participe en cualquiera de los túneles que usted " -"cree." +msgid "Banning will prevent the participation of this peer in tunnels you create." +msgstr "Banear evitará que ese par participe en cualquiera de los túneles que usted cree." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:341 msgid "Adjust Profile Bonuses" msgstr "Ajustar Perfil de Bonus" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:343 -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 "" -"Los bonus pueden ser positivos o negativos, y afectan a la inclusión de un " -"par en los niveles 'Rápido' y 'de alta capacidad'. Los pares rápidos se " -"utilizan para los túneles de clientes, los par de alta capacidad se utilizan" -" para algunos túneles exploratorios. Los bonus actuales se muestran en la" +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 "Los bonus pueden ser positivos o negativos, y afectan a la inclusión de un par en los niveles 'Rápido' y 'de alta capacidad'. Los pares rápidos se utilizan para los túneles de clientes, los par de alta capacidad se utilizan para algunos túneles exploratorios. Los bonus actuales se muestran en la" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:345 msgid "profiles page" @@ -5284,36 +4941,21 @@ msgid "Reseeding Configuration" msgstr "Configuración de reinicio de semillas" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:320 -msgid "" -"Reseeding is the bootstrapping process used to find other routers when you " -"first install I2P, or when your router has too few router references " -"remaining." -msgstr "" -"El reinicio de semillas es el proceso de bootstrapping para encontrar otros " -"routers cuando I2P se instala por primera vez , o cuando al router le quedan" -" muy pocas referencias de otros routers." +msgid "Reseeding is the bootstrapping process used to find other routers when you first install I2P, or when your router has too few router references remaining." +msgstr "El reinicio de semillas es el proceso de bootstrapping para encontrar otros routers cuando I2P se instala por primera vez , o cuando al router le quedan muy pocas referencias de otros routers." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:322 -msgid "" -"If reseeding has failed, you should first check your network connection." -msgstr "" -"Si el reinicio de semillas ha fallado, primero debe comprobar la conexión de" -" red." +msgid "If reseeding has failed, you should first check your network connection." +msgstr "Si el reinicio de semillas ha fallado, primero debe comprobar la conexión de red." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:326 -msgid "" -"Change these only if HTTP is blocked by a restrictive firewall, reseed has " -"failed, and you have access to an HTTP proxy." -msgstr "" -"Cambie estos parámetros sólo si HTTP está bloqueado por un firewall " -"restrictivo, reiniciar semillas ha fracasado, y usted tiene acceso a un " -"proxy HTTP." +msgid "Change these only if HTTP is blocked by a restrictive firewall, reseed has failed, and you have access to an HTTP proxy." +msgstr "¡Sólo cambia estos parámetros si HTTP está bloqueado por un cortafuegos restrictivo, reiniciar semillas ha fracasado, y si tienes acceso a un proxy HTTP!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:328 #, java-format msgid "See {0} for instructions on reseeding manually." -msgstr "" -"Ver {0} para obtener instrucciones sobre el reinicio de semillas manual." +msgstr "Ver {0} para obtener instrucciones sobre el reinicio de semillas manual." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:328 msgid "the FAQ" @@ -5364,79 +5006,44 @@ msgid "Shutdown the router" msgstr "Apagar el router" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 -msgid "" -"Graceful shutdown lets the router satisfy the agreements it has already made" -" before shutting down, but may take a few minutes." -msgstr "" -"El apagado seguro permite al router cumplir los acuerdos que ya ha hecho " -"antes de apagar, pero puede tardar unos minutos." +msgid "Graceful shutdown lets the router satisfy the agreements it has already made before shutting down, but may take a few minutes." +msgstr "El apagado seguro permite al router cumplir los acuerdos que ya ha hecho antes de apagar, pero puede tardar unos minutos." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:307 -msgid "" -"If you need to kill the router immediately, that option is available as " -"well." -msgstr "" -"Si tiene que apagar el router inmediatamente, también tiene esa opción" +msgid "If you need to kill the router immediately, that option is available as well." +msgstr "Si tiene que apagar el router inmediatamente, también tiene esa opción" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 -msgid "" -"If you want the router to restart itself after shutting down, you can choose" -" one of the following." -msgstr "" -"Si desea que el router se reinicie después del apagado, puede elegir una de " -"las siguientes opciones." +msgid "If you want the router to restart itself after shutting down, you can choose one of the following." +msgstr "Si desea que el router se reinicie después del apagado, puede elegir una de las siguientes opciones." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 -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 "" -"Esto es útil en algunas situaciones - por ejemplo, si ha cambiado algunas " -"opciones de aplicaciones cliente que sólo se leen al iniciar, como la " -"contraseña de la consola del router o su interfaz de escucha." +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 "Esto es útil en algunas situaciones - por ejemplo, si ha cambiado algunas opciones de aplicaciones cliente que sólo se leen al iniciar, como la contraseña de la consola del router o su interfaz de escucha." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 -msgid "" -"A graceful restart will take a few minutes (but your peers will appreciate " -"your patience), while a hard restart does so immediately." -msgstr "" -"Un reinicio seguro tardará unos minutos (pero sus pares le agradecerán su " -"paciencia), mientras que un reinicio duro lo hace inmediatamente." +msgid "A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately." +msgstr "Un reinicio seguro tardará unos minutos (pero sus pares le agradecerán su paciencia), mientras que un reinicio duro lo hace inmediatamente." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 -msgid "" -"After tearing down the router, it will wait 1 minute before starting back up" -" again." -msgstr "" -"Después de apagar completamente el router, esperará 1 minuto antes de " -"volverse a iniciar." +msgid "After tearing down the router, it will wait 1 minute before starting back up again." +msgstr "Después de apagar completamente el router, esperará 1 minuto antes de volverse a iniciar." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:333 msgid "Systray integration" msgstr "integración con la bandeja del sistema" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335 -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 "" -"En la plataforma Windows, hay una pequeña aplicación que se queda en la " -"bandeja del sistema, lo que le permite ver el estado del router" +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 "En la plataforma Windows, hay una pequeña aplicación que se queda en la bandeja del sistema, lo que le permite ver el estado del router" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 -msgid "" -"(later on, I2P client applications will be able to integrate their own " -"functionality into the system tray as well)." -msgstr "" -"(Más adelante, las aplicaciones I2P de clientes serán capaces de integrar su" -" propia funcionalidad en la bandeja de sistema también)." +msgid "(later on, I2P client applications will be able to integrate their own functionality into the system tray as well)." +msgstr "(Más adelante, las aplicaciones I2P de clientes serán capaces de integrar su propia funcionalidad en la bandeja de sistema también)." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339 -msgid "" -"If you are on windows, you can either enable or disable that icon here." -msgstr "" -"Si usted está en Windows, puede activar o desactivar ese icono que aquí." +msgid "If you are on windows, you can either enable or disable that icon here." +msgstr "Si usted está en Windows, puede activar o desactivar ese icono que aquí." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 msgid "Show systray icon" @@ -5451,33 +5058,20 @@ msgid "Run on startup" msgstr "Lanzar al iniciar" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:347 -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 "" -"Puede controlar si I2P se ejecuta en el arranque o no seleccionando una de " -"las siguientes opciones - I2P instalará (o eliminará) un servicio en " -"consecuencia." +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 "Puede controlar si I2P se ejecuta en el arranque o no seleccionando una de las siguientes opciones - I2P instalará (o eliminará) un servicio en consecuencia." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 msgid "If you prefer the command line, you can also run the " msgstr "Si usted prefiere la línea de comandos, también puede ejecutar" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 -msgid "" -"If you are running I2P as service right now, removing it will shut down your" -" router immediately." -msgstr "" -"Si está ejecutando I2p como servicio en este momento, quitarlo hará que se " -"apague el router de inmediato." +msgid "If you are running I2P as service right now, removing it will shut down your router immediately." +msgstr "Si está ejecutando I2p como servicio en este momento, quitarlo hará que se apague el router de inmediato." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:361 -msgid "" -"You may want to consider shutting down gracefully, as above, then running " -"uninstall_i2p_service_winnt.bat." -msgstr "" -"Es posible que desee considerar el apagado seguro como se indica arriba, " -"para ello, ejecute uninstall_i2p_service_winnt.bat." +msgid "You may want to consider shutting down gracefully, as above, then running uninstall_i2p_service_winnt.bat." +msgstr "Es posible que desee considerar el apagado seguro como se indica arriba, para ello, ejecute uninstall_i2p_service_winnt.bat." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:365 msgid "Debugging" @@ -5488,26 +5082,16 @@ msgid "View the job queue" msgstr "Ver cola de tareas" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:371 -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 "" -"A veces, puede ser útil depurar I2P consiguiendo un volcado de hilo. Para " -"ello, seleccione la opción siguiente y revise el dump en 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 "A veces, puede ser útil depurar I2P consiguiendo un volcado de hilo. Para ello, seleccione la opción siguiente y revise el dump en wrapper.log ." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:377 msgid "Launch browser on router startup?" msgstr "Iniciar el navegador al arrancar el router?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:379 -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 "" -"La interfaz de configuración principal de I2P es esta consola Web, para su " -"comodidad I2P puede lanzar el navegador web en al iniciar apuntando a" +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 "La interfaz de configuración principal de I2P es esta consola Web, para su comodidad I2P puede lanzar el navegador web en al iniciar apuntando a" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:113 msgid "config stats" @@ -5571,38 +5155,24 @@ msgid "There is a fundamental tradeoff between anonymity and performance." msgstr "Hay un equilibrio fundamental entre el anonimato y el rendimiento." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:335 -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 "" -"Los túneles de más de tres saltos (por ejemplo, 2 + 0-2 saltos, 3 saltos+ " -"0-1 saltos, 3 saltos + 0-2 saltos), o una alta cantidad + la cantidad de " -"respaldo, pueden reducir severamente el rendimiento o la fiabilidad." +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 "Los túneles de más de tres saltos (por ejemplo, 2 + 0-2 saltos, 3 saltos+ 0-1 saltos, 3 saltos + 0-2 saltos), o una alta cantidad + la cantidad de respaldo, pueden reducir severamente el rendimiento o la fiabilidad." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:338 msgid "High CPU and/or high outbound bandwidth usage may result." -msgstr "" -"puede resultar en un uso alto de CPU y/o uso de gran ancho de banda de " -"salida " +msgstr "puede resultar en un uso alto de CPU y/o uso de gran ancho de banda de salida " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:341 msgid "Change these settings with care, and adjust them if you have problems." -msgstr "" -"Cambie esta configuración con cuidado, y ajustelo en caso de tener " -"problemas." +msgstr "Cambie esta configuración con cuidado, y ajustelo en caso de tener problemas." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:351 -msgid "" -"Exploratory tunnel setting changes are stored in the router.config file." -msgstr "" -"Los cambios en los túneles exploratorios se almacenan en el archivo " -"router.config." +msgid "Exploratory tunnel setting changes are stored in the router.config file." +msgstr "Los cambios en los túneles exploratorios se almacenan en el archivo router.config." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:354 msgid "Client tunnel changes are temporary and are not saved." -msgstr "" -"Los cambios en túnel de cliente son de carácter temporal y no se guardan." +msgstr "Los cambios en túnel de cliente son de carácter temporal y no se guardan." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:356 msgid "To make permanent client tunnel changes see the" @@ -5626,33 +5196,19 @@ msgstr "Tema de la Consola del Router" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:339 msgid "Theme selection disabled for Internet Explorer, sorry." -msgstr "" -"Lo sentimos, pero la selección de temas está deshabilitada para Internet " -"Explorer." +msgstr "Lo sentimos, pero la selección de temas está deshabilitada para Internet Explorer." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:341 -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 "" -"Si no está utilizando Internet Explorer, es probable que su navegador se " -"esté haciendo pasar por el IE, por favor, configure su navegador (o proxy) " -"para utilizar un agente de usuario diferente si desea acceder a los temas de" -" la consola." +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 "Si no está utilizando Internet Explorer, es probable que su navegador se esté haciendo pasar por el IE, por favor, configure su navegador (o proxy) para utilizar un agente de usuario diferente si desea acceder a los temas de la consola." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:345 msgid "Router Console Language" msgstr "Idioma de la Consola del Router" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:349 -msgid "" -"Please contribute to the router console translation project! Contact the " -"developers on IRC #i2p to help." -msgstr "" -"Por favor, contribuya al proyecto de traducción de la consola del router. " -"Póngase en contacto con los desarrolladores en el IRC #I2P o #I2P-ES para " -"ayudar." +msgid "Please contribute to the router console translation project! Contact the developers on IRC #i2p to help." +msgstr "Por favor, contribuya al proyecto de traducción de la consola del router. Póngase en contacto con los desarrolladores en el IRC #I2P o #I2P-ES para ayudar." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:353 msgid "Apply" @@ -5719,12 +5275,8 @@ msgid "Unsigned Build URL" msgstr "URL de versión no firmada" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:379 -msgid "" -"I2P updates are disabled because you do not have write permission for the " -"install directory." -msgstr "" -"las actualizaciones de I2P están desactivadas porque no tiene permiso de " -"escritura en el directorio de la instalación." +msgid "I2P updates are disabled because you do not have write permission for the install directory." +msgstr "las actualizaciones de I2P están desactivadas porque no tiene permiso de escritura en el directorio de la instalación." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:385 msgid "Save" @@ -5755,12 +5307,8 @@ msgstr "Por favor, informar sobre errores en {0} o {1}." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:143 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:258 -msgid "" -"You may use the username \"guest\" and password \"guest\" if you do not wish" -" to register." -msgstr "" -"Se puede utilizar el nombre de usuario \"guest\" y contraseña \"guest\" si " -"no desea registrarse." +msgid "You may use the username \"guest\" and password \"guest\" if you do not wish to register." +msgstr "Se puede utilizar el nombre de usuario \"guest\" y contraseña \"guest\" si no desea registrarse." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:145 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:260 @@ -5783,27 +5331,16 @@ msgstr "Versión I2P y medio de ejecución" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:197 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:288 -msgid "" -"Note that system information, log timestamps, and log messages may provide " -"clues to your location; please review everything you include in a bug " -"report." -msgstr "" -"Tenga en cuenta que la información del sistema, las marcas de tiempo del " -"registro y los mensajes del registro pueden proporcionar pistas sobre su " -"ubicación, por favor, revise todos los datos que se incluyen en un informe " -"de error." +msgid "Note that system information, log timestamps, and log messages may provide clues to your location; please review everything you include in a bug report." +msgstr "Tenga en cuenta que la información del sistema, las marcas de tiempo del registro y los mensajes del registro pueden proporcionar pistas sobre su ubicación, por favor, revise todos los datos que se incluyen en un informe de error." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:123 msgid "Page Not Found" msgstr "Página no encontrada" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:264 -msgid "" -"Sorry! You appear to be requesting a non-existent Router Console page or " -"resource." -msgstr "" -"Lo sentimos! Parece estar intentando entrar en una página de Consola de " -"Router inexistente u otro recurso." +msgid "Sorry! You appear to be requesting a non-existent Router Console page or resource." +msgstr "Lo sentimos! Pareces estar intentando entrar en una página de Consola de Router inexistente u otro recurso." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:266 msgid "Error 404" @@ -5823,11 +5360,11 @@ msgstr "Gráficos de rendimiento I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:111 msgid "home" -msgstr "página de inicio" +msgstr "Página de Inicio" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:331 msgid "Welcome to I2P" -msgstr "Bienvenido a I2P" +msgstr "¡Bienvenido a I2P!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:111 msgid "job queue" @@ -5878,12 +5415,8 @@ msgid "The requested web application is not running." msgstr "La aplicación Web solicitada no se está ejecutando" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:256 -msgid "" -"Please visit the config clients " -"page to start it." -msgstr "" -"Por favor visite la página de " -"configuración de clientes para iniciarla." +msgid "Please visit the config clients page to start it." +msgstr "Por favor visita la página de configuración de clientes para iniciarla." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:111 msgid "peer connections" @@ -5931,3 +5464,4 @@ msgstr "Perfil de pares" #, java-format msgid "Profile for peer {0}" msgstr "Perfil para par {0}" + From 47efafa72236db97e982fdde6043e9d2cb5888bd Mon Sep 17 00:00:00 2001 From: m1xxy Date: Fri, 8 Apr 2011 21:55:34 +0000 Subject: [PATCH 417/463] changes to es --- apps/i2ptunnel/locale/messages_es.po | 122 +++++++---------------- apps/routerconsole/locale/messages_es.po | 92 ++++++++--------- apps/susimail/locale/messages_es.po | 27 +++-- 3 files changed, 96 insertions(+), 145 deletions(-) diff --git a/apps/i2ptunnel/locale/messages_es.po b/apps/i2ptunnel/locale/messages_es.po index 4e62fa293..81a0556d5 100644 --- a/apps/i2ptunnel/locale/messages_es.po +++ b/apps/i2ptunnel/locale/messages_es.po @@ -3,14 +3,14 @@ # 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\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2011-03-03 18:29+0000\n" -"PO-Revision-Date: 2011-03-22 15:06+0000\n" -"Last-Translator: punkibastardo \n" +"PO-Revision-Date: 2011-04-08 23:36+0100\n" +"Last-Translator: mixxy \n" "Language-Team: Spanish (Castilian) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,22 +20,12 @@ msgstr "" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474 #, java-format -msgid "" -"To visit the destination in your host database, click here. To visit the conflicting addresshelper destination, " -"click here." -msgstr "" -"Para visitar el destino en la base de datos de hosts, haga clic aquí . Para visitar el destino del ayudante de direcciones " -"en conflicto, haga clic aquí ." +msgid "To visit the destination in your host database, click here. To visit the conflicting addresshelper destination, click here." +msgstr "Para visitar el destino en la base de datos de hosts, haga clic aquí . Para visitar el destino del ayudante de direcciones en conflicto, haga clic aquí ." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931 -msgid "" -"Click a link below to look for an address helper by using a \"jump\" " -"service:" -msgstr "" -"Haga clic en un enlace de debajo para buscar un ayudante de direcciones " -"mediante el uso de un servicio de \"salto\":" +msgid "Click a link below to look for an address helper by using a \"jump\" service:" +msgstr "Haga clic en un enlace de debajo para buscar un ayudante de direcciones mediante el uso de un servicio de \"salto\":" #: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326 #: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336 @@ -43,12 +33,8 @@ msgid "internal" msgstr "interno" #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:171 -msgid "" -"Invalid form submission, probably because you used the 'back' or 'reload' " -"button on your browser. Please resubmit." -msgstr "" -"El formulario presentado es inválido, probablemente porque ha utilizado el " -"botón 'atrás' o 'recargar' de su navegador. Por favor, vuelva a enviarlo." +msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit." +msgstr "El formulario presentado es inválido, probablemente porque ha utilizado el botón 'atrás' o 'recargar' de su navegador. Por favor, vuelva a enviarlo." #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218 msgid "Configuration reloaded for all tunnels" @@ -212,20 +198,16 @@ msgstr "b32 no recomendado" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208 msgid "Shared Client" -msgstr "Cliente Compartido" +msgstr "Túnel Compartido" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:212 -msgid "" -"(Share tunnels with other clients and irc/httpclients? Change requires " -"restart of client proxy)" -msgstr "" -"(¿Compartir túneles con otros clientes y clientes de IRC/http? Cambiar esto " -"requiere reiniciar el proxy de cliente)" +msgid "(Share tunnels with other clients and irc/httpclients? Change requires restart of client proxy)" +msgstr "(¿Compartir túneles con otros clientes y clientes de IRC/http? Cambiar esto requiere reiniciar el proxy de cliente)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:216 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:124 msgid "Auto Start" -msgstr "Auto Iniciar" +msgstr "Autoarranque" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:128 @@ -238,12 +220,8 @@ msgid "Advanced networking options" msgstr "Opciones avanzadas de red" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224 -msgid "" -"(NOTE: when this client proxy is configured to share tunnels, then these " -"options are for all the shared proxy clients!)" -msgstr "" -"(NOTA: cuando este proxy de cliente está configurado para compartir túneles," -" entonces estas opciones son para todos los clientes de proxy compartidos!)" +msgid "(NOTE: when this client proxy is configured to share tunnels, then these options are for all the shared proxy clients!)" +msgstr "(NOTA: cuando este proxy de cliente está configurado para compartir túneles, entonces estas opciones son para todos los clientes de proxy compartidos!)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:226 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245 @@ -292,25 +270,18 @@ msgstr "Variación de 0 saltos (sin aleatoriedad, rendimiento constante)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:272 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:291 -msgid "" -"+ 0-1 hop variance (medium additive randomisation, subtractive performance)" -msgstr "" -"Variación de + 0-1 saltos (aleatoriedad media aditiva, rendimiento " -"substractivo)" +msgid "+ 0-1 hop variance (medium additive randomisation, subtractive performance)" +msgstr "Variación de + 0-1 saltos (aleatoriedad media aditiva, rendimiento substractivo)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295 -msgid "" -"+ 0-2 hop variance (high additive randomisation, subtractive performance)" -msgstr "" -"Variación de + 0-2 saltos (aleatoriedad alta aditiva, rendimiento " -"substractivo)" +msgid "+ 0-2 hop variance (high additive randomisation, subtractive performance)" +msgstr "Variación de + 0-2 saltos (aleatoriedad alta aditiva, rendimiento substractivo)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:299 msgid "+/- 0-1 hop variance (standard randomisation, standard performance)" -msgstr "" -"Variación de +/- 0-1 saltos (aleatoriedad estándar, rendimiento estándar)" +msgstr "Variación de +/- 0-1 saltos (aleatoriedad estándar, rendimiento estándar)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:284 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:303 @@ -330,25 +301,17 @@ msgstr "Número" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:327 msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)" -msgstr "" -"1 entrante, 1 túnel de salida (bajo uso de ancho de banda, menos fiabilidad)" +msgstr "1 entrante, 1 túnel de salida (bajo uso de ancho de banda, menos fiabilidad)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:312 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:331 -msgid "" -"2 inbound, 2 outbound tunnels (standard bandwidth usage, standard " -"reliability)" -msgstr "" -"2 entrantes, 2 túneles de salida (uso de ancho de banda estándar, fiabilidad" -" estándar)" +msgid "2 inbound, 2 outbound tunnels (standard bandwidth usage, standard reliability)" +msgstr "2 entrantes, 2 túneles de salida (uso de ancho de banda estándar, fiabilidad estándar)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335 -msgid "" -"3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)" -msgstr "" -"3 entrantes, 3 túneles de salida (mayor uso de ancho de banda, mayor " -"fiabilidad)" +msgid "3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)" +msgstr "3 entrantes, 3 túneles de salida (mayor uso de ancho de banda, mayor fiabilidad)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:344 @@ -358,38 +321,32 @@ msgstr "túneles" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:330 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349 msgid "Backup Count" -msgstr "Número de backups" +msgstr "Número de respaldo" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:337 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:356 msgid "0 backup tunnels (0 redundancy, no added resource usage)" -msgstr "0 túneles de backup (redundancia 0, no aumenta el uso de recursos)" +msgstr "0 túneles de respaldo (redundancia 0, no aumenta el uso de recursos)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:341 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:360 msgid "1 backup tunnel each direction (low redundancy, low resource usage)" -msgstr "" -"1 túnel de backup en cada dirección (redundancia baja, uso bajo de recursos)" +msgstr "1 túnel de respaldo en cada dirección (redundancia baja, uso bajo de recursos)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:345 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364 -msgid "" -"2 backup tunnels each direction (medium redundancy, medium resource usage)" -msgstr "" -"2 túneles de backup en cada dirección (redundancia media, uso de recursos " -"medio)" +msgid "2 backup tunnels each direction (medium redundancy, medium resource usage)" +msgstr "2 túneles de respaldo en cada dirección (redundancia media, uso de recursos medio)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:349 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:368 msgid "3 backup tunnels each direction (high redundancy, high resource usage)" -msgstr "" -"3 túneles de backup en cada dirección (alta redundancia, uso de recursos " -"alto)" +msgstr "3 túneles de respaldo en cada dirección (alta redundancia, uso de recursos alto)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:358 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377 msgid "backup tunnels" -msgstr "túneles de backup" +msgstr "túneles de respaldo" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:365 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:384 @@ -497,7 +454,7 @@ msgstr "(Si se conoce)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:470 msgid "Local Authorization" -msgstr "Autorización Local" +msgstr "Autorización local" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490 @@ -511,7 +468,7 @@ msgstr "Contraseña" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484 msgid "Outproxy Authorization" -msgstr "Autorización Outproxy" +msgstr "Autorización outproxy" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502 msgid "Jump URL List" @@ -524,12 +481,8 @@ msgstr "Opciones personalizadas" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:512 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:529 -msgid "" -"NOTE: If tunnel is currently running, most changes will not take effect " -"until tunnel is stopped and restarted." -msgstr "" -"NOTA: Si el túnel se está ejecutando actualmente, la mayoría de los cambios " -"no tendrán efecto hasta que se detenga y reinicie el túnel." +msgid "NOTE: If tunnel is currently running, most changes will not take effect until tunnel is stopped and restarted." +msgstr "NOTA: Si el túnel se está ejecutando actualmente, la mayoría de los cambios no tendrán efecto hasta que se detenga y reinicie el túnel." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:514 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531 @@ -697,7 +650,7 @@ msgstr "Detener todos" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:95 msgid "Start All" -msgstr "Iniciar Todos" +msgstr "Iniciar todos" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:99 msgid "Restart All" @@ -807,3 +760,4 @@ msgstr "ninguno" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394 msgid "New client tunnel" msgstr "Nuevo túnel de cliente" + diff --git a/apps/routerconsole/locale/messages_es.po b/apps/routerconsole/locale/messages_es.po index 61eb65b84..61ad87d50 100644 --- a/apps/routerconsole/locale/messages_es.po +++ b/apps/routerconsole/locale/messages_es.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2011-03-21 18:01+0000\n" -"PO-Revision-Date: 2011-04-08 03:22+0100\n" +"PO-Revision-Date: 2011-04-08 23:38+0100\n" "Last-Translator: mixxy \n" "Language-Team: Spanish (Castilian) \n" "MIME-Version: 1.0\n" @@ -1527,17 +1527,17 @@ msgstr "Guardar configuración de interfaz" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:441 msgid "Save WebApp Configuration" -msgstr "Guardar configuración de aplicación Web" +msgstr "Guardar configuración de aplicaciones web" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:47 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:453 msgid "Save Plugin Configuration" -msgstr "Guardar configuración del plugin" +msgstr "Guardar configuración de plugins" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:51 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:461 msgid "Install Plugin" -msgstr "Instalar Plugin" +msgstr "Instalar Plugins" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:87 #, java-format @@ -1743,7 +1743,7 @@ msgstr "Buscar actualizaciones" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:263 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 msgid "Update" -msgstr "Actualizar" +msgstr "Actualización" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:268 #, java-format @@ -1844,7 +1844,7 @@ msgstr "Quitar" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:125 msgid "Select a class to add" -msgstr "Seleccione una clase para agregar" +msgstr "Selecciona una clase para agregar" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:204 @@ -2306,7 +2306,7 @@ msgstr "Longitud" #. tunnel depth variance #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:109 msgid "Randomization" -msgstr "Randomización" +msgstr "Aleatoriedad" #. tunnel quantity #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:133 @@ -2332,7 +2332,7 @@ msgstr "Cambio del tema guardado." #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:33 msgid "Refresh the page to view." -msgstr "Actualice la página para ver." +msgstr "Actualiza la página para ver." #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51 msgid "Arabic" @@ -2408,7 +2408,7 @@ msgstr "Actualizando política de actualización a " #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:146 msgid "Updating update URLs." -msgstr "Actualizando URLs de actualización" +msgstr "Actualizando URLs para la actualización" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:155 msgid "Updating trusted keys." @@ -2416,7 +2416,7 @@ msgstr "Actualizando claves de confianza." #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:163 msgid "Updating unsigned update URL to" -msgstr "Actualizando URL de actualización sin firma a " +msgstr "Actualizando URL de actualización no firmada a " #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:88 #: ../java/src/net/i2p/router/web/GraphHelper.java:167 @@ -2789,7 +2789,7 @@ msgstr "El plugin {0} tiene versiones no coincidentes" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:277 #, java-format msgid "This plugin requires I2P version {0} or higher" -msgstr "Este pluginrequiere la versión I2P {0} o superior" +msgstr "Este plugin requiere la versión I2P {0} o superior" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:285 #, java-format @@ -2932,7 +2932,7 @@ msgstr "Fallando" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:282 msgid "Integrated" -msgstr "Integrado" +msgstr "Integrados" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:164 msgid "Unreachable" @@ -3274,7 +3274,7 @@ msgstr "Cliente BitTorrent anónimo integrado" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:71 msgid "Torrents" -msgstr "Torrentes" +msgstr "Torrents" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:75 msgid "Anonymous webmail client" @@ -3290,7 +3290,7 @@ msgstr "Servidor web residente anónimo " #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:83 msgid "Webserver" -msgstr "Servidor web" +msgstr "ServidorWeb" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:91 msgid "Configure I2P Router" @@ -3469,19 +3469,19 @@ msgstr "¿Qué está en la cola de tareas del router?" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412 msgid "Congestion" -msgstr "Congestión" +msgstr "Tareas" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 msgid "Job lag" -msgstr "lag - tareas" +msgstr "Demora - tareas" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:423 msgid "Message delay" -msgstr "lag - mensajes" +msgstr "Demora - mensajes" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:429 msgid "Tunnel lag" -msgstr "lag - túnel" +msgstr "Demora - túnel" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435 msgid "Backlog" @@ -3772,7 +3772,7 @@ msgstr "Actualización descargada" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:92 #, java-format msgid "Unsigned update file from {0} is corrupt" -msgstr "Archivo de actualización sin firmar de {0} está dañado" +msgstr "Archivo de actualización no firmado del {0} está dañado" #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:112 #: ../java/src/net/i2p/router/web/UpdateHandler.java:282 @@ -3865,7 +3865,7 @@ msgstr "Mi servidor web eepsite" #: ../java/strings/Strings.java:26 msgid "I2P webserver (eepsite)" -msgstr "servidor web I2P (eepsite)" +msgstr "Servidor web I2P (eepsite)" #: ../java/strings/Strings.java:27 msgid "Browser launch at startup" @@ -3877,7 +3877,7 @@ msgstr "Puente de aplicación BOB" #: ../java/strings/Strings.java:30 msgid "Open Router Console in web browser at startup" -msgstr "Abra la consola del router en el navegador web al iniciar" +msgstr "Abrir la consola del router en el navegador web al iniciar" #: ../java/strings/Strings.java:37 msgid "IRC proxy" @@ -4184,7 +4184,7 @@ msgstr "Limitador de ancho de banda" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:318 msgid "I2P will work best if you configure your rates to match the speed of your internet connection." -msgstr "I2P funcionará mejor si configura sus tasas para que coincida con la velocidad de conexión a Internet." +msgstr "I2P funcionará mejor si configuras tus tasas para que coincida con la velocidad de tu conexión a Internet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:322 msgid "KBps In" @@ -4207,7 +4207,7 @@ msgstr "NOTA" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:361 #, java-format msgid "You have configured I2P to share only {0} KBps." -msgstr "Ha configurado I2P para compartir sólo {0} KBps." +msgstr "Has configurado I2P para compartir sólo {0} KBps." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:364 msgid "I2P requires at least 12KBps to enable sharing. " @@ -4219,12 +4219,12 @@ msgstr "Por favor, active el intercambio (participación en túneles) configuran #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:366 msgid "It improves your anonymity by creating cover traffic, and helps the network." -msgstr "Esto mejora su anonimato creando tráfico de cobertura, y ayuda a la red." +msgstr "Esto mejora tu anonimato creando tráfico de cobertura, y ayuda a la red." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:369 #, java-format msgid "You have configured I2P to share {0} KBps." -msgstr "Ha configurado I2P para compartir {0} KBps." +msgstr "Has configurado I2P para compartir {0} KBps." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:372 msgid "The higher the share bandwidth the more you improve your anonymity and help the network." @@ -4335,7 +4335,7 @@ msgstr "Puerto UDP :" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:477 msgid "TCP Configuration" -msgstr "Ajustes de TCP:" +msgstr "Ajustes de TCP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:483 msgid "Use auto-detected IP address" @@ -4364,7 +4364,7 @@ msgstr "Desactivar por completo" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 msgid "(select only if behind a firewall that throttles or blocks outbound TCP)" -msgstr "(Seleccione sólo si está detrás de un cortafuegos que regula o bloquea la salida por TCP)" +msgstr "(Selecciona sólo si estás detrás de un cortafuegos que regule o bloquee la salida por TCP)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:511 msgid "Externally reachable TCP port" @@ -4395,7 +4395,7 @@ msgstr "Ayuda de Configuración" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:538 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587 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 "Aunque I2P funcionrá bien aún bloqueado por la mayoría de firewalls, las velocidades y la integración de la red en general mejorará si el puerto I2P está abierto tanto por UDP como por TCP." +msgstr "Aunque I2P funcionrá bien aún bloqueado por la mayoría de cotrafuegos, las velocidades y la integración de la red en general mejorará si el puerto I2P está abierto tanto por UDP como por TCP." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:540 msgid "If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you." @@ -4439,7 +4439,7 @@ msgstr "Errores en la implementación de UPnP del dispositivo" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 msgid "Multiple firewall/routers in the internet connection path" -msgstr "Múltiples firewalls/routers en la ruta de conexión a Internet" +msgstr "Múltiples cotrafuegos/routers en la ruta de conexión a Internet" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 msgid "UPnP device change, reset, or address change" @@ -4615,7 +4615,7 @@ msgstr "I2P ha detectado que está siendo bloqueado por un NAT simétrico." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:667 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 no funciona bien detrás de este tipo de firewalls. Probablemente no será capaz de aceptar conexiones entrantes, lo que limitará su participación en la red." +msgstr "I2P no funciona bien detrás de este tipo de cortafuegos. Probablemente no serás capaz de aceptar conexiones entrantes, lo que limitará tu participación en la red." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:669 msgid "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" @@ -4643,7 +4643,7 @@ msgstr "ERR - UDP deshabilitado y el host/puerto de entrada TCP no ha sido estab #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:681 msgid "You have not configured inbound TCP with a hostname and port above, however you have disabled UDP." -msgstr "Arriba no ha configurado TCP entrante con un nombre de host y puerto, sin embargo ha deshabilitado UDP." +msgstr "Arriba no has configurado TCP entrante con un nombre de host y puerto, sin embargo has deshabilitado UDP." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:683 msgid "Therefore your router cannot accept inbound connections." @@ -4659,7 +4659,7 @@ msgstr "ERR - Error Client Manager I2CP - verificar los registros" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:689 msgid "This is usually due to a port 7654 conflict. Check the logs to verify." -msgstr "Esto se debe generalmente a un conflicto en el puerto 7654. Compruebe los registros para verificarlo." +msgstr "Esto se debe generalmente a un conflicto en el puerto 7654. Revisa los registros para verificarlo." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:691 msgid "Do you have another I2P instance running? Stop the conflicting program and restart I2P." @@ -4699,7 +4699,7 @@ msgstr "Los clientes de Java que se enumeran a continuación son iniciados por e #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:338 msgid "To change other client options, edit the file" -msgstr "Para cambiar otras opciones clientes, edite el archivo" +msgstr "Para cambiar otras opciones clientes, edita el archivo" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 @@ -5015,11 +5015,11 @@ msgstr "Si tiene que apagar el router inmediatamente, también tiene esa opción #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 msgid "If you want the router to restart itself after shutting down, you can choose one of the following." -msgstr "Si desea que el router se reinicie después del apagado, puede elegir una de las siguientes opciones." +msgstr "Si deseas que el router se reinicie después del apagado, puedes elegir una de las siguientes opciones." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319 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 "Esto es útil en algunas situaciones - por ejemplo, si ha cambiado algunas opciones de aplicaciones cliente que sólo se leen al iniciar, como la contraseña de la consola del router o su interfaz de escucha." +msgstr "Esto es útil en algunas situaciones - por ejemplo, si has cambiado algunas opciones de aplicaciones cliente que sólo se leen al iniciar, como la contraseña de la consola del router o tu interfaz de escucha." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 msgid "A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately." @@ -5083,7 +5083,7 @@ msgstr "Ver cola de tareas" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:371 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 "A veces, puede ser útil depurar I2P consiguiendo un volcado de hilo. Para ello, seleccione la opción siguiente y revise el dump en wrapper.log ." +msgstr "A veces, puede ser útil depurar I2P consiguiendo un volcado de hilo. Para ello, selecciona la opción siguiente y revisa el dump en wrapper.log ." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:377 msgid "Launch browser on router startup?" @@ -5091,7 +5091,7 @@ msgstr "Iniciar el navegador al arrancar el router?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:379 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 "La interfaz de configuración principal de I2P es esta consola Web, para su comodidad I2P puede lanzar el navegador web en al iniciar apuntando a" +msgstr "La interfaz de configuración principal de I2P es esta consola Web. Para tu comodidad I2P puede lanzar el navegador web en al iniciar apuntando a" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:113 msgid "config stats" @@ -5156,15 +5156,15 @@ msgstr "Hay un equilibrio fundamental entre el anonimato y el rendimiento." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:335 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 "Los túneles de más de tres saltos (por ejemplo, 2 + 0-2 saltos, 3 saltos+ 0-1 saltos, 3 saltos + 0-2 saltos), o una alta cantidad + la cantidad de respaldo, pueden reducir severamente el rendimiento o la fiabilidad." +msgstr "Los túneles de más de tres saltos (por ejemplo, 2 + 0-2 saltos, 3 saltos+ 0-1 saltos, 3 saltos + 0-2 saltos), o una alta cantidad incluyendo túneles de respaldo, pueden reducir severamente el rendimiento o la fiabilidad." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:338 msgid "High CPU and/or high outbound bandwidth usage may result." -msgstr "puede resultar en un uso alto de CPU y/o uso de gran ancho de banda de salida " +msgstr "Puede resultar en un uso alto de CPU y/o un uso de gran ancho de banda de salida " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:341 msgid "Change these settings with care, and adjust them if you have problems." -msgstr "Cambie esta configuración con cuidado, y ajustelo en caso de tener problemas." +msgstr "Cambia esta configuración con cuidado, y ajústala en caso de tener problemas." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:351 msgid "Exploratory tunnel setting changes are stored in the router.config file." @@ -5176,7 +5176,7 @@ msgstr "Los cambios en túnel de cliente son de carácter temporal y no se guard #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:356 msgid "To make permanent client tunnel changes see the" -msgstr "Para hacer cambios permanentes al túnel de cliente a ver la" +msgstr "Para hacer cambios permanentes al túnel de cliente ve a la" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:358 msgid "i2ptunnel page" @@ -5200,7 +5200,7 @@ msgstr "Lo sentimos, pero la selección de temas está deshabilitada para Intern #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:341 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 "Si no está utilizando Internet Explorer, es probable que su navegador se esté haciendo pasar por el IE, por favor, configure su navegador (o proxy) para utilizar un agente de usuario diferente si desea acceder a los temas de la consola." +msgstr "Si no estás utilizando Internet Explorer, es probable que tu navegador se esté haciendo pasar por el IE, por favor, configura tu navegador (o proxy) para utilizar un agente de usuario diferente si deseas acceder a los temas de la consola." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:345 msgid "Router Console Language" @@ -5208,7 +5208,7 @@ msgstr "Idioma de la Consola del Router" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:349 msgid "Please contribute to the router console translation project! Contact the developers on IRC #i2p to help." -msgstr "Por favor, contribuya al proyecto de traducción de la consola del router. Póngase en contacto con los desarrolladores en el IRC #I2P o #I2P-ES para ayudar." +msgstr "Por favor, contribuye al proyecto de traducción de la consola del router. Ponte en contacto con los desarrolladores en el IRC #I2P o #I2P-ES para ayudar." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:353 msgid "Apply" @@ -5248,7 +5248,7 @@ msgstr "Política de actualizaciones" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:349 msgid "Update through the eepProxy?" -msgstr "¿Actualizar ustilizando el eeProxy?" +msgstr "¿Actualizar utilizando el eeProxy?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:353 msgid "eepProxy host" @@ -5260,7 +5260,7 @@ msgstr "puerto eepProxy" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 msgid "Update URLs" -msgstr "Actualizar URLs" +msgstr "URLs de actualizaciones" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:365 msgid "Trusted keys" @@ -5445,7 +5445,7 @@ msgstr "Estadísticas del router I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:255 #, java-format msgid "Disable {0} Refresh" -msgstr "Deshabilitar el recargar cada {0}" +msgstr "Deshabilitar la recarga de cada {0}" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:111 msgid "tunnel summary" diff --git a/apps/susimail/locale/messages_es.po b/apps/susimail/locale/messages_es.po index 30b55e0e4..bcf4ec22e 100644 --- a/apps/susimail/locale/messages_es.po +++ b/apps/susimail/locale/messages_es.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the susimail package. # To contribute translations, see http://www.i2p2.de/newdevelopers # foo , 2009. -# +# msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2011-03-12 20:49+0000\n" -"PO-Revision-Date: 2011-03-22 15:51+0000\n" -"Last-Translator: punkibastardo \n" +"PO-Revision-Date: 2011-04-08 23:54+0100\n" +"Last-Translator: mixxy \n" "Language-Team: Spanish (Castilian) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,8 +24,7 @@ msgstr "desconocido" #: src/src/i2p/susi/webmail/WebMail.java:473 msgid "Warning: no transfer encoding found, fallback to 7bit." -msgstr "" -"Aviso: no se encuentra codificación de transferencia, volviendo a 7 bits." +msgstr "Aviso: no se encuentra codificación de transferencia, volviendo a 7 bits." #: src/src/i2p/susi/webmail/WebMail.java:478 #, java-format @@ -34,8 +33,7 @@ msgstr "No se ha encontrado codificador para la codificación \\''{0}''\\." #: src/src/i2p/susi/webmail/WebMail.java:484 msgid "Warning: no charset found, fallback to US-ASCII." -msgstr "" -"Aviso: no se ha encontrado el juego de caracteres, volviendo a US-ASCII." +msgstr "Aviso: no se ha encontrado el juego de caracteres, volviendo a US-ASCII." #: src/src/i2p/susi/webmail/WebMail.java:498 #, java-format @@ -53,8 +51,7 @@ msgstr "Descarga" #: src/src/i2p/susi/webmail/WebMail.java:525 msgid "File is packed into a zipfile for security reasons." -msgstr "" -"El archivo está empaquetado en un archivo zip por razones de seguridad." +msgstr "El archivo está empaquetado en un archivo zip por razones de seguridad." #: src/src/i2p/susi/webmail/WebMail.java:525 #, java-format @@ -153,8 +150,7 @@ msgstr "Error al analizar parámetros de descarga." #: src/src/i2p/susi/webmail/WebMail.java:1089 msgid "Invalid pagesize number, resetting to default value." -msgstr "" -"Tamaño de página no válida, restableciendo a los valores predeterminados." +msgstr "Tamaño de página no válida, restableciendo a los valores predeterminados." #: src/src/i2p/susi/webmail/WebMail.java:1113 msgid "No messages marked for deletion." @@ -212,7 +208,7 @@ msgstr "No se ha encontrado ninguna dirección válida en \\''{0}\\''." #: src/src/i2p/susi/webmail/WebMail.java:1419 msgid "No recipients found." -msgstr "No se han encontrado receptores." +msgstr "No se han encontrado destinatarios." #: src/src/i2p/susi/webmail/WebMail.java:1426 msgid "Quoted printable encoder not available." @@ -274,7 +270,7 @@ msgstr "Asunto:" #: src/src/i2p/susi/webmail/WebMail.java:1551 msgid "Bcc to self" -msgstr "CCO a mi mismo" +msgstr "CCO a mí mismo" #: src/src/i2p/susi/webmail/WebMail.java:1554 msgid "New Attachment:" @@ -294,7 +290,7 @@ msgstr "Usuario" #: src/src/i2p/susi/webmail/WebMail.java:1583 msgid "Pass" -msgstr "Pass" +msgstr "Contraseña" #: src/src/i2p/susi/webmail/WebMail.java:1584 msgid "Host" @@ -314,7 +310,7 @@ msgstr "Crear una cuenta" #: src/src/i2p/susi/webmail/WebMail.java:1587 msgid "Reset" -msgstr "Resetear" +msgstr "Cancelar" #: src/src/i2p/susi/webmail/WebMail.java:1599 msgid "Really delete the marked messages?" @@ -442,3 +438,4 @@ msgstr "Fecha:" #: src/src/i2p/susi/webmail/WebMail.java:1705 msgid "Could not fetch mail." msgstr "No se pudo descargar el correo." + From 891f9b2e87367cc7e6f55b7b7d91221d1916974f Mon Sep 17 00:00:00 2001 From: magma Date: Sat, 9 Apr 2011 00:16:04 +0000 Subject: [PATCH 418/463] final tweaks --- apps/routerconsole/locale/messages_fr.po | 76 ++++++++++++------------ 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 70aaf3125..085d48776 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,15 +9,15 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-26 08:34+0000\n" -"PO-Revision-Date: 2011-04-07 23:11+0100\n" +"PO-Revision-Date: 2011-04-09 02:14+0100\n" "Last-Translator: magma \n" -"Language-Team: foo \n" +"Language-Team: I2P Project \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: French\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n >= 2)\n" #. NOTE TO TRANSLATORS: Feel free to translate all these as you see fit, there are several options... #. spaces or not, '.' or not, plural or not. Try not to make it too long, it is used in @@ -31,7 +31,7 @@ msgstr "" #, java-format msgid "1 ms" msgid_plural "{0,number,####} ms" -msgstr[0] "1 ms" +msgstr[0] "{0,number,####}ms" msgstr[1] "{0,number,####}ms" #. seconds @@ -41,8 +41,8 @@ msgstr[1] "{0,number,####}ms" #, java-format msgid "1 sec" msgid_plural "{0} sec" -msgstr[0] "1 s" -msgstr[1] "{0} s" +msgstr[0] "{0}s" +msgstr[1] "{0}s" #. minutes #. Note to translators: quantity will always be greater than one. @@ -51,8 +51,8 @@ msgstr[1] "{0} s" #, java-format msgid "1 min" msgid_plural "{0} min" -msgstr[0] "1 mn" -msgstr[1] "{0} mn" +msgstr[0] "{0}mn" +msgstr[1] "{0}mn" #. hours #. Note to translators: quantity will always be greater than one. @@ -61,8 +61,8 @@ msgstr[1] "{0} mn" #, java-format msgid "1 hour" msgid_plural "{0} hours" -msgstr[0] "1 heure" -msgstr[1] "{0} heures" +msgstr[0] "{0}h" +msgstr[1] "{0}h" #: ../../../core/java/src/net/i2p/data/DataHelper.java:1158 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:314 @@ -75,8 +75,8 @@ msgstr "n/d" #, java-format msgid "1 day" msgid_plural "{0} days" -msgstr[0] "1 jour" -msgstr[1] "{0} jours" +msgstr[0] "{0}j" +msgstr[1] "{0}j" #: ../../../router/java/src/net/i2p/router/Blocklist.java:122 #, java-format @@ -252,11 +252,11 @@ msgstr "Connexion sortante" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 msgid "They offered to introduce us (help other peers traverse our firewall)" -msgstr "Ils ont proposé de nous présenter (aide d'autres pairs à passer notre pare-feu)" +msgstr "A proposé de nous représenter (aide de la part d'autres pairs pour traverser notre pare-feu)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 msgid "We offered to introduce them (help other peers traverse their firewall)" -msgstr "Nous avons proposé de les présenter (aide d'autres pairs à passer leur pare-feu)" +msgstr "Nous avons proposé de le représenter (aide à d'autres pairs pour traverser passer leur pare-feu)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "How long since a packet has been received / sent" @@ -334,7 +334,7 @@ msgstr "Dérive standard d'aller-retour en ms" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 msgid "The retransmit timeout in milliseconds" -msgstr "Le délai de retransmission en ms" +msgstr "Délai de retransmission en millisecondes" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 msgid "Current maximum send packet size / estimated maximum receive packet size (bytes)" @@ -348,7 +348,7 @@ msgstr "TX" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 msgid "The total number of packets sent to the peer" -msgstr "Le nombre de paquets envoyés au pair" +msgstr "Nombre de paquets envoyés au pair" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:744 @@ -358,7 +358,7 @@ msgstr "RX" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 msgid "The total number of packets received from the peer" -msgstr "Le nombre de paquets reçus du pair" +msgstr "Nombre de paquets reçus du pair" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1929 @@ -367,7 +367,7 @@ msgstr "TX dupl." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 msgid "The total number of packets retransmitted to the peer" -msgstr "Le nombre de paquets retransmis au pair" +msgstr "Nombre de paquets retransmis au pair" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1931 @@ -376,7 +376,7 @@ msgstr "RX dupl." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 msgid "The total number of duplicate packets received from the peer" -msgstr "Le nombre de paquets en double reçus du pair" +msgstr "Nombre de paquets en double reçus du pair" #: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:409 #: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:627 @@ -396,7 +396,7 @@ msgstr "Limite" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:734 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 msgid "Timeout" -msgstr "Dépassement d'attente" +msgstr "Échéance" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:745 msgid "Out Queue" @@ -404,7 +404,7 @@ msgstr "File de sortie" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:746 msgid "Backlogged?" -msgstr "Rétro enregistré?" +msgstr "Réinscrit?" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1949 @@ -1968,7 +1968,7 @@ msgstr "Désactivation mode portable" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:250 msgid "Requiring SSU introducers" -msgstr "Nécessite des présentateurs SSU" +msgstr "Nécessite des représentants 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. @@ -2251,14 +2251,14 @@ msgstr "Erreur pendant l'enregistrement de la configuration (appliquée mais non #, java-format msgid "1 hop" msgid_plural "{0} hops" -msgstr[0] "1 saut" +msgstr[0] "{0} saut" msgstr[1] "{0} sauts" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:15 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" -msgstr[0] "1 tunnel" +msgstr[0] "{0} tunnel" msgstr[1] "{0} tunnels" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:35 @@ -2621,11 +2621,11 @@ msgstr "Ce routeur" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:346 msgid "Peer info for" -msgstr "Mise à jour en cours" +msgstr "Informations pair" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:350 msgid "Full entry" -msgstr "Entrée complète" +msgstr "Détails" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:356 #: ../java/src/net/i2p/router/web/SummaryHelper.java:115 @@ -2667,7 +2667,7 @@ msgstr "SSU" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 msgid "SSU with introducers" -msgstr "SSU avec introducers" +msgstr "SSU avec représentants" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:404 msgid "NTCP" @@ -2679,7 +2679,7 @@ msgstr "NTCP et SSU" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:404 msgid "NTCP and SSU with introducers" -msgstr "NTCP et SSU avec présentateurs" +msgstr "NTCP et SSU avec représentants" #: ../java/src/net/i2p/router/web/NewsFetcher.java:92 #, java-format @@ -2859,21 +2859,21 @@ msgstr "Profils des pairs" #, java-format msgid "Showing 1 recent profile." msgid_plural "Showing {0} recent profiles." -msgstr[0] "Affichage de 1 profil récent," -msgstr[1] "Affichage de {0} profils récents," +msgstr[0] "Affichage d'un profil récent." +msgstr[1] "Affichage de {0} profils récents." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:75 #, java-format msgid "Hiding 1 older profile." msgid_plural "Hiding {0} older profiles." -msgstr[0] "Masquage de 1 profil très anciens," -msgstr[1] "Masquage de {0} très anciens profils," +msgstr[0] "Masquage d'un très vieux profil." +msgstr[1] "Masquage de {0} très vieux profils." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:77 #, java-format msgid "Hiding 1 standard profile." msgid_plural "Hiding {0} standard profiles." -msgstr[0] "Masquage de 1 profil standard." +msgstr[0] "Masquage d'un profil standard." msgstr[1] "Masquage de {0} profils standards." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:82 @@ -3122,7 +3122,7 @@ msgstr "dans la moyenne" #: ../java/src/net/i2p/router/web/StatsGenerator.java:57 msgid "GO" -msgstr "GO" +msgstr "Lancer" #: ../java/src/net/i2p/router/web/StatsGenerator.java:60 msgid "Statistics gathered during this router's uptime" @@ -3162,7 +3162,7 @@ msgstr "Maximum d'évènements par période" #. buf.append(num(curFreq.getMinAverageInterval())).append("ms)"); #: ../java/src/net/i2p/router/web/StatsGenerator.java:136 msgid "Lifetime average events per period" -msgstr "évènements de durée de vie moyenne par période" +msgstr "évènements de moyenne de durée de vie par période" #. Display the strict average #: ../java/src/net/i2p/router/web/StatsGenerator.java:141 @@ -3211,7 +3211,7 @@ msgstr "Nombre moyen d'évènements" #: ../java/src/net/i2p/router/web/StatsGenerator.java:213 msgid "Events in peak period" -msgstr "Évènements dans la période crête" +msgstr "Pic d'évènements dans la période" #: ../java/src/net/i2p/router/web/StatsGenerator.java:221 msgid "Graph Data" @@ -3228,7 +3228,7 @@ msgstr "Exporter en XML" #. Display the strict average #: ../java/src/net/i2p/router/web/StatsGenerator.java:231 msgid "Lifetime average value" -msgstr "Valeur de la durée de vie moyenne" +msgstr "Durée de vie moyenne" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:41 msgid "I2P Router Help & FAQ" @@ -3318,7 +3318,7 @@ msgstr "Bilan de santé" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:125 msgid "Logs" -msgstr "Fichier traces" +msgstr "Historiques" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:135 msgid "Graph router performance" From aea618061fd6c0c203f74f1f719c3926c25cc412 Mon Sep 17 00:00:00 2001 From: magma Date: Sat, 9 Apr 2011 00:47:57 +0000 Subject: [PATCH 419/463] final tweaks --- apps/i2ptunnel/locale/messages_fr.po | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/apps/i2ptunnel/locale/messages_fr.po b/apps/i2ptunnel/locale/messages_fr.po index 91235b784..d35ca8152 100644 --- a/apps/i2ptunnel/locale/messages_fr.po +++ b/apps/i2ptunnel/locale/messages_fr.po @@ -9,14 +9,14 @@ msgstr "" "Project-Id-Version: I2P i2ptunnel\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-25 15:21+0000\n" -"PO-Revision-Date: 2011-04-07 16:30+0100\n" +"PO-Revision-Date: 2011-04-09 02:46+0100\n" "Last-Translator: magma \n" "Language-Team: duck \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n >= 2)\n" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474 #, java-format @@ -361,15 +361,15 @@ msgstr "connexion interactive" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:376 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:395 msgid "bulk connection (downloads/websites/BT)" -msgstr "connexion portefaix (téléchargements/sites web/BT)" +msgstr "connexion forts transferts (téléchargements/sites web/BT)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:378 msgid "Delay Connect" -msgstr "Connexion à retard" +msgstr "Retard à la connexion" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:382 msgid "for request/response connections" -msgstr "connexions pour demandes/réponses" +msgstr "pour les connexions de demandes/réponses" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399 @@ -501,7 +501,7 @@ msgstr "Enregistrer" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:73 msgid "I2P Tunnel Manager - Edit Server Tunnel" -msgstr "Gestionnaire de tunnels I2P: Modifier le tunnel serveur" +msgstr "Gestionnaire de tunnels I2P: modifier le tunnel serveur" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:93 msgid "Edit server settings" @@ -554,7 +554,7 @@ msgstr "(Le tunnel doit préalablement être arrêté)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433 msgid "Restricted Access List" -msgstr "Liste d'accès réservée" +msgstr "Contrôle d'accès" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439 msgid "Whitelist" @@ -610,7 +610,7 @@ msgstr "Pénalité" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505 msgid "Hashcash Calc Time" -msgstr "Temps de calcul de pénalisation" +msgstr "Durée de calcul de pénalisation" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507 msgid "Estimate" @@ -701,7 +701,7 @@ msgstr "Démarrage..." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:328 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:342 msgid "Stop" -msgstr "Arrêt" +msgstr "Arrêter" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:201 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:335 From 960f12d66c5433fbfb36c741c2f91afdd776e866 Mon Sep 17 00:00:00 2001 From: magma Date: Sat, 9 Apr 2011 01:09:16 +0000 Subject: [PATCH 420/463] final tweaks --- apps/i2psnark/locale/messages_fr.po | 16 ++++++++-------- apps/susidns/locale/messages_fr.po | 4 ++-- apps/susimail/locale/messages_fr.po | 18 +++++++++--------- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/apps/i2psnark/locale/messages_fr.po b/apps/i2psnark/locale/messages_fr.po index f9f6d3c67..52accb53c 100644 --- a/apps/i2psnark/locale/messages_fr.po +++ b/apps/i2psnark/locale/messages_fr.po @@ -9,14 +9,14 @@ msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-25 12:48+0000\n" -"PO-Revision-Date: 2011-04-07 10:58+0100\n" +"PO-Revision-Date: 2011-04-09 03:00+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n>1\n" +"Plural-Forms: nplurals=2; plural=(n >= 2)\n" "X-Poedit-Language: French\n" #: ../java/src/org/klomp/snark/SnarkManager.java:307 @@ -389,14 +389,14 @@ msgstr "Totaux" #, java-format msgid "1 torrent" msgid_plural "{0} torrents" -msgstr[0] "1 torrent" +msgstr[0] "{0} torrent" msgstr[1] "{0} torrents" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:408 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" -msgstr[0] "1 pair connecté" +msgstr[0] "{0} pair connecté" msgstr[1] "{0} pairs connectés" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:497 @@ -490,8 +490,8 @@ msgstr "Erreur du tracker" #, java-format msgid "1 peer" msgid_plural "{0} peers" -msgstr[0] "1 Pair" -msgstr[1] "{0} Pairs" +msgstr[0] "{0} pair" +msgstr[1] "{0} pairs" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:819 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:824 @@ -785,14 +785,14 @@ msgstr "Info d'empreinte incorrecte dans l'URL magnet {0}" #, java-format msgid "1 hop" msgid_plural "{0} hops" -msgstr[0] "1 saut" +msgstr[0] "{0} saut" msgstr[1] "{0} sauts" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1501 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" -msgstr[0] "1 tunnel" +msgstr[0] "{0} tunnel" msgstr[1] "{0} tunnels" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 diff --git a/apps/susidns/locale/messages_fr.po b/apps/susidns/locale/messages_fr.po index 48301ad1a..8d2c13c29 100644 --- a/apps/susidns/locale/messages_fr.po +++ b/apps/susidns/locale/messages_fr.po @@ -9,14 +9,14 @@ msgstr "" "Project-Id-Version: I2P susidns\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-24 16:49+0000\n" -"PO-Revision-Date: 2011-04-07 12:19+0100\n" +"PO-Revision-Date: 2011-04-09 02:53+0100\n" "Last-Translator: magma \n" "Language-Team: duck \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n >= 2)\n" #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:200 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:193 diff --git a/apps/susimail/locale/messages_fr.po b/apps/susimail/locale/messages_fr.po index a77b034d8..238ebd4e7 100644 --- a/apps/susimail/locale/messages_fr.po +++ b/apps/susimail/locale/messages_fr.po @@ -9,14 +9,14 @@ msgstr "" "Project-Id-Version: I2P susimail\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-24 16:49+0000\n" -"PO-Revision-Date: 2011-04-07 12:31+0100\n" +"PO-Revision-Date: 2011-04-09 03:06+0100\n" "Last-Translator: magma \n" "Language-Team: duck \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n >= 2)\n" #: src/src/i2p/susi/webmail/WebMail.java:454 msgid "unknown" @@ -29,7 +29,7 @@ msgstr "Avertissement: pas d'encodage de transfert trouvé: retour en 7bits." #: src/src/i2p/susi/webmail/WebMail.java:478 #, java-format msgid "No encoder found for encoding \\''{0}\\''." -msgstr "Pas d''encodeur trouvé pour encoder \\''{0}\\''." +msgstr "Pas d''encodeur trouvé pour encoder \"{0}\"." #: src/src/i2p/susi/webmail/WebMail.java:484 msgid "Warning: no charset found, fallback to US-ASCII." @@ -165,8 +165,8 @@ msgstr "Erreur de suppression du message: {0}" #, java-format msgid "1 message deleted." msgid_plural "{0} messages deleted." -msgstr[0] "1 message supprimé" -msgstr[1] "{0} message(s) supprimé(s)" +msgstr[0] "{0} message supprimé" +msgstr[1] "{0} messages supprimés" #: src/src/i2p/susi/webmail/WebMail.java:1264 #: src/src/i2p/susi/webmail/WebMail.java:1587 @@ -177,8 +177,8 @@ msgstr "Identification" #, java-format msgid "1 Message" msgid_plural "{0} Messages" -msgstr[0] "1 Message" -msgstr[1] "{0} Message(s)" +msgstr[0] "{0} Message" +msgstr[1] "{0} Messages" #: src/src/i2p/susi/webmail/WebMail.java:1268 msgid "Show Message" @@ -369,8 +369,8 @@ msgstr "Taille" #, java-format msgid "1 Byte" msgid_plural "{0} Bytes" -msgstr[0] "1 octet" -msgstr[1] "{0} octet(s)" +msgstr[0] "{0} octet" +msgstr[1] "{0} octets" #: src/src/i2p/susi/webmail/WebMail.java:1644 msgid "Mark All" From 428db022741c5ea32afbb49718d84ace0d07aa5e Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 10 Apr 2011 18:22:43 +0000 Subject: [PATCH 421/463] * Console: Hide iframe on mobile browsers * DataHelper: Speed up eq() (Ticket #437) * HTTPServer: Strip inbound X-Accept-Encoding header * netdb.jsp: HTML fixes * Plugins: Log error when console server not found * Reseed: Log tweak --- .../java/src/org/klomp/snark/Storage.java | 3 +++ .../i2p/i2ptunnel/I2PTunnelHTTPServer.java | 8 ++++--- .../src/net/i2p/router/web/CSSHelper.java | 22 +++++++++++++++++-- .../src/net/i2p/router/web/NetDbRenderer.java | 21 +++++++++--------- .../src/net/i2p/router/web/PluginStarter.java | 8 +++++-- core/java/src/net/i2p/data/DataHelper.java | 5 ++--- history.txt | 8 +++++++ .../src/net/i2p/router/RouterVersion.java | 2 +- .../networkdb/reseed/ReseedChecker.java | 4 ++-- 9 files changed, 57 insertions(+), 24 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/Storage.java b/apps/i2psnark/java/src/org/klomp/snark/Storage.java index f9d93ca07..1183e9bf3 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Storage.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Storage.java @@ -111,6 +111,9 @@ public class Storage lengthsList.add(Long.valueOf(length)); } + if (total <= 0) + throw new IOException("Torrent contains no data"); + int pc_size = MIN_PIECE_SIZE; int pcs = (int) ((total - 1)/pc_size) + 1; while (pcs > MAX_PIECES && pc_size < MAX_PIECE_SIZE) diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java index 0f750ad74..a62aad4c9 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java @@ -138,9 +138,11 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer { } if (_log.shouldLog(Log.INFO)) _log.info("HTTP server encoding header: " + enc + "/" + altEnc); - boolean useGZIP = ( (enc != null) && (enc.indexOf("x-i2p-gzip") >= 0) ); - if ( (!useGZIP) && (altEnc != null) && (altEnc.indexOf("x-i2p-gzip") >= 0) ) - useGZIP = true; + boolean alt = (altEnc != null) && (altEnc.indexOf("x-i2p-gzip") >= 0); + boolean useGZIP = alt || ( (enc != null) && (enc.indexOf("x-i2p-gzip") >= 0) ); + // Don't pass this on, outproxies should strip so I2P traffic isn't so obvious but they probably don't + if (alt) + headers.remove("X-Accept-encoding"); if (allowGZIP && useGZIP) { I2PAppThread req = new I2PAppThread( diff --git a/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java index 33aa93df2..7f6f9455f 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java @@ -69,8 +69,26 @@ public class CSSHelper extends HelperBase { * @since 0.8.5 */ public boolean allowIFrame(String ua) { - return ua == null || !(ua.startsWith("Lynx") || ua.startsWith("w3m") || + return ua == null || + // text + !(ua.startsWith("Lynx") || ua.startsWith("w3m") || ua.startsWith("ELinks") || ua.startsWith("Links") || - ua.startsWith("Dillo")); + ua.startsWith("Dillo") || + // mobile + // http://www.zytrax.com/tech/web/mobile_ids.html + ua.contains("Android") || ua.contains("iPhone") || + ua.contains("iPod") || ua.contains("iPad") || + ua.contains("Kindle") || ua.contains("Mobile") || + ua.contains("Nintendo Wii") || ua.contains("Opera Mini") || + ua.contains("Palm") || + ua.contains("PLAYSTATION") || ua.contains("Playstation") || + ua.contains("Profile/MIDP-") || ua.contains("SymbianOS") || + ua.contains("Windows CE") || ua.contains("Windows Phone") || + ua.startsWith("BlackBerry") || ua.startsWith("DoCoMo") || + ua.startsWith("Nokia") || ua.startsWith("OPWV-SDK") || + ua.startsWith("MOT-") || ua.startsWith("SAMSUNG-") || + ua.startsWith("nook") || ua.startsWith("SCH-") || + ua.startsWith("SEC-") || ua.startsWith("SonyEricsson") || + ua.startsWith("Vodafone")); } } 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 0fda16b63..15ec90154 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java @@ -24,7 +24,6 @@ import java.util.Properties; import java.util.Set; import java.util.TreeSet; -import net.i2p.crypto.TrustedUpdate; import net.i2p.data.DataHelper; import net.i2p.data.Destination; import net.i2p.data.Hash; @@ -174,18 +173,19 @@ public class NetDbRenderer { } if (debug) { buf.append("

    Total Leasesets: " + leases.size()); - buf.append("

    Published (RAP) Leasesets: " + _context.netDb().getKnownLeaseSets()); - buf.append("

    Mod Data: " + HexDump.dump(_context.routingKeyGenerator().getModData()) + "

    "); - buf.append("

    Network data (only valid if floodfill):"); - buf.append("

    Center of Key Space (router hash): " + ourRKey.toBase64() + "

    "); + buf.append("

    Published (RAP) Leasesets: " + _context.netDb().getKnownLeaseSets()); + buf.append("

    Mod Data: " + HexDump.dump(_context.routingKeyGenerator().getModData())); + buf.append("

    Network data (only valid if floodfill):"); + buf.append("

    Center of Key Space (router hash): " + ourRKey.toBase64()); if (median != null) { double log2 = biLog2(median); - buf.append("

    Median distance (bits): " + fmt.format(log2)); + buf.append("

    Median distance (bits): " + fmt.format(log2)); // 3 for 8 floodfills... -1 for median int total = (int) Math.round(Math.pow(2, 3 + 256 - 1 - log2)); - buf.append("

    Estimated total floodfills: " + total); - buf.append("

    Estimated network total leasesets: " + (total * leases.size() / 8)); + buf.append("

    Estimated total floodfills: " + total); + buf.append("

    Estimated network total leasesets: " + (total * leases.size() / 8)); } + buf.append("

    "); } out.write(buf.toString()); out.flush(); @@ -405,11 +405,10 @@ public class NetDbRenderer { /** * what transport types */ - private int classifyTransports(RouterInfo info) { + private static int classifyTransports(RouterInfo info) { int rv = 0; String hash = info.getIdentity().getHash().toBase64(); - for (Iterator iter = info.getAddresses().iterator(); iter.hasNext(); ) { - RouterAddress addr = (RouterAddress)iter.next(); + for (RouterAddress addr : info.getAddresses()) { String style = addr.getTransportStyle(); if (style.equals("NTCP")) { rv |= NTCP; diff --git a/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java b/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java index 9e0a0c951..d1835a320 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java @@ -95,7 +95,8 @@ public class PluginStarter implements Runnable { log.error("Cannot start nonexistent plugin: " + appName); return false; } - //log.error("Starting plugin: " + appName); + if (log.shouldLog(Log.INFO)) + log.info("Starting plugin: " + appName); // register themes File dir = new File(pluginDir, "console/themes"); @@ -139,7 +140,8 @@ public class PluginStarter implements Runnable { } String enabled = props.getProperty(RouterConsoleRunner.PREFIX + warName + ENABLED); if (! "false".equals(enabled)) { - //log.error("Starting webapp: " + warName); + if (log.shouldLog(Log.INFO)) + log.info("Starting webapp: " + warName); String path = new File(webappDir, fileNames[i]).getCanonicalPath(); WebAppStarter.startWebApp(ctx, server, warName, path); pluginWars.get(appName).add(warName); @@ -149,6 +151,8 @@ public class PluginStarter implements Runnable { } } } + } else { + log.error("No console web server to start plugins?"); } // add translation jars in console/locale diff --git a/core/java/src/net/i2p/data/DataHelper.java b/core/java/src/net/i2p/data/DataHelper.java index 1aa5e9040..9eab8649e 100644 --- a/core/java/src/net/i2p/data/DataHelper.java +++ b/core/java/src/net/i2p/data/DataHelper.java @@ -781,11 +781,10 @@ public class DataHelper { * This treats (null == null) as true, (null == (!null)) as false, * and unequal length arrays as false. * + * @return Arrays.equals(lhs, rhs) */ public final static boolean eq(byte lhs[], byte rhs[]) { - // this appears to be the way Arrays.equals is defined, so all the extra tests are unnecessary? - boolean eq = (((lhs == null) && (rhs == null)) || ((lhs != null) && (rhs != null) && (Arrays.equals(lhs, rhs)))); - return eq; + return Arrays.equals(lhs, rhs); } /** diff --git a/history.txt b/history.txt index 57822a197..20924cd6d 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,11 @@ +2011-04-11 zzz + * Console: Hide iframe on mobile browsers + * DataHelper: Speed up eq() (Ticket #437) + * HTTPServer: Strip inbound X-Accept-Encoding header + * netdb.jsp: HTML fixes + * Plugins: Log error when console server not found + * Reseed: Log tweak + 2011-04-02 m1xxy * routerconsole, i2psnark, ... I2P ahora también en español: ¡Bienvenidos los hispanohablantes! - routerconsole, i2ptunnel, i2psnark, SusiDNS, Susimail fully translated into Spanish 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 = ""; diff --git a/router/java/src/net/i2p/router/networkdb/reseed/ReseedChecker.java b/router/java/src/net/i2p/router/networkdb/reseed/ReseedChecker.java index dd11c4ae2..6bb816985 100644 --- a/router/java/src/net/i2p/router/networkdb/reseed/ReseedChecker.java +++ b/router/java/src/net/i2p/router/networkdb/reseed/ReseedChecker.java @@ -35,9 +35,9 @@ public class ReseedChecker { if (!noReseedFile.exists() && !noReseedFileAlt1.exists() && !noReseedFileAlt2.exists() && !noReseedFileAlt3.exists()) { Log _log = context.logManager().getLog(ReseedChecker.class); if (count <= 1) - _log.error("Downloading peer router information for a new I2P installation"); + _log.logAlways(Log.INFO, "Downloading peer router information for a new I2P installation"); else - _log.error("Very few routerInfo files remaining - reseeding now"); + _log.logAlways(Log.WARN, "Very few known peers remaining - reseeding now"); Reseeder reseeder = new Reseeder(context); reseeder.requestReseed(); } From 937ef0ea4e70a7318b4c7c1c4c65a703fb0715e4 Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 11 Apr 2011 08:15:45 +0000 Subject: [PATCH 422/463] typo --- apps/routerconsole/locale/messages_fr.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 085d48776..cb275bca8 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-26 08:34+0000\n" -"PO-Revision-Date: 2011-04-09 02:14+0100\n" +"PO-Revision-Date: 2011-04-11 10:09+0100\n" "Last-Translator: magma \n" "Language-Team: I2P Project \n" "Language: \n" @@ -5166,7 +5166,7 @@ msgstr "Pour faire de modifications permanentes à un tunnel client particulier, #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:358 msgid "i2ptunnel page" -msgstr "page i2ptunnnel." +msgstr "page i2ptunnel" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:112 msgid "config UI" From 63ecc10c5e4d24a1f9d809f606f408dc2f170418 Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 11 Apr 2011 08:46:32 +0000 Subject: [PATCH 423/463] typos --- apps/i2psnark/locale/messages_fr.po | 16 ++++---- apps/routerconsole/locale/messages_fr.po | 50 ++++++++++++------------ 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/apps/i2psnark/locale/messages_fr.po b/apps/i2psnark/locale/messages_fr.po index 52accb53c..dcbf0ea65 100644 --- a/apps/i2psnark/locale/messages_fr.po +++ b/apps/i2psnark/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-25 12:48+0000\n" -"PO-Revision-Date: 2011-04-09 03:00+0100\n" +"PO-Revision-Date: 2011-04-11 10:32+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -32,7 +32,7 @@ msgstr "La limite minimale agrégée des uploaders est : {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:321 #, java-format msgid "Up BW limit changed to {0}KBps" -msgstr "La limite d’upload modifiée : {0} ko/s" +msgstr "Limite d’upload modifiée : {0} ko/s" #: ../java/src/org/klomp/snark/SnarkManager.java:323 #, java-format @@ -72,23 +72,23 @@ msgstr "Reconnexion sur la nouvelle destination I2CP" #: ../java/src/org/klomp/snark/SnarkManager.java:418 #, java-format msgid "I2CP listener restarted for \"{0}\"" -msgstr "Listener I2CP redémarré pour \"{0}\"" +msgstr "Écouteur I2CP redémarré pour \"{0}\"" #: ../java/src/org/klomp/snark/SnarkManager.java:429 msgid "Enabled autostart" -msgstr "Le démarrage automatique est activé" +msgstr "Démarrage automatique activé" #: ../java/src/org/klomp/snark/SnarkManager.java:431 msgid "Disabled autostart" -msgstr "Le démarrage automatique est désactivé" +msgstr "Démarrage automatique désactivé" #: ../java/src/org/klomp/snark/SnarkManager.java:437 msgid "Enabled open trackers - torrent restart required to take effect." -msgstr "Les open trackers sont activés - redémarrage des torrents requis pour prise en compte." +msgstr "Open trackers activés - redémarrage des torrents requis pour prise en compte." #: ../java/src/org/klomp/snark/SnarkManager.java:439 msgid "Disabled open trackers - torrent restart required to take effect." -msgstr "Les open trackers sont désactivés - redémarrage des torrents requis pour prise en compte." +msgstr "Open trackers désactivés - redémarrage des torrents requis pour prise en compte." #: ../java/src/org/klomp/snark/SnarkManager.java:447 msgid "Open Tracker list changed - torrent restart required to take effect." @@ -888,7 +888,7 @@ msgstr "Torrent déjà dans la file d''attente: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1996 #, java-format msgid "Torrent at {0} was not valid" -msgstr "Le torrent {0} n''est pas valide" +msgstr "Le torrent {0} est invalide" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2003 #, java-format diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index cb275bca8..7c5cf0dca 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-03-26 08:34+0000\n" -"PO-Revision-Date: 2011-04-11 10:09+0100\n" +"POT-Creation-Date: 2011-04-11 08:20+0000\n" +"PO-Revision-Date: 2011-04-11 10:44+0100\n" "Last-Translator: magma \n" "Language-Team: I2P Project \n" "Language: \n" @@ -27,7 +27,7 @@ msgstr "" #. {0,number,####} prevents 1234 from being output as 1,234 in the English locale. #. If you want the digit separator in your locale, translate as {0}. #. alternates: msec, msecs -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1141 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1140 #, java-format msgid "1 ms" msgid_plural "{0,number,####} ms" @@ -37,7 +37,7 @@ msgstr[1] "{0,number,####}ms" #. seconds #. Note to translators: quantity will always be greater than one. #. alternates: secs, sec. 'seconds' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1146 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1145 #, java-format msgid "1 sec" msgid_plural "{0} sec" @@ -47,7 +47,7 @@ msgstr[1] "{0}s" #. minutes #. Note to translators: quantity will always be greater than one. #. alternates: mins, min. 'minutes' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1151 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1150 #, java-format msgid "1 min" msgid_plural "{0} min" @@ -57,21 +57,21 @@ msgstr[1] "{0}mn" #. hours #. Note to translators: quantity will always be greater than one. #. alternates: hrs, hr., hrs. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1156 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1155 #, java-format msgid "1 hour" msgid_plural "{0} hours" msgstr[0] "{0}h" msgstr[1] "{0}h" -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1158 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1157 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:314 msgid "n/a" msgstr "n/d" #. days #. Note to translators: quantity will always be greater than one. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1162 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1161 #, java-format msgid "1 day" msgid_plural "{0} days" @@ -2511,69 +2511,69 @@ msgstr "Fichier pas trouvé" msgid "No log messages" msgstr "Historique vide" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:80 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:79 msgid "Network Database RouterInfo Lookup" msgstr "Recherche RouterInfo dans la base de données du réseau " -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:95 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:94 #: ../java/strings/Strings.java:68 msgid "Router" msgstr "Routeur" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:95 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:94 msgid "not found in network database" msgstr "non trouvé dans la NetDb" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:107 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:106 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:215 msgid "Network Database Contents" msgstr "Contenus NetDb" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:108 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:107 msgid "View RouterInfo" msgstr "Afficher RouterInfo" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:109 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:108 msgid "LeaseSets" msgstr "Jeux de baux" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:131 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:130 msgid "LeaseSet" msgstr "Jeu de baux" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:133 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:132 msgid "Local" msgstr "Locale" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:135 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:134 msgid "Unpublished" msgstr "Pas publié" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:136 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:135 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:142 msgid "Destination" msgstr "Destination" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:153 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:152 #, java-format msgid "Expires in {0}" msgstr "Expirera dans {0}" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:155 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:154 #, java-format msgid "Expired {0} ago" msgstr "Périmé il y a {0}" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:167 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:166 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "Gateway" msgstr "Passerelle" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:167 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:166 msgid "Lease" msgstr "Bail" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:169 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168 msgid "Tunnel" msgstr "Tunnel" @@ -5077,7 +5077,7 @@ msgstr "Lancer le navigateur au démarrage du routeur?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:379 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 "La plus grande partie de la configuration d'I2P se fait dans cette console, et donc pour votre confort, I2P peut lancer au démarrage votre navigateur sur " +msgstr "La plus grande partie de la configuration d'I2P se fait dans cette console, et donc pour votre confort, I2P peut lancer au démarrage votre navigateur sur " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:113 msgid "config stats" From a3d22e829b2ef5dede1e58fa4982cf8d230bf025 Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 11 Apr 2011 08:55:15 +0000 Subject: [PATCH 424/463] encore une --- apps/routerconsole/locale/messages_fr.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 7c5cf0dca..2ca985bd1 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-04-11 08:20+0000\n" -"PO-Revision-Date: 2011-04-11 10:44+0100\n" +"PO-Revision-Date: 2011-04-11 10:54+0100\n" "Last-Translator: magma \n" "Language-Team: I2P Project \n" "Language: \n" @@ -5077,7 +5077,7 @@ msgstr "Lancer le navigateur au démarrage du routeur?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:379 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 "La plus grande partie de la configuration d'I2P se fait dans cette console, et donc pour votre confort, I2P peut lancer au démarrage votre navigateur sur " +msgstr "La plus grande partie de la configuration d'I2P se fait dans cette console, et donc pour votre confort, I2P peut lancer au démarrage votre navigateur sur" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:113 msgid "config stats" From 94298c36783018c1c3456b322e1fb753a88b7902 Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 11 Apr 2011 09:19:23 +0000 Subject: [PATCH 425/463] missinfo --- apps/routerconsole/locale/messages_fr.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 2ca985bd1..a85be7198 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-04-11 08:20+0000\n" -"PO-Revision-Date: 2011-04-11 10:54+0100\n" +"PO-Revision-Date: 2011-04-11 11:18+0100\n" "Last-Translator: magma \n" "Language-Team: I2P Project \n" "Language: \n" @@ -5158,11 +5158,11 @@ msgstr "Les modifications des réglages de tunnels exploratoires sont enregistr #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:354 msgid "Client tunnel changes are temporary and are not saved." -msgstr "Les modifications des tunnels de client partagé sont temporaires et ne sont pas enregistrées." +msgstr "Les modifications des tunnels clients sont temporaires et ne sont pas enregistrées." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:356 msgid "To make permanent client tunnel changes see the" -msgstr "Pour faire de modifications permanentes à un tunnel client particulier, voyez la" +msgstr "Pour faire des modifications permanentes à un tunnel client particulier, voyez la" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:358 msgid "i2ptunnel page" From 18c3430656d3c95804a3e329551413d4532b3957 Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 11 Apr 2011 10:53:02 +0000 Subject: [PATCH 426/463] typos --- apps/routerconsole/locale/messages_fr.po | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index a85be7198..8fc914337 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-04-11 08:20+0000\n" -"PO-Revision-Date: 2011-04-11 11:18+0100\n" +"PO-Revision-Date: 2011-04-11 12:51+0100\n" "Last-Translator: magma \n" "Language-Team: I2P Project \n" "Language: \n" @@ -2635,7 +2635,7 @@ msgstr "Caché" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:356 msgid "Updated" -msgstr "Mise à jour fini" +msgstr "Mise à jour terminée" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:357 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:360 @@ -2839,12 +2839,12 @@ msgstr "Greffon {0} installé et démarré" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:394 #, java-format msgid "Plugin {0} installed but failed to start, check logs" -msgstr "Greffon {0} installé, mais son démarrage à échoué. Vérifiez les historiques" +msgstr "Greffon {0} installé, mais son démarrage a échoué. Vérifiez les historiques" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:396 #, java-format msgid "Plugin {0} installed but failed to start" -msgstr "Greffon {0} installé, mais son démarrage à échoué" +msgstr "Greffon {0} installé, mais son démarrage a échoué" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:406 #, java-format @@ -3376,7 +3376,7 @@ msgstr "Lancé depuis" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 msgid "Help with configuring your firewall and router for optimal I2P performance" -msgstr "Aide à la configuration du pare-feu et du routeur afin d'optimiser la performance d'I2P" +msgstr "Aide à la configuration du pare-feu et du routeur pour optimiser les performances d'I2P" #. Note to translators: parameter is a version, e.g. "0.8.4" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:232 @@ -3640,7 +3640,7 @@ msgstr "Envoie sur" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 msgid "To" -msgstr "À" +msgstr "Vers" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:74 msgid "Rate" @@ -4932,7 +4932,7 @@ msgstr "Le réamorçage est le processus de lancement utilisé pour trouver d'au #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:322 msgid "If reseeding has failed, you should first check your network connection." -msgstr "Si le réamorçage à échoué, vérifiez d'abord l'état de votre connexion au réseau." +msgstr "Si le réamorçage a échoué, vérifiez d'abord l'état de votre connexion au réseau." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:326 msgid "Change these only if HTTP is blocked by a restrictive firewall, reseed has failed, and you have access to an HTTP proxy." @@ -5202,7 +5202,7 @@ msgstr "Appliquer" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:112 msgid "config update" -msgstr "Mettre à jour la configuration" +msgstr "mise à jour config" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:249 msgid "I2P Update Configuration" @@ -5214,7 +5214,7 @@ msgstr "Vérification de mises à jour I2P et nouvelles" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:323 msgid "News & I2P Updates" -msgstr "Actualités & mises à jour" +msgstr "Actualités & mises à jour i2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:327 msgid "Update In Progress" @@ -5254,7 +5254,7 @@ msgstr "Clés de confiance" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:369 msgid "Update with unsigned development builds?" -msgstr "Mettre à jour avec une version non signée?" +msgstr "Mettre à jour avec les versions intermédiaires de développement non signées?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:373 msgid "Unsigned Build URL" From b16cfb9df622fccfafb4e9d70a7062ee5523cfa5 Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 11 Apr 2011 11:24:42 +0000 Subject: [PATCH 427/463] typos --- apps/routerconsole/locale/messages_fr.po | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 8fc914337..c8eb3f842 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-04-11 08:20+0000\n" -"PO-Revision-Date: 2011-04-11 12:51+0100\n" +"PO-Revision-Date: 2011-04-11 13:24+0100\n" "Last-Translator: magma \n" "Language-Team: I2P Project \n" "Language: \n" @@ -2531,7 +2531,7 @@ msgstr "Contenus NetDb" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:107 msgid "View RouterInfo" -msgstr "Afficher RouterInfo" +msgstr "Retour synthèse routeurs" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:108 msgid "LeaseSets" @@ -2543,7 +2543,7 @@ msgstr "Jeu de baux" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:132 msgid "Local" -msgstr "Locale" +msgstr "Local" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:134 msgid "Unpublished" @@ -2587,15 +2587,15 @@ msgstr "Pas initialisé" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:226 msgid "Routers" -msgstr "Routeurs" +msgstr "Synthèse routeurs" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:228 msgid "Show all routers" -msgstr "Tous, avec statistiques basiques" +msgstr "Afficher tous, avec statistiques basiques" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:230 msgid "Show all routers with full stats" -msgstr "Tous, avec statistiques complètes" +msgstr "Afficher tous, avec statistiques complètes" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:266 msgid "Network Database Router Statistics" From 3e9e56ed282afff815f0c7adb9c7ae847e6ecc14 Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 11 Apr 2011 12:27:22 +0000 Subject: [PATCH 428/463] typo --- apps/routerconsole/locale/messages_fr.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index c8eb3f842..e6ea89c69 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-04-11 08:20+0000\n" -"PO-Revision-Date: 2011-04-11 13:24+0100\n" +"PO-Revision-Date: 2011-04-11 14:25+0100\n" "Last-Translator: magma \n" "Language-Team: I2P Project \n" "Language: \n" @@ -5134,7 +5134,7 @@ msgstr "Configuration des tunnels I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:328 msgid "The default settings work for most people." -msgstr "La configuration défaut fonctionne pour la plupart des utilisateurs" +msgstr "La configuration défaut fonctionne pour la plupart des utilisateurs." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:332 msgid "There is a fundamental tradeoff between anonymity and performance." From ef0e9ca36cfcc9939fa048abf9d284ac52201c34 Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 11 Apr 2011 13:05:40 +0000 Subject: [PATCH 429/463] typo --- apps/routerconsole/locale/messages_fr.po | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index e6ea89c69..f27d76e9a 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-04-11 08:20+0000\n" -"PO-Revision-Date: 2011-04-11 14:25+0100\n" +"PO-Revision-Date: 2011-04-11 15:05+0100\n" "Last-Translator: magma \n" "Language-Team: I2P Project \n" "Language: \n" @@ -1583,7 +1583,7 @@ msgstr "Index client incorrect." #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:392 #: ../java/src/net/i2p/router/web/SummaryHelper.java:384 msgid "Client" -msgstr "Client" +msgstr "Clients" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:271 @@ -3534,7 +3534,7 @@ msgstr "Test en cours" #: ../java/src/net/i2p/router/web/SummaryHelper.java:370 msgid "Add/remove/edit & control your client and server tunnels" -msgstr "Ajouter/enlever/éditer & contrôler vos tunnels client et serveur" +msgstr "Ajoutez, modifiez/supprimez & contrôlez vos tunnels clients et serveurs" #: ../java/src/net/i2p/router/web/SummaryHelper.java:382 msgid "Server" @@ -3579,7 +3579,7 @@ msgstr "Création des tunnels en cours" #: ../java/src/net/i2p/router/web/SummaryHelper.java:421 #: ../java/strings/Strings.java:36 msgid "shared clients" -msgstr "client partagé" +msgstr "clients partagés" #. Note to translators: all runtime zh translation disabled in this file, no font available in RRD #: ../java/src/net/i2p/router/web/SummaryRenderer.java:89 @@ -4681,7 +4681,7 @@ msgstr "Préférences" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:332 msgid "The Java clients listed below are started by the router and run in the same JVM." -msgstr "Les client Java listés ci-dessous sont démarrés par le routeur et s'exécutent dans la même JVM." +msgstr "Les clients Java listés ci-dessous sont démarrés par le routeur et s'exécutent dans la même JVM." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:338 msgid "To change other client options, edit the file" @@ -5025,7 +5025,7 @@ msgstr "Sur Windows, une icône pour la zone de notification indiquant l'état d #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 msgid "(later on, I2P client applications will be able to integrate their own functionality into the system tray as well)." -msgstr "(Ultérieurement, Les applications clientes I2P pourront intégrer leurs propres fonctionnalités dans la zone de notification système)" +msgstr "(Ultérieurement, Les applications clientes I2P pourront aussi intégrer leurs propres fonctionnalités dans la zone de notification système)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339 msgid "If you are on windows, you can either enable or disable that icon here." @@ -5402,7 +5402,7 @@ msgstr "L'application web demandée n'est pas lancée." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:256 msgid "Please visit the config clients page to start it." -msgstr "Merci de visiter la page de configuration des clients pour le lancer." +msgstr "Pour la lancer, rendez-vous sur configuration des clients." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:111 msgid "peer connections" From 069575308471e8818673acf5e544ce967ad8bbed Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 11 Apr 2011 13:19:21 +0000 Subject: [PATCH 430/463] typo --- apps/routerconsole/locale/messages_fr.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index f27d76e9a..136e1ef5c 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-04-11 08:20+0000\n" -"PO-Revision-Date: 2011-04-11 15:05+0100\n" +"PO-Revision-Date: 2011-04-11 15:19+0100\n" "Last-Translator: magma \n" "Language-Team: I2P Project \n" "Language: \n" @@ -5025,7 +5025,7 @@ msgstr "Sur Windows, une icône pour la zone de notification indiquant l'état d #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 msgid "(later on, I2P client applications will be able to integrate their own functionality into the system tray as well)." -msgstr "(Ultérieurement, Les applications clientes I2P pourront aussi intégrer leurs propres fonctionnalités dans la zone de notification système)" +msgstr "(Ultérieurement, les applications clientes I2P pourront aussi intégrer leurs propres fonctionnalités dans la zone de notification système)." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339 msgid "If you are on windows, you can either enable or disable that icon here." From 699bfb39879037aae1d17d846c847678619889ca Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 11 Apr 2011 13:23:11 +0000 Subject: [PATCH 431/463] typo --- apps/routerconsole/locale/messages_fr.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 136e1ef5c..2eed811d8 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-04-11 08:20+0000\n" -"PO-Revision-Date: 2011-04-11 15:19+0100\n" +"PO-Revision-Date: 2011-04-11 15:22+0100\n" "Last-Translator: magma \n" "Language-Team: I2P Project \n" "Language: \n" @@ -5134,7 +5134,7 @@ msgstr "Configuration des tunnels I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:328 msgid "The default settings work for most people." -msgstr "La configuration défaut fonctionne pour la plupart des utilisateurs." +msgstr "La configuration par défaut fonctionne pour la plupart des utilisateurs." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:332 msgid "There is a fundamental tradeoff between anonymity and performance." From 9f3cdeb29e713b2c4322fdc355be1ba0af35aa58 Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 11 Apr 2011 13:49:55 +0000 Subject: [PATCH 432/463] typo --- apps/i2psnark/locale/messages_fr.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/i2psnark/locale/messages_fr.po b/apps/i2psnark/locale/messages_fr.po index dcbf0ea65..484ed6c19 100644 --- a/apps/i2psnark/locale/messages_fr.po +++ b/apps/i2psnark/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-25 12:48+0000\n" -"PO-Revision-Date: 2011-04-11 10:32+0100\n" +"PO-Revision-Date: 2011-04-11 15:45+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -32,12 +32,12 @@ msgstr "La limite minimale agrégée des uploaders est : {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:321 #, java-format msgid "Up BW limit changed to {0}KBps" -msgstr "Limite d’upload modifiée : {0} ko/s" +msgstr "Limite d’envoi modifiée : {0} ko/s" #: ../java/src/org/klomp/snark/SnarkManager.java:323 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" -msgstr "La limite minimale d’upload est {0} ko/s" +msgstr "La limite minimale d’envoi est {0} ko/s" #: ../java/src/org/klomp/snark/SnarkManager.java:335 #, java-format @@ -325,7 +325,7 @@ msgstr "temps restant estimé" #. Translators: Please keep short or translate as " " #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:313 msgid "ETA" -msgstr " Temps" +msgstr "Temps" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317 msgid "Downloaded" From 1152e117b389ba0adbfcfb3b18363df7edccf9db Mon Sep 17 00:00:00 2001 From: hiddenz Date: Wed, 13 Apr 2011 17:34:36 +0000 Subject: [PATCH 433/463] routerconsole: update russian translation --- apps/routerconsole/locale/messages_ru.po | 2346 +++++++++------------- 1 file changed, 988 insertions(+), 1358 deletions(-) diff --git a/apps/routerconsole/locale/messages_ru.po b/apps/routerconsole/locale/messages_ru.po index 1a1d48ab9..5a7538fba 100644 --- a/apps/routerconsole/locale/messages_ru.po +++ b/apps/routerconsole/locale/messages_ru.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-03-03 18:28+0000\n" -"PO-Revision-Date: 2011-02-19 22:43+0500\n" +"POT-Creation-Date: 2011-04-13 16:25+0000\n" +"PO-Revision-Date: 2011-04-13 23:31+0500\n" "Last-Translator: Hidden Z \n" "Language-Team: \n" "Language: \n" @@ -17,8 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Russian\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "X-Poedit-Bookmarks: 283,-1,-1,-1,-1,-1,-1,-1,-1,-1\n" #. NOTE TO TRANSLATORS: Feel free to translate all these as you see fit, there are several options... @@ -29,7 +28,7 @@ msgstr "" #. {0,number,####} prevents 1234 from being output as 1,234 in the English locale. #. If you want the digit separator in your locale, translate as {0}. #. alternates: msec, msecs -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1141 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1140 #, java-format msgid "1 ms" msgid_plural "{0,number,####} ms" @@ -40,7 +39,7 @@ msgstr[2] "{0,number,####} мс" #. seconds #. Note to translators: quantity will always be greater than one. #. alternates: secs, sec. 'seconds' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1146 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1145 #, java-format msgid "1 sec" msgid_plural "{0} sec" @@ -51,7 +50,7 @@ msgstr[2] "{0} с." #. minutes #. Note to translators: quantity will always be greater than one. #. alternates: mins, min. 'minutes' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1151 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1150 #, java-format msgid "1 min" msgid_plural "{0} min" @@ -62,7 +61,7 @@ msgstr[2] "{0} мин." #. hours #. Note to translators: quantity will always be greater than one. #. alternates: hrs, hr., hrs. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1156 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1155 #, java-format msgid "1 hour" msgid_plural "{0} hours" @@ -70,14 +69,14 @@ msgstr[0] "{0} час" msgstr[1] "{0} часа" msgstr[2] "{0} часов" -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1158 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1157 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:314 msgid "n/a" msgstr "нет данных" #. days #. Note to translators: quantity will always be greater than one. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1162 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1161 #, java-format msgid "1 day" msgid_plural "{0} days" @@ -133,8 +132,7 @@ msgstr "Не принимаем туннели: Достигнут предел #. 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 "" -"Не принимаем большую часть туннелей: Достигнут предел пропускной способности" +msgstr "Не принимаем большую часть туннелей: Достигнут предел пропускной способности" #. hard to do {0} from here #. setTunnelStatus("Accepting " + (100-(int)(100.0*probReject)) + "% of tunnels"); @@ -154,12 +152,12 @@ msgstr "Принимаем туннели" msgid "Rejecting tunnels" msgstr "Не принимаем туннели" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:105 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:125 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 msgid "Reseeding" msgstr "Начальная загрузка" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:128 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:141 #, java-format msgid "Reseed fetched only 1 router." msgid_plural "Reseed fetched only {0} routers." @@ -167,31 +165,27 @@ msgstr[0] "При начальной загрузке получены данн msgstr[1] "При начальной загрузке получены данные только о {0} роутерах." msgstr[2] "При начальной загрузке получены данные только о {0} роутерах." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:135 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:148 msgid "Reseed failed." msgstr "Попытка начальной загрузки провалилась." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:136 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:149 #, java-format msgid "See {0} for help." msgstr "Смотрите {0} для помощи." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:137 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:150 msgid "reseed configuration page" msgstr "страница настройки начальной загрузки" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:239 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:293 msgid "Reseeding: fetching seed URL." -msgstr "" -"Производится начальная загрузка: загружается URL каталога маршрутизаторов." +msgstr "Производится начальная загрузка: загружается URL каталога маршрутизаторов." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:335 #, java-format -msgid "" -"Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." -msgstr "" -"Производится начальная загрузка: получение информации о маршрутизаторах ({0} " -"удачно, {1} ошибок)." +msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." +msgstr "Производится начальная загрузка: получение информации о маршрутизаторах ({0} удачно, {1} ошибок)." #: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:512 msgid "NetDb entry" @@ -216,52 +210,41 @@ msgid "{0} is used for outbound connections only" msgstr "{0} используется только для исходящих соединений" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:518 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129 msgid "Help" msgstr "Справка" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519 -msgid "" -"Your transport connection limits are automatically set based on your " -"configured bandwidth." -msgstr "" -"Лимиты транспортных соединений назначены автоматически на основе заданной " -"вами пропускной способности." +msgid "Your transport connection limits are automatically set based on your configured bandwidth." +msgstr "Лимиты транспортных соединений назначены автоматически на основе заданной вами пропускной способности." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 -msgid "" -"To override these limits, add the settings i2np.ntcp.maxConnections=nnn and " -"i2np.udp.maxConnections=nnn on the advanced configuration page." -msgstr "" -"Для переопределения этих лимитов добавьте параметры i2np.ntcp." -"maxConnections=nnn и i2np.udp.maxConnections=nnn на странице расширенных " -"настроек." +msgid "To override these limits, add the settings i2np.ntcp.maxConnections=nnn and i2np.udp.maxConnections=nnn on the advanced configuration page." +msgstr "Для переопределения этих лимитов добавьте параметры i2np.ntcp.maxConnections=nnn и i2np.udp.maxConnections=nnn на странице расширенных настроек." #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 msgid "Definitions" msgstr "Условные обозначения" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:735 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890 #: ../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/ProfileOrganizerRenderer.java:189 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:238 msgid "Peer" msgstr "Пир" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 msgid "The remote peer, identified by router hash" -msgstr "" -"Уникальный идентификатор пира (несколько начальных символов из хеша его " -"маршрутизатора)" +msgstr "Уникальный идентификатор пира (несколько начальных символов из хеша его маршрутизатора)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:736 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 msgid "Dir" msgstr "Направление" @@ -276,28 +259,24 @@ msgstr "Исходящее соединение" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 msgid "They offered to introduce us (help other peers traverse our firewall)" -msgstr "" -"Этот пир предлагает себя в качестве нашего посредника (для того, чтобы " -"другие пиры могли соединяться с нами в обход нашего брандмауэра)" +msgstr "Этот пир предлагает себя в качестве нашего посредника (для того, чтобы другие пиры могли соединяться с нами в обход нашего брандмауэра)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532 msgid "We offered to introduce them (help other peers traverse their firewall)" -msgstr "" -"Мы предлагаем себя в качестве посредника для этого пира (для того, чтобы " -"другие пиры могли соединяться с ним в обход его брандмауэра)" +msgstr "Мы предлагаем себя в качестве посредника для этого пира (для того, чтобы другие пиры могли соединяться с ним в обход его брандмауэра)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "How long since a packet has been received / sent" msgstr "Сколько прошло времени после приёма/передачи последнего пакета" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895 msgid "Idle" msgstr "Неактивен" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1900 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "In/Out" @@ -312,13 +291,13 @@ msgid "How long ago this connection was established" msgstr "Время жизни соединения" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905 msgid "Up" msgstr "Подключен" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:742 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1907 msgid "Skew" msgstr "Сдвиг" @@ -328,12 +307,8 @@ msgid "The difference between the peer's clock and your own" msgstr "Разница хода часов между пиром и нами" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 -msgid "" -"The congestion window, which is how many bytes can be sent without an " -"acknowledgement" -msgstr "" -"Congestion Window. Окно насыщения — количество байт, которое мы можем " -"послать до ожидания подтверждения" +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:538 msgid "The number of sent messages awaiting acknowledgement" @@ -353,9 +328,7 @@ msgstr "Slow Start Threshold. Величина порога медлен #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 msgid "The round trip time in milliseconds" -msgstr "" -"Round-Trip Time. Время между отправкой запроса и получением ответа " -"(миллисекунды)" +msgstr "Round-Trip Time. Время между отправкой запроса и получением ответа (миллисекунды)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 @@ -368,20 +341,14 @@ msgstr "Среднеквадратическое отклонение RTT (ми #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 msgid "The retransmit timeout in milliseconds" -msgstr "" -"Retransmit Time-Out. Время ожидания подтверждения перед повторной " -"посылкой пакета (миллисекунды)" +msgstr "Retransmit Time-Out. Время ожидания подтверждения перед повторной посылкой пакета (миллисекунды)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 -msgid "" -"Current maximum send packet size / estimated maximum receive packet size " -"(bytes)" -msgstr "" -"Maximum Transfer Unit. Текущий максимальный размер исходящего " -"пакета / максимальный размер принятого пакета (байт) " +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:546 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:743 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 msgid "TX" msgstr "Передано" @@ -391,7 +358,7 @@ msgid "The total number of packets sent to the peer" msgstr "Общее количество посланных пиру пакетов" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:742 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:744 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926 msgid "RX" msgstr "Принято" @@ -424,42 +391,42 @@ msgstr "Общее количество повторно принятых от msgid "Excessive clock skew: {0}" msgstr "Чрезмерное расхождение времени: {0}" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:730 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732 msgid "NTCP connections" msgstr "NTCP соединения" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:731 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:733 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1886 msgid "Limit" msgstr "Ограничение" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:734 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 msgid "Timeout" msgstr "Таймаут" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:743 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:745 msgid "Out Queue" msgstr "Исходящая очередь" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:744 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:746 msgid "Backlogged?" msgstr "В очереди?" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:758 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1949 -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87 msgid "Inbound" msgstr "Входящие" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:762 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1951 -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87 msgid "Outbound" msgstr "Исходящие" #. buf.append("
    \n"); -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:807 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:809 msgid "peers" msgstr "пиров" @@ -579,23 +546,22 @@ msgstr "Игнорируем запросы туннелей: Время вып msgid "Dropping tunnel requests: Overloaded" msgstr "Игнорируем запросы туннелей: Слишком высокая нагрузка" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:460 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:470 msgid "Rejecting tunnels: Request overload" msgstr "Не принимаем туннели: Слишком много запросов" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:485 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:495 msgid "Rejecting tunnels: Connection limit" msgstr "Не принимаем туннели: Достигнут предел количества соединений" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:685 -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:706 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:695 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:716 msgid "Dropping tunnel requests: High load" msgstr "Игнорируем запросы туннелей: Высокая нагрузка" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:698 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:708 msgid "Dropping tunnel requests: Queue time" -msgstr "" -"Игнорируем запросы туннелей: Слишком большое время пребывания в очереди" +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!! @@ -1483,7 +1449,8 @@ msgstr "Сент-Винсент и Гренадины" msgid "Venezuela" msgstr "Венесуэла" -#: ../java/build/Countries.java:229 ../java/build/Countries.java:230 +#: ../java/build/Countries.java:229 +#: ../java/build/Countries.java:230 msgid "Virgin Islands" msgstr "Виргинские острова" @@ -1523,12 +1490,12 @@ msgstr "Замбия" msgid "Zimbabwe" msgstr "Зимбабве" -#: ../java/src/net/i2p/router/web/CSSHelper.java:58 +#: ../java/src/net/i2p/router/web/CSSHelper.java:60 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:35 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:37 #: ../java/strings/Strings.java:29 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:119 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:233 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:125 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:257 msgid "I2P Router Console" msgstr "Консоль маршрутизатора I2P" @@ -1543,35 +1510,31 @@ 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 "" -"Не удалось сохранить настройки (применены, но не сохранены) — загляните в " -"логи ошибок" +msgid "Error saving the configuration (applied but not saved) - please see the error logs" +msgstr "Не удалось сохранить настройки (применены, но не сохранены) — загляните в логи ошибок" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:355 msgid "Save Client Configuration" msgstr "Сохранить настройки клиентов" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:39 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:405 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427 msgid "Save Interface Configuration" msgstr "Сохранить настройки интерфейса" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:441 msgid "Save WebApp Configuration" msgstr "Сохранить настройки веб-апплетов" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:47 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:453 msgid "Save Plugin Configuration" msgstr "Сохранить настройки плагинов" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:51 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:461 msgid "Install Plugin" msgstr "Установить плагин" @@ -1613,11 +1576,8 @@ msgid "New client added" msgstr "Добавлен новый клиент" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:193 -msgid "" -"Client configuration saved successfully - restart required to take effect." -msgstr "" -"Настройки клиентов сохранены, требуется перезапуск маршрутизатора для " -"вступления в силу." +msgid "Client configuration saved successfully - restart required to take effect." +msgstr "Настройки клиентов сохранены, требуется перезапуск маршрутизатора для вступления в силу." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 @@ -1627,7 +1587,7 @@ msgstr "Индекс клиента не найден в списке." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:392 #: ../java/src/net/i2p/router/web/SummaryHelper.java:384 msgid "Client" msgstr "Клиентские" @@ -1700,11 +1660,8 @@ msgid "Error starting plugin {0}" msgstr "Ошибка при запуске плагина {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 -msgid "" -"Interface configuration saved successfully - restart required to take effect." -msgstr "" -"Настройки интерфейса успешно сохранены, требуется перезапуск маршрутизатора " -"для вступления в силу." +msgid "Interface configuration saved successfully - restart required to take effect." +msgstr "Настройки интерфейса успешно сохранены, требуется перезапуск маршрутизатора для вступления в силу." #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:85 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258 @@ -1712,7 +1669,7 @@ msgid "Edit" msgstr "Редактировать" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:94 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351 msgid "Add Client" msgstr "Добавить клиент" @@ -1743,7 +1700,7 @@ msgid "Plugin" msgstr "Плагин" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:161 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:273 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185 msgid "Version" msgstr "Версия" @@ -1778,14 +1735,12 @@ msgstr "Остановить" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:262 #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:78 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331 msgid "Check for updates" msgstr "Проверить обновления" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:263 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:242 msgid "Update" msgstr "Обновление" @@ -1799,12 +1754,12 @@ msgid "Delete" msgstr "Удалить" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:18 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:343 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:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:341 msgid "Delete key" msgstr "Удалить ключ" @@ -1851,19 +1806,12 @@ msgid "Log configuration saved" msgstr "Настройки логирования сохранены" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 -msgid "" -"Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" -msgstr "" -"Впишите выше дополнительные настройки уровней детализации лога. Пример: net." -"i2p.router.tunnel=WARN" +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:49 -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" +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:50 msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT" @@ -1913,7 +1861,7 @@ msgstr "Служба" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:101 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381 #: ../java/strings/Strings.java:72 msgid "Tunnels" msgstr "Туннели" @@ -1927,7 +1875,7 @@ msgid "Clients" msgstr "Апплеты" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:293 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:315 msgid "Keyring" msgstr "Ключи" @@ -1937,13 +1885,13 @@ msgstr "Логи" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:107 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:255 #: ../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:387 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:389 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:143 msgid "Stats" msgstr "Статистика" @@ -1956,13 +1904,13 @@ msgstr "Расширенные" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:264 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:29 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:34 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:360 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:516 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:307 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:341 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:352 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:377 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:344 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:378 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:534 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:370 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:362 msgid "Save changes" msgstr "Сохранить настройки" @@ -2066,7 +2014,7 @@ 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:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:333 msgid "Ban peer until restart" msgstr "Забанить пира до перезапуска маршрутизатора" @@ -2086,7 +2034,7 @@ 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:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:335 msgid "Unban peer" msgstr "Разбанить пира" @@ -2099,7 +2047,7 @@ 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:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:361 msgid "Adjust peer bonuses" msgstr "Изменить бонусы" @@ -2112,7 +2060,7 @@ msgid "Bad capacity value" msgstr "Некорректное значение ёмкости" #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:17 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:368 msgid "Save changes and reseed now" msgstr "Сохранить настройки и выполнить начальную загрузку" @@ -2132,7 +2080,7 @@ 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:293 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:311 msgid "Shutdown immediately" msgstr "Выключить немедленно" @@ -2179,7 +2127,7 @@ 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:291 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:309 msgid "Shutdown gracefully" msgstr "Выключить плавно" @@ -2192,7 +2140,7 @@ 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:295 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:313 msgid "Cancel graceful shutdown" msgstr "Отменить плавное выключение" @@ -2201,7 +2149,7 @@ 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:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 msgid "Graceful restart" msgstr "Перезапустить плавно" @@ -2210,7 +2158,7 @@ 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:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 msgid "Hard restart" msgstr "Перезапустить немедленно" @@ -2235,22 +2183,22 @@ 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:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 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:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:355 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:355 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:373 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:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:381 msgid "View console on startup" msgstr "Открывать веб-консоль при запуске I2P" @@ -2259,7 +2207,7 @@ msgid "Console is to be shown on startup" msgstr "Веб-консоль будет открываться при запуске I2P" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:94 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:383 msgid "Do not view console on startup" msgstr "Не открывать веб-консоль при запуске I2P" @@ -2292,12 +2240,8 @@ msgid "Failed to update the stat filter and location" msgstr "Не удалось обновить настройки файла и фильтра статистики." #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:114 -msgid "" -"Graph list updated, may take up to 60s to be reflected here and on the Graphs Page" -msgstr "" -"Список графиков обновлен, для обновления содержимого страницы графиков может потребоваться до 60 секунд." +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."); @@ -2311,12 +2255,8 @@ msgstr "Настройки зондирующих туннелей сохран #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:36 -msgid "" -"Error saving the configuration (applied but not saved) - please see the " -"error logs." -msgstr "" -"Не удалось сохранить настройки (применены, но не сохранены) — загляните в " -"логи ошибок" +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 @@ -2335,61 +2275,58 @@ msgstr[0] "{0} туннель" msgstr[1] "{0} туннеля" msgstr[2] "{0} туннелей" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:26 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:35 #: ../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:51 +#, java-format +msgid "Client tunnels for {0}" +msgstr "Клиентские туннели для {0}" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:69 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74 msgid "ANONYMITY WARNING - Settings include 0-hop tunnels." msgstr "ОПАСНО ДЛЯ АНОНИМНОСТИ — Настройки задают 0-хоповые туннели." -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:79 msgid "ANONYMITY WARNING - Settings include 1-hop tunnels." msgstr "ОПАСНО ДЛЯ АНОНИМНОСТИ — Настройки задают 1-хоповые туннели." -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:77 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 msgid "PERFORMANCE WARNING - Settings include very long tunnels." -msgstr "" -"ОПАСНО ДЛЯ ПРОИЗВОДИТЕЛЬНОСТИ — Настройки задают слишком длинные туннели." +msgstr "ОПАСНО ДЛЯ ПРОИЗВОДИТЕЛЬНОСТИ — Настройки задают слишком длинные туннели." -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:80 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:85 msgid "PERFORMANCE WARNING - Settings include high tunnel quantities." -msgstr "" -"ОПАСНО ДЛЯ ПРОИЗВОДИТЕЛЬНОСТИ — Настройки задают слишком большие количества " -"туннелей." +msgstr "ОПАСНО ДЛЯ ПРОИЗВОДИТЕЛЬНОСТИ — Настройки задают слишком большие количества туннелей." #. buf.append("\n"); #. tunnel depth -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:92 msgid "Length" msgstr "Длина" #. tunnel depth variance -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:104 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:109 msgid "Randomization" msgstr "Разброс" #. tunnel quantity -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:128 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:133 msgid "Quantity" msgstr "Количество" #. tunnel backup quantity -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:145 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:150 msgid "Backup quantity" msgstr "Резервное количество" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:167 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:172 msgid "Inbound options" msgstr "Дополнительные параметры для входящих" -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:180 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:185 msgid "Outbound options" msgstr "Дополнительные параметры для исходящих" @@ -2506,14 +2443,9 @@ msgstr "Только скачать и проверить целостность msgid "Download, verify, and restart" msgstr "Скачать, проверить и обновить I2P" -#: ../java/src/net/i2p/router/web/FormHandler.java:174 -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/FormHandler.java:176 +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:93 msgid "Combined bandwidth graph" @@ -2542,8 +2474,8 @@ msgid "Plot averages" msgstr "Строить график средних значений" #: ../java/src/net/i2p/router/web/GraphHelper.java:152 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:333 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:351 msgid "or" msgstr "или" @@ -2593,71 +2525,71 @@ msgstr "Файл не найден" msgid "No log messages" msgstr "Нет сообщений" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:80 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:79 msgid "Network Database RouterInfo Lookup" msgstr "Просмотр RouterInfo" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:95 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:94 #: ../java/strings/Strings.java:68 msgid "Router" msgstr "Маршрутизатор" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:95 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:94 msgid "not found in network database" msgstr "не найден в сетевой базе данных" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:107 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:106 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:215 msgid "Network Database Contents" msgstr "Просмотр сетевой базы данных" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:108 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:107 msgid "View RouterInfo" msgstr "Показать список RouterInfo" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:109 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:108 msgid "LeaseSets" msgstr "Список LeaseSet" # This term intentionally left in English -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:131 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:130 msgid "LeaseSet" msgstr "LeaseSet" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:133 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:132 msgid "Local" msgstr "Локальный" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:135 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:134 msgid "Unpublished" msgstr "Неопубликованный" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:136 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:135 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:142 msgid "Destination" msgstr "Адрес назначения" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:153 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:152 #, java-format msgid "Expires in {0}" msgstr "Истекает через {0}" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:155 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:154 #, java-format msgid "Expired {0} ago" msgstr "Истек {0} назад" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:167 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:166 #: ../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:167 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:166 msgid "Lease" msgstr "Lease" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:169 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168 msgid "Tunnel" msgstr "Туннель" @@ -2681,97 +2613,97 @@ msgstr "Показать полный список" msgid "Show all routers with full stats" msgstr "Показать полный список с полной статистикой" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:265 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:266 msgid "Network Database Router Statistics" msgstr "Статистика маршрутизаторов" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:273 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:287 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:305 msgid "Count" msgstr "Количество" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:285 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:287 msgid "Transports" msgstr "Транспортный протокол" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:303 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:305 msgid "Country" msgstr "Страна" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:342 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:344 msgid "Our info" msgstr "Информация о нас" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:344 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:346 msgid "Peer info for" msgstr "Информация о пире" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:348 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:350 msgid "Full entry" msgstr "Показать полную запись" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:356 #: ../java/src/net/i2p/router/web/SummaryHelper.java:115 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 msgid "Hidden" msgstr "Скрытый" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:356 msgid "Updated" msgstr "Обновленный" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:355 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:358 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:357 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:360 #, java-format msgid "{0} ago" msgstr "{0} назад" #. shouldnt happen -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:357 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:361 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:359 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:363 msgid "Published" msgstr "Опубликовано" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:363 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:365 msgid "Address(es)" msgstr "Адрес(а)" # This term intentionally left in English -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:376 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:378 msgid "cost" msgstr "cost" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 msgid "Hidden or starting up" msgstr "В скрытом режиме или недавно запущен" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 msgid "SSU" msgstr "SSU" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:402 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 msgid "SSU with introducers" msgstr "SSU через посредников" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:404 msgid "NTCP" msgstr "NTCP" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:404 msgid "NTCP and SSU" msgstr "NTCP и SSU" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:404 msgid "NTCP and SSU with introducers" msgstr "NTCP и SSU через посредников" -#: ../java/src/net/i2p/router/web/NewsFetcher.java:93 +#: ../java/src/net/i2p/router/web/NewsFetcher.java:92 #, java-format msgid "News last updated {0} ago." msgstr "Новости последний раз обновлялись {0} назад." -#: ../java/src/net/i2p/router/web/NewsFetcher.java:99 +#: ../java/src/net/i2p/router/web/NewsFetcher.java:98 #, java-format msgid "News last checked {0} ago." msgstr "Новости последний раз проверялись {0} назад." @@ -2806,7 +2738,7 @@ msgid "Downloading plugin" msgstr "Загружается плагин" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:146 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:244 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:245 #, java-format msgid "{0}B transferred" msgstr "{0} байт скачано" @@ -2822,7 +2754,7 @@ msgid "Cannot create plugin directory {0}" msgstr "Не удалось создать директорию плагина {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:167 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:298 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:299 #, java-format msgid "from {0}" msgstr "из {0}" @@ -2871,12 +2803,8 @@ msgid "This plugin requires Java version {0} or higher" msgstr "Для этого плагина требуется версия Java {0} и выше" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 -msgid "" -"Downloaded plugin is for new installs only, but the plugin is already " -"installed" -msgstr "" -"Загруженный инсталлятор плагина предназначен только для первоначальной " -"установки, но такой плагин уже установлен" +msgid "Downloaded plugin is for new installs only, but the plugin is already installed" +msgstr "Загруженный инсталлятор плагина предназначен только для первоначальной установки, но такой плагин уже установлен" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:305 msgid "Installed plugin does not contain the required configuration file" @@ -2889,26 +2817,21 @@ msgstr "Подпись загруженного плагина не совпад #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:320 #, java-format msgid "Downloaded plugin version {0} is not newer than installed plugin" -msgstr "" -"Версия скачанного плагина {0} не новее версии уже установленного плагина" +msgstr "Версия скачанного плагина {0} не новее версии уже установленного плагина" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:327 #, java-format msgid "Plugin update requires installed plugin version {0} or higher" -msgstr "" -"Для обновления плагина требуется установленная версия плагина {0} и выше" +msgstr "Для обновления плагина требуется установленная версия плагина {0} и выше" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:334 #, java-format msgid "Plugin update requires installed plugin version {0} or lower" -msgstr "" -"Для обновления плагина требуется установленная версия плагина {0} и ниже" +msgstr "Для обновления плагина требуется установленная версия плагина {0} и ниже" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351 msgid "Plugin is for upgrades only, but the plugin is not installed" -msgstr "" -"Загруженный инсталлятор плагина предназначен только для обновления, но такой " -"плагин ещё не был установлен" +msgstr "Загруженный инсталлятор плагина предназначен только для обновления, но такой плагин ещё не был установлен" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:364 #, java-format @@ -2933,8 +2856,7 @@ msgstr "Плагин {0} установлен и запущен" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:394 #, java-format msgid "Plugin {0} installed but failed to start, check logs" -msgstr "" -"Плагин {0} установлен, но при его запуске произошел сбой, загляните в логи" +msgstr "Плагин {0} установлен, но при его запуске произошел сбой, загляните в логи" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:396 #, java-format @@ -2952,37 +2874,46 @@ msgstr "Профили пиров" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:73 #, java-format -msgid "Showing {0} recent profiles." -msgstr "Показано {0} недавно обновленных профилей" +msgid "Showing 1 recent profile." +msgid_plural "Showing {0} recent profiles." +msgstr[0] "Показан {0} недавно обновленный профиль." +msgstr[1] "Показано {0} недавно обновленных профиля." +msgstr[2] "Показано {0} недавно обновленных профилей." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:75 #, java-format -msgid "Hiding {0} older profiles." -msgstr "Скрыто {0} устаревших профилей." +msgid "Hiding 1 older profile." +msgid_plural "Hiding {0} older profiles." +msgstr[0] "Скрыт {0} устаревший профиль." +msgstr[1] "Скрыто {0} более старых профиля." +msgstr[2] "Скрыто {0} более старых профилей." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:77 #, java-format -msgid "Hiding {0} standard profiles." -msgstr "Также скрыто {0} стандартных профилей (кликните для показа)." +msgid "Hiding 1 standard profile." +msgid_plural "Hiding {0} standard profiles." +msgstr[0] "Скрыт {0} стандартный профиль." +msgstr[1] "Скрыто {0} стандартный профиля." +msgstr[2] "Скрыто {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:335 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:252 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:353 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:339 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:254 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:357 msgid "Capacity" msgstr "Ёмкость" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:85 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:255 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:256 msgid "Integration" msgstr "Интеграция" @@ -3008,7 +2939,7 @@ msgid "Failing" msgstr "Сбоит" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:287 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:282 msgid "Integrated" msgstr "Интегрированные" @@ -3021,162 +2952,158 @@ msgstr "Недоступен" msgid "Test Fails" msgstr "Неудачных тестов" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:175 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:177 msgid "profile" msgstr "профиль" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:184 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:186 msgid "Floodfill and Integrated Peers" msgstr "Floodfill и хорошо интегрированные пиры" # This term intentionally left in English -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:188 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190 msgid "Caps" msgstr "Caps" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:189 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:191 msgid "Integ. Value" msgstr "Интег. Значение" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:192 msgid "Last Heard About" msgstr "Последний раз слышали о" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:191 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:193 msgid "Last Heard From" msgstr "Последний приём" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:192 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:194 msgid "Last Good Send" msgstr "Последняя удачная передача" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:193 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195 msgid "Last Bad Send" msgstr "Последняя неудачная передача" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:194 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196 msgid "10m Resp. Time" msgstr "Время отклика (последние 10 мин)" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:197 msgid "1h Resp. Time" msgstr "Время отклика (последний 1 час)" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:198 msgid "1d Resp. Time" msgstr "Время отклика (последний 1 день)" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:197 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:199 msgid "Last Good Lookup" msgstr "Последний удачный поиск" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:198 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:200 msgid "Last Bad Lookup" msgstr "Последний неудачный поиск" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:199 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201 msgid "Last Good Store" msgstr "Последнее удачное размещение" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:200 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 msgid "Last Bad Store" msgstr "Последнее неудачное размещение" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:203 msgid "1h Fail Rate" msgstr "Уровень отказов за 1 час" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:204 msgid "1d Fail Rate" msgstr "Уровень отказов за 1 день" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:250 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:251 msgid "Thresholds" msgstr "Пороговые значения" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:252 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:253 msgid "fast peers" msgstr "быстрые пиры" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:254 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:255 msgid "high capacity peers" msgstr "высокоёмкие пиры" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:256 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 msgid " well integrated peers" msgstr "хорошо интегрированные пиры" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 msgid "as determined by the profile organizer" -msgstr "" -"определяется автоматически модулем ProfileOrganizer на основании собранной " -"информации о производительности пира" +msgstr "определяется автоматически модулем ProfileOrganizer на основании собранной информации о производительности пира" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 msgid "groups" msgstr "группы" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 msgid "capabilities in the netDb, not used to determine profiles" -msgstr "" -"информация о пире, предоставленная сетевой базой данных; для профилирования " -"не используется" +msgstr "информация о пире, предоставленная сетевой базой данных; для профилирования не используется" # This term intentionally left in English #. capabilities -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 #: ../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:261 +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 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 msgid "speed" msgstr "скорость" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 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 tunnels can we ask them to join in an hour?" +msgstr "к скольким туннелям мы можем попросить этого пира подсоединиться за час?" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 msgid "how many new peers have they told us about lately?" msgstr "о скольких новых пирах этот пир нам сообщил в последнее время?" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 msgid "integration" msgstr "интеграция" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264 msgid "is the peer banned, or unreachable, or failing tunnel tests?" msgstr "забанен ли этот пир, недоступен, дает ошибки на тестах?" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264 msgid "status" msgstr "статус" -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:57 +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:47 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:410 +msgid "none" +msgstr "нет" + +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:62 #, java-format msgid "Temporary ban expiring in {0}" msgstr "Временный бан истекает через {0}" -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:59 +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:64 #, java-format msgid "Banned until restart or in {0}" msgstr "Забанен до перезапуска или истечения {0}" -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:71 +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:76 msgid "unban now" msgstr "разбанить" @@ -3224,31 +3151,27 @@ msgid "Statistics gathered during this router's uptime" msgstr "Статистика собрана за время с последнего запуска маршрутизатора" #: ../java/src/net/i2p/router/web/StatsGenerator.java:63 -msgid "" -"The data gathered is quantized over a 1 minute period, so should just be " -"used as an estimate." -msgstr "" -"Собираемые данные округляются за 1-минутные промежутки, поэтому используйте " -"эту информацию только для приблизительной оценки." +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:64 msgid "These statistics are primarily used for development and debugging." msgstr "Эта статистика в основном используется для разработки и отладки." -#: ../java/src/net/i2p/router/web/StatsGenerator.java:105 -#: ../java/src/net/i2p/router/web/StatsGenerator.java:156 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:106 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:157 msgid "No lifetime events" msgstr "Нет событий за время работы" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:116 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:117 msgid "frequency" msgstr "частота" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:120 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:121 msgid "Rolling average events per period" msgstr "Скользящее среднее количество событий за период" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:124 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:125 msgid "Highest events per period" msgstr "Максимально количество событий за период" @@ -3259,38 +3182,48 @@ msgstr "Максимально количество событий за пери #. } #. buf.append(" avg interval between updates: (").append(num(curFreq.getAverageInterval())).append("ms, min "); #. buf.append(num(curFreq.getMinAverageInterval())).append("ms)"); -#: ../java/src/net/i2p/router/web/StatsGenerator.java:135 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:136 msgid "Lifetime average events per period" msgstr "Среднее количество событий за период" #. Display the strict average -#: ../java/src/net/i2p/router/web/StatsGenerator.java:140 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:141 msgid "Lifetime average frequency" msgstr "Средняя частота за время работы" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:168 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:144 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:234 +#, java-format +msgid "1 event" +msgid_plural "{0} events" +msgstr[0] "{0} событие" +msgstr[1] "{0} события" +msgstr[2] "{0} событий" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:169 msgid "rate" msgstr "интервал" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:170 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:171 msgid "Average" msgstr "Среднее" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:173 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:174 msgid "Highest average" msgstr "Максимальное среднее" -#. breaking the sentence like before makes translation in my language impossible. #: ../java/src/net/i2p/router/web/StatsGenerator.java:201 #, java-format -msgid "There were {0} event(s) in this period" -msgstr "Было {0} событий в этом периоде" +msgid "There was 1 event in this period." +msgid_plural "There were {0} events in this period." +msgstr[0] "Было {0} событие в этом периоде." +msgstr[1] "Было {0} события в этом периоде." +msgstr[2] "Было {0} событий в этом периоде." -#. buf.append(' '); #: ../java/src/net/i2p/router/web/StatsGenerator.java:203 #, java-format -msgid " which ended {0} ago." -msgstr "который закончился {0} назад." +msgid "The period ended {0} ago." +msgstr "Период закончился {0} назад." #: ../java/src/net/i2p/router/web/StatsGenerator.java:205 msgid "No events" @@ -3330,12 +3263,8 @@ msgid "Help & FAQ" msgstr "Справка и FAQ" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:55 -msgid "" -"Configure startup of clients and webapps (services); manually start dormant " -"services" -msgstr "" -"Настройка автозапуска клиентов и веб-апплетов, ручной запуск неактивных " -"приложений" +msgid "Configure startup of clients and webapps (services); manually start dormant services" +msgstr "Настройка автозапуска клиентов и веб-апплетов, ручной запуск неактивных приложений" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:57 msgid "I2P Services" @@ -3343,9 +3272,7 @@ msgstr "Сервисы I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:63 msgid "Manage your I2P hosts file here (I2P domain name resolution)" -msgstr "" -"Здесь можно управлять hosts-файлами (единственный механизм, используемый I2P " -"для отображения доменных имен)" +msgstr "Здесь можно управлять hosts-файлами (единственный механизм, используемый I2P для отображения доменных имен)" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:65 msgid "Addressbook" @@ -3384,12 +3311,12 @@ msgid "I2P Internals" msgstr "Настройки I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:99 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:384 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:379 msgid "View existing tunnels and tunnel build status" msgstr "Обзор списка существующих туннелей и статуса строящихся" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:105 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253 msgid "Show all current peer connections" msgstr "Просмотр списка текущих соединения с пирами" @@ -3473,97 +3400,100 @@ msgid "Uptime" msgstr "Время работы" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 -msgid "" -"Help with configuring your firewall and router for optimal I2P performance" -msgstr "" -"Помощь в настройке брандмауэра и маршрутизатора для обеспечения оптимальной " -"производительности I2P" +msgid "Help with configuring your firewall and router for optimal I2P performance" +msgstr "Помощь в настройке брандмауэра и маршрутизатора для обеспечения оптимальной производительности I2P" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 -msgid "Download" -msgstr "Скачать" +#. Note to translators: parameter is a version, e.g. "0.8.4" +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:232 +#, java-format +msgid "Download {0} Update" +msgstr "Скачать обновление {0}" +#. Note to translators: parameter is a date and time, e.g. "02-Mar 20:34 UTC" +#.
    is optional, to help the browser make the lines even in the button +#. If the translation is shorter than the English, you should probably not include
    #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:240 -msgid "Download Unsigned" -msgstr "Скачать неподписанное" +#, java-format +msgid "Download Unsigned
    Update {0}" +msgstr "Скачать неподписанное
    обновление {0}" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261 msgid "Active" msgstr "Активные" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270 msgid "Fast" msgstr "Быстрые" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:281 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:276 msgid "High capacity" msgstr "Высокоёмкие" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:293 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288 msgid "Known" msgstr "Известные" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:308 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:303 msgid "Help with firewall configuration" msgstr "Помощь в настройке брандмауэра" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:310 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:305 msgid "Check NAT/firewall" msgstr "Проверьте настройки NAT/брандмауэров." -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:330 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:325 msgid "Reseed" msgstr "Повторить начальную загрузку" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:347 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:342 msgid "Configure router bandwidth allocation" msgstr "Настройка ограничений скорости" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:349 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:344 msgid "Bandwidth in/out" msgstr "Трафик (вх./исх.)" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:369 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:364 msgid "Total" msgstr "Всего" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:371 msgid "Used" msgstr "Объём" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:391 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 msgid "Exploratory" msgstr "Зондирующие" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:398 msgid "Participating" msgstr "Транзитные" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:409 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:404 msgid "Share ratio" msgstr "Доля транзита" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:410 msgid "What's in the router's job queue?" msgstr "Просмотр очереди заданий маршрутизатора." -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412 msgid "Congestion" msgstr "Занятость" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:422 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417 msgid "Job lag" msgstr "Задержка задач" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:428 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:423 msgid "Message delay" msgstr "Задежка сообщений" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:434 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:429 msgid "Tunnel lag" msgstr "Задержка туннелей" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435 msgid "Backlog" msgstr "Очередь" @@ -3577,7 +3507,7 @@ msgid "ERR-Clock Skew of {0}" msgstr "ОШИБКА - Часы сбиты (расхождение {0})" #: ../java/src/net/i2p/router/web/SummaryHelper.java:122 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:595 msgid "OK" msgstr "OK" @@ -3602,17 +3532,13 @@ msgid "WARN-Firewalled and Fast" msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне и Быстрый" #: ../java/src/net/i2p/router/web/SummaryHelper.java:133 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 msgid "Firewalled" msgstr "Заблокирован извне" #: ../java/src/net/i2p/router/web/SummaryHelper.java:135 -msgid "" -"ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and " -"restart" -msgstr "" -"ОШИБКА - UDP-порт уже занят - перенастройте i2np.udp.internalPort=xxxx в " -"дополнительных настройках и перезапустите маршрутизатор" +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:141 msgid "ERR-No Active Peers, Check Network Connection and Firewall" @@ -3620,15 +3546,14 @@ msgstr "ОШИБКА - Нет активных пиров, проверьте п #: ../java/src/net/i2p/router/web/SummaryHelper.java:144 msgid "ERR-UDP Disabled and Inbound TCP host/port not set" -msgstr "" -"ОШИБКА - UDP отключено и не заданы адрес/порт для входящих TCP-соединений" +msgstr "ОШИБКА - UDP отключено и не заданы адрес/порт для входящих TCP-соединений" #: ../java/src/net/i2p/router/web/SummaryHelper.java:146 msgid "WARN-Firewalled with UDP Disabled" msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне при отключенном UDP" #: ../java/src/net/i2p/router/web/SummaryHelper.java:148 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 msgid "Testing" msgstr "Проверка" @@ -3672,10 +3597,6 @@ msgstr "Построение" msgid "Building tunnels" msgstr "Построение туннелей" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:410 -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 @@ -3710,10 +3631,14 @@ 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:287 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:309 msgid "configure" msgstr "настроить" +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:61 +msgid "Client tunnels for" +msgstr "Клиентские туннели для:" + #: ../java/src/net/i2p/router/web/TunnelRenderer.java:65 msgid "dead" msgstr "мертв" @@ -3838,67 +3763,67 @@ msgstr "Транзитных туннелей" msgid "Totals" msgstr "Всего" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:66 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:142 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:237 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:67 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:143 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:238 msgid "Updating" msgstr "Загружается обновление" #. Process the .sud/.su2 file -#: ../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:261 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:286 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:89 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:112 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:117 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:262 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:287 msgid "Update downloaded" msgstr "Обновление загружено" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:91 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:92 #, 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:281 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:112 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:282 msgid "Restarting" msgstr "Производится перезапуск" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:118 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:288 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:119 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:289 msgid "Click Restart to install" msgstr "Перезапустите I2P-маршрутизатор для установки" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:120 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:290 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:121 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:291 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:292 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:122 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:293 #, java-format msgid "Version {0}" msgstr "Версия {0}" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:126 +#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:127 #, java-format msgid "Failed copy to {0}" msgstr "Не удалось скопировать в {0}" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:184 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:185 #, java-format msgid "Updating from {0}" msgstr "Обновление из {0}" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:253 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:254 #, java-format msgid "No new version found at {0}" msgstr "Новая версия не обнаружена на {0}" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:281 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:282 msgid "Update verified" msgstr "Подлинность обновления проверена" -#: ../java/src/net/i2p/router/web/UpdateHandler.java:307 +#: ../java/src/net/i2p/router/web/UpdateHandler.java:308 #, java-format msgid "Transfer failed from {0}" msgstr "Не удалось произвести передачу файлов от {0}" @@ -4175,1709 +4100,1417 @@ msgstr "Низкоуровневая скорость передачи" msgid "How many peers we are actively talking with" msgstr "Количество пиров, с которыми мы активно общаемся" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:112 msgid "config networking" msgstr "настройки сети" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:224 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:224 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005ffr_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:231 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:222 +msgid "Summary Bar" +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:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:217 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:230 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:217 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:227 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:222 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:234 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:250 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005ffr_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:244 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:242 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:235 msgid "Refresh (s)" msgstr "Интервал автообновления
    панели (сек.)" #. ditto -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:221 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:234 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:221 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:231 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:226 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:219 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:237 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:254 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:251 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005ffr_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:248 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:245 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:239 msgid "Enable" msgstr "Включить" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:262 msgid "I2P Network Configuration" msgstr "Настройки сетевых свойств I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:298 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:316 msgid "Bandwidth limiter" msgstr "Ограничение скорости" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:300 -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:318 +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:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:322 msgid "KBps In" msgstr "Килобайт/секунду (на приём)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:336 msgid "KBps Out" msgstr "Килобайт/секунду (на отдачу)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:334 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:352 msgid "Share" msgstr "Доля транзитного трафика" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:341 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:326 msgid "NOTE" msgstr "ПРИМЕЧАНИЕ" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:361 #, java-format msgid "You have configured I2P to share only {0} KBps." -msgstr "" -"Вы настроили очень низкий лимит для транзитного трафика (всего {0} килобайт/" -"секунду)." +msgstr "Вы настроили очень низкий лимит для транзитного трафика (всего {0} килобайт/секунду)." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:346 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:364 msgid "I2P requires at least 12KBps to enable sharing. " msgstr "I2P нужно как минимум 12 килобайт/секунду для включения этой функции. " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347 -msgid "" -"Please enable sharing (participating in tunnels) by configuring more " -"bandwidth. " +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:365 +msgid "Please enable sharing (participating in tunnels) by configuring more bandwidth. " msgstr "Пожалуйста, повысьте долю транзитного трафика. " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:348 -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:366 +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:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:369 #, 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:354 -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:372 +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:358 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:305 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:327 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:403 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:348 -#: ../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:342 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:322 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:376 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:532 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:425 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:366 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:360 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:383 msgid "Cancel" msgstr "Отменить" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:375 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:393 msgid "IP and Transport Configuration" msgstr "Настройки IP и транспортных протоколов" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:377 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:395 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:324 msgid "The default settings will work for most people." msgstr "Большинству пользователей подойдут настройки по умолчанию." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:379 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:397 msgid "There is help below." msgstr "В конце страницы приведена справка по настройкам." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:381 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399 msgid "UPnP Configuration" msgstr "Настройки UPnP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:385 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 msgid "Enable UPnP to open firewall ports" -msgstr "" -"Использовать UPnP для автоматического открытия портов на брандмауэре/роутере" +msgstr "Использовать UPnP для автоматического открытия портов на брандмауэре/роутере" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:387 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:405 msgid "UPnP status" msgstr "статус UPnP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:389 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:407 msgid "IP Configuration" msgstr "Настройки IP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:391 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:461 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 msgid "Externally reachable hostname or IP address" msgstr " Имя хоста или IP-адрес доступные из интернета" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:413 msgid "Use all auto-detect methods" msgstr "Определять автоматически всеми доступными способами" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 msgid "Disable UPnP IP address detection" msgstr "Определять автоматически (без использования UPnP)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:421 msgid "Ignore local interface IP address" -msgstr "" -"Определять автоматически (без использования IP-адресов локальных сетевых " -"интерфейсов)" +msgstr "Определять автоматически (без использования IP-адресов локальных сетевых интерфейсов)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:407 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:425 msgid "Use SSU IP address detection only" msgstr "Определять автоматически (только через SSU)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:411 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:429 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 msgid "Specify hostname or IP" msgstr "Задать хост или IP вручную" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 msgid "Select Interface" msgstr "Выбрать сетевой интерфейс" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:449 msgid "Hidden mode - do not publish IP" msgstr "Скрытый режим, не публиковать IP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:451 msgid "(prevents participating traffic)" msgstr "(такой режим предотвращает транзит трафика)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:453 msgid "Action when IP changes" msgstr "Действие при смене IP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:439 -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:457 +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:441 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 msgid "Experimental" msgstr "экспериментальный режим, повышает анонимность" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:443 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:461 msgid "UDP Configuration:" msgstr "Настройки UDP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:445 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:463 msgid "UDP port:" msgstr "UDP-порт:" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:477 msgid "TCP Configuration" msgstr "Настройки TCP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:465 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:483 msgid "Use auto-detected IP address" msgstr "Использовать автоматически определенный IP-адрес" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:467 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:517 msgid "currently" msgstr "сейчас" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:471 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:489 msgid "if we are not firewalled" msgstr "если входящий порт не заблокирован" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:475 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 msgid "Always use auto-detected IP address (Not firewalled)" msgstr "Всегда использовать автоматически определенный IP-адрес" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:503 msgid "Disable inbound (Firewalled)" msgstr "Отключить поддержку входящих соединений" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:489 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:507 msgid "Completely disable" msgstr "Полностью отключить поддержку TCP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:491 -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:509 +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:493 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:511 msgid "Externally reachable TCP port" msgstr "Доступный из интернета TCP-порт" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:515 msgid "Use the same port configured for UDP" msgstr "Использовать настройки UDP-порта" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:505 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:523 msgid "Specify Port" msgstr "Задать порт вручную" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:527 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:348 msgid "Note" msgstr "ВНИМАНИЕ" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:512 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:530 msgid "Changing these settings will restart your router." msgstr "Изменение этих настроек повлечет перезапуск I2P маршрутизатора." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:536 msgid "Configuration Help" msgstr "Справка по настройкам сети" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:520 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 -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:538 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587 +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:522 -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:540 +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:524 -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:542 +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:526 -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:544 +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:528 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:546 msgid "Certain firewalls such as symmetric NATs may not work well with I2P." -msgstr "" -"Некоторые виды брандмауэров могут быть частично несовместимы с I2P " -"(например, симметричные NAT)." +msgstr "Некоторые виды брандмауэров могут быть частично несовместимы с I2P (например, симметричные NAT)." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:537 -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:555 +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:539 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 msgid "UPnP support is beta, and may not work for any number of reasons" -msgstr "" -"Поддержка UPnP находится в разработке (бета-версия). В следующих случаях " -"UPnP возможно не будет работать" +msgstr "Поддержка UPnP находится в разработке (бета-версия). В следующих случаях UPnP возможно не будет работать" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:541 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 msgid "No UPnP-compatible device present" msgstr "Не обнаружено UPnP-совместимых устройств" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:543 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 msgid "UPnP disabled on the device" msgstr "UPnP отключено на устройстве" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:545 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 msgid "Software firewall interference with UPnP" msgstr "Программный брандмауэр мешает корректной работе UPnP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:547 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 msgid "Bugs in the device's UPnP implementation" msgstr "UPnP в устройстве реализовано с ошибками " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:549 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 msgid "Multiple firewall/routers in the internet connection path" msgstr "Несколько маршрутизаторов/брандмауэров на пути к интернету" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:551 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 msgid "UPnP device change, reset, or address change" msgstr "Смена/сброс UPnP-устройства или изменение адреса " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:553 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:571 msgid "Review the UPnP status here." msgstr "Посмотреть статус UPnP можно тут." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 -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:573 +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:557 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575 msgid "Hostnames entered above will be published in the network database." -msgstr "" -"Если Вы задали вручную имена хостов, они будут опубликованы в сетевой базе." +msgstr "Если Вы задали вручную имена хостов, они будут опубликованы в сетевой базе." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 msgid "They are not private." msgstr "Не вводите локальные внутрисетевые имена." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 -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:579 +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:563 -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:581 +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:565 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 msgid "When in doubt, leave the settings at the defaults." msgstr "Если сомневаетесь — оставьте настройки по умолчанию." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 msgid "Reachability Help" msgstr "Справка по статусу сетевой доступности" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:572 -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:590 +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:575 -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:593 +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:579 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 msgid "Your UDP port does not appear to be firewalled." msgstr "Ваш UDP-порт доступен извне." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 msgid "Your UDP port appears to be firewalled." -msgstr "" -"Ваш UDP-порт заблокирован брандмауэром и не может принимать входящие " -"соединения." - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 -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:587 -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:589 -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:591 -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:593 -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:595 -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:599 -msgid "The router is currently testing whether your UDP port is firewalled." -msgstr "" -"Маршрутизатор проверяет возможность принятия входящих соединений на UDP-порт." +msgstr "Ваш UDP-порт заблокирован брандмауэром и не может принимать входящие соединения." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603 -msgid "" -"The router is not configured to publish its address, therefore it does not " -"expect incoming connections." -msgstr "" -"В настройках I2P-маршрутизатора запрещена публикация его адреса, как " -"результат, маршрутизатор не ожидает входящих соединений." +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:605 +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:607 +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:609 +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:611 +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:613 +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:617 +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:621 +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:623 msgid "WARN - Firewalled and Fast" msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне и Быстрый" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 -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:625 +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:609 -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:627 +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:611 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 msgid "WARN - Firewalled and Floodfill" msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне и Floodfill" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 -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:631 +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:615 -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:633 +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:617 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 msgid "WARN - Firewalled with Inbound TCP Enabled" msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне при включенном на вход TCP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 -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:637 +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:621 -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:639 +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:623 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 msgid "Please open your firewall or disable inbound TCP above." -msgstr "" -"Пожалуйста, проверьте состояние TCP-порта и разблокируйте его или отключите " -"поддержку входящих TCP-соединений." +msgstr "Пожалуйста, проверьте состояние TCP-порта и разблокируйте его или отключите поддержку входящих TCP-соединений." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 msgid "WARN - Firewalled with UDP Disabled" msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне при отключенном UDP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 msgid "You have configured inbound TCP, however you have disabled UDP." -msgstr "" -"Вы отключили поддержку UDP, однако Ваш TCP-порт заблокирован и в результате " -"Ваш маршрутизатор не может принимать входящие соединения." +msgstr "Вы отключили поддержку UDP, однако Ваш TCP-порт заблокирован и в результате Ваш маршрутизатор не может принимать входящие соединения." # This string intentionally left blank -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 -msgid "" -"You appear to be firewalled on TCP, therefore your router cannot accept " -"inbound connections." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 +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:631 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 msgid "Please open your firewall or enable UDP." msgstr "Пожалуйста, разблокируйте порт или включите поддержку UDP." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:651 msgid "ERR - Clock Skew" msgstr "ОШИБКА - Часы сбиты" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 -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:653 +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:637 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:655 msgid "Correct your clock setting if this error persists." -msgstr "" -"Поправьте настройки времени, если Вы постоянно видите это сообщение об " -"ошибке." +msgstr "Поправьте настройки времени, если Вы постоянно видите это сообщение об ошибке." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:657 msgid "ERR - Private TCP Address" msgstr "ОШИБКА - Частный TCP Адрес" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 -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:659 +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:643 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 msgid "Correct the address or disable inbound TCP above." msgstr "Исправьте адрес или отключите поддержку входящих TCP-соединений." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:663 msgid "ERR - SymmetricNAT" msgstr "ОШИБКА - Симметричный NAT" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:665 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:649 -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:667 +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:651 -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:669 +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:653 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 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:655 -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." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:673 +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:657 -msgid "" -"This may be a transient error, if the other program is no longer using the " -"port." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:675 +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:659 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:677 msgid "However, a restart is always required after this error." msgstr "После возникновения этой ошибки необходим перезапуск I2P." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:679 msgid "ERR - UDP Disabled and Inbound TCP host/port not set" -msgstr "" -"ОШИБКА - UDP отключено и не заданы адрес/порт для входящих TCP-соединений" +msgstr "ОШИБКА - UDP отключено и не заданы адрес/порт для входящих TCP-соединений" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:663 -msgid "" -"You have not configured inbound TCP with a hostname and port above, however " -"you have disabled UDP." -msgstr "" -"Вы не задали адрес/порт для входящих TCP-соединений и одновременно отключили " -"поддержку UDP, в результате Ваш маршрутизатор не может принимать входящие " -"соединения." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:681 +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:665 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:683 msgid "Therefore your router cannot accept inbound connections." msgstr " " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:667 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:685 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:669 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:687 msgid "ERR - Client Manager I2CP Error - check logs" msgstr "ОШИБКА - ошибка менеджера I2CP - загляните в логи" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:671 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:689 msgid "This is usually due to a port 7654 conflict. Check the logs to verify." -msgstr "" -"Эта ошибка обычно возникает из-за конфликта порта 7654. Загляните в логи " -"чтобы убедиться." +msgstr "Эта ошибка обычно возникает из-за конфликта порта 7654. Загляните в логи чтобы убедиться." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:673 -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/config_jsp.java:691 +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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:113 msgid "config advanced" msgstr "дополнительные настройки" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:263 msgid "I2P Advanced Configuration" msgstr "Дополнительные настройки I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:319 msgid "Advanced I2P Configuration" msgstr "Дополнительные настройки I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:329 msgid "Some changes may require a restart to take effect." -msgstr "" -"Для вступления некоторых изменений в силу может потребоваться перезапуск I2P-" -"маршрутизатора." +msgstr "Для вступления некоторых изменений в силу может потребоваться перезапуск I2P-маршрутизатора." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:112 msgid "config clients" msgstr "настройки клиентов" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:265 msgid "I2P Client Configuration" msgstr "Настройки клиентов I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:330 msgid "Client Configuration" msgstr "Настройки клиентов" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:314 -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:332 +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:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:338 msgid "To change other client options, edit the file" msgstr "Для изменения других клиентских настроек отредактируйте файл" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:325 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:401 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:415 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:439 msgid "All changes require restart to take effect." -msgstr "" -"Для вступления изменённых настроек в силу потребуется перезапуск " -"маршрутизатора." +msgstr "Для вступления изменённых настроек в силу потребуется перезапуск маршрутизатора." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 msgid "Advanced Client Interface Configuration" msgstr "Дополнительные настройки клиентского интерфейса" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:361 msgid "External I2CP (I2P Client Protocol) Interface Configuration" msgstr "Настройки внешнего интерфейса I2CP (I2P Client Protocol)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:345 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:367 msgid "Enabled without SSL" msgstr "Включен без требования SSL" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:373 msgid "Enabled with SSL required" msgstr "Включен с требованием SSL" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:379 msgid "Disabled - Clients outside this Java process may not connect" msgstr "Выключен - клиенты снаружи данного Java-процесса могут не соединяться" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:381 msgid "I2CP Port" msgstr "Порт I2CP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:385 msgid "I2CP Interface" msgstr "I2CP-интерфейс" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:379 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:401 msgid "Authorization" msgstr "Авторизация " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:385 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:407 msgid "Require username and password" msgstr "Требовать имя пользователя и пароль" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:387 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 msgid "Username" msgstr "Имя пользователя" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:391 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:413 msgid "Password" msgstr "Пароль" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:419 msgid "Any changes made here must also be configured in the external client." -msgstr "" -"Любые изменения, сделанные здесь, так же должны быть выполнены во внешнем " -"клиенте." +msgstr "Любые изменения, сделанные здесь, так же должны быть выполнены во внешнем клиенте." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:399 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:421 msgid "Many clients do not support SSL or authorization." msgstr "Многие клиенты не поддерживают SSL или авторизацию." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:407 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:429 msgid "WebApp Configuration" msgstr "Настройки веб-апплетов" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:409 -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:431 +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:411 -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:433 +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:421 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:445 msgid "Plugin Configuration" msgstr "Настройки плагинов" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:447 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:429 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:455 msgid "Plugin Installation" msgstr "Установка плагина" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:457 msgid "To install a plugin, enter the download URL:" msgstr "Для установки нового плагина введите URL:" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:112 msgid "config keyring" msgstr "настройки ключей" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:249 msgid "I2P Keyring Configuration" msgstr "Настройки связки ключей I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:317 msgid "The router keyring is used to decrypt encrypted leaseSets." -msgstr "" -"Маршрутизатор использует связку ключей для дешифровки зашифрованных LeaseSet." +msgstr "Маршрутизатор использует связку ключей для дешифровки зашифрованных LeaseSet." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:298 -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:320 +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:308 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:326 msgid "Manual Keyring Addition" msgstr "Добавление ключей" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:328 msgid "Enter keys for encrypted remote destinations here." msgstr "Здесь добавляются ключи для удаленных адресов назначения." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:331 msgid "Keys for local destinations must be entered on the" msgstr "Ключи для локальных адресов назначения настраиваются в" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:333 msgid "I2PTunnel page" msgstr "Менеджере Туннелей" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:335 msgid "Dest. name, hash, or full key" msgstr "Имя адреса назначения, хэш или полный ключ" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:337 msgid "Encryption Key" msgstr "Ключ шифрования" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:107 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:113 msgid "config logging" msgstr "настройки логирования" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:263 msgid "I2P Logging Configuration" msgstr "Настройки логирования I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 msgid "Configure I2P Logging Options" msgstr "Настройка опций логирования I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:321 msgid "Logging filename" msgstr "Лог-файл" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:325 msgid "(the symbol '@' will be replaced during log rotation)" msgstr "(во время ротации лога символ @ будет заменен на номер)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:327 msgid "Log record format" msgstr "Формат записи" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 -msgid "" -"(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:331 +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:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:333 msgid "Log date format" msgstr "Формат даты" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 -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:337 +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:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 msgid "Max log file size" msgstr "Максимальный размер лог-файла" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:343 msgid "Default log level" msgstr "Уровень детализации по умолчанию" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329 -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:347 +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:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:349 msgid "Log level overrides" msgstr "Переопределения уровня логирования" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:353 msgid "New override" msgstr "Новое переопределение" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:112 msgid "config peers" msgstr "настройки пиров" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:249 msgid "I2P Peer Configuration" msgstr "Настройки пиров I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:323 msgid "Manual Peer Controls" msgstr "Ручное управление пирами" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 msgid "Router Hash" msgstr "Хеш маршрутизатора" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:329 msgid "Manually Ban / Unban a Peer" msgstr "Вручную забанить/разбанить этого пира" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:313 -msgid "" -"Banning will prevent the participation of this peer in tunnels you create." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:331 +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:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:341 msgid "Adjust Profile Bonuses" msgstr "Настроить бонусы для этого пира" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:325 -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:343 +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:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:345 msgid "profiles page" msgstr "странице профилей пиров" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:345 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:251 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:273 msgid "Banned Peers" msgstr "Забаненные пиры" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:366 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:384 msgid "Banned IPs" msgstr "Забаненные IP-адреса" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:112 msgid "config reseeding" msgstr "настройка reseeding" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:262 msgid "I2P Reseeding Configuration" msgstr "Настройки начального обнаружения узлов I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:300 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 msgid "Reseeding Configuration" msgstr "Настройки начального обнаружения узлов (reseeding)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:302 -msgid "" -"Reseeding is the bootstrapping process used to find other routers when you " -"first install I2P, or when your router has too few router references " -"remaining." -msgstr "" -"Загрузка начального списка узлов (reseeding) - это процесс начальной " -"загрузки (бутстрап), используемый для нахождения других роутеров, когда вы " -"впервые установили I2P, или когда ваш роутер имеет слишком мало данных о " -"других роутерах." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:320 +msgid "Reseeding is the bootstrapping process used to find other routers when you first install I2P, or when your router has too few router references remaining." +msgstr "Загрузка начального списка узлов (reseeding) - это процесс начальной загрузки (бутстрап), используемый для нахождения других роутеров, когда вы впервые установили I2P, или когда ваш роутер имеет слишком мало данных о других роутерах." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304 -msgid "" -"If reseeding has failed, you should first check your network connection." -msgstr "" -"Если начальная загрузка не удалась, первым делом вы должны проверить " -"соединение с сетью." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:322 +msgid "If reseeding has failed, you should first check your network connection." +msgstr "Если начальная загрузка не удалась, первым делом вы должны проверить соединение с сетью." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:308 -msgid "" -"Change these only if HTTP is blocked by a restrictive firewall, reseed has " -"failed, and you have access to an HTTP proxy." -msgstr "" -"Меняйте эти параметры только если HTTP заблокирован на брандмауэре, " -"начальная загрузка не удалась, и вы имеете доступ к HTTP-прокси." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:326 +msgid "Change these only if HTTP is blocked by a restrictive firewall, reseed has failed, and you have access to an HTTP proxy." +msgstr "Меняйте эти параметры только если HTTP заблокирован на брандмауэре, начальная загрузка не удалась, и вы имеете доступ к HTTP-прокси." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:328 #, java-format msgid "See {0} for instructions on reseeding manually." -msgstr "" -"Смотрите {0} на предмет инструкций как выполнить начальную загрузку вручную." +msgstr "Смотрите {0} на предмет инструкций как выполнить начальную загрузку вручную." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:328 msgid "the FAQ" msgstr "FAQ" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:330 msgid "Reseed URL Selection" msgstr "Выбор URL для начальной загрузки" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:336 msgid "Try SSL first then non-SSL" msgstr "Сперва пробовать SSL, потом не-SSL" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:324 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:342 msgid "Use SSL only" msgstr "Использовать только SSL" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:348 msgid "Use non-SSL only" msgstr "Использовать только не-SSL" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:332 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 msgid "Reseed URLs" msgstr "Адреса reseed-узлов" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:336 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:354 msgid "Enable HTTP proxy (not used for SSL)" msgstr "Использовать HTTP-прокси (не используется для SSL)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:340 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:358 msgid "HTTP Proxy Host" msgstr "Хост HTTP-прокси" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:344 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:362 msgid "HTTP Proxy Port" msgstr "Порт HTTP-прокси" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:112 msgid "config service" msgstr "настройки службы" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:249 msgid "I2P Service Configuration" msgstr "Настройки службы I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:285 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:303 msgid "Shutdown the router" msgstr "Выключить маршрутизатор" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:287 -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:289 -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:299 -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:301 -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:303 -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:305 -msgid "" -"After tearing down the router, it will wait 1 minute before starting back up " -"again." +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:307 +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:317 +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:319 +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 " " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:315 +# This string intentionally left blank +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 +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:323 +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:333 msgid "Systray integration" msgstr "Интеграция в область уведомлений" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 -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:335 +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:319 -msgid "" -"(later on, I2P client applications will be able to integrate their own " -"functionality into the system tray as well)." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337 +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:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339 msgid "If you are on windows, you can either enable or disable that icon here." -msgstr "" -"Если Вы пользуетесь I2P под Windows, то здесь Вы можете настроить " -"отображение этого значка." +msgstr "Если Вы пользуетесь I2P под Windows, то здесь Вы можете настроить отображение этого значка." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:341 msgid "Show systray icon" msgstr "Показать значок статуса" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:343 msgid "Hide systray icon" msgstr "Спрятать значок статуса" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:345 msgid "Run on startup" msgstr "Автоматический запуск I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:329 -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:331 -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:341 -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:343 -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:347 +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:349 +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:359 +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:361 +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:365 msgid "Debugging" msgstr "Отладка" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:349 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:367 msgid "View the job queue" msgstr "Просмотр очереди заданий" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 -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:371 +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:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:377 msgid "Launch browser on router startup?" msgstr "Запускать браузер при старте I2P?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:361 -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/configservice_jsp.java:379 +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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:113 msgid "config stats" msgstr "настройки статистики" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:250 msgid "I2P Stats Configuration" msgstr "Настройки статистики I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:320 msgid "Configure I2P Stat Collection" msgstr "Настройки сбора статистики I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:322 msgid "Enable full stats?" msgstr "Включить полную статистику?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:329 msgid "change requires restart to take effect" msgstr "изменения вступят в силу только после перезапуска маршрутизатора" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:331 msgid "Stat file" 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:335 msgid "Filter" msgstr "Фильтр" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:319 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:328 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:348 msgid "toggle all" msgstr "переключить все" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:350 msgid "Log" msgstr "Лог" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:332 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:352 msgid "Graph" msgstr "График" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:371 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:391 msgid "Advanced filter" msgstr "Дополнительный фильтр" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:112 msgid "config tunnels" msgstr "настройки туннелей" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:262 msgid "I2P Tunnel Configuration" msgstr "Настройки туннелей I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:328 msgid "The default settings work for most people." msgstr "Большинству пользователей подойдут настройки по умолчанию. " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:332 msgid "There is a fundamental tradeoff between anonymity and performance." -msgstr "" -"Примите во внимание, что между анонимностью и эффективностью есть обратная " -"связь — длинные туннели более анонимны, но хуже работают." +msgstr "Примите во внимание, что между анонимностью и эффективностью есть обратная связь — длинные туннели более анонимны, но хуже работают." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:313 -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 хопов, а также большое количество туннелей (как обычных, " -"так и резервных) могут привести к снижению производительности/надежности " -"работы маршрутизатора." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:335 +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:316 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:338 msgid "High CPU and/or high outbound bandwidth usage may result." msgstr " " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:341 msgid "Change these settings with care, and adjust them if you have problems." -msgstr "" -"Осторожно вносите изменения в существующие настройки и возвращайте в " -"положение по умолчанию, если у Вас возникли проблемы." +msgstr "Осторожно вносите изменения в существующие настройки и возвращайте в положение по умолчанию, если у Вас возникли проблемы." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:333 -msgid "" -"Exploratory tunnel setting changes are stored in the router.config file." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:351 +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:336 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:354 msgid "Client tunnel changes are temporary and are not saved." -msgstr "" -"Настройки клиентских туннелей нигде не сохраняются и действуют только до " -"перезапуска." +msgstr "Настройки клиентских туннелей нигде не сохраняются и действуют только до перезапуска." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:338 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:356 msgid "To make permanent client tunnel changes see the" -msgstr "" -"Для задания перманентных изменений в настройках клиентских туннелей " -"воспользуйтесь" +msgstr "Для задания перманентных изменений в настройках клиентских туннелей воспользуйтесь" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:340 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:358 msgid "i2ptunnel page" msgstr "менеджером туннелей" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:112 msgid "config UI" msgstr "настройки интерфейса" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:262 msgid "I2P UI Configuration" msgstr "Настройки пользовательского интерфейса I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:314 msgid "Router Console Theme" msgstr "Тема оформления консоли маршрутизатора" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:339 msgid "Theme selection disabled for Internet Explorer, sorry." msgstr "Переключатель тем отключен для Internet Explorer, извините" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:312 -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:341 +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:316 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:345 msgid "Router Console Language" msgstr "Язык консоли маршрутизатора" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:320 -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:349 +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:324 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:353 msgid "Apply" msgstr "Применить" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:112 msgid "config update" msgstr "настройки обновления" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:249 msgid "I2P Update Configuration" msgstr "Настройки обновлений I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:321 msgid "Check for I2P and news updates" msgstr "Настройки проверки обновлений и новостей I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:323 msgid "News & I2P Updates" msgstr "Новости и обновления I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:327 msgid "Update In Progress" msgstr "Выполняется обновление" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:335 msgid "News URL" msgstr "URL новостей" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:339 msgid "Refresh frequency" msgstr "Интервал проверки" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:345 msgid "Update policy" msgstr "Режим обновления" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:349 msgid "Update through the eepProxy?" msgstr "Обновлять через I2P-прокси?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:353 msgid "eepProxy host" msgstr "Адрес I2P-прокси" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:357 msgid "eepProxy port" msgstr "Порт I2P-прокси" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 msgid "Update URLs" msgstr "URL обновлений" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:365 msgid "Trusted keys" msgstr "Доверенные ключи" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:369 msgid "Update with unsigned development builds?" msgstr "Обновлять до неподписанной тестовой сборки?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:355 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:373 msgid "Unsigned Build URL" msgstr "URL неподписанной тестовой сборки" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 -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:379 +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:367 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:385 msgid "Save" msgstr "Сохранить" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:115 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:121 msgid "Internal Error" msgstr "Внутренняя ошибка" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:117 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123 msgid "Router Console" msgstr "Консоль маршрутизатора I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:121 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:127 msgid "Configuration" msgstr "Настройки" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:135 msgid "Sorry! There has been an internal error." msgstr "К сожалению, была обнаружена внутренняя ошибка." #. note to translators - both parameters are URLs -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:133 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:232 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:254 #, java-format msgid "Please report bugs on {0} or {1}." msgstr "Пожалуйста сообщайте об ошибках в багтрекер по адресу {0} или {1}." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:137 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:236 -msgid "" -"You may use the username \"guest\" and password \"guest\" if you do not wish " -"to register." -msgstr "" -"Вы можете использовать имя пользователя \"guest\" и пароль \"guest\" если не " -"хотите регистрироваться." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:258 +msgid "You may use the username \"guest\" and password \"guest\" if you do not wish to register." +msgstr "Вы можете использовать имя пользователя \"guest\" и пароль \"guest\" если не хотите регистрироваться." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:139 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:238 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:145 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:260 msgid "Please include this information in bug reports" msgstr "Пожалуйста, добавляйте эту информацию в Ваши сообщения об ошибках" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:141 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:147 msgid "Error Details" msgstr "Подробности ошибки" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:149 #, java-format msgid "Error {0}" msgstr "Ошибка {0}" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:163 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:169 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:250 msgid "I2P Version and Running Environment" msgstr "Версия I2P и информация о среде выполнения" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:266 -msgid "" -"Note that system information, log timestamps, and log messages may provide " -"clues to your location; please review everything you include in a bug report." -msgstr "" -"Имейте в виду, что информация о системе, временные метки в логах, и сами " -"логи могут помочь выявить ваше местоположение; пожалуйста проверьте всё, что " -"вы включаете в сообщение об ошибке." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:197 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:288 +msgid "Note that system information, log timestamps, and log messages may provide clues to your location; please review everything you include in a bug report." +msgstr "Имейте в виду, что информация о системе, временные метки в логах, и сами логи могут помочь выявить ваше местоположение; пожалуйста проверьте всё, что вы включаете в сообщение об ошибке." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:117 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:123 msgid "Page Not Found" msgstr "Страница не найдена" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:242 -msgid "" -"Sorry! You appear to be requesting a non-existent Router Console page or " -"resource." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:264 +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:244 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:266 msgid "Error 404" msgstr "Ошибка 404" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:249 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:271 msgid "not found" msgstr "не найдено" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:106 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:112 msgid "graphs" msgstr "графики" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:249 msgid "I2P Performance Graphs" msgstr "Графики производительности I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:111 msgid "home" msgstr "Домашняя страница" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:331 +msgid "Welcome to I2P" +msgstr "Добро пожаловать в I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:111 msgid "job queue" msgstr "очередь заданий" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:248 msgid "I2P Router Job Queue" msgstr "Очередь заданий маршрутизатора I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:111 msgid "logs" msgstr "логи" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:248 msgid "I2P Router Logs" msgstr "Логи маршрутизатора I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:281 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:303 msgid "Critical Logs" msgstr "Логи критических ошибок" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:285 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:307 msgid "Router Logs" msgstr "Логи маршрутизатора" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:291 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:313 msgid "Service (Wrapper) Logs" msgstr "Логи службы (wrapper)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:111 msgid "network database summary" msgstr "сетевая база данных" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:248 msgid "I2P Network Database Summary" msgstr "Обзор сетевой базы данных I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:109 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:115 msgid "WebApp Not Found" msgstr "Веб-апплет не найден" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:230 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:252 msgid "Web Application Not Running" msgstr "Веб-приложение не запущено" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:232 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:254 msgid "The requested web application is not running." msgstr "Запрошенное веб-приложение не запущено." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:234 -msgid "" -"Please visit the config clients page to start it." -msgstr "" -"Пожалуйста, запустите его со страницы " -"настроек веб-апплетов." +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:256 +msgid "Please visit the config clients page to start it." +msgstr "Пожалуйста, запустите его со страницы настроек веб-апплетов." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:111 msgid "peer connections" msgstr "обзор пиров" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:248 msgid "I2P Network Peers" msgstr "Соединения с пирами I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:111 msgid "peer profiles" msgstr "профили пиров" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:248 msgid "I2P Network Peer Profiles" msgstr "Профили пиров сети I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:111 msgid "statistics" msgstr "статистика" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:265 msgid "I2P Router Statistics" msgstr "Статистика маршрутизатора I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:255 #, java-format msgid "Disable {0} Refresh" msgstr "Отключить {0} автообновление" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:111 msgid "tunnel summary" msgstr "обзор туннелей" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:226 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:248 msgid "I2P Tunnel Summary" msgstr "Обзор туннелей I2P" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:111 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:248 +msgid "Peer Profile" +msgstr "Профиль пира" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:275 +#, java-format +msgid "Profile for peer {0}" +msgstr "Профиль пира {0}" + +#~ msgid "Download" +#~ msgstr "Скачать" + #~ msgid "System tray icon enabled." #~ msgstr "Включен значок-индикатор статуса в области уведомлений." @@ -5939,9 +5572,6 @@ msgstr "Обзор туннелей I2P" #~ msgid "avg value" #~ msgstr "среднее значение" -#~ msgid "events" -#~ msgstr "событий" - #~ msgid "lifetime average" #~ msgstr "среднее за время работы" From b2c90b06336ee7d700cbc764d8cec1cadb349c9f Mon Sep 17 00:00:00 2001 From: m1xxy Date: Sat, 16 Apr 2011 01:20:58 +0000 Subject: [PATCH 434/463] update es --- apps/routerconsole/locale/messages_es.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/routerconsole/locale/messages_es.po b/apps/routerconsole/locale/messages_es.po index 61ad87d50..18ea5598f 100644 --- a/apps/routerconsole/locale/messages_es.po +++ b/apps/routerconsole/locale/messages_es.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2011-03-21 18:01+0000\n" -"PO-Revision-Date: 2011-04-08 23:38+0100\n" +"PO-Revision-Date: 2011-04-12 03:53+0100\n" "Last-Translator: mixxy \n" "Language-Team: Spanish (Castilian) \n" "MIME-Version: 1.0\n" @@ -1653,7 +1653,7 @@ msgstr "Buscando actualizaciones para el plugin {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:339 #, java-format msgid "Started plugin {0}" -msgstr "Plugin Iniciado {0}" +msgstr "Plugin {0} iniciado" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:341 #, java-format @@ -3250,7 +3250,7 @@ msgstr "Ayuda del router I2P & preguntas frecuentes" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:43 msgid "Help & FAQ" -msgstr "Ayuda & Preguntas frecuentes" +msgstr "Ayuda" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:55 msgid "Configure startup of clients and webapps (services); manually start dormant services" @@ -3461,7 +3461,7 @@ msgstr "Participando en" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:404 msgid "Share ratio" -msgstr "Tasa de compartición" +msgstr "Relación de compartición" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:410 msgid "What's in the router's job queue?" From 9c4d107b5d16a8f5f6ceaedd773321e692426c60 Mon Sep 17 00:00:00 2001 From: m1xxy Date: Sat, 16 Apr 2011 01:22:55 +0000 Subject: [PATCH 435/463] update de --- apps/routerconsole/locale/messages_de.po | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/apps/routerconsole/locale/messages_de.po b/apps/routerconsole/locale/messages_de.po index da8ba6f42..074daa5aa 100644 --- a/apps/routerconsole/locale/messages_de.po +++ b/apps/routerconsole/locale/messages_de.po @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-03-25 12:46+0000\n" -"PO-Revision-Date: 2011-03-25 16:01+0100\n" -"Last-Translator: \n" +"PO-Revision-Date: 2011-04-16 02:57+0100\n" +"Last-Translator: mixxy \n" "Language-Team: echelon , Sperreingang \n" "Language: \n" "MIME-Version: 1.0\n" @@ -3448,9 +3448,7 @@ msgstr "teilnehmend an" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:404 msgid "Share ratio" -msgstr "" -"Verhältnis \n" -" fremder/eigenen Hops" +msgstr "Kooperationsfaktor" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:410 msgid "What's in the router's job queue?" From 97bb2d81b703d4bf4c0cc8ab111d37324b6b360a Mon Sep 17 00:00:00 2001 From: zzz Date: Mon, 18 Apr 2011 03:12:51 +0000 Subject: [PATCH 436/463] 0.8.5 --- core/java/src/net/i2p/CoreVersion.java | 2 +- history.txt | 2 ++ installer/install.xml | 2 +- installer/resources/news.xml | 9 ++++----- router/java/src/net/i2p/router/RouterVersion.java | 2 +- .../i2p/router/peermanager/ProfilePersistenceHelper.java | 6 +++--- 6 files changed, 12 insertions(+), 11 deletions(-) diff --git a/core/java/src/net/i2p/CoreVersion.java b/core/java/src/net/i2p/CoreVersion.java index 230f55eae..4039caa82 100644 --- a/core/java/src/net/i2p/CoreVersion.java +++ b/core/java/src/net/i2p/CoreVersion.java @@ -16,7 +16,7 @@ package net.i2p; public class CoreVersion { /** deprecated */ public final static String ID = "Monotone"; - public final static String VERSION = "0.8.4"; + public final static String VERSION = "0.8.5"; public static void main(String args[]) { System.out.println("I2P Core version: " + VERSION); diff --git a/history.txt b/history.txt index 20924cd6d..2f9cfc8c7 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,5 @@ +* 2011-04-18 0.8.5 released + 2011-04-11 zzz * Console: Hide iframe on mobile browsers * DataHelper: Speed up eq() (Ticket #437) diff --git a/installer/install.xml b/installer/install.xml index 40a6e59c8..2f2e03f47 100644 --- a/installer/install.xml +++ b/installer/install.xml @@ -4,7 +4,7 @@ i2p - 0.8.4 + 0.8.5 diff --git a/installer/resources/news.xml b/installer/resources/news.xml index c8a740085..9006e0c8e 100644 --- a/installer/resources/news.xml +++ b/installer/resources/news.xml @@ -1,12 +1,11 @@
    -

    2011-03-02: 0.8.4 Released

    +

    2011-04-18: 0.8.5 Released

    -The 0.8.4 release contains some performance improvements and important bug fixes. -Also, i2psnark now supports magnet links. +The 0.8.5 release contains a few bug fixes and performance improvements, and lots of translation updates. As usual, upgrading is recommended.

    Please help grow the network. diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index f2522cd4e..a411b0099 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 = 9; + public final static long BUILD = 0; /** for example "-test" */ public final static String EXTRA = ""; diff --git a/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java b/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java index e278063aa..af0167f20 100644 --- a/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java +++ b/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java @@ -28,9 +28,9 @@ import net.i2p.util.SecureFileOutputStream; /** * Write profiles to disk at shutdown, * read at startup. - * The files are gzip compressed, however we unfortunately store them - * with a ".dat" extension instead of ".txt.gz", so it isn't apparent. - * TODO: Migrate to new extension. + * The files are gzip compressed, we previously stored them + * with a ".dat" extension instead of ".txt.gz", so it wasn't apparent. + * Now migrated to a ".txt.gz" extension. */ class ProfilePersistenceHelper { private final Log _log; From 1cec98d1802a9ab55f2b8e038f50b1b13c4b1a70 Mon Sep 17 00:00:00 2001 From: m1xxy Date: Wed, 20 Apr 2011 00:24:37 +0000 Subject: [PATCH 437/463] tweaks es --- apps/i2ptunnel/locale/messages_es.po | 6 +- apps/routerconsole/locale/messages_es.po | 70 ++++++++++++------------ apps/susimail/locale/messages_es.po | 6 +- 3 files changed, 41 insertions(+), 41 deletions(-) diff --git a/apps/i2ptunnel/locale/messages_es.po b/apps/i2ptunnel/locale/messages_es.po index 81a0556d5..ce7098182 100644 --- a/apps/i2ptunnel/locale/messages_es.po +++ b/apps/i2ptunnel/locale/messages_es.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2011-03-03 18:29+0000\n" -"PO-Revision-Date: 2011-04-08 23:36+0100\n" +"PO-Revision-Date: 2011-04-18 21:39+0100\n" "Last-Translator: mixxy \n" "Language-Team: Spanish (Castilian) \n" "MIME-Version: 1.0\n" @@ -43,12 +43,12 @@ msgstr "Configuración recargada para todos los túneles" #. and give them something to look at in any case #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:230 msgid "Starting tunnel" -msgstr "Túnel Inicial" +msgstr "Inicializando el túnel" #. and give them something to look at in any case #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:243 msgid "Stopping tunnel" -msgstr "Túnel final" +msgstr "Deteniendo el túnel" #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:311 msgid "Configuration changes saved" diff --git a/apps/routerconsole/locale/messages_es.po b/apps/routerconsole/locale/messages_es.po index 18ea5598f..2db728b11 100644 --- a/apps/routerconsole/locale/messages_es.po +++ b/apps/routerconsole/locale/messages_es.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2011-03-21 18:01+0000\n" -"PO-Revision-Date: 2011-04-12 03:53+0100\n" +"PO-Revision-Date: 2011-04-19 23:39+0100\n" "Last-Translator: mixxy \n" "Language-Team: Spanish (Castilian) \n" "MIME-Version: 1.0\n" @@ -155,18 +155,18 @@ msgstr "Rechazando túneles" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:125 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 msgid "Reseeding" -msgstr "Reiniciando semillas" +msgstr "Resembrando" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:141 #, java-format msgid "Reseed fetched only 1 router." msgid_plural "Reseed fetched only {0} routers." -msgstr[0] "Al reinicar semillas se ha encontrado un solo router." -msgstr[1] "Al reiniciar semillas se han encontrado sólo {0} routers." +msgstr[0] "El proceso de resembrar ha encontrado un solo router." +msgstr[1] "El proceso de resembrar ha encontrado sólo {0} routers." #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:148 msgid "Reseed failed." -msgstr "El reinicio de semillas ha fallado" +msgstr "El proceso de resembrar ha fallado" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:149 #, java-format @@ -175,16 +175,16 @@ msgstr "Consulta {0} para obtener ayuda." #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:150 msgid "reseed configuration page" -msgstr "Página de configuración del reinicio de semillas" +msgstr "Página de configuración del proceso de resembrar" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:293 msgid "Reseeding: fetching seed URL." -msgstr "Reiniciando semillas: Buscando la URL semilla" +msgstr "Resembrar: Buscando URL sembradora" #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:335 #, java-format msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." -msgstr "Reiniciando semillas: buscando información de routers de la URL semilla ({0} exitosas, {1} errores)." +msgstr "Resembrar: buscando informaciones de routers desde la URL sembradora ({0} exitosas, {1} errores)." #: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:512 msgid "NetDb entry" @@ -1952,11 +1952,11 @@ msgstr "a" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:221 msgid "Gracefully restarting into Hidden Router Mode" -msgstr "Reiniciando de forma segura en modo router oculto" +msgstr "Reiniciando de forma controlada en modo router oculto" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:223 msgid "Gracefully restarting to exit Hidden Router Mode" -msgstr "Reiniciando de forma segura para salir del modo router oculto" +msgstr "Reiniciando de forma controlada para salir del modo router oculto" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:232 msgid "Enabling UPnP, restart required to take effect" @@ -1983,7 +1983,7 @@ msgstr "Exigir introductores SSU" #. 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 "Reiniciando I2P de forma piadosa para cambiar la dirección publicada del router" +msgstr "Reiniciando I2P de forma controlada para cambiar la dirección publicada del router" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:314 msgid "Updating bandwidth share percentage" @@ -2059,16 +2059,16 @@ msgstr "valor de la capacidad Malo" #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:17 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:368 msgid "Save changes and reseed now" -msgstr "Guardar cambios y reiniciar semillas ahora" +msgstr "Guardar cambios y resembrar ahora" #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:21 msgid "Reseeding is already in progress" -msgstr "Reinicio de semillas ya está en proceso" +msgstr "Resembrar ya está en proceso" #. skip the nonce checking in ReseedHandler #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:24 msgid "Starting reseed process" -msgstr "Iniciando el proceso de reinicio de semillas" +msgstr "Iniciando el proceso de resembrar" #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:66 msgid "Configuration saved successfully." @@ -2126,11 +2126,11 @@ msgstr "Reiniciando en {0}" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:53 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:309 msgid "Shutdown gracefully" -msgstr "Apagar de forma piadosa" +msgstr "Apagar de forma controlada" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:56 msgid "Graceful shutdown initiated" -msgstr "Apagado de forma piadosa iniciado" +msgstr "Iniciado el apagado controlado" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:60 msgid "Shutdown immediately! boom bye bye bad bwoy" @@ -2139,20 +2139,20 @@ msgstr "Apagar inmediatamente! Boom adiós chico malo" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:61 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:313 msgid "Cancel graceful shutdown" -msgstr "Cancelar apagado piadoso" +msgstr "Cancelar el apagado controlado" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:63 msgid "Graceful shutdown cancelled" -msgstr "Apagado piadoso cancelado" +msgstr "Cancelado el apagado controlado" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:64 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325 msgid "Graceful restart" -msgstr "Reinicio seguro" +msgstr "Reinicio controlado" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:67 msgid "Graceful restart requested" -msgstr "Reinicio seguro solicitado" +msgstr "Ha sido solicitado el reinicio controlado" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:68 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327 @@ -2169,7 +2169,7 @@ msgstr "limpiar claves y reiniciar" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:73 msgid "Rekeying after graceful restart" -msgstr "Reinicio de claves después de reinicio de forma segura" +msgstr "Reinicio de claves después del reinicio controlado" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:76 msgid "Rekey and Shutdown" @@ -2177,7 +2177,7 @@ msgstr "limpiar claves y apagar" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:77 msgid "Rekeying after graceful shutdown" -msgstr "Reinicio de claves después de apagado de forma segura" +msgstr "Reinicio de claves después del apagado controlado" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:80 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353 @@ -3433,7 +3433,7 @@ msgstr "Comprobar NAT/cortafuegos" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:325 msgid "Reseed" -msgstr "Reiniciar Semillas" +msgstr "Rresembrar" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:342 msgid "Configure router bandwidth allocation" @@ -4930,32 +4930,32 @@ msgstr "IPs Baneadas" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:112 msgid "config reseeding" -msgstr "config de reinicio de semillas" +msgstr "config para resembrar " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:262 msgid "I2P Reseeding Configuration" -msgstr "configuración de reinicio de semillas I2P" +msgstr "Configuración del proceso de resembrar I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 msgid "Reseeding Configuration" -msgstr "Configuración de reinicio de semillas" +msgstr "Configuración de Resembrar" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:320 msgid "Reseeding is the bootstrapping process used to find other routers when you first install I2P, or when your router has too few router references remaining." -msgstr "El reinicio de semillas es el proceso de bootstrapping para encontrar otros routers cuando I2P se instala por primera vez , o cuando al router le quedan muy pocas referencias de otros routers." +msgstr "Resembrar es el proceso de bootstrapping para encontrar otros routers cuando I2P se instala por primera vez o cuando al router le quedan muy pocas referencias de otros routers." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:322 msgid "If reseeding has failed, you should first check your network connection." -msgstr "Si el reinicio de semillas ha fallado, primero debe comprobar la conexión de red." +msgstr "El proceso de resembrar ha fallado, primero debes comprobar la conexión de red." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:326 msgid "Change these only if HTTP is blocked by a restrictive firewall, reseed has failed, and you have access to an HTTP proxy." -msgstr "¡Sólo cambia estos parámetros si HTTP está bloqueado por un cortafuegos restrictivo, reiniciar semillas ha fracasado, y si tienes acceso a un proxy HTTP!" +msgstr "¡Cambia estos parámetros solamente si HTTP está bloqueado por un cortafuegos restrictivo, el proceso de resembrar ha fracasado, y si tienes acceso a un proxy HTTP!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:328 #, java-format msgid "See {0} for instructions on reseeding manually." -msgstr "Ver {0} para obtener instrucciones sobre el reinicio de semillas manual." +msgstr "Ver {0} para obtener instrucciones sobre cómo resembrar manualmente." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:328 msgid "the FAQ" @@ -4963,7 +4963,7 @@ msgstr "las preguntas más frecuentes" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:330 msgid "Reseed URL Selection" -msgstr "Reinicializar URL Seleccionada" +msgstr "Selección de URL resembradora" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:336 msgid "Try SSL first then non-SSL" @@ -4979,7 +4979,7 @@ msgstr "Usar no-SSL exclusivamente" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350 msgid "Reseed URLs" -msgstr "Reinicializar URLs" +msgstr "URLs resembradoras" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:354 msgid "Enable HTTP proxy (not used for SSL)" @@ -5007,7 +5007,7 @@ msgstr "Apagar el router" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 msgid "Graceful shutdown lets the router satisfy the agreements it has already made before shutting down, but may take a few minutes." -msgstr "El apagado seguro permite al router cumplir los acuerdos que ya ha hecho antes de apagar, pero puede tardar unos minutos." +msgstr "El apagado controlado permite al router cumplir los acuerdos que ya ha hecho antes de apagar, pero puede tardar unos minutos." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:307 msgid "If you need to kill the router immediately, that option is available as well." @@ -5023,7 +5023,7 @@ msgstr "Esto es útil en algunas situaciones - por ejemplo, si has cambiado algu #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 msgid "A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately." -msgstr "Un reinicio seguro tardará unos minutos (pero sus pares le agradecerán su paciencia), mientras que un reinicio duro lo hace inmediatamente." +msgstr "Un reinicio controlado tardará unos minutos (pero tus pares te agradecerán tu paciencia), mientras que un reinicio duro lo hace inmediatamente." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323 msgid "After tearing down the router, it will wait 1 minute before starting back up again." @@ -5071,7 +5071,7 @@ msgstr "Si está ejecutando I2p como servicio en este momento, quitarlo hará qu #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:361 msgid "You may want to consider shutting down gracefully, as above, then running uninstall_i2p_service_winnt.bat." -msgstr "Es posible que desee considerar el apagado seguro como se indica arriba, para ello, ejecute uninstall_i2p_service_winnt.bat." +msgstr "Es posible que desees considerar el apagado controlado como se indica arriba, para ello, ejecuta uninstall_i2p_service_winnt.bat." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:365 msgid "Debugging" diff --git a/apps/susimail/locale/messages_es.po b/apps/susimail/locale/messages_es.po index bcf4ec22e..8d930c4e7 100644 --- a/apps/susimail/locale/messages_es.po +++ b/apps/susimail/locale/messages_es.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2011-03-12 20:49+0000\n" -"PO-Revision-Date: 2011-04-08 23:54+0100\n" +"PO-Revision-Date: 2011-04-18 21:35+0100\n" "Last-Translator: mixxy \n" "Language-Team: Spanish (Castilian) \n" "MIME-Version: 1.0\n" @@ -314,7 +314,7 @@ msgstr "Cancelar" #: src/src/i2p/susi/webmail/WebMail.java:1599 msgid "Really delete the marked messages?" -msgstr "¿Realmente desea borrar los mensajes marcados?" +msgstr "¿Realmente deseas borrar los mensajes marcados?" #: src/src/i2p/susi/webmail/WebMail.java:1599 msgid "Yes, really delete them!" @@ -421,7 +421,7 @@ msgstr "Set" #: src/src/i2p/susi/webmail/WebMail.java:1668 msgid "Really delete this message?" -msgstr "¿Realmente desea borrar este mensaje?" +msgstr "¿Realmente deseas borrar este mensaje?" #: src/src/i2p/susi/webmail/WebMail.java:1668 msgid "Yes, really delete it!" From a8722e033cd399c416f19690880f405f020f461a Mon Sep 17 00:00:00 2001 From: m1xxy Date: Wed, 20 Apr 2011 00:28:02 +0000 Subject: [PATCH 438/463] tweaks es --- apps/routerconsole/locale/messages_es.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/routerconsole/locale/messages_es.po b/apps/routerconsole/locale/messages_es.po index 2db728b11..ac5fb95d3 100644 --- a/apps/routerconsole/locale/messages_es.po +++ b/apps/routerconsole/locale/messages_es.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2011-03-21 18:01+0000\n" -"PO-Revision-Date: 2011-04-19 23:39+0100\n" +"PO-Revision-Date: 2011-04-20 02:25+0100\n" "Last-Translator: mixxy \n" "Language-Team: Spanish (Castilian) \n" "MIME-Version: 1.0\n" @@ -3861,7 +3861,7 @@ msgstr "Túneles de aplicaciónes" #: ../java/strings/Strings.java:25 msgid "My eepsite web server" -msgstr "Mi servidor web eepsite" +msgstr "Mi servidor web I2P" #: ../java/strings/Strings.java:26 msgid "I2P webserver (eepsite)" @@ -3885,7 +3885,7 @@ msgstr "proxy IRC" #: ../java/strings/Strings.java:38 msgid "eepsite" -msgstr "eepsite" +msgstr "sitio I2P" #: ../java/strings/Strings.java:39 msgid "I2P webserver" @@ -5248,7 +5248,7 @@ msgstr "Política de actualizaciones" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:349 msgid "Update through the eepProxy?" -msgstr "¿Actualizar utilizando el eeProxy?" +msgstr "¿Actualizar utilizando el eepProxy?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:353 msgid "eepProxy host" From 50dabfec8c05f142158ebc1685024a8b47c9a1e2 Mon Sep 17 00:00:00 2001 From: magma Date: Sun, 24 Apr 2011 07:37:20 +0000 Subject: [PATCH 439/463] typo typo --- installer/resources/readme/readme_fr.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer/resources/readme/readme_fr.html b/installer/resources/readme/readme_fr.html index 4689ca43a..04c580153 100644 --- a/installer/resources/readme/readme_fr.html +++ b/installer/resources/readme/readme_fr.html @@ -27,7 +27,7 @@ s'affichent en face des destinations locales, le monde d'I2P vous est ouv vous pouvez aussi héberger vos propres services anonyme. Vous avez également un accès anonyme au web normal via le serveur mandataire sortant ("outproxy") I2P intégré. Pour ceci, configurez votre navigateur pour qu'il utilise le -le mandataire 127.0.0.1 sur le port 4444, puis promenez-vous sur les sites eep ou non cryptés normaux +mandataire 127.0.0.1 sur le port 4444, puis promenez-vous sur les sites eep ou non cryptés normaux (adresses http://. Vous trouverez sûrement un intérêt à utiliser un navigateur préconfiguré: essayez I2PFox, une version de Firefox renforcée en termes de sécurité et spécialement adaptée à i2P. Si vous voulez désactiver ou modifier l'accès mandaté à l'Internet normal, enlevez ou modifiez l'entrée From e4a8b9621df483312e521293b8b69d773b828170 Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 25 Apr 2011 06:29:20 +0000 Subject: [PATCH 440/463] site (plugin) --- installer/resources/readme/readme_fr.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer/resources/readme/readme_fr.html b/installer/resources/readme/readme_fr.html index 04c580153..9f2122dd9 100644 --- a/installer/resources/readme/readme_fr.html +++ b/installer/resources/readme/readme_fr.html @@ -91,7 +91,7 @@ autre chose que vous les i2plugins.i2p. Si vous êtes développeur, vous disposez d'un environnement d'écriture de greffons indépendant de tout langage dans la -documentation; les greffons I2P peuvent être codés dans +documentation; les greffons I2P peuvent être codés dans n'importe quel langage. From 38db0b0ff31600c034cb057c94442e08ba58ab5f Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 28 Apr 2011 17:57:30 +0000 Subject: [PATCH 441/463] * UPnP: Strip trailing nulls from incoming XML to prevent "content not allowed in trailing section" exceptions from stupid routers --- .../cybergarage/xml/parser/JaxpParser.java | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/router/java/src/org/cybergarage/xml/parser/JaxpParser.java b/router/java/src/org/cybergarage/xml/parser/JaxpParser.java index 8de6b06b8..7b220ef0c 100644 --- a/router/java/src/org/cybergarage/xml/parser/JaxpParser.java +++ b/router/java/src/org/cybergarage/xml/parser/JaxpParser.java @@ -17,6 +17,8 @@ package org.cybergarage.xml.parser; +import java.io.FilterInputStream; +import java.io.IOException; import java.io.InputStream; import javax.xml.parsers.DocumentBuilder; @@ -102,7 +104,7 @@ public class JaxpParser extends Parser try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); - InputSource inSrc = new InputSource(inStream); + InputSource inSrc = new InputSource(new NullFilterInputStream(inStream)); Document doc = builder.parse(inSrc); org.w3c.dom.Element docElem = doc.getDocumentElement(); @@ -124,4 +126,27 @@ public class JaxpParser extends Parser return root; } + /** + * I2P - + * Filter out nulls, hopefully to avoid + * SAXParserException "Content not allowed in trailing section", + * which is apparently caused by nulls. + * Alternative is to remove all stuff between '>' and '<', + * which isn't so hard if we assume no CDATA. + */ + private static class NullFilterInputStream extends FilterInputStream { + + public NullFilterInputStream(InputStream is) { + super(is); + } + + @Override + public int read() throws IOException { + int rv; + while ((rv = super.read()) == 0) { + // try again + } + return rv; + } + } } From e8d94982e41a6495b64fd1fd573db26351f2c0c4 Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 28 Apr 2011 18:01:48 +0000 Subject: [PATCH 442/463] * Console: Try to prevent cascaded IllegalStateExceptions in .jsp code; add logging for original error --- apps/routerconsole/jsp/flags.jsp | 31 +++++++++++++++----------- apps/routerconsole/jsp/viewhistory.jsp | 9 +++++++- apps/routerconsole/jsp/viewtheme.jsp | 9 +++++++- 3 files changed, 34 insertions(+), 15 deletions(-) diff --git a/apps/routerconsole/jsp/flags.jsp b/apps/routerconsole/jsp/flags.jsp index 153b4c2f2..7148782e3 100644 --- a/apps/routerconsole/jsp/flags.jsp +++ b/apps/routerconsole/jsp/flags.jsp @@ -11,7 +11,6 @@ * flags.jsp?c=de => icons/flags/de.png * with headers set so the browser caches. */ -boolean rendered = false; String c = request.getParameter("c"); if (c != null && c.length() > 0) { java.io.OutputStream cout = response.getOutputStream(); @@ -38,17 +37,23 @@ if (c != null && c.length() > 0) { response.setContentType("image/png"); try { net.i2p.util.FileUtil.readFile(file, base, cout); - rendered = true; - } catch (java.io.IOException ioe) {} - if (rendered) - cout.close(); + } catch (java.io.IOException ioe) { + // prevent 'Committed' IllegalStateException from Jetty + if (!response.isCommitted()) { + response.sendError(403, ioe.toString()); + } else { + net.i2p.I2PAppContext.getGlobalContext().logManager().getLog(getClass()).error("Error serving flags/" + c + ".png", ioe); + // Jetty doesn't log this + throw ioe; + } + } +} else { + /* + * Send a 403 instead of a 404, because the server sends error.jsp + * for 404 errors, complete with the summary bar, which would be + * a huge load for a page full of flags if the user didn't have the + * flags directory for some reason. + */ + response.sendError(403, "No flag specified"); } -/* - * Send a 403 instead of a 404, because the server sends error.jsp - * for 404 errors, complete with the summary bar, which would be - * a huge load for a page full of flags if the user didn't have the - * flags directory for some reason. - */ -if (!rendered) - response.sendError(403, "Flag not found"); %> \ No newline at end of file diff --git a/apps/routerconsole/jsp/viewhistory.jsp b/apps/routerconsole/jsp/viewhistory.jsp index 14ee0bbff..aa3ce4d54 100644 --- a/apps/routerconsole/jsp/viewhistory.jsp +++ b/apps/routerconsole/jsp/viewhistory.jsp @@ -11,6 +11,13 @@ String base = net.i2p.I2PAppContext.getGlobalContext().getBaseDir().getAbsoluteP try { net.i2p.util.FileUtil.readFile("history.txt", base, response.getOutputStream()); } catch (java.io.IOException ioe) { - response.sendError(403, ioe.toString()); + // prevent 'Committed' IllegalStateException from Jetty + if (!response.isCommitted()) { + response.sendError(403, ioe.toString()); + } else { + net.i2p.I2PAppContext.getGlobalContext().logManager().getLog(getClass()).error("Error serving history.txt", ioe); + // Jetty doesn't log this + throw ioe; + } } %> \ No newline at end of file diff --git a/apps/routerconsole/jsp/viewtheme.jsp b/apps/routerconsole/jsp/viewtheme.jsp index 814705e14..ce1a6fe38 100644 --- a/apps/routerconsole/jsp/viewtheme.jsp +++ b/apps/routerconsole/jsp/viewtheme.jsp @@ -63,6 +63,13 @@ if (length > 0) try { net.i2p.util.FileUtil.readFile(uri, base, response.getOutputStream()); } catch (java.io.IOException ioe) { - response.sendError(403, ioe.toString()); + // prevent 'Committed' IllegalStateException from Jetty + if (!response.isCommitted()) { + response.sendError(403, ioe.toString()); + } else { + net.i2p.I2PAppContext.getGlobalContext().logManager().getLog(getClass()).error("Error serving " + uri, ioe); + // Jetty doesn't log this + throw ioe; + } } %> \ No newline at end of file From 525e0b45182526e96483966b121758e5f1d6ed3a Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 28 Apr 2011 18:03:18 +0000 Subject: [PATCH 443/463] tag peers.jsp UPnP text --- apps/routerconsole/java/bundle-messages.sh | 4 +- .../src/net/i2p/router/transport/UPnP.java | 105 +++++++++++------- .../net/i2p/router/transport/UPnPManager.java | 24 ++-- 3 files changed, 87 insertions(+), 46 deletions(-) diff --git a/apps/routerconsole/java/bundle-messages.sh b/apps/routerconsole/java/bundle-messages.sh index f37ca27cf..0f11de47e 100755 --- a/apps/routerconsole/java/bundle-messages.sh +++ b/apps/routerconsole/java/bundle-messages.sh @@ -52,7 +52,9 @@ ROUTERFILES="\ ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java \ ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java \ ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java \ - ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java" + ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java \ + ../../../router/java/src/net/i2p/router/transport/udp/UPnP.java \ + ../../../router/java/src/net/i2p/router/transport/udp/UPnPManager.java" # add ../java/ so the refs will work in the po file JPATHS="../java/src ../jsp/WEB-INF ../java/strings $JFILE $ROUTERFILES" diff --git a/router/java/src/net/i2p/router/transport/UPnP.java b/router/java/src/net/i2p/router/transport/UPnP.java index 05529935d..fe3ad0377 100644 --- a/router/java/src/net/i2p/router/transport/UPnP.java +++ b/router/java/src/net/i2p/router/transport/UPnP.java @@ -10,8 +10,10 @@ import java.util.HashSet; import java.util.Iterator; import java.util.Set; -import net.i2p.util.Log; import net.i2p.I2PAppContext; +import net.i2p.data.DataHelper; +import net.i2p.util.Log; +import net.i2p.util.Translate; import org.cybergarage.upnp.Action; import org.cybergarage.upnp.ArgumentList; @@ -53,8 +55,8 @@ import org.freenetproject.ForwardPortStatus; * TODO: Implement EventListener and react on ip-change */ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener { - private Log _log; - private I2PAppContext _context; + private final Log _log; + private final I2PAppContext _context; /** some schemas */ private static final String ROUTER_DEVICE = "urn:schemas-upnp-org:device:InternetGatewayDevice:1"; @@ -73,7 +75,7 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener { /** List of ports we want to forward */ private Set portsToForward; /** List of ports we have actually forwarded */ - private Set portsForwarded; + private final Set portsForwarded; /** Callback to call when a forward fails or succeeds */ private ForwardPortCallback forwardCallback; @@ -397,31 +399,31 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener { for(int i=0; iService: "); + sb.append("

  • ").append(_("Service")).append(": "); if("urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1".equals(serv.getServiceType())){ - sb.append("WAN Common Interface Config
      "); - sb.append("
    • Status: " + toString("GetCommonLinkProperties", "NewPhysicalLinkStatus", serv)); - sb.append("
    • Type: " + toString("GetCommonLinkProperties", "NewWANAccessType", serv)); - sb.append("
    • Upstream: " + toString("GetCommonLinkProperties", "NewLayer1UpstreamMaxBitRate", serv)); - sb.append("
    • Downstream: " + toString("GetCommonLinkProperties", "NewLayer1DownstreamMaxBitRate", serv) + "
      "); + sb.append(_("WAN Common Interface Configuration")); + sb.append("
      • ").append(_("Status")).append(": " + toString("GetCommonLinkProperties", "NewPhysicalLinkStatus", serv)); + sb.append("
      • ").append(_("Type")).append(": " + toString("GetCommonLinkProperties", "NewWANAccessType", serv)); + sb.append("
      • ").append(_("Upstream")).append(": " + toString("GetCommonLinkProperties", "NewLayer1UpstreamMaxBitRate", serv)); + sb.append("
      • ").append(_("Downstream")).append(": " + toString("GetCommonLinkProperties", "NewLayer1DownstreamMaxBitRate", serv) + "
        "); }else if("urn:schemas-upnp-org:service:WANPPPConnection:1".equals(serv.getServiceType())){ - sb.append("WAN PPP Connection
          "); - sb.append("
        • Status: " + toString("GetStatusInfo", "NewConnectionStatus", serv)); - sb.append("
        • Type: " + toString("GetConnectionTypeInfo", "NewConnectionType", serv)); - sb.append("
        • Upstream: " + toString("GetLinkLayerMaxBitRates", "NewUpstreamMaxBitRate", serv)); - sb.append("
        • Downstream: " + toString("GetLinkLayerMaxBitRates", "NewDownstreamMaxBitRate", serv) + "
          "); - sb.append("
        • External IP: " + toString("GetExternalIPAddress", "NewExternalIPAddress", serv) + "
          "); + sb.append(_("WAN PPP Connection")); + sb.append("
          • ").append(_("Status")).append(": " + toString("GetStatusInfo", "NewConnectionStatus", serv)); + sb.append("
          • ").append(_("Type")).append(": " + toString("GetConnectionTypeInfo", "NewConnectionType", serv)); + sb.append("
          • ").append(_("Upstream")).append(": " + toString("GetLinkLayerMaxBitRates", "NewUpstreamMaxBitRate", serv)); + sb.append("
          • ").append(_("Downstream")).append(": " + toString("GetLinkLayerMaxBitRates", "NewDownstreamMaxBitRate", serv) + "
            "); + sb.append("
          • ").append(_("External IP")).append(": " + toString("GetExternalIPAddress", "NewExternalIPAddress", serv) + "
            "); }else if("urn:schemas-upnp-org:service:Layer3Forwarding:1".equals(serv.getServiceType())){ - sb.append("Layer 3 Forwarding
              "); - sb.append("
            • Default Connection Service: " + toString("GetDefaultConnectionService", "NewDefaultConnectionService", serv)); + sb.append(_("Layer 3 Forwarding")); + sb.append("
              • ").append(_("Default Connection Service")).append(": " + toString("GetDefaultConnectionService", "NewDefaultConnectionService", serv)); }else if(WAN_IP_CONNECTION.equals(serv.getServiceType())){ - sb.append("WAN IP Connection
                  "); - sb.append("
                • Status: " + toString("GetStatusInfo", "NewConnectionStatus", serv)); - sb.append("
                • Type: " + toString("GetConnectionTypeInfo", "NewConnectionType", serv)); - sb.append("
                • External IP: " + toString("GetExternalIPAddress", "NewExternalIPAddress", serv) + "
                  "); + sb.append(_("WAN IP Connection")); + sb.append("
                  • ").append(_("Status")).append(": " + toString("GetStatusInfo", "NewConnectionStatus", serv)); + sb.append("
                  • ").append(_("Type")).append(": " + toString("GetConnectionTypeInfo", "NewConnectionType", serv)); + sb.append("
                  • ").append(_("External IP")).append(": " + toString("GetExternalIPAddress", "NewExternalIPAddress", serv) + "
                    "); }else if("urn:schemas-upnp-org:service:WANEthernetLinkConfig:1".equals(serv.getServiceType())){ - sb.append("WAN Ethernet Link Config
                      "); - sb.append("
                    1. Status: " + toString("GetEthernetLinkStatus", "NewEthernetLinkStatus", serv) + "
                      "); + sb.append(_("WAN Ethernet Link Configuration")); + sb.append("
                      • ").append(_("Status")).append(": " + toString("GetEthernetLinkStatus", "NewEthernetLinkStatus", serv) + "
                        "); }else sb.append("~~~~~~~ "+serv.getServiceType() + "
                          "); //listActions(serv, sb); @@ -433,10 +435,12 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener { private void listSubDev(String prefix, Device dev, StringBuilder sb){ if (prefix == null) - sb.append("Device: "); + sb.append("

                          ").append(_("Found Device")).append(": "); else - sb.append("

                        • Subdevice: "); + sb.append("
                        • ").append(_("Subdevice")).append(": "); sb.append(dev.getFriendlyName()); + if (prefix == null) + sb.append("

                          "); listSubServices(dev, sb); DeviceList dl = dev.getDeviceList(); @@ -454,38 +458,40 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener { /** warning - slow */ public String renderStatusHTML() { final StringBuilder sb = new StringBuilder(); - sb.append("

                          UPnP Status

                          "); + sb.append("

                          ").append(_("UPnP Status")).append("

                          "); if(isDisabled) { - sb.append("UPnP has been disabled; Do you have more than one UPnP Internet Gateway Device on your LAN ?"); + sb.append(_("UPnP has been disabled; Do you have more than one UPnP Internet Gateway Device on your LAN ?")); return sb.toString(); } else if(!isNATPresent()) { - sb.append("UPnP has not found any UPnP-aware, compatible device on your LAN."); + sb.append(_("UPnP has not found any UPnP-aware, compatible device on your LAN.")); return sb.toString(); } - // FIXME L10n! - sb.append("

                          Found "); listSubDev(null, _router, sb); String addr = getNATAddress(); + sb.append("

                          "); if (addr != null) - sb.append("
                          The current external IP address reported by UPnP is " + addr); + sb.append(_("The current external IP address reported by UPnP is {0}", addr)); else - sb.append("
                          The current external IP address is not available."); + sb.append(_("The current external IP address is not available.")); int downstreamMaxBitRate = getDownstreamMaxBitRate(); int upstreamMaxBitRate = getUpstreamMaxBitRate(); if(downstreamMaxBitRate > 0) - sb.append("
                          UPnP reports the max downstream bit rate is : " + downstreamMaxBitRate+ " bits/sec\n"); + sb.append("
                          ").append(_("UPnP reports the maximum downstream bit rate is {0}bits/sec", DataHelper.formatSize2(downstreamMaxBitRate))); if(upstreamMaxBitRate > 0) - sb.append("
                          UPnP reports the max upstream bit rate is : " + upstreamMaxBitRate+ " bits/sec\n"); + sb.append("
                          ").append(_("UPnP reports the maximum upstream bit rate is {0}bits/sec", DataHelper.formatSize2(upstreamMaxBitRate))); synchronized(lock) { if(portsToForward != null) { for(ForwardPort port : portsToForward) { - sb.append("
                          " + protoToString(port.protocol) + " port " + port.portNumber + " for " + port.name); + sb.append("
                          "); if(portsForwarded.contains(port)) - sb.append(" has been forwarded successfully by UPnP.\n"); + // {0} is TCP or UDP + // {1,number,#####} prevents 12345 from being output as 12,345 in the English locale. + // If you want the digit separator in your locale, translate as {1}. + sb.append(_("{0} port {1,number,#####} was successfully forwarded by UPnP.", protoToString(port.protocol), port.portNumber)); else - sb.append(" has not been forwarded by UPnP.\n"); + sb.append(_("{0} port {1,number,#####} was not forwarded by UPnP.", protoToString(port.protocol), port.portNumber)); } } } @@ -711,4 +717,27 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener { Thread.sleep(2000); } } + + private static final String BUNDLE_NAME = "net.i2p.router.web.messages"; + + /** + * Translate + */ + private final String _(String s) { + return Translate.getString(s, _context, BUNDLE_NAME); + } + + /** + * Translate + */ + private final String _(String s, Object o) { + return Translate.getString(s, o, _context, BUNDLE_NAME); + } + + /** + * Translate + */ + private final String _(String s, Object o, Object o2) { + return Translate.getString(s, o, o2, _context, BUNDLE_NAME); + } } diff --git a/router/java/src/net/i2p/router/transport/UPnPManager.java b/router/java/src/net/i2p/router/transport/UPnPManager.java index ee8b60072..40829c1e5 100644 --- a/router/java/src/net/i2p/router/transport/UPnPManager.java +++ b/router/java/src/net/i2p/router/transport/UPnPManager.java @@ -11,6 +11,7 @@ import java.util.Set; import net.i2p.router.RouterContext; import net.i2p.util.Log; +import net.i2p.util.Translate; import org.cybergarage.util.Debug; import org.freenetproject.DetectedIP; @@ -25,13 +26,13 @@ import org.freenetproject.ForwardPortStatus; * @author zzz */ class UPnPManager { - private Log _log; - private RouterContext _context; - private UPnP _upnp; - private UPnPCallback _upnpCallback; + private final Log _log; + private final RouterContext _context; + private final UPnP _upnp; + private final UPnPCallback _upnpCallback; private volatile boolean _isRunning; private InetAddress _detectedAddress; - private TransportManager _manager; + private final TransportManager _manager; /** * This is the TCP HTTP Event listener * We move these so we don't conflict with other users of the same upnp library @@ -56,7 +57,6 @@ class UPnPManager { _upnp.setHTTPPort(_context.getProperty(PROP_HTTP_PORT, DEFAULT_HTTP_PORT)); _upnp.setSSDPPort(_context.getProperty(PROP_SSDP_PORT, DEFAULT_SSDP_PORT)); _upnpCallback = new UPnPCallback(); - _isRunning = false; } public synchronized void start() { @@ -158,7 +158,17 @@ class UPnPManager { public String renderStatusHTML() { if (!_isRunning) - return "

                          UPnP is not enabled

                          \n"; + return "

                          " + _("UPnP is not enabled") + "

                          \n"; return _upnp.renderStatusHTML(); } + + private static final String BUNDLE_NAME = "net.i2p.router.web.messages"; + + /** + * Translate + */ + private final String _(String s) { + return Translate.getString(s, _context, BUNDLE_NAME); + } + } From 5ed22d5c167ac15cc8534a13147b12d98842c882 Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 28 Apr 2011 18:04:31 +0000 Subject: [PATCH 444/463] cleanups --- core/java/src/net/i2p/util/FileUtil.java | 7 +++++-- .../net/i2p/router/peermanager/TunnelHistory.java | 2 ++ .../net/i2p/router/tunnel/TunnelCreatorConfig.java | 14 +++++--------- .../tunnel/pool/PooledTunnelCreatorConfig.java | 2 -- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/core/java/src/net/i2p/util/FileUtil.java b/core/java/src/net/i2p/util/FileUtil.java index 68ce4e4f6..de9d354aa 100644 --- a/core/java/src/net/i2p/util/FileUtil.java +++ b/core/java/src/net/i2p/util/FileUtil.java @@ -357,6 +357,9 @@ public class FileUtil { * Dump the contents of the given path (relative to the root) to the output * stream. The path must not go above the root, either - if it does, it will * throw a FileNotFoundException + * + * Closes the OutputStream out on successful completion + * but leaves it open when throwing IOE. */ public static void readFile(String path, String root, OutputStream out) throws IOException { File rootDir = new File(root); @@ -376,10 +379,10 @@ public class FileUtil { int read = 0; while ( (read = in.read(buf)) != -1) out.write(buf, 0, read); - out.close(); + try { out.close(); } catch (IOException ioe) {} } finally { if (in != null) - in.close(); + try { in.close(); } catch (IOException ioe) {} } } diff --git a/router/java/src/net/i2p/router/peermanager/TunnelHistory.java b/router/java/src/net/i2p/router/peermanager/TunnelHistory.java index bc6109bca..6ad8c3d00 100644 --- a/router/java/src/net/i2p/router/peermanager/TunnelHistory.java +++ b/router/java/src/net/i2p/router/peermanager/TunnelHistory.java @@ -111,6 +111,7 @@ public class TunnelHistory { _lastFailed = _context.clock().now(); } +/***** all unused public void setLifetimeAgreedTo(long num) { _lifetimeAgreedTo = num; } public void setLifetimeRejected(long num) { _lifetimeRejected = num; } public void setLifetimeFailed(long num) { _lifetimeFailed = num; } @@ -120,6 +121,7 @@ public class TunnelHistory { public void setLastRejectedTransient(long when) { _lastRejectedTransient = when; } public void setLastRejectedProbabalistic(long when) { _lastRejectedProbabalistic = when; } public void setLastFailed(long when) { _lastFailed = when; } +******/ public RateStat getRejectionRate() { return _rejectRate; } public RateStat getFailedRate() { return _failRate; } diff --git a/router/java/src/net/i2p/router/tunnel/TunnelCreatorConfig.java b/router/java/src/net/i2p/router/tunnel/TunnelCreatorConfig.java index 99b612dd2..497e8ddcd 100644 --- a/router/java/src/net/i2p/router/tunnel/TunnelCreatorConfig.java +++ b/router/java/src/net/i2p/router/tunnel/TunnelCreatorConfig.java @@ -18,17 +18,17 @@ import net.i2p.router.TunnelInfo; * */ public class TunnelCreatorConfig implements TunnelInfo { - protected RouterContext _context; + protected final RouterContext _context; /** only necessary for client tunnels */ - private Hash _destination; + private final Hash _destination; /** gateway first */ - private HopConfig _config[]; + private final HopConfig _config[]; /** gateway first */ - private Hash _peers[]; + private final Hash _peers[]; private long _expiration; private List _order; private long _replyMessageId; - private boolean _isInbound; + private final boolean _isInbound; private long _messagesProcessed; private volatile long _verifiedBytesTransferred; private boolean _failed; @@ -48,10 +48,6 @@ public class TunnelCreatorConfig implements TunnelInfo { } _isInbound = isInbound; _destination = destination; - _messagesProcessed = 0; - _verifiedBytesTransferred = 0; - _failed = false; - _failures = 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 cbe794815..d66bf6f6c 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/PooledTunnelCreatorConfig.java +++ b/router/java/src/net/i2p/router/tunnel/pool/PooledTunnelCreatorConfig.java @@ -26,8 +26,6 @@ class PooledTunnelCreatorConfig extends TunnelCreatorConfig { } public PooledTunnelCreatorConfig(RouterContext ctx, int length, boolean isInbound, Hash destination) { super(ctx, length, isInbound, destination); - _pool = null; - _live = false; } // calls TestJob From 8b184f8c03279380a955664486a65a9bb600c75c Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 28 Apr 2011 18:05:03 +0000 Subject: [PATCH 445/463] one more zero-length torrent check --- apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index 365eb14b3..695cd7b7a 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -983,6 +983,8 @@ public class SnarkManager implements Snark.CompleteListener { } else if (info.getPieceLength(0) > Storage.MAX_PIECE_SIZE) { return _("Pieces are too large in \"{0}\" ({1}B), deleting it.", info.getName(), DataHelper.formatSize2(info.getPieceLength(0))) + ' ' + _("Limit is {0}B", DataHelper.formatSize2(Storage.MAX_PIECE_SIZE)); + } else if (info.getTotalLength() <= 0) { + return _("Torrent \"{0}\" has no data, deleting it!", info.getName()); } else if (info.getTotalLength() > Storage.MAX_TOTAL_SIZE) { System.out.println("torrent info: " + info.toString()); List lengths = info.getLengths(); From fe21748b2d67bac24bf6b59b70d319e91bbd2be8 Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 28 Apr 2011 18:46:09 +0000 Subject: [PATCH 446/463] -1 --- history.txt | 7 +++++++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/history.txt b/history.txt index 2f9cfc8c7..bbc2478b4 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,10 @@ +2011-04-28 zzz + * Console: Try to prevent cascaded IllegalStateExceptions in .jsp code; + add logging for original error + * peers.jsp: Tag UPnP strings + * UPnP: Strip trailing nulls from incoming XML to prevent + "content not allowed in trailing section" exceptions + * 2011-04-18 0.8.5 released 2011-04-11 zzz diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index a411b0099..87e5bffca 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 = 0; + public final static long BUILD = 1; /** for example "-test" */ public final static String EXTRA = ""; From a84e6f7854c91262b6191ebc25b293394e9f8609 Mon Sep 17 00:00:00 2001 From: magma Date: Mon, 2 May 2011 11:23:01 +0000 Subject: [PATCH 447/463] typos --- apps/routerconsole/locale/messages_fr.po | 30 ++++++++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index 2eed811d8..aa7c419e4 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-04-11 08:20+0000\n" -"PO-Revision-Date: 2011-04-11 15:22+0100\n" +"PO-Revision-Date: 2011-05-02 13:21+0100\n" "Last-Translator: magma \n" "Language-Team: I2P Project \n" "Language: \n" @@ -2281,11 +2281,11 @@ msgstr "AVERTISSEMENT d'ANONYMAT: les réglages incluent des tunnels à 1 saut!" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 msgid "PERFORMANCE WARNING - Settings include very long tunnels." -msgstr "AVERTISSEMENT de PERFORMANES: les réglages incluent des tunnels très longs!" +msgstr "AVERTISSEMENT de PERFORMANCES: les réglages incluent des tunnels très longs!" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:85 msgid "PERFORMANCE WARNING - Settings include high tunnel quantities." -msgstr "AVERTISSEMENT de PERFORMANES: les réglages incluent un grand nombre de tunnels!" +msgstr "AVERTISSEMENT de PERFORMANCES: les réglages incluent un grand nombre de tunnels!" #. buf.append("
  • \n"); #. tunnel depth @@ -3616,7 +3616,7 @@ msgstr "Tunnels clients pour" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:65 msgid "dead" -msgstr "mort" +msgstr "Morts" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:71 msgid "Participating tunnels" @@ -5454,55 +5454,75 @@ msgstr "Profil du pair {0}" #~ msgid "Last reseed failed fully (failed reading seed URL)." #~ msgstr "" #~ "Échec complet du dernier réamorçage (échec de lecture de l\\''URL source)" + #~ msgid "Last reseed failed fully (no routerInfo URLs at seed URL)." #~ msgstr "" #~ "Échec complet du dernier réamorçage (pas de routerInfo à l\\''URL source)" + #~ msgid "Last reseed failed partly ({0}% of {1})." #~ msgstr "Échec partiel du dernier réamorçage ({0}% de {1})." + #~ msgid "Last reseed failed ({0}% of {1})." #~ msgstr "Échec du dernier réamorçage ({0}% de {1})." + #~ msgid "Last reseed failed fully (exception caught)." #~ msgstr "Échec complet du dernier réamorçage (exception interceptée)." + #~ msgid "System tray icon enabled." #~ msgstr "Icône de zone de notification système activée." + #~ msgid "System tray icon feature not supported on this platform. Sorry!" #~ msgstr "" #~ "Fonctionnalité \"Icône de zone de notification système\" non disponible " #~ "sur cette plateforme. Désolé!" + #~ msgid "Warning: unable to contact the systray manager" #~ msgstr "" #~ "Avertissement: impossible de contacter le gestionnaire de zone de " #~ "notification." + #~ msgid "System tray icon disabled." #~ msgstr "Icône de zone de notification système désactivée." + #~ msgid "hour" #~ msgstr "heure" + #~ msgid "minute" #~ msgstr "mn" + #~ msgid "minutes" #~ msgstr "minutes" + #~ msgid "Download" #~ msgstr "Télécharger" + #~ msgid "" #~ "Please report bugs on trac." #~ "i2p2.i2p." #~ msgstr "" #~ "Merci de signaler les bogues sur trac.i2p2.i2p." + #~ msgid "This is useful in some situations" #~ msgstr "C'est utile dans certains cas" + #~ msgid "Start Now" #~ msgstr "Démarrer tout de suite" + #~ msgid "Depth" #~ msgstr "Profondeur" + #~ msgid "view without" #~ msgstr "montrer sans" + #~ msgid "view with" #~ msgstr "montrer avec" + #~ msgid "Show the router's workload, and how it's performing" #~ msgstr "Montrer les tâches en cours" + #~ msgid "Jobs" #~ msgstr "Tâches" + #~ msgid "Tunnels in/out" #~ msgstr "Tunnels entrants/sortants" - From ed338d9cfafd1f1f95fdf8b673c4b99116148ccb Mon Sep 17 00:00:00 2001 From: m1xxy Date: Mon, 2 May 2011 16:24:48 +0000 Subject: [PATCH 448/463] minor tweak to es --- apps/routerconsole/locale/messages_es.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/routerconsole/locale/messages_es.po b/apps/routerconsole/locale/messages_es.po index ac5fb95d3..d2bb72efc 100644 --- a/apps/routerconsole/locale/messages_es.po +++ b/apps/routerconsole/locale/messages_es.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2011-03-21 18:01+0000\n" -"PO-Revision-Date: 2011-04-20 02:25+0100\n" +"PO-Revision-Date: 2011-04-27 05:13+0100\n" "Last-Translator: mixxy \n" "Language-Team: Spanish (Castilian) \n" "MIME-Version: 1.0\n" @@ -3481,7 +3481,7 @@ msgstr "Demora - mensajes" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:429 msgid "Tunnel lag" -msgstr "Demora - túnel" +msgstr "Demora - túneles" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435 msgid "Backlog" From 6199e7b74c6eec5cbf03ff70c973bf2c9b1e1247 Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 3 May 2011 13:15:13 +0000 Subject: [PATCH 449/463] oops fix path to newly tagged files --- apps/routerconsole/java/bundle-messages.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/routerconsole/java/bundle-messages.sh b/apps/routerconsole/java/bundle-messages.sh index 0f11de47e..1f8ecc3a4 100755 --- a/apps/routerconsole/java/bundle-messages.sh +++ b/apps/routerconsole/java/bundle-messages.sh @@ -53,8 +53,8 @@ ROUTERFILES="\ ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java \ ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java \ ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java \ - ../../../router/java/src/net/i2p/router/transport/udp/UPnP.java \ - ../../../router/java/src/net/i2p/router/transport/udp/UPnPManager.java" + ../../../router/java/src/net/i2p/router/transport/UPnP.java \ + ../../../router/java/src/net/i2p/router/transport/UPnPManager.java" # add ../java/ so the refs will work in the po file JPATHS="../java/src ../jsp/WEB-INF ../java/strings $JFILE $ROUTERFILES" From 90642a8ab524ce3435b78f586567030ab6f7c685 Mon Sep 17 00:00:00 2001 From: m1xxy Date: Thu, 5 May 2011 01:59:20 +0000 Subject: [PATCH 450/463] warning --- apps/routerconsole/jsp/config.jsp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/routerconsole/jsp/config.jsp b/apps/routerconsole/jsp/config.jsp index 83548e6a3..df605ba1d 100644 --- a/apps/routerconsole/jsp/config.jsp +++ b/apps/routerconsole/jsp/config.jsp @@ -165,7 +165,7 @@ > <%=intl._("Specify Port")%>: " >
    -

    <%=intl._("Note")%>: <%=intl._("Changing these settings will restart your router.")%>

    +

    <%=intl._("Notes")%>: <%=intl._("a) Do not reveal your port numbers to anyone! b) Changing these settings will restart your router.")%>


    " > " > From c356792d02b4a29bb366c53d876965402e91d532 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 6 May 2011 01:10:28 +0000 Subject: [PATCH 451/463] * Tunnels and profiles: - Increase max fast and high-cap tier sizes - Slow profile eval cycle after sufficient uptime - Fix bug which started a new build after a successful build - Misc. cleanups --- history.txt | 7 +++ .../src/net/i2p/router/RouterVersion.java | 2 +- .../net/i2p/router/TunnelPoolSettings.java | 19 ++++--- .../net/i2p/router/peermanager/DBHistory.java | 18 +----- .../i2p/router/peermanager/PeerManager.java | 35 ++++++++---- .../router/peermanager/ProfileOrganizer.java | 57 +++++++++++++++---- .../i2p/router/peermanager/TunnelHistory.java | 6 +- .../i2p/router/tunnel/pool/BuildExecutor.java | 4 ++ .../i2p/router/tunnel/pool/BuildHandler.java | 5 +- .../tunnel/pool/TunnelPeerSelector.java | 4 +- .../router/tunnel/pool/TunnelPoolManager.java | 4 -- 11 files changed, 104 insertions(+), 57 deletions(-) diff --git a/history.txt b/history.txt index bbc2478b4..177b44bb1 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,10 @@ +2011-05-06 zzz + * Tunnels and profiles: + - Increase max fast and high-cap tier sizes + - Slow profile eval cycle after sufficient uptime + - Fix bug which started a new build after a successful build + - Misc. cleanups + 2011-04-28 zzz * Console: Try to prevent cascaded IllegalStateExceptions in .jsp code; add logging for original error diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 87e5bffca..282c18b42 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 = 1; + public final static long BUILD = 2; /** for example "-test" */ public final static String EXTRA = ""; diff --git a/router/java/src/net/i2p/router/TunnelPoolSettings.java b/router/java/src/net/i2p/router/TunnelPoolSettings.java index ae894cf14..64fa30d0d 100644 --- a/router/java/src/net/i2p/router/TunnelPoolSettings.java +++ b/router/java/src/net/i2p/router/TunnelPoolSettings.java @@ -16,7 +16,7 @@ public class TunnelPoolSettings { private int _quantity; private int _backupQuantity; // private int _rebuildPeriod; - private int _duration; + //private int _duration; private int _length; private int _lengthVariance; private int _lengthOverride; @@ -24,8 +24,8 @@ public class TunnelPoolSettings { private boolean _isExploratory; private boolean _allowZeroHop; private int _IPRestriction; - private Properties _unknownOptions; - private Hash _randomKey; + private final Properties _unknownOptions; + private final Hash _randomKey; /** prefix used to override the router's defaults for clients */ public static final String PREFIX_DEFAULT = "router.defaultPool."; @@ -57,7 +57,7 @@ public class TunnelPoolSettings { _quantity = DEFAULT_QUANTITY; _backupQuantity = DEFAULT_BACKUP_QUANTITY; // _rebuildPeriod = DEFAULT_REBUILD_PERIOD; - _duration = DEFAULT_DURATION; + //_duration = DEFAULT_DURATION; _length = DEFAULT_LENGTH; _lengthVariance = DEFAULT_LENGTH_VARIANCE; _allowZeroHop = DEFAULT_ALLOW_ZERO_HOP; @@ -107,8 +107,9 @@ public class TunnelPoolSettings { public boolean isExploratory() { return _isExploratory; } public void setIsExploratory(boolean isExploratory) { _isExploratory = isExploratory; } - public int getDuration() { return _duration; } - public void setDuration(int ms) { _duration = ms; } + // Duration is hardcoded + //public int getDuration() { return _duration; } + //public void setDuration(int ms) { _duration = ms; } /** what destination is this a tunnel for (or null if none) */ public Hash getDestination() { return _destination; } @@ -141,8 +142,8 @@ public class TunnelPoolSettings { _allowZeroHop = getBoolean(value, DEFAULT_ALLOW_ZERO_HOP); else if (name.equalsIgnoreCase(prefix + PROP_BACKUP_QUANTITY)) _backupQuantity = getInt(value, DEFAULT_BACKUP_QUANTITY); - else if (name.equalsIgnoreCase(prefix + PROP_DURATION)) - _duration = getInt(value, DEFAULT_DURATION); + //else if (name.equalsIgnoreCase(prefix + PROP_DURATION)) + // _duration = getInt(value, DEFAULT_DURATION); else if (name.equalsIgnoreCase(prefix + PROP_LENGTH)) _length = getInt(value, DEFAULT_LENGTH); else if (name.equalsIgnoreCase(prefix + PROP_LENGTH_VARIANCE)) @@ -165,7 +166,7 @@ public class TunnelPoolSettings { if (props == null) return; props.setProperty(prefix + PROP_ALLOW_ZERO_HOP, ""+_allowZeroHop); props.setProperty(prefix + PROP_BACKUP_QUANTITY, ""+_backupQuantity); - props.setProperty(prefix + PROP_DURATION, ""+_duration); + //props.setProperty(prefix + PROP_DURATION, ""+_duration); props.setProperty(prefix + PROP_LENGTH, ""+_length); props.setProperty(prefix + PROP_LENGTH_VARIANCE, ""+_lengthVariance); if (_destinationNickname != null) diff --git a/router/java/src/net/i2p/router/peermanager/DBHistory.java b/router/java/src/net/i2p/router/peermanager/DBHistory.java index 36b9bc9a3..3c5eb077e 100644 --- a/router/java/src/net/i2p/router/peermanager/DBHistory.java +++ b/router/java/src/net/i2p/router/peermanager/DBHistory.java @@ -13,8 +13,8 @@ import net.i2p.util.Log; * */ public class DBHistory { - private Log _log; - private RouterContext _context; + private final Log _log; + private final RouterContext _context; private long _successfulLookups; private long _failedLookups; private RateStat _failedLookupRate; @@ -32,25 +32,13 @@ public class DBHistory { private long _lastStoreFailed; private long _unpromptedDbStoreNew; private long _unpromptedDbStoreOld; - private String _statGroup; + private final String _statGroup; public DBHistory(RouterContext context, String statGroup) { _context = context; _log = context.logManager().getLog(DBHistory.class); _statGroup = statGroup; - _successfulLookups = 0; - _failedLookups = 0; - _failedLookupRate = null; - _invalidReplyRate = null; - _lookupReplyNew = 0; - _lookupReplyOld = 0; - _lookupReplyDuplicate = 0; - _lookupReplyInvalid = 0; - _lookupsReceived = 0; - _avgDelayBetweenLookupsReceived = 0; _lastLookupReceived = -1; - _unpromptedDbStoreNew = 0; - _unpromptedDbStoreOld = 0; createRates(statGroup); } diff --git a/router/java/src/net/i2p/router/peermanager/PeerManager.java b/router/java/src/net/i2p/router/peermanager/PeerManager.java index a2c432763..8a7ea723d 100644 --- a/router/java/src/net/i2p/router/peermanager/PeerManager.java +++ b/router/java/src/net/i2p/router/peermanager/PeerManager.java @@ -23,10 +23,9 @@ import net.i2p.data.RouterInfo; import net.i2p.router.PeerSelectionCriteria; import net.i2p.router.RouterContext; import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade; -import net.i2p.util.Log; -import net.i2p.util.SimpleScheduler; -import net.i2p.util.SimpleTimer; import net.i2p.util.ConcurrentHashSet; +import net.i2p.util.Log; +import net.i2p.util.SimpleTimer2; /** * Manage the current state of the statistics @@ -43,12 +42,15 @@ import net.i2p.util.ConcurrentHashSet; * */ class PeerManager { - private Log _log; - private RouterContext _context; - private ProfileOrganizer _organizer; - private ProfilePersistenceHelper _persistenceHelper; - private Set _peersByCapability[]; + private final Log _log; + private final RouterContext _context; + private final ProfileOrganizer _organizer; + private final ProfilePersistenceHelper _persistenceHelper; + private final Set _peersByCapability[]; private final Map _capabilitiesByPeer; + private static final long REORGANIZE_TIME = 45*1000; + private static final long REORGANIZE_TIME_MEDIUM = 123*1000; + private static final long REORGANIZE_TIME_LONG = 551*1000; public PeerManager(RouterContext context) { _context = context; @@ -62,17 +64,30 @@ class PeerManager { _peersByCapability[i] = new ConcurrentHashSet(); loadProfiles(); ////_context.jobQueue().addJob(new EvaluateProfilesJob(_context)); - SimpleScheduler.getInstance().addPeriodicEvent(new Reorg(), 0, 45*1000); + //SimpleScheduler.getInstance().addPeriodicEvent(new Reorg(), 0, REORGANIZE_TIME); + new Reorg(); //_context.jobQueue().addJob(new PersistProfilesJob(_context, this)); } - private class Reorg implements SimpleTimer.TimedEvent { + private class Reorg extends SimpleTimer2.TimedEvent { + public Reorg() { + super(SimpleTimer2.getInstance(), REORGANIZE_TIME); + } public void timeReached() { try { _organizer.reorganize(true); } catch (Throwable t) { _log.log(Log.CRIT, "Error evaluating profiles", t); } + long uptime = _context.router().getUptime(); + long delay; + if (uptime > 2*60*60*1000) + delay = REORGANIZE_TIME_LONG; + else if (uptime > 10*60*1000) + delay = REORGANIZE_TIME_MEDIUM; + else + delay = REORGANIZE_TIME; + schedule(delay); } } diff --git a/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java b/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java index 31fd6c374..93652d92e 100644 --- a/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java +++ b/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java @@ -40,23 +40,23 @@ import net.i2p.util.Log; * should be used to add new profiles (placing them into the appropriate groupings). */ public class ProfileOrganizer { - private Log _log; - private RouterContext _context; + private final Log _log; + private final RouterContext _context; /** H(routerIdentity) to PeerProfile for all peers that are fast and high capacity*/ - private Map _fastPeers; + private final Map _fastPeers; /** H(routerIdentity) to PeerProfile for all peers that have high capacities */ - private Map _highCapacityPeers; + private final Map _highCapacityPeers; /** H(routerIdentity) to PeerProfile for all peers that well integrated into the network and not failing horribly */ - private Map _wellIntegratedPeers; + private final Map _wellIntegratedPeers; /** H(routerIdentity) to PeerProfile for all peers that are not failing horribly */ - private Map _notFailingPeers; + private final Map _notFailingPeers; /** H(routerIdnetity), containing elements in _notFailingPeers */ - private List _notFailingPeersList; + private final List _notFailingPeersList; /** H(routerIdentity) to PeerProfile for all peers that ARE failing horribly (but that we haven't dropped reference to yet) */ - private Map _failingPeers; + private final Map _failingPeers; /** who are we? */ private Hash _us; - private ProfilePersistenceHelper _persistenceHelper; + private final ProfilePersistenceHelper _persistenceHelper; /** PeerProfile objects for all peers profiled, orderd by the ones with the highest capacity first */ private Set _strictCapacityOrder; @@ -68,7 +68,7 @@ public class ProfileOrganizer { /** integration value, seperating well integrated from not well integrated */ private double _thresholdIntegrationValue; - private InverseCapacityComparator _comp; + private final InverseCapacityComparator _comp; /** * Defines the minimum number of 'fast' peers that the organizer should select. See @@ -79,6 +79,8 @@ public class ProfileOrganizer { public static final int DEFAULT_MINIMUM_FAST_PEERS = 8; /** this is misnamed, it is really the max minimum number. */ private static final int DEFAULT_MAXIMUM_FAST_PEERS = 16; + private static final int ABSOLUTE_MAX_FAST_PEERS = 60; + /** * Defines the minimum number of 'high capacity' peers that the organizer should * select when using the mean - if less than this many are available, select the @@ -87,6 +89,7 @@ public class ProfileOrganizer { */ public static final String PROP_MINIMUM_HIGH_CAPACITY_PEERS = "profileOrganizer.minHighCapacityPeers"; public static final int DEFAULT_MINIMUM_HIGH_CAPACITY_PEERS = 10; + private static final int ABSOLUTE_MAX_HIGHCAP_PEERS = 150; /** synchronized against this lock when updating the tier that peers are located in (and when fetching them from a peer) */ private final ReentrantReadWriteLock _reorganizeLock = new ReentrantReadWriteLock(true); @@ -276,11 +279,14 @@ public class ProfileOrganizer { * @param howMany how many peers are desired * @param exclude set of Hashes for routers that we don't want selected * @param matches set to store the return value in + * @param mask 0-4 Number of bytes to match to determine if peers in the same IP range should + * not be in the same tunnel. 0 = disable check; 1 = /8; 2 = /16; 3 = /24; 4 = exact IP match * */ public void selectFastPeers(int howMany, Set exclude, Set matches) { selectFastPeers(howMany, exclude, matches, 0); } + public void selectFastPeers(int howMany, Set exclude, Set matches, int mask) { getReadLock(); try { @@ -304,6 +310,11 @@ public class ProfileOrganizer { public void selectHighCapacityPeers(int howMany, Set exclude, Set matches) { selectHighCapacityPeers(howMany, exclude, matches, 0); } + + /** + * @param mask 0-4 Number of bytes to match to determine if peers in the same IP range should + * not be in the same tunnel. 0 = disable check; 1 = /8; 2 = /16; 3 = /24; 4 = exact IP match + */ public void selectHighCapacityPeers(int howMany, Set exclude, Set matches, int mask) { getReadLock(); try { @@ -328,13 +339,17 @@ public class ProfileOrganizer { } return; } + /** * Return a set of Hashes for peers that are well integrated into the network. * + * @param mask 0-4 Number of bytes to match to determine if peers in the same IP range should + * not be in the same tunnel. 0 = disable check; 1 = /8; 2 = /16; 3 = /24; 4 = exact IP match */ public void selectWellIntegratedPeers(int howMany, Set exclude, Set matches) { selectWellIntegratedPeers(howMany, exclude, matches, 0); } + public void selectWellIntegratedPeers(int howMany, Set exclude, Set matches, int mask) { getReadLock(); try { @@ -351,6 +366,7 @@ public class ProfileOrganizer { return; } + /** * Return a set of Hashes for peers that are not failing, preferring ones that * we are already talking with @@ -359,12 +375,18 @@ public class ProfileOrganizer { public void selectNotFailingPeers(int howMany, Set exclude, Set matches) { selectNotFailingPeers(howMany, exclude, matches, false, 0); } + + /** + * @param mask ignored, should call locked_selectPeers, to be fixed + */ public void selectNotFailingPeers(int howMany, Set exclude, Set matches, int mask) { selectNotFailingPeers(howMany, exclude, matches, false, mask); } + public void selectNotFailingPeers(int howMany, Set exclude, Set matches, boolean onlyNotFailing) { selectNotFailingPeers(howMany, exclude, matches, onlyNotFailing, 0); } + /** * Return a set of Hashes for peers that are not failing, preferring ones that * we are already talking with @@ -373,6 +395,7 @@ public class ProfileOrganizer { * @param exclude what peers to skip (may be null) * @param matches set to store the matches in * @param onlyNotFailing if true, don't include any high capacity peers + * @param mask ignored, should call locked_selectPeers, to be fixed */ public void selectNotFailingPeers(int howMany, Set exclude, Set matches, boolean onlyNotFailing, int mask) { if (matches.size() < howMany) @@ -417,6 +440,9 @@ public class ProfileOrganizer { * and we're using this to try and limit connections. * * This DOES cascade further to non-connected peers. + * + * @param mask 0-4 Number of bytes to match to determine if peers in the same IP range should + * not be in the same tunnel. 0 = disable check; 1 = /8; 2 = /16; 3 = /24; 4 = exact IP match */ private void selectActiveNotFailingPeers2(int howMany, Set exclude, Set matches, int mask) { if (matches.size() < howMany) { @@ -448,6 +474,7 @@ public class ProfileOrganizer { public void selectAllNotFailingPeers(int howMany, Set exclude, Set matches, boolean onlyNotFailing) { selectAllNotFailingPeers(howMany, exclude, matches, onlyNotFailing, 0); } + /** * @param mask ignored, should call locked_selectPeers, to be fixed * @@ -497,6 +524,7 @@ public class ProfileOrganizer { } return; } + /** * I'm not quite sure why you'd want this... (other than for failover from the better results) * @@ -614,6 +642,7 @@ public class ProfileOrganizer { * */ public void reorganize() { reorganize(false); } + public void reorganize(boolean shouldCoalesce) { long sortTime = 0; int coalesceTime = 0; @@ -1050,6 +1079,10 @@ public class ProfileOrganizer { locked_selectPeers(peers, howMany, toExclude, matches, 0); } + /** + * @param mask 0-4 Number of bytes to match to determine if peers in the same IP range should + * not be in the same tunnel. 0 = disable check; 1 = /8; 2 = /16; 3 = /24; 4 = exact IP match + */ private void locked_selectPeers(Map peers, int howMany, Set toExclude, Set matches, int mask) { List all = new ArrayList(peers.keySet()); Set IPSet = new HashSet(8); @@ -1261,12 +1294,12 @@ public class ProfileOrganizer { /** fixme add config @since 0.7.10 */ protected int getMaximumFastPeers() { - return 30; + return ABSOLUTE_MAX_FAST_PEERS; } /** fixme add config @since 0.7.11 */ protected int getMaximumHighCapPeers() { - return 75; + return ABSOLUTE_MAX_HIGHCAP_PEERS; } /** diff --git a/router/java/src/net/i2p/router/peermanager/TunnelHistory.java b/router/java/src/net/i2p/router/peermanager/TunnelHistory.java index 6ad8c3d00..63f3741d4 100644 --- a/router/java/src/net/i2p/router/peermanager/TunnelHistory.java +++ b/router/java/src/net/i2p/router/peermanager/TunnelHistory.java @@ -14,8 +14,8 @@ import net.i2p.util.Log; * */ public class TunnelHistory { - private RouterContext _context; - private Log _log; + private final RouterContext _context; + private final Log _log; private volatile long _lifetimeAgreedTo; private volatile long _lifetimeRejected; private volatile long _lastAgreedTo; @@ -27,7 +27,7 @@ public class TunnelHistory { private volatile long _lastFailed; private RateStat _rejectRate; private RateStat _failRate; - private String _statGroup; + private final String _statGroup; /** probabalistic tunnel rejection due to a flood of requests - essentially unused */ public static final int TUNNEL_REJECT_PROBABALISTIC_REJECT = 10; diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java b/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java index b6394dc5c..62e47bfe5 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java +++ b/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java @@ -455,6 +455,10 @@ class BuildExecutor implements Runnable { } } + /** + * This wakes up the executor, so call this after TunnelPool.addTunnel() + * so we don't build too many. + */ public void buildComplete(PooledTunnelCreatorConfig cfg, TunnelPool pool) { if (_log.shouldLog(Log.DEBUG)) _log.debug("Build complete for " + cfg); 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 d604c1bf3..ad6805002 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java +++ b/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java @@ -223,7 +223,7 @@ class BuildHandler { _context.messageHistory().tunnelParticipantRejected(peer, "peer rejected after " + rtt + " with " + howBad + ": " + cfg.toString()); } } - _exec.buildComplete(cfg, cfg.getTunnelPool()); + if (allAgree) { // wikked, completely build if (cfg.isInbound()) @@ -231,6 +231,8 @@ class BuildHandler { else _context.tunnelDispatcher().joinOutbound(cfg); cfg.getTunnelPool().addTunnel(cfg); // self.self.self.foo! + // call buildComplete() after addTunnel() so we don't try another build. + _exec.buildComplete(cfg, cfg.getTunnelPool()); _exec.buildSuccessful(cfg); ExpireJob expireJob = new ExpireJob(_context, cfg, cfg.getTunnelPool()); @@ -242,6 +244,7 @@ class BuildHandler { _context.statManager().addRateData("tunnel.buildClientSuccess", rtt, rtt); } else { // someone is no fun + _exec.buildComplete(cfg, cfg.getTunnelPool()); if (cfg.getDestination() == null) _context.statManager().addRateData("tunnel.buildExploratoryReject", rtt, rtt); else 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 083e2501a..111a1f397 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java @@ -34,7 +34,7 @@ public abstract class TunnelPeerSelector { * Which peers should go into the next tunnel for the given settings? * * @return ordered list of Hash objects (one per peer) specifying what order - * they should appear in a tunnel (endpoint first). This includes + * they should appear in a tunnel (ENDPOINT FIRST). This includes * the local router in the list. If there are no tunnels or peers * to build through, and the settings reject 0 hop tunnels, this will * return null. @@ -61,7 +61,7 @@ public abstract class TunnelPeerSelector { } if (length < 0) length = 0; - if (length > 8) // as documented in tunnel.html + else if (length > 8) // as documented in tunnel.html length = 8; /* if ( (ctx.tunnelManager().getOutboundTunnelCount() <= 0) || diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java index 59eec7d81..3f289b165 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java @@ -329,7 +329,6 @@ public class TunnelPoolManager implements TunnelManagerFacade { /** queue a recurring test job if appropriate */ void buildComplete(PooledTunnelCreatorConfig cfg) { - //buildComplete(); if (cfg.getLength() > 1 && (!_context.router().gracefulShutdownInProgress()) && !Boolean.valueOf(_context.getProperty("router.disableTunnelTesting")).booleanValue()) { @@ -357,9 +356,6 @@ public class TunnelPoolManager implements TunnelManagerFacade { } } - /** ?? */ - void buildComplete() {} - public void startup() { _isShutdown = false; if (!_executor.isRunning()) { From 5ce06d02b45a854354c461748b51934c9ad4f63e Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 6 May 2011 12:35:19 +0000 Subject: [PATCH 452/463] the rest of -2 --- .../i2p/router/tunnel/pool/TunnelPool.java | 46 +++++++++++++------ 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java index c432bfe9e..00eded47d 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java @@ -25,11 +25,11 @@ import net.i2p.util.Log; * A group of tunnels for the router or a particular client, in a single direction. */ public class TunnelPool { - private final List _inProgress = new ArrayList(); + private final List _inProgress = new ArrayList(); private final RouterContext _context; private final Log _log; private TunnelPoolSettings _settings; - private final ArrayList _tunnels; + private final List _tunnels; private final TunnelPeerSelector _peerSelector; private final TunnelPoolManager _manager; private boolean _alive; @@ -276,9 +276,12 @@ public class TunnelPool { } } - public void addTunnel(TunnelInfo info) { + /** + * Add to the pool. + */ + void addTunnel(TunnelInfo info) { if (_log.shouldLog(Log.DEBUG)) - _log.debug(toString() + ": Adding tunnel " + info, new Exception("Creator")); + _log.debug(toString() + ": Adding tunnel " + info /* , new Exception("Creator") */ ); LeaseSet ls = null; synchronized (_tunnels) { _tunnels.add(info); @@ -290,7 +293,10 @@ public class TunnelPool { _context.clientManager().requestLeaseSet(_settings.getDestination(), ls); } - public void removeTunnel(TunnelInfo info) { + /** + * Remove from the pool. + */ + void removeTunnel(TunnelInfo info) { if (_log.shouldLog(Log.DEBUG)) _log.debug(toString() + ": Removing tunnel " + info); int remaining = 0; @@ -467,8 +473,10 @@ public class TunnelPool { } /** - * Build a leaseSet with the required tunnels that aren't about to expire + * Build a leaseSet with the required tunnels that aren't about to expire. + * Caller must synchronize on _tunnels. * + * @return null on failure */ private LeaseSet locked_buildNewLeaseSet() { if (!_alive) @@ -724,8 +732,8 @@ public class TunnelPool { int inProgress = 0; synchronized (_inProgress) { inProgress = _inProgress.size(); - for (int i = 0; i < _inProgress.size(); i++) { - PooledTunnelCreatorConfig cfg = (PooledTunnelCreatorConfig)_inProgress.get(i); + for (int i = 0; i < inProgress; i++) { + PooledTunnelCreatorConfig cfg = _inProgress.get(i); if (cfg.getLength() <= 1) fallback++; } @@ -846,17 +854,25 @@ public class TunnelPool { return rv; } + /** + * @return null on failure + */ PooledTunnelCreatorConfig configureNewTunnel() { return configureNewTunnel(false); } + /** + * @return null on failure + */ private PooledTunnelCreatorConfig configureNewTunnel(boolean forceZeroHop) { TunnelPoolSettings settings = getSettings(); - List peers = null; - long expiration = _context.clock().now() + settings.getDuration(); + // peers for new tunnel, including us, ENDPOINT FIRST + List peers = null; + long expiration = _context.clock().now() + TunnelPoolSettings.DEFAULT_DURATION; if (!forceZeroHop) { peers = _peerSelector.selectPeers(_context, settings); + if ( (peers == null) || (peers.isEmpty()) ) { - // no inbound or outbound tunnels to send the request through, and + // no peers to build the tunnel with, and // the pool is refusing 0 hop tunnels if (peers == null) { if (_log.shouldLog(Log.WARN)) @@ -871,12 +887,13 @@ public class TunnelPool { peers = new ArrayList(1); peers.add(_context.routerHash()); } + PooledTunnelCreatorConfig cfg = new PooledTunnelCreatorConfig(_context, peers.size(), settings.isInbound(), settings.getDestination()); cfg.setTunnelPool(this); - // peers[] is ordered endpoint first, but cfg.getPeer() is ordered gateway first + // peers list is ordered endpoint first, but cfg.getPeer() is ordered gateway first for (int i = 0; i < peers.size(); i++) { int j = peers.size() - 1 - i; - cfg.setPeer(j, (Hash)peers.get(i)); + cfg.setPeer(j, peers.get(i)); HopConfig hop = cfg.getConfig(j); hop.setCreation(_context.clock().now()); hop.setExpiration(expiration); @@ -895,6 +912,9 @@ public class TunnelPool { return cfg; } + /** + * Remove from the _inprogress list + */ void buildComplete(PooledTunnelCreatorConfig cfg) { synchronized (_inProgress) { _inProgress.remove(cfg); } cfg.setTunnelPool(this); From f9654661bb0df5e43b1b28eff59723a4ba3db84b Mon Sep 17 00:00:00 2001 From: zzz Date: Wed, 11 May 2011 14:40:55 +0000 Subject: [PATCH 453/463] * Use partitions of fast tier for various hops of client tunnels; minor cleanups --- history.txt | 3 + .../src/net/i2p/router/RouterVersion.java | 2 +- .../router/peermanager/ProfileOrganizer.java | 140 +++++++++++++++--- .../tunnel/pool/ClientPeerSelector.java | 53 ++++++- .../tunnel/pool/TunnelPeerSelector.java | 7 +- 5 files changed, 177 insertions(+), 28 deletions(-) diff --git a/history.txt b/history.txt index 177b44bb1..8bfc3bda9 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,6 @@ +2011-05-11 zzz + * Use partitions of fast tier for various hops of client tunnels + 2011-05-06 zzz * Tunnels and profiles: - Increase max fast and high-cap tier sizes diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 282c18b42..0725033fa 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 = 2; + public final static long BUILD = 3; /** for example "-test" */ public final static String EXTRA = ""; diff --git a/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java b/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java index 93652d92e..a63dd9769 100644 --- a/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java +++ b/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java @@ -2,7 +2,6 @@ package net.i2p.router.peermanager; import java.io.IOException; import java.io.OutputStream; -import java.io.Writer; import java.net.InetAddress; import java.net.UnknownHostException; import java.text.DecimalFormat; @@ -22,6 +21,7 @@ import java.util.TreeSet; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReentrantReadWriteLock; +import net.i2p.crypto.SHA256Generator; import net.i2p.data.Hash; import net.i2p.data.RouterAddress; import net.i2p.data.RouterInfo; @@ -78,7 +78,7 @@ public class ProfileOrganizer { public static final String PROP_MINIMUM_FAST_PEERS = "profileOrganizer.minFastPeers"; public static final int DEFAULT_MINIMUM_FAST_PEERS = 8; /** this is misnamed, it is really the max minimum number. */ - private static final int DEFAULT_MAXIMUM_FAST_PEERS = 16; + private static final int DEFAULT_MAXIMUM_FAST_PEERS = 18; private static final int ABSOLUTE_MAX_FAST_PEERS = 60; /** @@ -94,9 +94,6 @@ public class ProfileOrganizer { /** synchronized against this lock when updating the tier that peers are located in (and when fetching them from a peer) */ private final ReentrantReadWriteLock _reorganizeLock = new ReentrantReadWriteLock(true); - /** incredibly weak PRNG, just used for shuffling peers. no need to waste the real PRNG on this */ - private Random _random = new Random(); - public ProfileOrganizer(RouterContext context) { _context = context; _log = context.logManager().getLog(ProfileOrganizer.class); @@ -108,9 +105,6 @@ public class ProfileOrganizer { _notFailingPeersList = new ArrayList(256); _failingPeers = new HashMap(16); _strictCapacityOrder = new TreeSet(_comp); - _thresholdSpeedValue = 0.0d; - _thresholdCapacityValue = 0.0d; - _thresholdIntegrationValue = 0.0d; _persistenceHelper = new ProfilePersistenceHelper(_context); _context.statManager().createRateStat("peer.profileSortTime", "How long the reorg takes sorting peers", "Peers", new long[] { 10*60*1000 }); @@ -279,14 +273,25 @@ public class ProfileOrganizer { * @param howMany how many peers are desired * @param exclude set of Hashes for routers that we don't want selected * @param matches set to store the return value in - * @param mask 0-4 Number of bytes to match to determine if peers in the same IP range should - * not be in the same tunnel. 0 = disable check; 1 = /8; 2 = /16; 3 = /24; 4 = exact IP match * */ public void selectFastPeers(int howMany, Set exclude, Set matches) { selectFastPeers(howMany, exclude, matches, 0); } + /** + * Return a set of Hashes for peers that are both fast and reliable. If an insufficient + * number of peers are both fast and reliable, fall back onto high capacity peers, and if that + * doesn't contain sufficient peers, fall back onto not failing peers, and even THAT doesn't + * have sufficient peers, fall back onto failing peers. + * + * @param howMany how many peers are desired + * @param exclude set of Hashes for routers that we don't want selected + * @param matches set to store the return value in + * @param mask 0-4 Number of bytes to match to determine if peers in the same IP range should + * not be in the same tunnel. 0 = disable check; 1 = /8; 2 = /16; 3 = /24; 4 = exact IP match + * + */ public void selectFastPeers(int howMany, Set exclude, Set matches, int mask) { getReadLock(); try { @@ -303,6 +308,51 @@ public class ProfileOrganizer { return; } + /** + * Return a set of Hashes for peers that are both fast and reliable. If an insufficient + * number of peers are both fast and reliable, fall back onto high capacity peers, and if that + * doesn't contain sufficient peers, fall back onto not failing peers, and even THAT doesn't + * have sufficient peers, fall back onto failing peers. + * + * @param howMany how many peers are desired + * @param exclude set of Hashes for routers that we don't want selected + * @param matches set to store the return value in + * @param randomKey used for deterministic random partitioning into subtiers + * @param subTierMode 0 or 2-7: + *
    +     *    0: no partitioning, use entire tier
    +     *    2: return only from group 0 or 1
    +     *    3: return only from group 2 or 3
    +     *    4: return only from group 0
    +     *    5: return only from group 1
    +     *    6: return only from group 2
    +     *    7: return only from group 3
    +     *
    + */ + public void selectFastPeers(int howMany, Set exclude, Set matches, Hash randomKey, int subTierMode) { + getReadLock(); + try { + if (subTierMode > 0) { + int sz = _fastPeers.size(); + if (sz < 6 || (subTierMode >= 4 && sz < 12)) + subTierMode = 0; + } + if (subTierMode > 0) + locked_selectPeers(_fastPeers, howMany, exclude, matches, randomKey, subTierMode); + else + locked_selectPeers(_fastPeers, howMany, exclude, matches, 2); + } finally { releaseReadLock(); } + if (matches.size() < howMany) { + if (_log.shouldLog(Log.INFO)) + _log.info("selectFastPeers("+howMany+"), not enough fast (" + matches.size() + ") going on to highCap"); + selectHighCapacityPeers(howMany, exclude, matches, 2); + } else { + if (_log.shouldLog(Log.INFO)) + _log.info("selectFastPeers("+howMany+"), found enough fast (" + matches.size() + ")"); + } + return; + } + /** * Return a set of Hashes for peers that have a high capacity * @@ -343,13 +393,17 @@ public class ProfileOrganizer { /** * Return a set of Hashes for peers that are well integrated into the network. * - * @param mask 0-4 Number of bytes to match to determine if peers in the same IP range should - * not be in the same tunnel. 0 = disable check; 1 = /8; 2 = /16; 3 = /24; 4 = exact IP match */ public void selectWellIntegratedPeers(int howMany, Set exclude, Set matches) { selectWellIntegratedPeers(howMany, exclude, matches, 0); } + /** + * Return a set of Hashes for peers that are well integrated into the network. + * + * @param mask 0-4 Number of bytes to match to determine if peers in the same IP range should + * not be in the same tunnel. 0 = disable check; 1 = /8; 2 = /16; 3 = /24; 4 = exact IP match + */ public void selectWellIntegratedPeers(int howMany, Set exclude, Set matches, int mask) { getReadLock(); try { @@ -1063,10 +1117,10 @@ public class ProfileOrganizer { /** called after locking the reorganizeLock */ private PeerProfile locked_getProfile(Hash peer) { - PeerProfile cur = (PeerProfile)_notFailingPeers.get(peer); + PeerProfile cur = _notFailingPeers.get(peer); if (cur != null) return cur; - cur = (PeerProfile)_failingPeers.get(peer); + cur = _failingPeers.get(peer); return cur; } @@ -1158,7 +1212,7 @@ public class ProfileOrganizer { } /** generate an arbitrary unique value for this ip/mask (mask = 1-4) */ - private Integer maskedIP(byte[] ip, int mask) { + private static Integer maskedIP(byte[] ip, int mask) { int rv = 0; for (int i = 0; i < mask; i++) rv = (rv << 8) | (ip[i] & 0xff); @@ -1166,7 +1220,7 @@ public class ProfileOrganizer { } /** does a contain any of the elements in b? */ - private boolean containsAny(Set a, Set b) { + private static boolean containsAny(Set a, Set b) { for (Object o : b) { if (a.contains(o)) return true; @@ -1174,6 +1228,58 @@ public class ProfileOrganizer { return false; } + /** + * @param randomKey used for deterministic random partitioning into subtiers + * @param subTierMode 2-7: + *
    +     *    2: return only from group 0 or 1
    +     *    3: return only from group 2 or 3
    +     *    4: return only from group 0
    +     *    5: return only from group 1
    +     *    6: return only from group 2
    +     *    7: return only from group 3
    +     *
    + */ + private void locked_selectPeers(Map peers, int howMany, Set toExclude, Set matches, Hash randomKey, int subTierMode) { + List all = new ArrayList(peers.keySet()); + // use RandomIterator to avoid shuffling the whole thing + for (Iterator iter = new RandomIterator(all); (matches.size() < howMany) && iter.hasNext(); ) { + Hash peer = iter.next(); + if (toExclude != null && toExclude.contains(peer)) + continue; + if (matches.contains(peer)) + continue; + if (_us.equals(peer)) + continue; + int subTier = getSubTier(peer, randomKey); + if (subTierMode >= 4) { + if (subTier != (subTierMode & 0x03)) + continue; + } else { + if ((subTier >> 1) != (subTierMode & 0x01)) + continue; + } + boolean ok = isSelectable(peer); + if (ok) + matches.add(peer); + else + matches.remove(peer); + } + } + + /** + * Implement a random, deterministic split into 4 groups that cannot be predicted by + * others. + * @return 0-3 + */ + private static int getSubTier(Hash peer, Hash randomKey) { + byte[] data = new byte[Hash.HASH_LENGTH + 4]; + System.arraycopy(peer.getData(), 0, data, 0, Hash.HASH_LENGTH); + System.arraycopy(randomKey.getData(), 0, data, Hash.HASH_LENGTH, 4); + Hash rh = SHA256Generator.getInstance().calculateHash(data); + return rh.getData()[0] & 0x03; + } + public boolean isSelectable(Hash peer) { NetworkDatabaseFacade netDb = _context.netDb(); // the CLI shouldn't depend upon the netDb @@ -1288,7 +1394,7 @@ public class ProfileOrganizer { */ protected int getMinimumFastPeers() { int def = Math.min(DEFAULT_MAXIMUM_FAST_PEERS, - (2 *_context.clientManager().listClients().size()) + DEFAULT_MINIMUM_FAST_PEERS - 2); + (6 *_context.clientManager().listClients().size()) + DEFAULT_MINIMUM_FAST_PEERS - 2); return _context.getProperty(PROP_MINIMUM_FAST_PEERS, def); } 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 f4042feee..24e6966a1 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/ClientPeerSelector.java +++ b/router/java/src/net/i2p/router/tunnel/pool/ClientPeerSelector.java @@ -21,20 +21,57 @@ class ClientPeerSelector extends TunnelPeerSelector { return null; if ( (length == 0) && (settings.getLength()+settings.getLengthVariance() > 0) ) return null; - HashSet matches = new HashSet(length); + + List rv; if (length > 0) { if (shouldSelectExplicit(settings)) return selectExplicit(ctx, settings, length); + + Set exclude = getExclude(ctx, settings.isInbound(), settings.isExploratory()); + Set matches = new HashSet(length); + if (length == 1) { + ctx.profileOrganizer().selectFastPeers(length, exclude, matches, 0); + matches.remove(ctx.routerHash()); + rv = new ArrayList(matches); + } else { + // build a tunnel using 4 subtiers. + // For a 2-hop tunnel, the first hop comes from subtiers 0-1 and the last from subtiers 2-3. + // For a longer tunnels, the first hop comes from subtier 0, the middle from subtiers 2-3, and the last from subtier 1. + rv = new ArrayList(length + 1); + // OBEP or IB last hop + // group 0 or 1 if two hops, otherwise group 0 + ctx.profileOrganizer().selectFastPeers(1, exclude, matches, settings.getRandomKey(), length == 2 ? 2 : 4); + matches.remove(ctx.routerHash()); + exclude.addAll(matches); + rv.addAll(matches); + matches.clear(); + if (length > 2) { + // middle hop(s) + // group 2 or 3 + ctx.profileOrganizer().selectFastPeers(length - 2, exclude, matches, settings.getRandomKey(), 3); + matches.remove(ctx.routerHash()); + if (matches.size() > 1) { + // order the middle peers for tunnels >= 4 hops + List ordered = new ArrayList(matches); + orderPeers(ordered, settings.getRandomKey()); + rv.addAll(ordered); + } else { + rv.addAll(matches); + } + exclude.addAll(matches); + matches.clear(); + } + // IBGW or OB first hop + // group 2 or 3 if two hops, otherwise group 1 + ctx.profileOrganizer().selectFastPeers(1, exclude, matches, settings.getRandomKey(), length == 2 ? 3 : 5); + matches.remove(ctx.routerHash()); + rv.addAll(matches); + } + } else { + rv = new ArrayList(1); } - Set exclude = getExclude(ctx, settings.isInbound(), settings.isExploratory()); - ctx.profileOrganizer().selectFastPeers(length, exclude, matches, settings.getIPRestriction()); - - matches.remove(ctx.routerHash()); - ArrayList rv = new ArrayList(matches); - if (rv.size() > 1) - orderPeers(rv, settings.getRandomKey()); if (settings.isInbound()) rv.add(0, ctx.routerHash()); else 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 111a1f397..25b6ed933 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java @@ -41,6 +41,9 @@ public abstract class TunnelPeerSelector { */ public abstract List selectPeers(RouterContext ctx, TunnelPoolSettings settings); + /** + * @return randomized number of hops 0-7, not including ourselves + */ protected int getLength(RouterContext ctx, TunnelPoolSettings settings) { int length = settings.getLength(); int override = settings.getLengthOverride(); @@ -61,8 +64,8 @@ public abstract class TunnelPeerSelector { } if (length < 0) length = 0; - else if (length > 8) // as documented in tunnel.html - length = 8; + else if (length > 7) // as documented in tunnel.html + length = 7; /* if ( (ctx.tunnelManager().getOutboundTunnelCount() <= 0) || (ctx.tunnelManager().getFreeTunnelCount() <= 0) ) { From ffa9ea9cd2dbc4b18726c3b87db60daf5b908b24 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 13 May 2011 20:13:56 +0000 Subject: [PATCH 454/463] Increase min floodfills; decrease min routerinfo expiration --- history.txt | 3 +++ router/java/src/net/i2p/router/RouterVersion.java | 4 ++-- .../i2p/router/networkdb/kademlia/FloodfillMonitorJob.java | 4 ++-- .../networkdb/kademlia/KademliaNetworkDatabaseFacade.java | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/history.txt b/history.txt index 8bfc3bda9..6734cf9b3 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,6 @@ +2011-05-13 zzz + * Increase min floodfills; decrease min routerinfo expiration + 2011-05-11 zzz * Use partitions of fast tier for various hops of client tunnels diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 0725033fa..f6ba057e6 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 = 3; + public final static long BUILD = 4; /** for example "-test" */ - public final static String EXTRA = ""; + public final static String EXTRA = "-rc"; public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA; public static void main(String args[]) { System.out.println("I2P Router version: " + FULL_VERSION); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java index 3964b3a1e..04683309a 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java @@ -26,8 +26,8 @@ class FloodfillMonitorJob extends JobImpl { private static final int REQUEUE_DELAY = 60*60*1000; private static final long MIN_UPTIME = 2*60*60*1000; private static final long MIN_CHANGE_DELAY = 6*60*60*1000; - private static final int MIN_FF = 60; - private static final int MAX_FF = 100; + private static final int MIN_FF = 75; + private static final int MAX_FF = 150; private static final String PROP_FLOODFILL_PARTICIPANT = "router.floodfillParticipant"; public FloodfillMonitorJob(RouterContext context, FloodfillNetworkDatabaseFacade facade) { 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 7409c8e76..7a3b7741a 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java @@ -120,7 +120,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { * know anyone or just started up) -- see validate() below */ private final static long ROUTER_INFO_EXPIRATION = 3*24*60*60*1000l; - private final static long ROUTER_INFO_EXPIRATION_MIN = 150*60*1000l; + private final static long ROUTER_INFO_EXPIRATION_MIN = 120*60*1000l; private final static long ROUTER_INFO_EXPIRATION_SHORT = 90*60*1000l; private final static long ROUTER_INFO_EXPIRATION_FLOODFILL = 60*60*1000l; From 9f7cc9d887faad6c5fc9b0cfa32dbae9d4302eba Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 13 May 2011 21:04:58 +0000 Subject: [PATCH 455/463] add update host --- .../java/src/net/i2p/router/web/ConfigUpdateHandler.java | 2 ++ installer/resources/hosts.txt | 1 + router/java/src/net/i2p/router/RouterVersion.java | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHandler.java index 8a525180b..47f9eb242 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHandler.java @@ -50,12 +50,14 @@ public class ConfigUpdateHandler extends FormHandler { */ private static final String PACK200_URLS = "http://echelon.i2p/i2p/i2pupdate.su2\r\n" + + "http://inr.i2p/i2p/i2pupdate.su2\r\n" + "http://stats.i2p/i2p/i2pupdate.su2\r\n" + "http://www.i2p2.i2p/_static/i2pupdate.su2\r\n" + "http://update.postman.i2p/i2pupdate.su2" ; private static final String NO_PACK200_URLS = "http://echelon.i2p/i2p/i2pupdate.sud\r\n" + + "http://inr.i2p/i2p/i2pupdate.sud\r\n" + "http://stats.i2p/i2p/i2pupdate.sud\r\n" + "http://www.i2p2.i2p/_static/i2pupdate.sud\r\n" + "http://update.postman.i2p/i2pupdate.sud" ; diff --git a/installer/resources/hosts.txt b/installer/resources/hosts.txt index 0a152e1b8..594d4d8d6 100644 --- a/installer/resources/hosts.txt +++ b/installer/resources/hosts.txt @@ -326,3 +326,4 @@ i2pbote.i2p=~taSfBfeiMM5fW~qwUGZr4kAXmSoentWVjlQhTCKWhVj04KV34tLguNQEpHb1cA2eIwl planet.i2p=W0omtMApOdlTkgJoct08QnzDkeb~xc60df5Cx3k3qqOFmyEkRB65NdpSdvldI5STmXmXlZe68f8Hu1dfBMmKvfpBFMpP-mRVYuHbEa4N1dRkp3AOswZFO51lSC~MVPMZKGHAv0cfv5WFaJ9nfuaR7iYYWJF11xotoPTMbJdB-I3XPC8rxHI-73ATlOD4cU9oZ6BYcBE0dun9zw4IHBcRpnFRx~s-TkevNfPnBqujB-NNgA8a5s~QUj0h3FwwUWsNB8f1Uwy~DwoQh7pMp6dsZ3umEyBn2HaXZasSmbzB30qkQRs9vrAtIFdIzCQ~8gI2cHdHEPgExUQX~xlM8QZEgnLXSfS93asWPdpitv~KT7bO-35BgTBdCozHTCcvys6bYJ24UnkFVBE0D2L0t98neelWkJSaEU0QzxdRphoCZY8OABQIaS4qw6PEFD1Un1vxNCh~TDFWcYBZ3Rqsc~ISW0wF7oOS6-DPT3q5O8cGLc8iAEdRchrU9XyAHAKVlEZxAAAA exotrack.i2p=Ly1vs4plBuGisqlMiQOjhVkXFZPBMy9joSCrus~tuLXBRXDrPYG9WXJMzY4gb3LiW0VVawv0kLgikX8eeeruXmgKwQW5zB9UPSP0CQnXTRelE3Jn7lev~re4woHvgS-EGBwWikxqXF3f7W8-LhieI0JhBZxItiWhJJME07oncW0kgS8UIMl0wqN2Y-p0sryFCN056TfGNTXigfxrSLqKnpi6a2OyEkF62qvRID3qXzRque0vKQjqvavq2mqxjFrSgLUoyKod5h9Px6qK08gtoAyDKMLPk7fPgReYKj6awiOxRSGfsMpZD3~ZuV0Sts2XtCau3S3myYMIDe5oKziPtZRIej4KBDxT0YYIw5v4RoqzqF88gNgHDfkPZ25JKTOt5xGcPTG8kwYrtx39PX6NrJmv-I~LUz6sZZlIW24k1qbO7zBxZ6mazldQY1~FJGXzn5MNzsxp44iOZdMDJJh18N0Psthk2hqlQOS4L0Ss1Odm1czhBxf1Y~j3L-QsMttcAAAA outproxyng.h2ik.i2p=1RqMQd58RgA4D~XT34rCjQteJVQwFKQbPK5P03GetL-DyCfKV6Vg61xyxGOZK-K4KTXXf45PG~oDAWIzE7UY5aXN9oAjHXfPrU9hHxv35BaxFqUpsJLgjWu41OwSjl5aN2-freH4gGVSiL62I1y2bcXHc2kVHlbToQOy8bJoS3KSDHEeU0r79f~cY3xf6rBHpHNMJtdYdnWlLq5KFc2cz~8lIut~sSIAwUEfebBkhfl2ctvdEGdSshBWGTxXiahtQX0xraynF-Cex2hxvBAl0g9aoOnrLx~Gses54WPD-m3RArI3fiaxEALRuFa0mfrrEgjOhBtVU8IlTYrTEkR8JSGofsEmuqqM03FIrwOv6lJZi-xemiNUr3OX6VdO4ckIg69BxpCYzP2IxLO5r8lSwyHqGbYPFxBIjbSMsv6tGWWdglV4Y9sQHTarboA-XDih3DzDpomb1~78cSiV3PRidjj4MDggn1abkQbRVd6WLV~eTi54bctS-JwW-I5Xyqq~AAAA +inr.i2p=GGB99wXYBnX-wOxQ~Xrvo7AvngoYgifvZZL54ksZWzclcirG7AysqfkAKyv906PxfM4y2DcN2K9m4-D99yFj-1BdnUuIEqfi2yuaaVoWuOffT3h9ne~kZnq3C-wrmczD70Gxk4shvSVxMdUEFvEip8QY4K0R-FiKBsFAfWGTE3b9d-QCzP0H9VP5V-CaYjYVQuMRgMluk9gnoLRipvV7483f~rmGgYX8xwygEAQ3v9P4hrAlJrP0lWJLI1K6KQucP3THIxZ4A9Xxnl0I7EZAT8bHwzschFrcDPYM~DtQdkJTz2VphocbNLfIExTrFt88-xC69WE-fSbaMf9jucT4f5kdpfpRu0kM~am40etxPs8uXGF-L9IXCjgUkJHrWdPHeGhnx-ye2xvUTLO2jyga8iY89Ee3IpqivVUg-iAQJzX9NXC29sf0YzNj8d8mdWRNuzbLSx9CVJ3l1NPJr4k7hmCqf8lBGXNIFZQL4Wez1PPcM4gw0o73gqIxkxvVzVcpAAAA diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index f6ba057e6..ba403a9f3 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 = 4; + public final static long BUILD = 5; /** for example "-test" */ public final static String EXTRA = "-rc"; From 7377086aae2a1066c241c5c2c85803e4c1c59a48 Mon Sep 17 00:00:00 2001 From: zzz Date: Mon, 16 May 2011 19:58:19 +0000 Subject: [PATCH 456/463] 0.8.6 --- core/java/src/net/i2p/CoreVersion.java | 2 +- history.txt | 2 ++ installer/install.xml | 2 +- installer/resources/news.xml | 11 ++++++----- router/java/src/net/i2p/router/RouterVersion.java | 4 ++-- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/core/java/src/net/i2p/CoreVersion.java b/core/java/src/net/i2p/CoreVersion.java index 4039caa82..6005a7348 100644 --- a/core/java/src/net/i2p/CoreVersion.java +++ b/core/java/src/net/i2p/CoreVersion.java @@ -16,7 +16,7 @@ package net.i2p; public class CoreVersion { /** deprecated */ public final static String ID = "Monotone"; - public final static String VERSION = "0.8.5"; + public final static String VERSION = "0.8.6"; public static void main(String args[]) { System.out.println("I2P Core version: " + VERSION); diff --git a/history.txt b/history.txt index 6734cf9b3..b552cc43e 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,5 @@ +* 2011-05-16 0.8.6 released + 2011-05-13 zzz * Increase min floodfills; decrease min routerinfo expiration diff --git a/installer/install.xml b/installer/install.xml index 2f2e03f47..4c0e9057e 100644 --- a/installer/install.xml +++ b/installer/install.xml @@ -4,7 +4,7 @@ i2p - 0.8.5 + 0.8.6 diff --git a/installer/resources/news.xml b/installer/resources/news.xml index 9006e0c8e..e978528c5 100644 --- a/installer/resources/news.xml +++ b/installer/resources/news.xml @@ -1,12 +1,13 @@
    -

    2011-04-18: 0.8.5 Released

    +

    2011-05-16: 0.8.6 Released

    -The 0.8.5 release contains a few bug fixes and performance improvements, and lots of translation updates. -As usual, upgrading is recommended. +The 0.8.6 release contains more peer selection defenses to resist powerful attackers, and +tweaks to adjust to the recent rapid growth in the network. +Upgrading is recommended.

    Please help grow the network. Say hello to the volunteers on the #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 ba403a9f3..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 = 5; + 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 18952f5109a1d9f296c45cfa9567108d10fd529f Mon Sep 17 00:00:00 2001 From: magma Date: Wed, 18 May 2011 11:37:39 +0000 Subject: [PATCH 457/463] upd routerconsole messages_fr.po --- apps/routerconsole/locale/messages_fr.po | 177 ++++++++++++++++++----- 1 file changed, 143 insertions(+), 34 deletions(-) diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po index aa7c419e4..e5a733652 100644 --- a/apps/routerconsole/locale/messages_fr.po +++ b/apps/routerconsole/locale/messages_fr.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-04-11 08:20+0000\n" -"PO-Revision-Date: 2011-05-02 13:21+0100\n" +"POT-Creation-Date: 2011-05-18 10:29+0000\n" +"PO-Revision-Date: 2011-05-18 13:35+0100\n" "Last-Translator: magma \n" "Language-Team: I2P Project \n" "Language: \n" @@ -378,6 +378,120 @@ msgstr "RX dupl." msgid "The total number of duplicate packets received from the peer" msgstr "Nombre de paquets en double reçus du pair" +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:402 +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 +msgid "Service" +msgstr "Service" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:404 +msgid "WAN Common Interface Configuration" +msgstr "Configuration de l'interface commune Internet" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:405 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:411 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:421 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:426 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:86 +msgid "Status" +msgstr "État" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:406 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:412 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:422 +msgid "Type" +msgstr "Type" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:407 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:413 +msgid "Upstream" +msgstr "Montant" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:408 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:414 +msgid "Downstream" +msgstr "Descendant" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:410 +msgid "WAN PPP Connection" +msgstr "Connexion Internet PPP" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:415 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:423 +msgid "External IP" +msgstr "Adresse IP externe" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:417 +msgid "Layer 3 Forwarding" +msgstr "Transfert niveau 3" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:418 +msgid "Default Connection Service" +msgstr "Service de connexion par défaut" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:420 +msgid "WAN IP Connection" +msgstr "Connexion IP Internet" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:425 +msgid "WAN Ethernet Link Configuration" +msgstr "Configuration du lien Ethernet Internet" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:438 +msgid "Found Device" +msgstr "Appareil détecté" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:440 +msgid "Subdevice" +msgstr "Service" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:461 +msgid "UPnP Status" +msgstr "État d'UPnP" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:464 +msgid "UPnP has been disabled; Do you have more than one UPnP Internet Gateway Device on your LAN ?" +msgstr "UPnP a été désactivé; peut-être avez-vous plus d'une passerelle Internet avec UPnP activé sur votre réseau local." + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:467 +msgid "UPnP has not found any UPnP-aware, compatible device on your LAN." +msgstr "UPnP n'a pas trouvé de passerelle compatible sur votre réseau local." + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:475 +#, java-format +msgid "The current external IP address reported by UPnP is {0}" +msgstr "Adresse IP externe détectée par UPnP : {0}" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:477 +msgid "The current external IP address is not available." +msgstr "L'adresse IP externe n'est pas disponible." + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:481 +#, java-format +msgid "UPnP reports the maximum downstream bit rate is {0}bits/sec" +msgstr "UPnP indique un débit descendant maximum de {0}b/s" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:483 +#, java-format +msgid "UPnP reports the maximum upstream bit rate is {0}bits/sec" +msgstr "UPnP indique un débit montant maximum de {0}b/s" + +#. {0} is TCP or UDP +#. {1,number,#####} prevents 12345 from being output as 12,345 in the English locale. +#. If you want the digit separator in your locale, translate as {1}. +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:492 +#, java-format +msgid "{0} port {1,number,#####} was successfully forwarded by UPnP." +msgstr "Le port {0} {1,number,#####} est correctement transféré par UPnP." + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:494 +#, java-format +msgid "{0} port {1,number,#####} was not forwarded by UPnP." +msgstr "Le port {0} {1,number,#####} n'est pas transféré par UPnP." + +#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:161 +msgid "UPnP is not enabled" +msgstr "UPnP n'est pas activé" + #: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:409 #: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:627 #, java-format @@ -535,24 +649,24 @@ msgid "Dropping tunnel requests: Too slow" msgstr "Perte de demandes de tunnels: Trop lent" #. don't even bother, since we are so overloaded locally -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:267 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:270 msgid "Dropping tunnel requests: Overloaded" msgstr "Perte de demandes de tunnnels: Surchargé" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:470 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:473 msgid "Rejecting tunnels: Request overload" msgstr "Rejet de tunnels: Surcharge de requêtes " -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:495 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:498 msgid "Rejecting tunnels: Connection limit" msgstr "Rejet de tunnels: Limite de connexions" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:695 -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:716 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:698 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:719 msgid "Dropping tunnel requests: High load" msgstr "Perte de tunnels: Forte charge" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:708 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:711 msgid "Dropping tunnel requests: Queue time" msgstr "Demandes de fermeture de tunnel: temps en file d'attente" @@ -1727,7 +1841,7 @@ msgid "Stop" msgstr "Arrêt" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:262 -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:78 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:80 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331 msgid "Check for updates" msgstr "Vérifier les mises à jour" @@ -1843,10 +1957,6 @@ msgstr "Choisissez une classe à ajouter" msgid "Network" msgstr "Réseau" -#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 -msgid "Service" -msgstr "Service" - #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:101 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381 @@ -2364,47 +2474,47 @@ msgstr "Chinois" msgid "Swedish" msgstr "Suédois" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:85 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:87 msgid "Update available, attempting to download now" msgstr "Mise à jour disponible, essai de téléchargement en cours" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:87 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:89 msgid "Update available, click button on left to download" msgstr "Mise à jour disponible, cliquez sur le bouton de gauche pour la télécharger" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:93 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:95 msgid "No update available" msgstr "Pas de mise à jour disponible" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:101 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:103 msgid "Updating news URL to" msgstr "Mise à jour de l'URL de news vers " -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:109 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:111 msgid "Updating proxy host to" msgstr "Mise à jour de l'hôte mandataire vers" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:117 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:119 msgid "Updating proxy port to" msgstr "Mise à jour du port mandataire vers" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:130 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:132 msgid "Updating refresh frequency to" msgstr "Mise à jour de la fréquence de rafraîchissement vers" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:137 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:139 msgid "Updating update policy to" msgstr "Mise à jour de la stratégie de mises à jour vers" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:146 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:148 msgid "Updating update URLs." msgstr "Mise à jour de l'URL de mises à jour." -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:155 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:157 msgid "Updating trusted keys." msgstr "Mise à jour des clefs de confiance." -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:163 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165 msgid "Updating unsigned update URL to" msgstr "Mise à jour de l'URL de mises à jour non signées vers" @@ -2897,10 +3007,6 @@ msgstr "Capacité" msgid "Integration" msgstr "Intégration" -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:86 -msgid "Status" -msgstr "État" - #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:126 msgid "Fast, High Capacity" msgstr "Rapide, haute capacité" @@ -4365,14 +4471,12 @@ msgid "Specify Port" msgstr "Saisir le port" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:527 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:357 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:348 -msgid "Note" -msgstr "Note" +msgid "Notes" +msgstr "Remarques" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:530 -msgid "Changing these settings will restart your router." -msgstr "Un changement de cette configuration entraînera un redémarrage du routeur" +msgid "a) Do not reveal your port numbers to anyone! b) Changing these settings will restart your router." +msgstr "a)Ne révélez vos n° de ports à personne! b)La modification de ces réglages redémarrera votre routeur. " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:536 msgid "Configuration Help" @@ -5051,6 +5155,11 @@ msgstr "Vous pouvez contrôler si I2P est lancé ou pas au démarrage en choisis msgid "If you prefer the command line, you can also run the " msgstr "Si vous préférez la ligne commande, vous pouvez aussi exécuter la" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:348 +msgid "Note" +msgstr "Note" + #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359 msgid "If you are running I2P as service right now, removing it will shut down your router immediately." msgstr "Si vous exécutez actuellement I2P en tant que service, l'enlever arrêtera le routeur immédiatement." From 454a310bbe9cad5594bb67fda966235f109b7be4 Mon Sep 17 00:00:00 2001 From: m1xxy Date: Wed, 18 May 2011 21:40:11 +0000 Subject: [PATCH 458/463] make translation more castillian --- apps/routerconsole/locale/messages_es.po | 100 +++++++++++------------ 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/apps/routerconsole/locale/messages_es.po b/apps/routerconsole/locale/messages_es.po index d2bb72efc..21a79717d 100644 --- a/apps/routerconsole/locale/messages_es.po +++ b/apps/routerconsole/locale/messages_es.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2011-03-21 18:01+0000\n" -"PO-Revision-Date: 2011-04-27 05:13+0100\n" +"PO-Revision-Date: 2011-05-18 23:34+0100\n" "Last-Translator: mixxy \n" "Language-Team: Spanish (Castilian) \n" "MIME-Version: 1.0\n" @@ -1532,32 +1532,32 @@ msgstr "Guardar configuración de aplicaciones web" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:47 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:453 msgid "Save Plugin Configuration" -msgstr "Guardar configuración de plugins" +msgstr "Guardar configuración de complementos" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:51 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:461 msgid "Install Plugin" -msgstr "Instalar Plugins" +msgstr "Instalar complemento" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:87 #, java-format msgid "Deleted plugin {0}" -msgstr "Eliminado el plugin {0}" +msgstr "Eliminado el complemento {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:89 #, java-format msgid "Error deleting plugin {0}" -msgstr "Error al eliminar el plugin {0}" +msgstr "Error al eliminar el complemento {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:101 #, java-format msgid "Stopped plugin {0}" -msgstr "Detenido plugin {0}" +msgstr "Detenido complemento {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:103 #, java-format msgid "Error stopping plugin {0}" -msgstr "Error al detener el plugin {0}" +msgstr "Error al detener el complemento {0}" #. label (IE) #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:124 @@ -1608,7 +1608,7 @@ msgstr "configuración de aplicación Web guardada." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:256 msgid "Plugin configuration saved." -msgstr "configuración del plugin guardada." +msgstr "configuración del complemento guardada." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:271 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:124 @@ -1625,7 +1625,7 @@ msgstr "No se encontró el servidor" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:284 msgid "No plugin URL specified." -msgstr "Ninguna URL de plugin especificada." +msgstr "Ninguna URL de complementos especificada." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:294 #, java-format @@ -1637,28 +1637,28 @@ msgstr "Ninguna URL de actualización especificado para {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:320 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:325 msgid "Plugin or update download already in progress." -msgstr "Plugin o descarga de la actualización ya en curso." +msgstr "Descarga del complemento o de la actualización ya en curso." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:311 #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:118 #, java-format msgid "Downloading plugin from {0}" -msgstr "Descargar plugin de {0}" +msgstr "Descargar complemento de {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:329 #, java-format msgid "Checking plugin {0} for updates" -msgstr "Buscando actualizaciones para el plugin {0}" +msgstr "Buscando actualizaciones para el complemento {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:339 #, java-format msgid "Started plugin {0}" -msgstr "Plugin {0} iniciado" +msgstr "Complemento {0} iniciado" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:341 #, java-format msgid "Error starting plugin {0}" -msgstr "Error al iniciar el plugin {0}" +msgstr "Error al iniciar el complemento {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376 msgid "Interface configuration saved successfully - restart required to take effect." @@ -1698,7 +1698,7 @@ msgstr "Descripción" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:148 msgid "Plugin" -msgstr "Plugin" +msgstr "Complemento" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:161 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:273 @@ -2704,31 +2704,31 @@ msgstr "Noticias chequeadas hace {0}." #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:77 #, java-format msgid "Cannot check, plugin {0} is not installed" -msgstr "No se puede comprobar, el plugin {0} no está instalado" +msgstr "No se puede comprobar, el complemento {0} no está instalado" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:129 #, java-format msgid "Checking for update of plugin {0}" -msgstr "Buscando actualizaciones para el plugin {0}" +msgstr "Buscando actualizaciones para el complemento {0}" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:154 #, java-format msgid "New plugin version {0} is available" -msgstr "Hay una nueva versión del plugin {0} disponible" +msgstr "Hay una nueva versión del complemento {0} disponible" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:156 #, java-format msgid "No new version is available for plugin {0}" -msgstr "No hay nuevas versiones disponibles para el plugin {0}" +msgstr "No hay nuevas versiones disponibles para el complemento {0}" #: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:165 #, java-format msgid "Update check failed for plugin {0}" -msgstr "Fallo al buscar actualizaciones para el plugin {0}" +msgstr "Fallo al buscar actualizaciones para el complemento {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:139 msgid "Downloading plugin" -msgstr "Descargando plugin" +msgstr "Descargando complemento" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:146 #: ../java/src/net/i2p/router/web/UpdateHandler.java:245 @@ -2738,13 +2738,13 @@ msgstr "{0}B transferidos" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:153 msgid "Plugin downloaded" -msgstr "Plugin descargado" +msgstr "Complemento descargado" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:158 #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:356 #, java-format msgid "Cannot create plugin directory {0}" -msgstr "No se puede crear directorio de plugins {0}" +msgstr "No se puede crear directorio del complemento {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:167 #: ../java/src/net/i2p/router/web/UpdateHandler.java:299 @@ -2755,112 +2755,112 @@ msgstr "de {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:177 #, java-format msgid "Plugin from {0} is corrupt" -msgstr "Plugin de {0} está dañado" +msgstr "El complemento de {0} está dañado." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:188 #, java-format msgid "Plugin from {0} does not contain the required configuration file" -msgstr "El plugin de {0} no contiene el archivo de configuración necesario" +msgstr "El complemento de {0} no contiene el archivo de configuración necesario." #. updateStatus("" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' #. + signer + ""); #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:201 #, java-format msgid "Plugin from {0} contains an invalid key" -msgstr "Plugin de {0} contiene una clave no válida" +msgstr "El complemento de {0} contiene una clave no válida." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:225 #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:235 #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:249 #, java-format msgid "Plugin signature verification of {0} failed" -msgstr "Verificación de la firma de plugin de {0} ha fallado" +msgstr "Verificación de la firma del complemento de {0} ha fallado" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:264 #, java-format msgid "Plugin from {0} has invalid name or version" -msgstr "Plugin de {0} tiene nombre o versión no válido" +msgstr "El complemento de {0} tiene nombre o versión no válido." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:269 #, java-format msgid "Plugin {0} has mismatched versions" -msgstr "El plugin {0} tiene versiones no coincidentes" +msgstr "El complemento {0} tiene versiones no coincidentes." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:277 #, java-format msgid "This plugin requires I2P version {0} or higher" -msgstr "Este plugin requiere la versión I2P {0} o superior" +msgstr "Este complemento requiere la versión {0} o superior de I2P." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:285 #, java-format msgid "This plugin requires Java version {0} or higher" -msgstr "Este plugin requiere la versión de Java {0} o superior" +msgstr "Este complemento requiere la versión {0} o superior de Java." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 msgid "Downloaded plugin is for new installs only, but the plugin is already installed" -msgstr "El plugin descargado es sólo para instalaciones nuevas, pero el plugin ya está instalado" +msgstr "El complemento descargado es sólo para instalaciones nuevas, pero el complemento ya está instalado." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:305 msgid "Installed plugin does not contain the required configuration file" -msgstr "El plugin instalado no contiene el archivo de configuración necesario" +msgstr "El complemento instalado no contiene el archivo de configuración necesario." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:313 msgid "Signature of downloaded plugin does not match installed plugin" -msgstr "La firma del plugin descargado no coincide con la del plugin instalado" +msgstr "La firma del complemento descargado no coincide con la del instalado." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:320 #, java-format msgid "Downloaded plugin version {0} is not newer than installed plugin" -msgstr "El plugin descargado con versión {0} no es más reciente que el plugin instalado" +msgstr "El complemento descargado con versión {0} no es más reciente que la versión ya instalada." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:327 #, java-format msgid "Plugin update requires installed plugin version {0} or higher" -msgstr "La actualización del plugin requiere tener instalada la versión del plugin {0} o superior" +msgstr "La actualización del complemento requiere tener instalada la versión {0} o superior de este complemento." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:334 #, java-format msgid "Plugin update requires installed plugin version {0} or lower" -msgstr "La actualización del plugin requiere tener instalada la versión del plugin {0} o inferior" +msgstr "La actualización del complemento requiere tener instalada la versión {0} o inferior de este complemento." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351 msgid "Plugin is for upgrades only, but the plugin is not installed" -msgstr "El plugin es sólo para actualizaciones, pero el plugin no está instalado" +msgstr "El complemento es sólo para actualizaciones, pero el complemento aún no está instalado." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:364 #, java-format msgid "Failed to install plugin in {0}" -msgstr "No se pudo instalar el plugin en {0}" +msgstr "No se pudo instalar el complemento en {0}" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:371 #, java-format msgid "Plugin {0} installed, router restart required" -msgstr "Plugin {0} instalado, se requiere un reinicio del router" +msgstr "Complemento {0} instalado, se requiere un reinicio del router." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:373 #, java-format msgid "Plugin {0} installed" -msgstr "Plugin {0} instalado" +msgstr "Complemento {0} instalado" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:391 #, java-format msgid "Plugin {0} installed and started" -msgstr "Plugin {0} instalado e iniciado" +msgstr "Complemento {0} instalado e iniciado" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:394 #, java-format msgid "Plugin {0} installed but failed to start, check logs" -msgstr "Plugin {0} instalado pero no funciona, revise los registros" +msgstr "Complemento {0} instalado pero no funciona, ¡revisa los registros!" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:396 #, java-format msgid "Plugin {0} installed but failed to start" -msgstr "Plugin {0} instalado pero no se pudo iniciar" +msgstr "Complemento {0} instalado, pero no se pudo iniciar." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:406 #, java-format msgid "Failed to download plugin from {0}" -msgstr "No se pudo descargar el plugin de {0}" +msgstr "No se pudo descargar el complemento de {0}." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:72 msgid "Peer Profiles" @@ -4773,19 +4773,19 @@ msgstr "Una aplicación web también se puede desactivar quitando el archivo .wa #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:445 msgid "Plugin Configuration" -msgstr "Configuración de Plugins" +msgstr "Configuración de Complementos" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:447 msgid "The plugins listed below are started by the webConsole client." -msgstr "Los plugins enumerados a continuación son iniciados por el cliente de consola web." +msgstr "Los complementos enumerados a continuación son iniciados por el cliente de consola web." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:455 msgid "Plugin Installation" -msgstr "Instalación de Plugin" +msgstr "Instalación de Complementos" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:457 msgid "To install a plugin, enter the download URL:" -msgstr "Para instalar un plugin, ¡introduce la URL de descarga!" +msgstr "Para instalar un complemento, ¡introduce la URL de descarga!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:112 msgid "config keyring" @@ -5276,7 +5276,7 @@ msgstr "URL de versión no firmada" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:379 msgid "I2P updates are disabled because you do not have write permission for the install directory." -msgstr "las actualizaciones de I2P están desactivadas porque no tiene permiso de escritura en el directorio de la instalación." +msgstr "Las actualizaciones de I2P están desactivadas porque no tienes permiso de escritura en el directorio de la instalación." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:385 msgid "Save" From 00f2721640e4a1790338abef7780295ea2885a42 Mon Sep 17 00:00:00 2001 From: magma Date: Thu, 19 May 2011 05:44:13 +0000 Subject: [PATCH 459/463] upd --- apps/i2psnark/locale/messages_fr.po | 54 +++++++++++++++++++++-------- 1 file changed, 39 insertions(+), 15 deletions(-) diff --git a/apps/i2psnark/locale/messages_fr.po b/apps/i2psnark/locale/messages_fr.po index 484ed6c19..930d9c430 100644 --- a/apps/i2psnark/locale/messages_fr.po +++ b/apps/i2psnark/locale/messages_fr.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-03-25 12:48+0000\n" -"PO-Revision-Date: 2011-04-11 15:45+0100\n" +"POT-Creation-Date: 2011-05-02 11:08+0000\n" +"PO-Revision-Date: 2011-05-19 07:39+0100\n" "Last-Translator: magma \n" "Language-Team: foo \n" "Language: \n" @@ -187,7 +187,7 @@ msgstr "Ajout {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:730 #: ../java/src/org/klomp/snark/SnarkManager.java:753 -#: ../java/src/org/klomp/snark/SnarkManager.java:1178 +#: ../java/src/org/klomp/snark/SnarkManager.java:1180 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "Impossible de copier le torrent vers {0}" @@ -222,53 +222,58 @@ msgstr "Les tronçons sont trop larges dans \"{0}\" ({1}B), suppression." msgid "Limit is {0}B" msgstr "La limite est de \"{0}\"octets" -#: ../java/src/org/klomp/snark/SnarkManager.java:993 +#: ../java/src/org/klomp/snark/SnarkManager.java:987 +#, java-format +msgid "Torrent \"{0}\" has no data, deleting it!" +msgstr "Le fichier torrent \"{0}\" n'a pas de données, suppression!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:995 #, java-format msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" msgstr "Les torrents dont la taille est supérieure à \"{0}\"octets ne sont pas encore supportés, suppression \"{1}\"." -#: ../java/src/org/klomp/snark/SnarkManager.java:1009 +#: ../java/src/org/klomp/snark/SnarkManager.java:1011 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Erreur: Impossible de supprimer le torrent \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1030 -#: ../java/src/org/klomp/snark/SnarkManager.java:1048 +#: ../java/src/org/klomp/snark/SnarkManager.java:1032 +#: ../java/src/org/klomp/snark/SnarkManager.java:1050 #, java-format msgid "Torrent stopped: \"{0}\"" msgstr "Torrent arrêté:\"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1069 +#: ../java/src/org/klomp/snark/SnarkManager.java:1071 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "Torrent supprimé:\"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1077 +#: ../java/src/org/klomp/snark/SnarkManager.java:1079 #, java-format msgid "Adding torrents in {0}" msgstr "Ajout des torrents dans {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1126 +#: ../java/src/org/klomp/snark/SnarkManager.java:1128 #, java-format msgid "Download finished: {0}" msgstr "Téléchargement terminé:\"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1174 +#: ../java/src/org/klomp/snark/SnarkManager.java:1176 #, java-format msgid "Metainfo received for {0}" msgstr "Metainfo reçue pour {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1175 +#: ../java/src/org/klomp/snark/SnarkManager.java:1177 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:526 #, java-format msgid "Starting up torrent {0}" msgstr "Démarrage du torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1229 +#: ../java/src/org/klomp/snark/SnarkManager.java:1231 msgid "Unable to connect to I2P!" msgstr "Impossible de se connecter à I2P!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1235 +#: ../java/src/org/klomp/snark/SnarkManager.java:1237 #, java-format msgid "Unable to add {0}" msgstr "Impossible d’ajouter {0}" @@ -897,47 +902,66 @@ msgstr "Le torrent n’a pas été reçu de {0}" #~ msgid "Torrent file must originate from an I2P-based tracker" #~ msgstr "Le fichier torrent doit provenir d'un tracker I2P" + #~ msgid "size: {0}B" #~ msgstr "Taille: {0}Octets" + #~ msgid "Estimated Download Time" #~ msgstr "Temps estimé de téléchargement" + #~ msgid "Torrent file {0} does not exist" #~ msgstr "Le fichier torrent {0} n'existe pas" + #~ msgid "Copying torrent to {0}" #~ msgstr "Copie du torrent vers {0}" + #~ msgid "from {0}" #~ msgstr "depuis {0}" + #~ msgid "Downloading" #~ msgstr "Téléchargement en cours" + #~ msgid "FileSize" #~ msgstr "Taille du fichier" + #~ msgid "Download Status" #~ msgstr "État du téléchargement" + #~ msgid "Details" #~ msgstr "Détails" + #~ msgid "Depuis l'URL" #~ msgstr "Quell-URL" + #~ msgid "Directory to store torrents and data" #~ msgstr "Répertoire de stockage des torrents et des données" + #~ msgid "Cannot change the I2CP settings while torrents are active" #~ msgstr "" #~ "On ne peut changer les paramètres I2CP pendant que des torrents sont " #~ "actifs" + #~ msgid "Non-i2p tracker in \"{0}\", deleting it from our list of trackers!" #~ msgstr "" #~ "Tracker non-i2p dans \"{0}\", suppression de notre liste de trackers!" + #~ msgid "{0} torrents" #~ msgstr "{0} Torrents" + #~ msgid "Uninteresting" #~ msgstr "Pas intéressant" + #~ msgid "Choked" #~ msgstr "Choked" + #~ msgid "Uninterested" #~ msgstr "Pas interessé" + #~ msgid "Choking" #~ msgstr "Choking" + #~ msgid "Custom tracker URL" #~ msgstr "URL tracker spécifique" + #~ msgid "Configure" #~ msgstr "Configurer" - From 64a753116bf2f2577f13caf279a7ce9506196dc8 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 20 May 2011 12:43:50 +0000 Subject: [PATCH 460/463] * i2ptunnel: Fix server-side stripping of X-Accept-encoding --- .../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java index a62aad4c9..d44f5539a 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java @@ -116,11 +116,6 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer { // according to rfc2616 s14.3, this *should* force identity, even if // "identity;q=1, *;q=0" didn't. setEntry(headers, "Accept-encoding", ""); - String modifiedHeader = formatHeaders(headers, command); - - //String modifiedHeader = getModifiedHeader(socket); - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Modified header: [" + modifiedHeader + "]"); socket.setReadTimeout(readTimeout); Socket s = new Socket(remoteHost, remotePort); @@ -143,6 +138,10 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer { // Don't pass this on, outproxies should strip so I2P traffic isn't so obvious but they probably don't if (alt) headers.remove("X-Accept-encoding"); + + String modifiedHeader = formatHeaders(headers, command); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Modified header: [" + modifiedHeader + "]"); if (allowGZIP && useGZIP) { I2PAppThread req = new I2PAppThread( From 20452c9387966da187d9c48467fc1f38f4d7ba45 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 20 May 2011 12:46:50 +0000 Subject: [PATCH 461/463] * Certificate: Fix creation bug; improve router cert generation --- core/java/src/net/i2p/data/Certificate.java | 4 ++-- router/java/src/net/i2p/router/Router.java | 16 +++++++--------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/core/java/src/net/i2p/data/Certificate.java b/core/java/src/net/i2p/data/Certificate.java index 522200098..c6d7c61b2 100644 --- a/core/java/src/net/i2p/data/Certificate.java +++ b/core/java/src/net/i2p/data/Certificate.java @@ -44,7 +44,7 @@ public class Certificate extends DataStructureImpl { public final static int CERTIFICATE_TYPE_MULTIPLE = 4; /** - * Pull from cache or return new + * If null cert, return immutable static instance, else create new * @throws AIOOBE if not enough bytes * @since 0.8.3 */ @@ -57,7 +57,7 @@ public class Certificate extends DataStructureImpl { if (length == 0) return new Certificate(type, null); byte[] payload = new byte[length]; - System.arraycopy(data, off = 3, payload, 0, length); + System.arraycopy(data, off + 3, payload, 0, length); return new Certificate(type, payload); } diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java index 79f05bbd4..eee3ac866 100644 --- a/router/java/src/net/i2p/router/Router.java +++ b/router/java/src/net/i2p/router/Router.java @@ -539,16 +539,14 @@ public class Router { return true; return Boolean.valueOf(_context.getProperty(PROP_HIDDEN_HIDDEN)).booleanValue(); } + + /** + * @return the certificate for a new RouterInfo - probably a null cert. + */ public Certificate createCertificate() { - Certificate cert = new Certificate(); - if (isHidden()) { - cert.setCertificateType(Certificate.CERTIFICATE_TYPE_HIDDEN); - cert.setPayload(null); - } else { - cert.setCertificateType(Certificate.CERTIFICATE_TYPE_NULL); - cert.setPayload(null); - } - return cert; + if (isHidden()) + return new Certificate(Certificate.CERTIFICATE_TYPE_HIDDEN, null); + return Certificate.NULL_CERT; } /** From d6c1202e4b26f6f04443c58f14324107e1a6fb6f Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 20 May 2011 12:48:58 +0000 Subject: [PATCH 462/463] summary bar tweak --- .../java/src/net/i2p/router/web/SummaryHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java index 7783bf811..e1c1b8d26 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java @@ -384,7 +384,7 @@ public class SummaryHelper extends HelperBase { buf.append("client.png\" alt=\"Client\" title=\"" + _("Client") + "\">"); buf.append("

    ").append(_("profile")).append(""); + //buf.append("").append(_("profile")).append(""); + buf.append("").append(_("profile")).append(""); buf.append(" +-
    InboundOutbound
    InboundOutbound

    InboundOutbound


    InboundOutbound

    InboundOutbound


    InboundOutbound
    InboundOutbound
    InboundOutbound

    InboundOutbound
    InboundOutbound
    "); - if (name.length() < 16) + if (name.length() < 18) buf.append(name); else buf.append(name.substring(0,15)).append("…"); From 48bf618ae5a578c887dff92f45b2954691321ed2 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 20 May 2011 12:49:29 +0000 Subject: [PATCH 463/463] final --- .../i2p/router/client/ClientConnectionRunner.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/router/java/src/net/i2p/router/client/ClientConnectionRunner.java b/router/java/src/net/i2p/router/client/ClientConnectionRunner.java index a73dcde83..88c1a8ede 100644 --- a/router/java/src/net/i2p/router/client/ClientConnectionRunner.java +++ b/router/java/src/net/i2p/router/client/ClientConnectionRunner.java @@ -51,11 +51,11 @@ import net.i2p.util.SimpleTimer; * @author jrandom */ class ClientConnectionRunner { - private Log _log; + private final Log _log; protected final RouterContext _context; - private ClientManager _manager; + private final ClientManager _manager; /** socket for this particular peer connection */ - private Socket _socket; + private final Socket _socket; /** output stream of the socket that I2CP messages bound to the client should be written to */ private OutputStream _out; /** session ID of the current client */ @@ -63,13 +63,13 @@ class ClientConnectionRunner { /** user's config */ private SessionConfig _config; /** static mapping of MessageId to Payload, storing messages for retrieval */ - private Map _messages; + private final Map _messages; /** lease set request state, or null if there is no request pending on at the moment */ private LeaseRequestState _leaseRequest; /** currently allocated leaseSet, or null if none is allocated */ private LeaseSet _currentLeaseSet; /** set of messageIds created but not yet ACCEPTED */ - private Set _acceptedPending; + private final Set _acceptedPending; /** thingy that does stuff */ protected I2CPMessageReader _reader; /** just for this destination */ @@ -137,15 +137,14 @@ class ClientConnectionRunner { _messages.clear(); if (_sessionKeyManager != null) _sessionKeyManager.shutdown(); - if (_manager != null) - _manager.unregisterConnection(this); + _manager.unregisterConnection(this); if (_currentLeaseSet != null) _context.netDb().unpublish(_currentLeaseSet); _leaseRequest = null; synchronized (_alreadyProcessed) { _alreadyProcessed.clear(); } - _config = null; + //_config = null; //_manager = null; }